@boobooking/dashboard-ui-components 0.15.1 → 0.16.1
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 +213 -51
- package/dist/index.js +837 -527
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,31 +65,57 @@ Vue не ниже 3.5, ESM, сборщик, умеющий импорт CSS из
|
|
|
65
65
|
Tailwind, `@tailwindcss/forms`, Inertia и какие-либо токены в CSS приложения
|
|
66
66
|
пакету не нужны.
|
|
67
67
|
|
|
68
|
-
Меню `DropdownButtonWithAction` и `HamburgerMenu`, список `SelectSingle
|
|
69
|
-
календари `SelectDateInterval` стоят на Popover API
|
|
70
|
-
Chrome 114+, Firefox 125+. В браузерах старше меню,
|
|
71
|
-
видны в потоке всегда.
|
|
68
|
+
Меню `DropdownButtonWithAction` и `HamburgerMenu`, список `SelectSingle`,
|
|
69
|
+
календари `SelectDateInterval` и подсказка `TextPopover` стоят на Popover API
|
|
70
|
+
браузера: Safari 17+, Chrome 114+, Firefox 125+. В браузерах старше меню,
|
|
71
|
+
список, календари и подсказка видны в потоке всегда.
|
|
72
|
+
|
|
73
|
+
## Цвета
|
|
74
|
+
|
|
75
|
+
У пакета один список цветов, и все компоненты с цветом берут его:
|
|
76
|
+
`gray`, `green`, `yellow`, `red`, `indigo`, `purple`. Цвет передаётся
|
|
77
|
+
именем; другое имя валидатор отклоняет, а компонент рисуется без цвета.
|
|
78
|
+
Смысл цвета — какой статус зелёный — задаёт проект своей картой
|
|
79
|
+
«значение → имя».
|
|
80
|
+
|
|
81
|
+
| Где | Вид цвета `<тон>` |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| `InfoPill`, `ActionPill` | фон `-100`, текст `-800`; у `ActionPill` при наведении текст `-600` |
|
|
84
|
+
| основная кнопка и стрелка `DropdownButtonWithAction` | фон `-100`, рамка `-300`, текст `-800`, при наведении фон `-200` |
|
|
85
|
+
| пункт меню `DropdownButtonWithAction` и `HamburgerMenu` | текст `-800`, в фокусе фон `-100` |
|
|
86
|
+
| `Dot`, полоска строки `DataTable` | `-500` |
|
|
87
|
+
|
|
88
|
+
Без цвета кнопка белая с серой рамкой, пункт меню серый, строка таблицы без
|
|
89
|
+
полоски — это вид компонента по умолчанию, в список он не входит.
|
|
72
90
|
|
|
73
91
|
## Компоненты
|
|
74
92
|
|
|
75
|
-
Пакет экспортирует
|
|
76
|
-
`Search`, `SelectDateInterval`, `SelectSingle`, `
|
|
77
|
-
`ErrorMessages`, `
|
|
93
|
+
Пакет экспортирует шестнадцать компонентов: `Dot`, `RussianMobileFilter`,
|
|
94
|
+
`Search`, `SelectDateInterval`, `SelectSingle`, `InfoPill`,
|
|
95
|
+
`ErrorMessages`, `ActionPill`, `ConfirmationModal`,
|
|
78
96
|
`DropdownButtonWithAction`, `HamburgerMenu`, `DataTable`,
|
|
79
|
-
`NavigationMenuElement`, `PageCard`, `NotificationMessage`
|
|
80
|
-
`dashboardUi`. В архив пакета
|
|
81
|
-
|
|
82
|
-
коде.
|
|
97
|
+
`NavigationMenuElement`, `PageCard`, `NotificationMessage`, `TextPopover`,
|
|
98
|
+
функцию `downloadFile` и плагин `dashboardUi`. В архив пакета
|
|
99
|
+
(`files: ["dist"]`) исходники не попадают, поэтому контракт каждого
|
|
100
|
+
компонента — здесь и в playground, а не в исходном коде.
|
|
101
|
+
|
|
102
|
+
Крестики — закрытие `PageCard` и ластики очистки фильтров — при нажатии
|
|
103
|
+
коротко «вдавливаются», и действие выполняется после этого, через 150 мс:
|
|
104
|
+
иначе нажатия не было бы видно — ластик пропадает сразу после очистки,
|
|
105
|
+
крестик уводит со страницы. Так при любом нажатии: мышью, касанием,
|
|
106
|
+
Enter, пробелом, расширением клавиатурной навигации. Нажатия во время
|
|
107
|
+
анимации не считаются: одно нажатие — одно действие. При «уменьшении
|
|
108
|
+
движения» в системе — без анимации и сразу.
|
|
83
109
|
|
|
84
110
|
### Dot
|
|
85
111
|
|
|
86
|
-
|
|
112
|
+
Индикатор-точка любого цвета из списка, с пульсацией или без.
|
|
87
113
|
|
|
88
114
|
<dot color="green" :with-pulse="isLive" />
|
|
89
115
|
|
|
90
116
|
| Проп | Тип | По умолчанию | Описание |
|
|
91
117
|
| --- | --- | --- | --- |
|
|
92
|
-
| `color` | `String` | обязателен |
|
|
118
|
+
| `color` | `String` | обязателен | Имя из списка цветов (раздел «Цвета») |
|
|
93
119
|
| `withPulse` | `Boolean` | `false` | Добавляет анимацию пульсации |
|
|
94
120
|
|
|
95
121
|
Событий нет. Значения у `Dot` тоже нет — см. раздел
|
|
@@ -178,6 +204,14 @@ Chrome 114+, Firefox 125+. В браузерах старше меню, спис
|
|
|
178
204
|
под курсором, поэтому календарь «до» открывается тем же кликом, что
|
|
179
205
|
закрывает «от».
|
|
180
206
|
|
|
207
|
+
С клавиатуры: Enter или пробел на поле открывают календарь. Пока он открыт,
|
|
208
|
+
стрелки переводят фокус по дням: влево и вправо — на день, вверх и вниз — на
|
|
209
|
+
неделю; с края месяца календарь листается, дата при этом не выбирается.
|
|
210
|
+
Первая стрелка ставит фокус на выбранный день, без выбранного — на сегодня.
|
|
211
|
+
Enter или пробел выбирают день под фокусом и стрелки месяцев — так же, как
|
|
212
|
+
клик; Escape закрывает календарь. После закрытия фокус возвращается на поле.
|
|
213
|
+
В поле можно перейти Tab и набрать дату.
|
|
214
|
+
|
|
181
215
|
### SelectSingle
|
|
182
216
|
|
|
183
217
|
<select-single
|
|
@@ -224,16 +258,17 @@ Chrome 114+, Firefox 125+. В браузерах старше меню, спис
|
|
|
224
258
|
внутри списка — нет. Открытие другого списка, календаря или меню
|
|
225
259
|
закрывает предыдущее.
|
|
226
260
|
|
|
227
|
-
###
|
|
261
|
+
### InfoPill
|
|
228
262
|
|
|
229
|
-
|
|
263
|
+
Пилюля, которая только показывает текст: статус, счётчик, флаг, пометку.
|
|
264
|
+
Текст не переносится.
|
|
230
265
|
|
|
231
|
-
<
|
|
266
|
+
<info-pill text="доставлено" color="green" />
|
|
232
267
|
|
|
233
268
|
| Проп | Тип | По умолчанию | Описание |
|
|
234
269
|
| --- | --- | --- | --- |
|
|
235
|
-
| `text` | `String` | обязателен | Текст
|
|
236
|
-
| `color` | `String` | обязателен |
|
|
270
|
+
| `text` | `String` | обязателен | Текст пилюли |
|
|
271
|
+
| `color` | `String` | обязателен | Имя из списка цветов |
|
|
237
272
|
|
|
238
273
|
Событий нет.
|
|
239
274
|
|
|
@@ -251,19 +286,60 @@ Chrome 114+, Firefox 125+. В браузерах старше меню, спис
|
|
|
251
286
|
|
|
252
287
|
Событий нет.
|
|
253
288
|
|
|
254
|
-
###
|
|
289
|
+
### ActionPill
|
|
255
290
|
|
|
256
|
-
|
|
291
|
+
Пилюля, которой запускают действие: скачать отчёт, запросить статусы. Что
|
|
292
|
+
делает действие, пилюля не знает — страница слушает `click` и сама передаёт
|
|
293
|
+
`isLoading`, пока действие идёт.
|
|
257
294
|
|
|
258
|
-
<
|
|
295
|
+
<action-pill
|
|
296
|
+
icon="download"
|
|
297
|
+
title="скачать xlsx"
|
|
298
|
+
loading-text="формируется отчёт"
|
|
299
|
+
:is-loading="exportLoading"
|
|
300
|
+
@click="exportOrders"
|
|
301
|
+
/>
|
|
259
302
|
|
|
260
303
|
| Проп | Тип | По умолчанию | Описание |
|
|
261
304
|
| --- | --- | --- | --- |
|
|
262
|
-
| `
|
|
263
|
-
| `
|
|
264
|
-
| `
|
|
305
|
+
| `title` | `String` | обязателен | Подпись и всплывающая подсказка |
|
|
306
|
+
| `icon` | `String` | обязателен | `"download"` или `"refresh"` |
|
|
307
|
+
| `color` | `String` | `"purple"` | Имя из списка цветов |
|
|
308
|
+
| `isLoading` | `Boolean` | `false` | Идёт работа |
|
|
309
|
+
| `loadingText` | `String` | `null` | Подпись на время работы; без неё остаётся `title` |
|
|
265
310
|
|
|
266
|
-
|
|
311
|
+
Событие: `click` без аргументов.
|
|
312
|
+
|
|
313
|
+
Пока идёт работа, пилюля погашена и недоступна — второй клик не проходит,
|
|
314
|
+
вместо иконки бегут стрелки часов, подпись — `loadingText`. При системной
|
|
315
|
+
настройке «уменьшить движение» стрелки стоят. Иконки пакета — `download`
|
|
316
|
+
и `refresh`; новое действие с новой иконкой — новая иконка в пакете.
|
|
317
|
+
|
|
318
|
+
### downloadFile
|
|
319
|
+
|
|
320
|
+
Функция: скачивает файл запросом и отдаёт его браузеру. Страница знает,
|
|
321
|
+
когда файл пришёл, — так показывается работа на `ActionPill`.
|
|
322
|
+
|
|
323
|
+
```js
|
|
324
|
+
import { downloadFile } from '@boobooking/dashboard-ui-components'
|
|
325
|
+
|
|
326
|
+
exportOrders() {
|
|
327
|
+
this.exportLoading = true;
|
|
328
|
+
downloadFile(this.exportUrl)
|
|
329
|
+
.catch(() => { this.exportFailure = "Попробуйте ещё раз"; })
|
|
330
|
+
.finally(() => { this.exportLoading = false; });
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
- Запрос — `GET` с cookie сессии (`credentials: 'same-origin'`).
|
|
335
|
+
- Promise отклоняется: при ответе не `2xx` (код в тексте ошибки), при
|
|
336
|
+
перенаправлении — обычно на страницу входа после истёкшей сессии — и при
|
|
337
|
+
сетевой ошибке.
|
|
338
|
+
- Имя файла — из `Content-Disposition` (`filename*=UTF-8''…`, затем
|
|
339
|
+
`filename`), без него — последний сегмент пути адреса, без пути —
|
|
340
|
+
`download`.
|
|
341
|
+
- Таймаута нет; уход со страницы скачивание не прерывает. Файл до
|
|
342
|
+
сохранения целиком в памяти вкладки.
|
|
267
343
|
|
|
268
344
|
### ConfirmationModal
|
|
269
345
|
|
|
@@ -331,7 +407,7 @@ ConfirmationModal нет v-model».
|
|
|
331
407
|
| `label` | `String`, обязательно | Текст кнопки или пункта меню |
|
|
332
408
|
| `href` | `String` | Переход: обычный клик уходит в `navigate` плагина `dashboardUi`, клик с Cmd/Ctrl/Shift и средней кнопкой — браузеру; без `navigate` — обычная ссылка |
|
|
333
409
|
| `onSelect` | `Function` | Действие: вызывается без аргументов |
|
|
334
|
-
| `color` | `
|
|
410
|
+
| `color` | `String` | Имя из списка цветов; без поля — обычный |
|
|
335
411
|
|
|
336
412
|
Основная кнопка работает как пункт меню: переход — ссылка, действие —
|
|
337
413
|
кнопка, и `onSelect` вызывает сам компонент — по клику, Enter и пробелу.
|
|
@@ -339,10 +415,9 @@ ConfirmationModal нет v-model».
|
|
|
339
415
|
разбираться в разметке компонента.
|
|
340
416
|
|
|
341
417
|
Цвет первого действия красит основную кнопку вместе со стрелкой, цвет
|
|
342
|
-
пункта меню — только этот пункт.
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
своего цвета, при подсветке светлый фон того же цвета.
|
|
418
|
+
пункта меню — только этот пункт. Без цвета кнопка белая с серой рамкой,
|
|
419
|
+
пункт — серый текст и серый фон при подсветке; с цветом — по разделу
|
|
420
|
+
«Цвета».
|
|
346
421
|
|
|
347
422
|
Неверный список Vue отмечает предупреждением о пропе в режиме разработки,
|
|
348
423
|
а компонент не падает: элементы-необъекты пропускает, кнопка без функции
|
|
@@ -404,7 +479,7 @@ ConfirmationModal нет v-model».
|
|
|
404
479
|
|
|
405
480
|
Пункты, их проверка и вид — как у `DropdownButtonWithAction`: переход —
|
|
406
481
|
`{ label, href }`, действие — `{ label, onSelect }`, цвет —
|
|
407
|
-
`color:
|
|
482
|
+
`color: имя из списка цветов`. Выход запросом DELETE — действие:
|
|
408
483
|
Inertia пакет не импортирует, `router.delete` вызывает страница.
|
|
409
484
|
|
|
410
485
|
Событий и `v-model` нет: меню открывают и закрывают кнопка, клик вне меню,
|
|
@@ -441,10 +516,10 @@ Escape, клик по пункту, прокрутка и изменение р
|
|
|
441
516
|
empty-text="Не найдено ордеров"
|
|
442
517
|
>
|
|
443
518
|
<template #results-actions>
|
|
444
|
-
<
|
|
519
|
+
<action-pill icon="download" title="скачать xlsx" :is-loading="exportLoading" @click="exportOrders" />
|
|
445
520
|
</template>
|
|
446
521
|
<template #cell-status="{ row }">
|
|
447
|
-
<
|
|
522
|
+
<info-pill :text="row.statusLabel" :color="row.statusColor" />
|
|
448
523
|
</template>
|
|
449
524
|
</data-table>
|
|
450
525
|
|
|
@@ -467,7 +542,7 @@ Escape, клик по пункту, прокрутка и изменение р
|
|
|
467
542
|
| `foundText` | `String` | `null` | «Найдено ордеров» → бейдж «Найдено ордеров: 100», когда записи есть |
|
|
468
543
|
| `emptyText` | `String` | `null` | «Не найдено ордеров» — бейдж, когда записей нет |
|
|
469
544
|
| `variant` | `String` | `"page"` | `"page"` — отдельная карточка с тенью; `"card"` — таблица внутри карточки страницы, только линия сверху |
|
|
470
|
-
| `
|
|
545
|
+
| `rowStripe` | `Function` | `null` | `row => имя цвета \| null` — полоска слева в первой ячейке строки; строки полосатые всегда |
|
|
471
546
|
| `lang` | `String` | язык плагина | `"ru"` или `"en"` — тексты пагинации |
|
|
472
547
|
|
|
473
548
|
Столбец:
|
|
@@ -692,29 +767,78 @@ sm:rounded-lg`, `box-sizing: border-box`. Отступов у неё нет: ф
|
|
|
692
767
|
уведомление. `class` и атрибуты попадают на корень на весь экран, так что
|
|
693
768
|
страница может поднять его своим классом, например `class="z-30"`.
|
|
694
769
|
|
|
770
|
+
### TextPopover
|
|
771
|
+
|
|
772
|
+
Иконка-глаз, по клику — подсказка со скрытым текстом: длинный текст SMS,
|
|
773
|
+
значение ключа. Пустой текст — компонента нет.
|
|
774
|
+
|
|
775
|
+
<text-popover :text="row.message" />
|
|
776
|
+
|
|
777
|
+
| Проп | Тип | По умолчанию | Описание |
|
|
778
|
+
| --- | --- | --- | --- |
|
|
779
|
+
| `text` | `String` | обязателен | Скрытый текст; `null` и `""` — компонента нет |
|
|
780
|
+
| `modelValue` | `Boolean` | `false` | Открыта ли подсказка; `v-model` необязателен |
|
|
781
|
+
| `lang` | `String` | язык плагина | `"ru"` или `"en"` |
|
|
782
|
+
|
|
783
|
+
Событие: `update:modelValue` — когда подсказка открылась или закрылась сама:
|
|
784
|
+
кнопкой, кликом вне, Escape, прокруткой, изменением размера окна, опустевшим
|
|
785
|
+
текстом. Значение, пришедшее от родителя, эхом не возвращается.
|
|
786
|
+
|
|
787
|
+
Подсказка открывается в верхнем слое браузера (Popover API): правым краем по
|
|
788
|
+
правому краю иконки, шириной до 384 px, вниз, если помещается, иначе туда,
|
|
789
|
+
где места больше; длинный текст прокручивается внутри, в том числе с
|
|
790
|
+
клавиатуры. Пока подсказка открыта, остальная страница не выделяется:
|
|
791
|
+
тройной клик и протяжка мышью выделяют только её текст. У левого края окна
|
|
792
|
+
подсказка сужается до места слева от иконки, как и меню.
|
|
793
|
+
|
|
695
794
|
## Языки
|
|
696
795
|
|
|
697
796
|
Тексты пакета есть на русском и английском. Язык компонента — проп `lang`, если
|
|
698
797
|
он задан, иначе язык плагина `dashboardUi`, иначе русский. Явно переданный текст
|
|
699
|
-
главнее языка: `cancel-button-text` у `ConfirmationModal
|
|
700
|
-
`DownloadLink`.
|
|
798
|
+
главнее языка: `cancel-button-text` у `ConfirmationModal`.
|
|
701
799
|
|
|
702
800
|
| Компонент | `ru` | `en` |
|
|
703
801
|
| --- | --- | --- |
|
|
704
802
|
| `ConfirmationModal` — кнопка отмены | Отмена | Cancel |
|
|
705
|
-
| `DownloadLink` — подпись | Скачать | Download |
|
|
706
803
|
| `DropdownButtonWithAction` — подпись стрелки для скринридера | Открыть меню | Open menu |
|
|
707
804
|
| `HamburgerMenu` — подпись кнопки для скринридера | Открыть меню | Open menu |
|
|
708
805
|
| `SelectDateInterval` — месяцы, дни недели, кнопки календарей | по-русски | in English |
|
|
709
806
|
| `SelectDateInterval` — подсказки полей | от / до | from / to |
|
|
807
|
+
| Ластик `Search`, `RussianMobileFilter`, `SelectSingle` (язык плагина) и `SelectDateInterval` — подпись для скринридера | Очистить | Clear |
|
|
710
808
|
| `DataTable` — пагинация | Предыдущая / Следующая / Показаны результаты X - Y из Z | Previous / Next / Showing X - Y of Z results |
|
|
711
809
|
| `PageCard` — доступное имя крестика | Назад | Back |
|
|
712
810
|
| `NotificationMessage` — подпись крестика для скринридера | Закрыть | Close |
|
|
811
|
+
| `TextPopover` — подпись кнопки и имя области | Показать текст / Полный текст | Show text / Full text |
|
|
713
812
|
|
|
714
813
|
Формат даты — `дд.мм.гггг` в обоих языках: это формат значения, а не текст.
|
|
715
814
|
Неделя начинается с понедельника. Календари `SelectDateInterval` берут язык
|
|
716
815
|
при монтировании: смена языка после монтирования в них не отражается.
|
|
717
816
|
|
|
817
|
+
## Клавиатурная навигация
|
|
818
|
+
|
|
819
|
+
Кнопки и ссылки компонентов нажимаются расширениями клавиатурной навигации —
|
|
820
|
+
Vimium, Vimari, Vimlike — по их подсказкам, как мышью; подсказка у каждой
|
|
821
|
+
кнопки одна и стоит на всей кнопке.
|
|
822
|
+
|
|
823
|
+
Vimlike (Safari на iPhone, iPad и Mac) считает кнопкой любой элемент
|
|
824
|
+
с `cursor: pointer` и из вложенных таких элементов оставляет самый глубокий.
|
|
825
|
+
Курсор наследуется, поэтому в кнопке с курсором-рукой — своим или от правила
|
|
826
|
+
приложения `button:not(:disabled) { cursor: pointer }` — подсказки достались
|
|
827
|
+
бы тексту, иконке, у которой нет `click()`, и скрытой подписи, которую Vimlike
|
|
828
|
+
считает невидимой. Поэтому содержимое кнопок и ссылок пакета — текст, иконки,
|
|
829
|
+
скрытые подписи — с курсором `default` и не ловит указатель: мышь над ним
|
|
830
|
+
видит руку самой кнопки. По той же причине поле даты `SelectDateInterval`
|
|
831
|
+
лежит не внутри кнопки календаря, а под ней: поле внутри кнопки Vimlike
|
|
832
|
+
считал бы кнопкой вместо неё. В поле по-прежнему можно перейти Tab и набрать
|
|
833
|
+
дату.
|
|
834
|
+
|
|
835
|
+
Подсказки Vimlike в открытых меню, списке `SelectSingle` и календарях
|
|
836
|
+
`SelectDateInterval` не видны: Vimlike рисует их под верхним слоем браузера,
|
|
837
|
+
в котором открываются эти панели. Vimium выводит свои подсказки в верхний
|
|
838
|
+
слой, и у него такой проблемы нет. В Vimlike панель открывают подсказкой её
|
|
839
|
+
кнопки, а дальше выбирают стрелками и Enter: пункт списка или меню, день
|
|
840
|
+
календаря.
|
|
841
|
+
|
|
718
842
|
## SSR
|
|
719
843
|
|
|
720
844
|
Пакет загружается и рендерится на сервере (серверный рендеринг, например
|
|
@@ -756,20 +880,20 @@ Inertia SSR), а серверная разметка гидратируется
|
|
|
756
880
|
`class`, в `:class` и в пропсах `*-class` у `<transition>`; варианты идут
|
|
757
881
|
после префикса: `bb:sm:inline-block`, `bb:hover:bg-red-700`. Утилита без
|
|
758
882
|
префикса не сгенерируется. Классы в `:class` пишутся литералами — ключами
|
|
759
|
-
объекта, ветками тернарного оператора, элементами массива.
|
|
883
|
+
объекта, ветками тернарного оператора, элементами массива. Цветовые классы
|
|
884
|
+
компонент не пишет сам — берёт из `src/colors.js` вызовом
|
|
885
|
+
`colorClass(имя, набор)`, и эту форму тест тоже принимает. Оба правила
|
|
760
886
|
проверяет `tests/utilityPrefix.test.js`.
|
|
761
887
|
- Тексты интерфейса — только в `src/i18n.js`, в словарях `ru` и `en` с
|
|
762
888
|
одинаковыми ключами; компонент берёт их через миксин `withLang`
|
|
763
889
|
(`this.texts`) и получает проп `lang`.
|
|
764
890
|
- Ссылка компонента — настоящий `<a href>`; обычный клик — через
|
|
765
891
|
`followLink($event, href)` миксина `withNavigation`, который отдаёт его
|
|
766
|
-
`navigate` плагина. Ни Inertia, ни роутер пакет не импортирует.
|
|
767
|
-
`
|
|
768
|
-
|
|
769
|
-
`
|
|
770
|
-
|
|
771
|
-
`PageCard` — кнопка, а не ссылка: адрес возврата он тоже отдаёт
|
|
772
|
-
`navigate`.
|
|
892
|
+
`navigate` плагина. Ни Inertia, ни роутер пакет не импортирует. Через `navigate` ходят
|
|
893
|
+
`DataTable` (его пагинация), `NavigationMenuElement`, основная
|
|
894
|
+
кнопка-переход и пункты-переходы `DropdownButtonWithAction` и
|
|
895
|
+
пункты-переходы `HamburgerMenu`. Крестик `PageCard` — кнопка, а не ссылка:
|
|
896
|
+
адрес возврата он тоже отдаёт `navigate`.
|
|
773
897
|
- Компонент обращается к `window`, `document` и другим API браузера только
|
|
774
898
|
в `mounted()`, `beforeUnmount()` и обработчиках событий; загрузка модуля,
|
|
775
899
|
`data()`, `computed` и рендер работают без браузера. Так пакет
|
|
@@ -804,7 +928,7 @@ Inertia SSR), а серверная разметка гидратируется
|
|
|
804
928
|
|
|
805
929
|
npm run playground
|
|
806
930
|
|
|
807
|
-
Поднимает демо-страницы со всеми
|
|
931
|
+
Поднимает демо-страницы со всеми шестнадцатью компонентами в двух окружениях:
|
|
808
932
|
голом (без Tailwind и стилей приложения) и в окружении приложения (с
|
|
809
933
|
Tailwind, `@tailwindcss/forms` и типографикой, как у потребителя). Это
|
|
810
934
|
основной способ посмотреть, как компоненты выглядят и ведут себя, а не
|
|
@@ -820,6 +944,38 @@ Tailwind, `@tailwindcss/forms` и типографикой, как у потре
|
|
|
820
944
|
Правила номера телефона в `RussianMobileFilter` — российские; язык текстов
|
|
821
945
|
задаётся, см. «Языки».
|
|
822
946
|
|
|
947
|
+
## Обновление с 0.15
|
|
948
|
+
|
|
949
|
+
| Было | Стало |
|
|
950
|
+
| --- | --- |
|
|
951
|
+
| `SmallBadge` | `InfoPill`, пропы те же; цвета `blue` нет |
|
|
952
|
+
| `<download-link :url="exportUrl" title="скачать xlsx" />` | `<action-pill icon="download" title="скачать xlsx" loading-text="формируется отчёт" :is-loading="exportLoading" @click="exportOrders" />` и `downloadFile(exportUrl)` в методе страницы |
|
|
953
|
+
| своя пилюля-кнопка с `loading` и событием `clicked` | `ActionPill`: `isLoading`, событие `click` |
|
|
954
|
+
| `rowColor` у `DataTable` — заливка строки | `rowStripe` — полоска слева; строки полосатые всегда |
|
|
955
|
+
| `color` пункта меню — `yellow` или `red`; `Dot` — `red` или `green` | любое имя из списка цветов |
|
|
956
|
+
| красная кнопка и красный пункт — `red-50`/`red-700` | `red-100`/`red-800`, как все цвета списка |
|
|
957
|
+
| предупреждения о поле `danger` и слотах `actions`, `button` | их нет: пункт с `danger` — обычный пункт, слоты не рисуются |
|
|
958
|
+
| свой `TextPopover` проекта | `TextPopover` пакета; пустой текст — компонента нет |
|
|
959
|
+
|
|
960
|
+
Цвета `InfoPill` и `ActionPill` теперь подчиняются одной схеме. По
|
|
961
|
+
сравнению с `SmallBadge` зелёный ярче, с зелёным текстом; серый — с более
|
|
962
|
+
светлым фоном и более тёмным текстом; индиго — с индиго-текстом.
|
|
963
|
+
|
|
964
|
+
Метод страницы для «скачать xlsx»:
|
|
965
|
+
|
|
966
|
+
```js
|
|
967
|
+
exportOrders() {
|
|
968
|
+
this.exportFailure = "";
|
|
969
|
+
this.exportLoading = true;
|
|
970
|
+
downloadFile(this.exportUrl)
|
|
971
|
+
.catch(() => { this.exportFailure = "Попробуйте ещё раз"; })
|
|
972
|
+
.finally(() => { this.exportLoading = false; });
|
|
973
|
+
}
|
|
974
|
+
```
|
|
975
|
+
|
|
976
|
+
`0.16.0` не подтянется по `^0.15.x`: для версий `0.x` знак `^` пропускает
|
|
977
|
+
только патчи. Обновление — `npm install @boobooking/dashboard-ui-components@^0.16.0`.
|
|
978
|
+
|
|
823
979
|
## Обновление с 0.14
|
|
824
980
|
|
|
825
981
|
- Меню профиля в шапке переходит с `Popup` на `HamburgerMenu`: кнопку ☰,
|
|
@@ -883,6 +1039,8 @@ Tailwind, `@tailwindcss/forms` и типографикой, как у потре
|
|
|
883
1039
|
- `DropdownButtonWithAction` строится из списка действий: первое действие —
|
|
884
1040
|
основная кнопка, остальные — меню. Слота `button` нет: переданный слот
|
|
885
1041
|
не рисуется, а в режиме разработки в консоль уходит предупреждение.
|
|
1042
|
+
Предупреждение было только в 0.15, с 0.16.0 его нет: оставшийся слот
|
|
1043
|
+
молча игнорируется.
|
|
886
1044
|
Отступы и шрифт основной кнопки задаёт компонент (`px-4 py-2 text-sm
|
|
887
1045
|
font-medium`). Было:
|
|
888
1046
|
|
|
@@ -954,7 +1112,8 @@ Tailwind, `@tailwindcss/forms` и типографикой, как у потре
|
|
|
954
1112
|
`retryFromDropdown` удаляется: он полагался на разметку пакета.
|
|
955
1113
|
- Поле `danger` заменено цветом: `danger: true` → `color: 'red'`. Пункт
|
|
956
1114
|
с `danger` рисуется обычным, а в режиме разработки в консоль уходит
|
|
957
|
-
предупреждение с заменой.
|
|
1115
|
+
предупреждение с заменой. Предупреждение было только в 0.15, с 0.16.0
|
|
1116
|
+
его нет: оставшееся поле молча игнорируется. Новый цвет — `color: 'yellow'`. Цвета есть
|
|
958
1117
|
и у пунктов `HamburgerMenu`.
|
|
959
1118
|
- Красный пункт меню — мягкий: красный текст, при подсветке светлый
|
|
960
1119
|
красный фон, а не заливка `red-400` с белым текстом.
|
|
@@ -992,7 +1151,9 @@ Tailwind, `@tailwindcss/forms` и типографикой, как у потре
|
|
|
992
1151
|
]"
|
|
993
1152
|
|
|
994
1153
|
Меню со старым слотом остаётся без пунктов и без стрелки; в режиме
|
|
995
|
-
разработки компонент пишет об этом в консоль.
|
|
1154
|
+
разработки компонент пишет об этом в консоль. Это предупреждение было
|
|
1155
|
+
в 0.14–0.15, с 0.16.0 его нет: оставшийся слот молча игнорируется, а
|
|
1156
|
+
`DropdownButtonWithAction` без `actions` ничего не рисует.
|
|
996
1157
|
- `0.14.0` не подтянется по `^0.13.0`: для версий `0.x` знак `^` пропускает
|
|
997
1158
|
только патчи. Обновление — `npm install @boobooking/dashboard-ui-components@^0.14.0`.
|
|
998
1159
|
|
|
@@ -1026,9 +1187,10 @@ Tailwind, `@tailwindcss/forms` и типографикой, как у потре
|
|
|
1026
1187
|
приложения нет: вид компонентов не зависит ни от того, какие утилиты
|
|
1027
1188
|
генерирует приложение, ни от его палитры. Общими остаются только служебные
|
|
1028
1189
|
переменные Tailwind `--tw-*` с их `@property` — на одной версии Tailwind у
|
|
1029
|
-
пакета и приложения они объявлены одинаково — и
|
|
1030
|
-
(
|
|
1031
|
-
`pulse`, победит тот,
|
|
1190
|
+
пакета и приложения они объявлены одинаково — и глобальные `@keyframes pulse` и
|
|
1191
|
+
`spin` (их используют `bb:animate-pulse` у `Dot` и стрелки часов
|
|
1192
|
+
`ActionPill`): если приложение объявит свой `pulse` или `spin`, победит тот,
|
|
1193
|
+
что подключён позже.
|
|
1032
1194
|
|
|
1033
1195
|
Порядок «стили пакета до стилей приложения» по-прежнему нужен: классы,
|
|
1034
1196
|
которые приложение передаёт на корень компонента, — его собственные
|