@boobooking/dashboard-ui-components 0.9.0 → 0.10.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 +58 -45
- package/dist/index.js +281 -173
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -50,9 +50,9 @@ Tailwind, `@tailwindcss/forms`, Inertia и какие-либо токены в C
|
|
|
50
50
|
|
|
51
51
|
Пакет экспортирует семнадцать компонентов: `Popup`, `Dot`, `PickDay`,
|
|
52
52
|
`RussianMobileFilter`, `Search`, `SelectDateInterval`, `SelectSingle`,
|
|
53
|
-
`SmallBadge`, `ErrorMessages`, `Closer`, `DownloadLink`,
|
|
53
|
+
`SmallBadge`, `ErrorMessages`, `Closer`, `DownloadLink`,
|
|
54
54
|
`ConfirmationModal`, `DropdownButtonWithAction`, `Pagination`,
|
|
55
|
-
`NavigationMenuElement`, `PageCard` и плагин `dashboardUi`. В архив пакета
|
|
55
|
+
`NavigationMenuElement`, `PageCard`, `NotificationMessage` и плагин `dashboardUi`. В архив пакета
|
|
56
56
|
(`files: ["dist"]`) исходники не
|
|
57
57
|
попадают, поэтому контракт каждого компонента — здесь и в playground, а не в
|
|
58
58
|
исходном коде.
|
|
@@ -250,44 +250,6 @@ Tailwind, `@tailwindcss/forms`, Inertia и какие-либо токены в C
|
|
|
250
250
|
|
|
251
251
|
Событий нет.
|
|
252
252
|
|
|
253
|
-
### Modal
|
|
254
|
-
|
|
255
|
-
Оболочка модального окна: оверлей, панель и переходы открытия и закрытия.
|
|
256
|
-
Заголовок, текст и кнопки кладёт в слот приложение. На этой оболочке построен
|
|
257
|
-
`ConfirmationModal`.
|
|
258
|
-
|
|
259
|
-
<modal :is-open="isOpen" :heading-id="headingId">
|
|
260
|
-
<h3 :id="headingId">Заголовок</h3>
|
|
261
|
-
…содержимое…
|
|
262
|
-
</modal>
|
|
263
|
-
|
|
264
|
-
| Проп | Тип | По умолчанию | Описание |
|
|
265
|
-
| --- | --- | --- | --- |
|
|
266
|
-
| `isOpen` | `Boolean` | `false` | Открыта ли модалка |
|
|
267
|
-
| `headingId` | `String` | обязателен | `id` заголовка в слоте: им модалка подписывает диалог через `aria-labelledby` |
|
|
268
|
-
|
|
269
|
-
Событий нет. Модалка не закрывается сама ни по клику на оверлей, ни по
|
|
270
|
-
Escape: видимостью управляет родитель, как у `ConfirmationModal`. `id`
|
|
271
|
-
заголовка удобно получать через `useId()` — тогда у двух модалок на одной
|
|
272
|
-
странице он не совпадёт.
|
|
273
|
-
|
|
274
|
-
Содержимое слота смонтировано всегда, а закрытая модалка его только прячет
|
|
275
|
-
(`v-show`). Поэтому состояние внутри — выбор, введённый текст, ошибки —
|
|
276
|
-
переживает закрытие, и сбрасывать его должен родитель.
|
|
277
|
-
|
|
278
|
-
Панель белая, со скруглением `rounded-lg` и без внутренних отступов: их
|
|
279
|
-
задаёт содержимое слота. На узком экране панель прижата к нижнему краю, а её
|
|
280
|
-
ширина — по содержимому, но не больше экрана за вычетом полей; начиная с `sm`
|
|
281
|
-
панель стоит по центру и занимает `max-w-lg`. `class` и другие атрибуты на
|
|
282
|
-
`<modal>` попадают на полноэкранный корень, а не на панель: размер панели и
|
|
283
|
-
атрибуты диалога вроде `aria-describedby` снаружи не задаются.
|
|
284
|
-
|
|
285
|
-
Панель не обрезает содержимое, чтобы выпадающие списки и календари внутри
|
|
286
|
-
модалки могли выходить за её край. Поэтому блок слота со своим фоном у края
|
|
287
|
-
панели сам скругляет внешние углы — верхний `rounded-t-lg`, нижний
|
|
288
|
-
`rounded-b-lg`, — иначе его квадратные углы закроют скругление панели. Так
|
|
289
|
-
сделано у `ConfirmationModal`.
|
|
290
|
-
|
|
291
253
|
### ConfirmationModal
|
|
292
254
|
|
|
293
255
|
Модалка подтверждения действия: заголовок, текст, кнопка действия и кнопка
|
|
@@ -317,6 +279,13 @@ Escape: видимостью управляет родитель, как у `Con
|
|
|
317
279
|
отмены. Ни одна из кнопок модалку не закрывает — см. раздел «Почему у
|
|
318
280
|
ConfirmationModal нет v-model».
|
|
319
281
|
|
|
282
|
+
Панель модалки — белая, со скруглением `rounded-lg`: на узком экране прижата
|
|
283
|
+
к нижнему краю, начиная с `sm` стоит по центру и занимает `max-w-lg`. `class` и
|
|
284
|
+
другие атрибуты на `<confirmation-modal>` попадают на полноэкранный корень, а
|
|
285
|
+
не на панель. Панель не обрезает содержимое, поэтому блоки текста и кнопок со
|
|
286
|
+
своим фоном скругляют внешние углы сами — верхний `rounded-t-lg`, нижний
|
|
287
|
+
`rounded-b-lg`.
|
|
288
|
+
|
|
320
289
|
### DropdownButtonWithAction
|
|
321
290
|
|
|
322
291
|
Кнопка с меню дополнительных действий: основная часть — слот `button`, стрелка
|
|
@@ -415,7 +384,7 @@ sm:rounded-lg`, `box-sizing: border-box`. Отступов у неё нет: ф
|
|
|
415
384
|
`padding-right: var(--bb-closer-space)`, а в Tailwind 3 —
|
|
416
385
|
`pr-[var(--bb-closer-space)]`. Вне `PageCard` отступ равен нулю.
|
|
417
386
|
|
|
418
|
-
Карточка не обрезает содержимое, как `
|
|
387
|
+
Карточка не обрезает содержимое, как у `ConfirmationModal`: выпадающие списки и календари
|
|
419
388
|
могут выходить за её край. Блок со своим фоном у края карточки скругляет свои
|
|
420
389
|
углы сам — например, нижний блок строк: `overflow-hidden sm:rounded-b-lg`.
|
|
421
390
|
|
|
@@ -429,6 +398,47 @@ sm:rounded-lg`, `box-sizing: border-box`. Отступов у неё нет: ф
|
|
|
429
398
|
|
|
430
399
|
Событий нет.
|
|
431
400
|
|
|
401
|
+
### NotificationMessage
|
|
402
|
+
|
|
403
|
+
Всплывающее уведомление: заголовок, текст, иконка по типу и крестик закрытия.
|
|
404
|
+
На узком экране стоит снизу по центру, начиная с `sm` — в правом верхнем углу.
|
|
405
|
+
|
|
406
|
+
<notification-message
|
|
407
|
+
v-model="message"
|
|
408
|
+
type="confirmation"
|
|
409
|
+
notification-heading="Письмо отправлено"
|
|
410
|
+
/>
|
|
411
|
+
|
|
412
|
+
| Проп | Тип | По умолчанию | Описание |
|
|
413
|
+
| --- | --- | --- | --- |
|
|
414
|
+
| `modelValue` | `String` | `""` | Текст уведомления; пустая строка или `null` — уведомления нет |
|
|
415
|
+
| `type` | `String` | `"warning"` | `"confirmation"` (галочка, серый фон), `"warning"` (жёлтое) или `"dangerous"` (красное) |
|
|
416
|
+
| `notificationHeading` | `String` | `""` | Заголовок |
|
|
417
|
+
| `lang` | `String` | язык плагина | `"ru"` или `"en"` |
|
|
418
|
+
|
|
419
|
+
Уведомление показано, пока текст непуст. Крестик закрывает его сам — эмитит
|
|
420
|
+
`update:modelValue` с пустой строкой, поэтому странице достаточно `v-model`.
|
|
421
|
+
Других событий нет.
|
|
422
|
+
|
|
423
|
+
Для скринридера уведомление — живая область: `role="alert"` у `dangerous`,
|
|
424
|
+
`role="status"` у остальных. Область есть на странице всегда, а пустая
|
|
425
|
+
невидима и не перехватывает клики. Скринридер объявляет текст, который
|
|
426
|
+
появился после монтирования компонента; текст, уже стоявший при монтировании,
|
|
427
|
+
может остаться необъявленным. Роль задаётся типом, поэтому `type` стоит менять
|
|
428
|
+
только пока текст пуст — проще всего держать по экземпляру на каждый тип.
|
|
429
|
+
Показывайте одно уведомление за раз: все они стоят в одном углу. Подпись
|
|
430
|
+
крестика для скринридера — «Закрыть» / «Close». После закрытия с клавиатуры
|
|
431
|
+
фокус не возвращается и уходит на `body` страницы.
|
|
432
|
+
|
|
433
|
+
Корень — на весь экран (`fixed inset-0`), с ресетом пакета; слотов нет.
|
|
434
|
+
|
|
435
|
+
У корня нет `z-index`, поэтому среди позиционированных элементов он рисуется в
|
|
436
|
+
порядке DOM: ставьте компонент в разметке страницы последним. Под открытой
|
|
437
|
+
модалкой или выпадающим меню пакета (их подложки — `z-20`) уведомление скрыто,
|
|
438
|
+
а его крестик не нажимается, поэтому закрывайте модалку, прежде чем показать
|
|
439
|
+
уведомление. `class` и атрибуты попадают на корень на весь экран, так что
|
|
440
|
+
страница может поднять его своим классом, например `class="z-30"`.
|
|
441
|
+
|
|
432
442
|
## Языки
|
|
433
443
|
|
|
434
444
|
Тексты пакета есть на русском и английском. Язык компонента — проп `lang`, если
|
|
@@ -445,6 +455,7 @@ sm:rounded-lg`, `box-sizing: border-box`. Отступов у неё нет: ф
|
|
|
445
455
|
| `SelectDateInterval` — подсказки полей | от / до | from / to |
|
|
446
456
|
| `Pagination` | Предыдущая / Следующая / Показаны результаты X - Y из Z | Previous / Next / Showing X - Y of Z results |
|
|
447
457
|
| `PageCard` — доступное имя крестика | Назад | Back |
|
|
458
|
+
| `NotificationMessage` — подпись крестика для скринридера | Закрыть | Close |
|
|
448
459
|
|
|
449
460
|
Формат даты — `дд.мм.гггг` в обоих языках: это формат значения, а не текст.
|
|
450
461
|
Неделя начинается с понедельника. Календарь `PickDay` берёт язык при
|
|
@@ -561,8 +572,10 @@ Tailwind, `@tailwindcss/forms` и типографикой, как у потре
|
|
|
561
572
|
такие обращения перестанут находить элементы: внутренние классы в контракт
|
|
562
573
|
пакета не входят.
|
|
563
574
|
|
|
575
|
+
С версии 0.10.0 `Modal` не экспортируется: это внутренняя оболочка `ConfirmationModal`.
|
|
576
|
+
|
|
564
577
|
Ресет пакета распространяется и на содержимое слотов — разметку приложения
|
|
565
|
-
внутри `Popup
|
|
578
|
+
внутри `Popup` и `DropdownButtonWithAction`. Ресет лежит в слое
|
|
566
579
|
`components`, поэтому внутри слота он сильнее всего, что приложение объявило
|
|
567
580
|
в слое `base`: preflight, `@tailwindcss/forms` и собственных умолчаний
|
|
568
581
|
приложения. В слоте он задаёт:
|
|
@@ -590,6 +603,6 @@ focus:ring-offset-2`.
|
|
|
590
603
|
(`tabindex="-1"`): скринридер его не назовёт, а с клавиатуры до него не
|
|
591
604
|
добраться.
|
|
592
605
|
|
|
593
|
-
`
|
|
594
|
-
|
|
595
|
-
|
|
606
|
+
`ConfirmationModal` не переносит фокус внутрь при открытии, не удерживает его
|
|
607
|
+
внутри, не возвращает на прежнее место после закрытия и не закрывается по
|
|
608
|
+
Escape.
|