-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
### 📝 Описание изменений Добавление компонента `UtilsDate` --------- Co-authored-by: Vasily Kuzin <work@exer7um.com>
- Loading branch information
Showing
7 changed files
with
446 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# UtilsDate | ||
|
||
Данный компонент выводит поле для выбора даты. | ||
|
||
::: warning | ||
|
||
Для работы данного компонента нужно включить компонент в `build.transpile` в `nuxt.config` | ||
|
||
```ts | ||
export default defineNuxtConfig({ | ||
build: { | ||
transpile: ['@vuepic/vue-datepicker'] | ||
} | ||
}) | ||
``` | ||
|
||
::: | ||
|
||
Компонент может быть использован несколькими способами: | ||
|
||
1. Можно использовать в форме с помощью `formData`. Для этого в компоненте предусмотрен пропс `id` | ||
2. Можно использовать через `v-model`. | ||
|
||
## Пропсы | ||
|
||
- `id` — идентификатор поля ввода. Устанавливает `id` и `name`, которые используются в `formData`. | ||
|
||
**По умолчанию:** `date`. | ||
|
||
- `label` — заголовок для поля. Задает параметр `label`. | ||
|
||
- `placeholder` — плейсхолдер для поля. Задает параметр `placeholder`. | ||
|
||
**По умолчанию:** `Выберите дату`. | ||
|
||
- `disabled` — является ли поле выключенным. Задает параметр `disabled`. | ||
|
||
- `required` — является ли поле обязательным для заполнения. Выставляет атрибут `required`. | ||
|
||
**По умолчанию:** `true`. | ||
|
||
Помимо этого можно использовать любые `props` из документации <https://vue3datepicker.com/> | ||
|
||
## Стилизация | ||
|
||
Для стилизации компонента подготовлены классы: | ||
|
||
- `utils-date-container`. Его стилизация влияет на контейнер, в котором находится текстовое поле. | ||
- `utils-date-label`. Его стилизация влияет на `label`. | ||
- `utils-date-picker`. Его стилизация влияет на контейнер для `input`. | ||
- `utils-date-input`. Его стилизация влияет на `input`. | ||
|
||
::: info | ||
Также для стилизации можно использовать глобальные классы, которые стилизуют все компоненты формы. | ||
|
||
- `utils-form-container`. Его стилизация влияет на контейнер, в котором находится текстовое поле. | ||
- `utils-form-label`. Его стилизация влияет на `label`. | ||
- `utils-form-input`. Его стилизация влияет на поле ввода. | ||
::: | ||
|
||
## Использование | ||
|
||
```vue | ||
<script setup lang="ts"> | ||
const date = ref("") | ||
</script> | ||
<template> | ||
<UtilsDate | ||
v-model="date" | ||
/> | ||
</template> | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
<!-- eslint-disable jsdoc/check-tag-names --> | ||
<script setup lang="ts"> | ||
import VueDatePicker from "@vuepic/vue-datepicker" | ||
import "@vuepic/vue-datepicker/dist/main.css" | ||
withDefaults( | ||
defineProps<{ | ||
/** | ||
* Является ли поле выключенным. | ||
* | ||
* Задает параметр `disabled`. | ||
*/ | ||
disabled?: boolean | ||
/** | ||
* Отображать ли время в календаре. | ||
* | ||
* @default `false` | ||
*/ | ||
enableTimePicker?: boolean | ||
/** | ||
* Идентификатор поля ввода. | ||
* | ||
* Устанавливает `id` и `name`, которые используются в `formData`. | ||
* | ||
* @default `date` | ||
*/ | ||
id?: string | ||
/** | ||
* Подпись поля ввода. | ||
* | ||
* Создает `label` и задает ему необходимый `id`. | ||
*/ | ||
label?: string // eslint-disable-line vue/require-default-prop | ||
/** | ||
* Плейсхолдер поля. | ||
* | ||
* Задает параметр `placeholder`. | ||
* | ||
* @default `Выберите дату` | ||
*/ | ||
placeholder?: string | ||
/** | ||
* Является ли поле обязательным для заполнения. | ||
* | ||
* Выставляет атрибут `required`. | ||
* | ||
* @default `true` | ||
*/ | ||
required?: boolean | ||
}>(), | ||
{ | ||
id: "date", | ||
placeholder: "Выберите дату", | ||
required: true, | ||
} | ||
) | ||
/** Текущий текст поля */ | ||
const modelValue = defineModel<string>() | ||
</script> | ||
|
||
<template> | ||
<div class="utils-date-container utils-form-container"> | ||
<label | ||
v-if="label" | ||
class="utils-date-label utils-form-label" | ||
:for="id" | ||
v-text="label" | ||
/> | ||
<VueDatePicker | ||
v-bind="$attrs" | ||
v-model="modelValue" | ||
class="utils-date-picker" | ||
> | ||
<template #dp-input="{ value }"> | ||
<input | ||
:id | ||
class="utils-date-input utils-form-input" | ||
:disabled | ||
:name="id" | ||
:placeholder | ||
:required | ||
:value | ||
/> | ||
</template> | ||
</VueDatePicker> | ||
</div> | ||
</template> |
Oops, something went wrong.