@boobooking/dashboard-ui-components 0.17.1 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -3
- package/dist/index.js +549 -472
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -90,9 +90,9 @@ Tailwind, `@tailwindcss/forms`, Inertia и какие-либо токены в C
|
|
|
90
90
|
|
|
91
91
|
## Компоненты
|
|
92
92
|
|
|
93
|
-
Пакет экспортирует
|
|
93
|
+
Пакет экспортирует восемнадцать компонентов: `Dot`, `RussianMobileFilter`,
|
|
94
94
|
`Search`, `SelectDateInterval`, `SelectSingle`, `InfoPill`,
|
|
95
|
-
`ErrorMessages`, `ActionPill`, `ConfirmationModal`,
|
|
95
|
+
`ErrorMessages`, `FormInput`, `ActionPill`, `ConfirmationModal`,
|
|
96
96
|
`DropdownButtonWithAction`, `HamburgerMenu`, `DataTable`,
|
|
97
97
|
`NavigationMenuElement`, `PageTabs`, `PageCard`, `NotificationMessage`,
|
|
98
98
|
`TextPopover`, функцию `downloadFile` и плагин `dashboardUi`. В архив пакета
|
|
@@ -164,6 +164,65 @@ Enter, пробелом, расширением клавиатурной нав
|
|
|
164
164
|
изменённое родителем, поле показывает сразу и без событий: ответный
|
|
165
165
|
`update:modelValue` вернул бы родителю его же значение.
|
|
166
166
|
|
|
167
|
+
### FormInput
|
|
168
|
+
|
|
169
|
+
Поле формы с подписью над ним. Значение забирает форма: у поля нет
|
|
170
|
+
события `changed`.
|
|
171
|
+
|
|
172
|
+
<form-input v-model="name" label="Имя" :is-required="markNameRequired" />
|
|
173
|
+
<form-input v-model="email" label="Email" type="email" :is-required="markEmailRequired" />
|
|
174
|
+
<form-input v-model="password" label="Пароль" type="password" :is-required="markPasswordRequired" />
|
|
175
|
+
|
|
176
|
+
| Проп | Тип | По умолчанию | Описание |
|
|
177
|
+
| --- | --- | --- | --- |
|
|
178
|
+
| `modelValue` | `String` | `""` | Значение поля |
|
|
179
|
+
| `label` | `String` | обязателен | Подпись над полем |
|
|
180
|
+
| `type` | `String` | `"text"` | `"text"`, `"email"`, `"password"`, `"tel"`, `"url"` или `"search"` |
|
|
181
|
+
| `isRequired` | `Boolean` | `false` | Красная точка у подписи |
|
|
182
|
+
|
|
183
|
+
Событие `update:modelValue` уходит на каждый ввод со строкой из поля как
|
|
184
|
+
есть: пробелы не обрезаются, это решение формы. Исключение — `type="email"`
|
|
185
|
+
и `type="url"`: браузер сам убирает пробелы по краям значения, и Email из
|
|
186
|
+
одних пробелов приходит пустой строкой. Формы, которые проверяют
|
|
187
|
+
`length > 0`, оставляют у Email `type="text"`. Значение, изменённое
|
|
188
|
+
родителем, поле показывает сразу и без события. Набор через IME
|
|
189
|
+
(composition) отдаёт значение по его окончании.
|
|
190
|
+
|
|
191
|
+
Используйте `v-model` без модификаторов: модификаторы (`.trim`, `.number`,
|
|
192
|
+
`.lazy`) не входят в API `FormInput`; пробелы форма обрезает сама при
|
|
193
|
+
отправке.
|
|
194
|
+
|
|
195
|
+
Другой `type`, не из списка, отклоняется предупреждением Vue, а поле
|
|
196
|
+
рисуется с `type="text"`.
|
|
197
|
+
|
|
198
|
+
`class` и `style` ложатся на корень компонента, все остальные атрибуты
|
|
199
|
+
и слушатели (`autocomplete`, `placeholder`, `name`, `disabled`, `@blur`,
|
|
200
|
+
`@keydown.enter`) — на `<input>`. `id` поля создаётся сам, `for` подписи
|
|
201
|
+
указывает на него, поэтому две копии на странице не делят один `id`.
|
|
202
|
+
Атрибут `id` от формы заменяет созданный и в поле, и в `for`.
|
|
203
|
+
|
|
204
|
+
Красная точка значит «не заполнено»; когда её показывать, решает форма.
|
|
205
|
+
Основной способ: точки появляются после попытки отправить, ввод в поле
|
|
206
|
+
снимает свою, а стирание поля ставит точку снова (так делает watcher
|
|
207
|
+
из примера).
|
|
208
|
+
|
|
209
|
+
watch: {
|
|
210
|
+
name() { this.markNameRequired = this.name.length === 0 },
|
|
211
|
+
},
|
|
212
|
+
methods: {
|
|
213
|
+
create() {
|
|
214
|
+
this.markNameRequired = this.name.length === 0
|
|
215
|
+
// то же для остальных полей
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
|
|
219
|
+
Способ «сразу», точка видна, пока поле пусто:
|
|
220
|
+
|
|
221
|
+
<form-input v-model="number" label="Номер" :is-required="number.trim() === ''" />
|
|
222
|
+
|
|
223
|
+
`isRequired` только показывает точку: атрибут `required` и `aria-*` полю
|
|
224
|
+
он не ставит.
|
|
225
|
+
|
|
167
226
|
### SelectDateInterval
|
|
168
227
|
|
|
169
228
|
Два поля даты под одним заголовком — интервал дат «от» и «до». Дата
|
|
@@ -1006,7 +1065,7 @@ Inertia SSR), а серверная разметка гидратируется
|
|
|
1006
1065
|
|
|
1007
1066
|
npm run playground
|
|
1008
1067
|
|
|
1009
|
-
Поднимает демо-страницы со всеми
|
|
1068
|
+
Поднимает демо-страницы со всеми восемнадцатью компонентами в двух окружениях:
|
|
1010
1069
|
голом (без Tailwind и стилей приложения) и в окружении приложения (с
|
|
1011
1070
|
Tailwind, `@tailwindcss/forms` и типографикой, как у потребителя). Это
|
|
1012
1071
|
основной способ посмотреть, как компоненты выглядят и ведут себя, а не
|