@boobooking/dashboard-ui-components 0.13.0 → 0.14.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 CHANGED
@@ -226,6 +226,18 @@ Chrome 114+, Firefox 125+. В браузерах старше меню видн
226
226
  События: `update:modelValue` и `changed` — при выборе элемента (повторный
227
227
  клик по уже выбранному снимает выбор) и при очистке через ластик.
228
228
 
229
+ С клавиатуры: пока список открыт, стрелки вверх и вниз переводят фокус по
230
+ пунктам и страницу не прокручивают. Отсчёт идёт от выбранного пункта: вниз —
231
+ следующий за ним, вверх — предыдущий; без выбранного вниз — первый пункт,
232
+ вверх — последний; с краёв — по кругу. Enter или пробел выбирают пункт под
233
+ фокусом так же, как клик, Escape закрывает список. После закрытия фокус
234
+ возвращается на кнопку фильтра. У закрытого списка стрелки прокручивают
235
+ страницу.
236
+
237
+ Подсветка пункта — это фокус, и мышь ведёт тот же фокус: движение по пункту
238
+ ставит фокус на него, стрелки продолжают от пункта под курсором. Подсвечен
239
+ всегда один пункт — тот, на который последними указали клавиатура или мышь.
240
+
229
241
  ### SmallBadge
230
242
 
231
243
  Бейдж-пилюля с коротким текстом. Текст не переносится.
@@ -316,19 +328,45 @@ ConfirmationModal нет v-model».
316
328
  ### DropdownButtonWithAction
317
329
 
318
330
  Кнопка с меню дополнительных действий: основная часть — слот `button`, стрелка
319
- справа открывает меню из слота `actions`. Без слота `actions` стрелки нет, и
331
+ справа открывает меню из пунктов пропа `actions`. Без пунктов стрелки нет, и
320
332
  кнопка скругляется с обеих сторон.
321
333
 
322
- <dropdown-button-with-action v-model="menuIsOpen">
334
+ <dropdown-button-with-action
335
+ v-model="menuIsOpen"
336
+ :actions="[
337
+ { label: 'Поменять пароль', href: route('user.password.edit', { user: row.getId() }) },
338
+ { label: 'Удалить', danger: true, onSelect: () => prepareUserDelete(row) },
339
+ ]"
340
+ >
323
341
  <template #button>…основное действие…</template>
324
- <template #actions>…пункты меню…</template>
325
342
  </dropdown-button-with-action>
326
343
 
327
344
  | Проп | Тип | По умолчанию | Описание |
328
345
  | --- | --- | --- | --- |
346
+ | `actions` | `Array` | `[]` | Пункты меню, см. ниже |
329
347
  | `modelValue` | `Boolean` | `false` | Открыто ли меню |
330
348
  | `lang` | `String` | язык плагина | `"ru"` или `"en"` |
331
349
 
350
+ Пункт меню — объект одной из двух форм: переход (`href` без `onSelect`) или
351
+ действие (`onSelect` без `href`). Поле со значением `undefined` считается
352
+ отсутствующим.
353
+
354
+ | Поле | Тип | Описание |
355
+ | --- | --- | --- |
356
+ | `label` | `String`, обязательно | Текст пункта |
357
+ | `href` | `String` | Переход: обычный клик уходит в `navigate` плагина `dashboardUi`, клик с Cmd/Ctrl/Shift и средней кнопкой — браузеру; без `navigate` — обычная ссылка |
358
+ | `onSelect` | `Function` | Действие: вызывается без аргументов при выборе пункта |
359
+ | `danger` | `Boolean` | Опасный пункт — красный; по умолчанию `false` |
360
+
361
+ Неверный список Vue отмечает предупреждением о пропе в режиме разработки,
362
+ а компонент не падает: элементы-необъекты пропускает, кнопка без функции
363
+ `onSelect` только закрывает меню. `null` — пустой список.
364
+
365
+ Вид пунктов задаёт компонент: страница передаёт данные, а не разметку,
366
+ и классов пунктам не даёт. Обычный пункт — серый текст, при подсветке —
367
+ серый фон; опасный — красный фон, при подсветке темнее. Слота `actions`
368
+ нет с версии 0.14.0 — см. «Обновление с 0.13».
369
+
332
370
  Событие: `update:modelValue` — только когда меню открыл или закрыл сам
333
371
  компонент или браузер: клик по стрелке, клик вне меню, Escape, клик
334
372
  по пункту меню, прокрутка, изменение размера окна. Значение, пришедшее
@@ -342,6 +380,14 @@ ConfirmationModal нет v-model».
342
380
  по любому пункту, прокруткой страницы или таблицы и изменением размера
343
381
  окна. Открытие другого меню закрывает предыдущее.
344
382
 
383
+ Пока меню открыто, стрелки вверх и вниз переводят фокус по пунктам и
384
+ страницу не прокручивают: вниз — на первый пункт, вверх — на последний,
385
+ дальше — по соседним, с краёв — по кругу. Enter на пункте под фокусом
386
+ выбирает его. Подсветка пункта — это фокус, и мышь ведёт тот же фокус:
387
+ движение по пункту ставит фокус на него, стрелки продолжают от пункта под
388
+ курсором. Подсвечен всегда один пункт — тот, на который последними указали
389
+ клавиатура или мышь.
390
+
345
391
  ### DataTable
346
392
 
347
393
  Список данных: бейдж «Найдено X: N», таблица в карточке с горизонтальной
@@ -739,6 +785,41 @@ Tailwind, `@tailwindcss/forms` и типографикой, как у потре
739
785
  Правила номера телефона в `RussianMobileFilter` — российские; язык текстов
740
786
  задаётся, см. «Языки».
741
787
 
788
+ ## Обновление с 0.13
789
+
790
+ - `DropdownButtonWithAction`: пункты меню передаются пропом `actions`,
791
+ слот `actions` убран, и страница больше не оформляет пункты — вид задаёт
792
+ компонент. Было:
793
+
794
+ <template v-slot:actions>
795
+ <Link
796
+ class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900"
797
+ :href="route('user.password.edit', {'user': row.getId()})"
798
+ >
799
+ Поменять пароль
800
+ </Link>
801
+ <a
802
+ href="#"
803
+ @click.prevent="prepareUserDelete(row)"
804
+ class="block px-4 py-2 text-sm bg-red-400 hover:bg-red-500 text-white"
805
+ role="menuitem"
806
+ >
807
+ Удалить
808
+ </a>
809
+ </template>
810
+
811
+ Стало — проп на самом `dropdown-button-with-action`:
812
+
813
+ :actions="[
814
+ { label: 'Поменять пароль', href: route('user.password.edit', { user: row.getId() }) },
815
+ { label: 'Удалить', danger: true, onSelect: () => prepareUserDelete(row) },
816
+ ]"
817
+
818
+ Меню со старым слотом остаётся без пунктов и без стрелки; в режиме
819
+ разработки компонент пишет об этом в консоль.
820
+ - `0.14.0` не подтянется по `^0.13.0`: для версий `0.x` знак `^` пропускает
821
+ только патчи. Обновление — `npm install @boobooking/dashboard-ui-components@^0.14.0`.
822
+
742
823
  ## Обновление с 0.12
743
824
 
744
825
  - Крестик `PageCard` больше не ходит по истории: подключите `currentUrl`