@skyservice-developers/vue-dev-kit 2.11.0 → 2.13.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.
Files changed (47) hide show
  1. package/README.md +229 -39
  2. package/dist/features/data-table/SkyDataTable.vue.d.ts +210 -0
  3. package/dist/features/data-table/SkyDataTableColumnToggle.vue.d.ts +36 -0
  4. package/dist/features/data-table/index.d.ts +2 -0
  5. package/dist/features/index.d.ts +2 -0
  6. package/dist/features/table/TableColumnSettings.vue.d.ts +31 -0
  7. package/dist/features/table/TableMassActions.vue.d.ts +56 -0
  8. package/dist/features/table/TableVirtualBody.vue.d.ts +65 -0
  9. package/dist/features/table/index.d.ts +3 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/shared/lib/table/index.d.ts +8 -0
  12. package/dist/shared/lib/table/tableFeatures.d.ts +110 -0
  13. package/dist/shared/lib/table/useColumnVisibility.d.ts +29 -0
  14. package/dist/shared/lib/table/useTableSelection.d.ts +34 -0
  15. package/dist/shared/lib/table/useTableSort.d.ts +28 -0
  16. package/dist/shared/ui/Modal/Modal.vue.d.ts +2 -0
  17. package/dist/shared/ui/SkyDateRangePicker/SkyDateRangePicker.vue.d.ts +749 -0
  18. package/dist/shared/ui/SkyDateRangePicker/index.d.ts +1 -0
  19. package/dist/shared/ui/SkyTable/DynamicScroller.vue.d.ts +2 -2
  20. package/dist/shared/ui/SkyTable/Row.vue.d.ts +2 -2
  21. package/dist/shared/ui/SkyTable/items/itemDefault.vue.d.ts +2 -2
  22. package/dist/shared/ui/SkyTable/items/itemInput.vue.d.ts +1 -1
  23. package/dist/shared/ui/SkyTable/items/itemSelect.vue.d.ts +2 -2
  24. package/dist/shared/ui/SkyTable/items/itemTagEditor.vue.d.ts +2 -2
  25. package/dist/shared/ui/SkyTable/items/itemTags.vue.d.ts +1 -1
  26. package/dist/shared/ui/functional-calendar/components/Arrows.vue.d.ts +49 -0
  27. package/dist/shared/ui/functional-calendar/components/Day.vue.d.ts +81 -0
  28. package/dist/shared/ui/functional-calendar/components/Footer.vue.d.ts +2 -0
  29. package/dist/shared/ui/functional-calendar/components/FunctionalCalendar.vue.d.ts +554 -0
  30. package/dist/shared/ui/functional-calendar/components/MonthYearPicker.vue.d.ts +27 -0
  31. package/dist/shared/ui/functional-calendar/components/PickerInputs.vue.d.ts +41 -0
  32. package/dist/shared/ui/functional-calendar/components/TimePicker.vue.d.ts +23 -0
  33. package/dist/shared/ui/functional-calendar/components/WeekNumbers.vue.d.ts +22 -0
  34. package/dist/shared/ui/index.d.ts +3 -0
  35. package/dist/shared/ui/table/SkyTableBody.vue.d.ts +11 -0
  36. package/dist/shared/ui/table/SkyTableCell.vue.d.ts +45 -0
  37. package/dist/shared/ui/table/SkyTableEmpty.vue.d.ts +39 -0
  38. package/dist/shared/ui/table/SkyTableHead.vue.d.ts +34 -0
  39. package/dist/shared/ui/table/SkyTableHeader.vue.d.ts +40 -0
  40. package/dist/shared/ui/table/SkyTableRoot.vue.d.ts +50 -0
  41. package/dist/shared/ui/table/SkyTableRow.vue.d.ts +49 -0
  42. package/dist/shared/ui/table/index.d.ts +9 -0
  43. package/dist/shared/ui/table/types.d.ts +36 -0
  44. package/dist/style.css +1 -1
  45. package/dist/vue-dev-kit.cjs +14 -12
  46. package/dist/vue-dev-kit.js +11949 -8835
  47. package/package.json +10 -3
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Vue 3 developer toolkit для Skyservice mini-apps: UI компоненти + TypeScript SDK (iframe bridge + HTTP API клієнт).
4
4
 
5
+ 📖 **Документація з живими демо:** https://74cfe434-a2b3-4d49-8fa7-db7343e399dc.apps.platform365.online/
6
+
5
7
  > **v2.0.0 breaking changes:**
6
8
  > - Vue 2 більше не підтримується (тільки Vue 3.4+).
7
9
  > - Додано повноцінний SDK (`bridge` + `SkyserviceAPI`), раніше опублікований як окремий пакет `skyservice-sdk` (задепрекейтнутий).
@@ -22,14 +24,20 @@ import '@skyservice-developers/vue-dev-kit/style.css'
22
24
  import {
23
25
  // shared/ui
24
26
  Header, Modal, Dialog,
25
- SkyButton, SkySelect, SkySelectSearch, SkyInput, SkySearchInput, SkyCheckbox,
27
+ SkyButton, SkySelect, SkySelectSearch, SkyInput, SkySearchInput, SkyCheckbox, SkyTabs,
26
28
  SkyAlert, SkyBadge, SkyLoader,
27
29
  SkyCard, SkyCardHeader, SkyCardRow,
28
30
  SkyTable,
31
+ // грід на TanStack + примітиви таблиці + композабли
32
+ SkyDataTable, createSkyColumnHelper, skyTableFeatures,
33
+ SkyTableRoot, SkyTableHeader, SkyTableHead, SkyTableBody, SkyTableRow, SkyTableCell,
34
+ useTableSort, useTableSelection, useColumnVisibility,
35
+ FunctionalCalendar, SkyDateRangePicker,
29
36
  // widgets
30
37
  SkyTileCard,
31
38
  // features
32
39
  SkyCheckboxFilter,
40
+ TableMassActions, TableColumnSettings, TableVirtualBody,
33
41
  // sdk
34
42
  navigate, SkyserviceAPI, isInsideIframe,
35
43
  // sky-service-ui-components
@@ -239,6 +247,7 @@ import {
239
247
  | `closeOnEsc` | `Boolean` | `true` | Закривати при натисканні Esc |
240
248
  | `width` | `String` | `'100%'` | Ширина модалки |
241
249
  | `height` | `String` | `'100%'` | Висота модалки |
250
+ | `borderRadius` | `String` | `'12px'` | Радіус заокруглення модалки (ігнорується в повноекранному режимі) |
242
251
 
243
252
  #### Slots
244
253
 
@@ -381,60 +390,47 @@ import {
381
390
 
382
391
  ### SkySelect
383
392
 
384
- Кастомний select з дропдауном, клавіатурною навігацією та підтримкою рядків і об'єктів як опцій.
393
+ Нативний `<select>` у фірмовому стилі, зі станами `default | success | error` та підказкою під полем.
385
394
 
386
395
  ```vue
387
- <!-- Об'єкти -->
388
396
  <SkySelect
389
- v-model="selected"
397
+ v-model="payment"
390
398
  :options="[
391
- { label: 'Готівка', value: 'cash' },
392
- { label: 'Картка', value: 'card' },
399
+ { value: 'cash', text: 'Готівка' },
400
+ { value: 'card', text: 'Картка' },
393
401
  ]"
394
402
  placeholder="Оберіть спосіб оплати"
395
403
  />
396
404
 
397
- <!-- Рядки -->
398
- <SkySelect v-model="selected" :options="['Кг', 'Шт', 'Л']" />
399
-
400
- <!-- На всю ширину -->
401
- <SkySelect v-model="selected" :options="options" block />
405
+ <SkySelect v-model="payment" :options="options" state="error" hint="Оберіть спосіб" />
406
+ <SkySelect v-model="payment" :options="options" disabled />
402
407
  ```
403
408
 
404
409
  #### Props
405
410
 
406
411
  | Prop | Тип | За замовчуванням | Опис |
407
412
  |------|-----|------------------|------|
408
- | `modelValue` / `value` | `any` | `null` | Поточне значення (v-model) |
409
- | `options` | `Array` | `[]` | `Array<{ label, value } \| string>` |
410
- | `placeholder` | `String` | `''` | Текст-заглушка |
413
+ | `modelValue` | `string \| number` | — | Поточне значення (v-model) |
414
+ | `options` | `Array<{ value: string \| number; text: string }>` | — | Список опцій (обов'язковий) |
415
+ | `id` | `String` | — | HTML id |
411
416
  | `disabled` | `Boolean` | `false` | Вимкнений стан |
412
- | `block` | `Boolean` | `false` | Повна ширина |
413
- | `teleport` | `Boolean` | `false` | Рендерить дропдаун в `<body>` (для модалок/overflow:hidden контейнерів) |
417
+ | `state` | `'default' \| 'success' \| 'error'` | `'default'` | Візуальний стан рамки |
418
+ | `placeholder` | `String` | `''` | Текст-заглушка (рендериться як `disabled hidden` опція) |
419
+ | `hint` | `String` | `''` | Підказка під полем у кольорі `state` |
414
420
 
415
- #### Клавіатура
421
+ #### Events
416
422
 
417
- | Клавіша | Дія |
418
- |---------|-----|
419
- | `Enter` / `Space` | Відкрити дропдаун |
420
- | `↑` / `↓` | Навігація по опціях |
421
- | `Enter` | Вибрати поточну опцію |
422
- | `Esc` | Закрити дропдаун |
423
+ | Event | Payload | Опис |
424
+ |-------|---------|------|
425
+ | `update:modelValue` | `string \| number` | Emit при виборі опції |
423
426
 
424
- #### CSS змінні
427
+ > **Формат опцій — тільки `{ value, text }`.** Масив рядків або `{ label, value }` дадуть порожні пункти:
428
+ > компонент читає `option.value` і `option.text`. Мапте дані заздалегідь — `units.map(u => ({ value: u, text: u }))`.
425
429
 
426
- ```css
427
- --sky-select-padding: 10px 14px
428
- --sky-select-radius: 6px
429
- --sky-select-font-size: 14px
430
- --sky-select-border: 1px solid #d1d5db
431
- --sky-select-dropdown-shadow: 0 4px 12px rgba(0,0,0,0.1)
432
- --sky-select-dropdown-max-height: 220px
433
- --sky-select-option-hover-bg: #f3f4f6
434
- --sky-select-option-selected-color: #24973f
435
- ```
430
+ > Список малює браузер, тож клавіатура й поведінка на мобільних — рідні для платформи, а дропдаун
431
+ > не обрізається контейнерами з `overflow: hidden` (усередині `Modal` teleport не потрібен).
432
+ > Компонент займає всю ширину контейнера — обмежуйте батьківський блок, якщо треба вужче.
436
433
 
437
- ---
438
434
 
439
435
  ### SkySelectSearch
440
436
 
@@ -579,6 +575,39 @@ import {
579
575
 
580
576
  ---
581
577
 
578
+ ### SkyTabs
579
+
580
+ Сегментовані таби з анімованим індикатором: біла «пігулка» плавно переїжджає під активну опцію й підлаштовує ширину під довжину тексту.
581
+
582
+ ```vue
583
+ <SkyTabs
584
+ v-model="period"
585
+ :options="[
586
+ { value: 'day', text: 'День' },
587
+ { value: 'week', text: 'Тиждень' },
588
+ { value: 'month', text: 'Місяць' },
589
+ ]"
590
+ />
591
+ ```
592
+
593
+ #### Props
594
+
595
+ | Prop | Тип | За замовчуванням | Опис |
596
+ |------|-----|------------------|------|
597
+ | `modelValue` | `string \| number` | — | Активне значення (v-model) |
598
+ | `options` | `Array<{ value: string \| number; text: string }>` | — | Список табів (обов'язковий) |
599
+ | `disabled` | `Boolean` | `false` | Блокує весь набір |
600
+
601
+ #### Events
602
+
603
+ | Event | Payload | Опис |
604
+ |-------|---------|------|
605
+ | `update:modelValue` | `string \| number` | Emit при виборі таба |
606
+
607
+ > Індикатор вимірює активну кнопку через `getBoundingClientRect()`: на першому рендері стає на місце без анімації, далі — з переходом. Реагує на `resize` вікна і зміну кількості опцій. У прихованому контейнері (`display: none`) розміри нульові — позиція виправиться після показу.
608
+
609
+ ---
610
+
582
611
  ### SkyAlert
583
612
 
584
613
  Інформаційне повідомлення з 4 тональностями та опціональною іконкою.
@@ -831,6 +860,129 @@ Shell-контейнер для карток: ribbon / header / body / footer
831
860
 
832
861
  ---
833
862
 
863
+ ### SkyDataTable
864
+
865
+ Грід на [TanStack Table v9](https://tanstack.com/table/latest): headless-ядро тримає стан і обчислення, розмітка й стилі — наші. Візуально це та сама таблиця, що в POS. Повний опис — у [документації](https://74cfe434-a2b3-4d49-8fa7-db7343e399dc.apps.platform365.online/components/data-table).
866
+
867
+ ```vue
868
+ <script setup lang="ts">
869
+ import { h } from 'vue'
870
+ import { SkyDataTable, SkyBadge, createSkyColumnHelper } from '@skyservice-developers/vue-dev-kit'
871
+
872
+ const column = createSkyColumnHelper<Product>()
873
+
874
+ const columns = [
875
+ column.accessor('name', { header: 'Назва', meta: { widthFr: 2 } }),
876
+ column.accessor('price', {
877
+ header: 'Ціна',
878
+ size: 110,
879
+ meta: { align: 'right' },
880
+ cell: ({ getValue }) => `${getValue()} ₴`,
881
+ }),
882
+ column.accessor('status', {
883
+ header: 'Статус',
884
+ size: 150,
885
+ enableSorting: false,
886
+ cell: ({ getValue }) =>
887
+ h(SkyBadge, { tone: getValue() === 'Активний' ? 'success' : 'default', label: getValue() }),
888
+ }),
889
+ ]
890
+ </script>
891
+
892
+ <template>
893
+ <SkyDataTable :columns="columns" :data="products" :page-size="25" row-id="id" searchable />
894
+ </template>
895
+ ```
896
+
897
+ #### Props
898
+
899
+ | Prop | Тип | За замовчуванням | Опис |
900
+ |------|-----|------------------|------|
901
+ | `columns` | `ColumnDef[]` | — | Опис колонок (TanStack) |
902
+ | `data` | `TData[]` | — | Дані |
903
+ | `features` | `TableFeatures` | `skyTableFeatures` | Власний набір фіч |
904
+ | `rowId` | `String \| (row) => string` | — | Ключ рядка |
905
+ | `pageSize` | `Number` | `0` | Розмір сторінки; `0` — без пагінації |
906
+ | `searchable` | `Boolean` | `false` | Поле глобального пошуку в тулбарі |
907
+ | `initialSorting` | `SortingState` | — | Початкове сортування |
908
+ | `emptyText` | `String` | `'Даних немає'` | Текст порожнього стану |
909
+ | `interactiveRows` | `Boolean` | `false` | Курсор і hover на рядках |
910
+
911
+ Слоти: `toolbar`, `actions`, `footer`, `empty` (усі отримують `{ table }`). Подія: `row-click`. Інстанс таблиці доступний через `ref` → `tableRef.table`.
912
+
913
+ #### Набір фіч
914
+
915
+ Фічі TanStack v9 вмикаються явно — кіт експортує стабільний `skyTableFeatures` (сортування, вибір, видимість колонок, пагінація, фільтрація + слоти row-моделей і реєстри `sortFns`/`filterFns`). Потрібно більше — зберіть свій обʼєкт і передайте пропом `features`:
916
+
917
+ ```ts
918
+ import { tableFeatures, rowExpandingFeature, createExpandedRowModel } from '@tanstack/vue-table'
919
+ import { skyTableFeatures } from '@skyservice-developers/vue-dev-kit'
920
+
921
+ const features = tableFeatures({
922
+ ...skyTableFeatures,
923
+ rowExpandingFeature,
924
+ expandedRowModel: createExpandedRowModel(),
925
+ })
926
+ ```
927
+
928
+ Ширина колонок: `size: 150` — фіксовані px, `meta: { widthFr: 2 }` — гнучка частка (має пріоритет над `size`), `meta: { align }` і `meta: { minWidthScreen }` — вирівнювання й приховування на вузьких екранах.
929
+
930
+ > `@tanstack/vue-table` входить у залежності пакета й лишається зовнішнім у бандлі — застосунки, які гріда не використовують, його не тягнуть.
931
+
932
+ ---
933
+
934
+ ### Таблиця з примітивів (композиційна)
935
+
936
+ Набір примітивів і композаблів замість одного великого компонента: береш тільки те, що треба. Без вибору рядків, без масових дій, без віртуалізації — і нічого з цього не потрапляє в бандл. Повний опис — у [документації](https://74cfe434-a2b3-4d49-8fa7-db7343e399dc.apps.platform365.online/components/table).
937
+
938
+ ```vue
939
+ <script setup>
940
+ import {
941
+ SkyTableRoot, SkyTableHeader, SkyTableHead,
942
+ SkyTableBody, SkyTableRow, SkyTableCell,
943
+ } from '@skyservice-developers/vue-dev-kit'
944
+
945
+ const columns = [
946
+ { name: 'name', title: 'Товар', widthFr: 2 },
947
+ { name: 'price', title: 'Ціна', width: 90, align: 'right' },
948
+ ]
949
+ </script>
950
+
951
+ <template>
952
+ <SkyTableRoot :columns="columns">
953
+ <SkyTableHeader>
954
+ <SkyTableHead v-for="c in columns" :key="c.name" :column="c" />
955
+ </SkyTableHeader>
956
+ <SkyTableBody>
957
+ <SkyTableRow v-for="row in rows" :key="row.id">
958
+ <SkyTableCell>{{ row.name }}</SkyTableCell>
959
+ <SkyTableCell align="right">{{ row.price }}</SkyTableCell>
960
+ </SkyTableRow>
961
+ </SkyTableBody>
962
+ </SkyTableRoot>
963
+ </template>
964
+ ```
965
+
966
+ #### Що входить
967
+
968
+ | Шар | Експорти | Коли підключати |
969
+ |-----|----------|-----------------|
970
+ | Примітиви (`shared/ui/table`) | `SkyTableRoot`, `SkyTableHeader`, `SkyTableHead`, `SkyTableBody`, `SkyTableRow`, `SkyTableCell`, `SkyTableEmpty` | завжди |
971
+ | Композабли (`shared/lib/table`) | `useTableSort`, `useTableSelection`, `useColumnVisibility` | за потреби |
972
+ | Фічі (`features/table`) | `TableMassActions`, `TableColumnSettings`, `TableVirtualBody` | опційно, кожна окремо |
973
+
974
+ ```ts
975
+ const { sort, toggle } = useTableSort({ initial: { of: 'name', ot: 'asc' } })
976
+ const { selected, isSelected, toggle: select, toggleAll } = useTableSelection(rows, { rowId: 'id' })
977
+ const { visibility, visibleColumns } = useColumnVisibility(columns, { storageKey: 'products' })
978
+ ```
979
+
980
+ Композабли не сортують і не фільтрують дані — вони тримають стан, а дані лишаються за застосунком (зазвичай сортує сервер). Колонка вибору описується як звичайна колонка (`{ name: '_select', width: 44 }`), щоб грід шапки й рядків рахувався з одного джерела.
981
+
982
+ > `vue-virtual-scroller` імпортує лише `TableVirtualBody`. Не потрібна віртуалізація — беріть `SkyTableBody`, і залежність не знадобиться.
983
+
984
+ ---
985
+
834
986
  ### SkyTable
835
987
 
836
988
  Віртуал-скрол таблиця (на `vue-virtual-scroller`) для великих списків — у DOM тримаються лише видимі рядки. Розмітка й стилі 1:1 з таблицею товарів POS: чекбокси, масові дії, сортування, зміна ширини/видимості колонок, розкриття вкладених рядків (модифікацій), inline-редагування комірок і теги.
@@ -927,6 +1079,33 @@ const json = { items, total: items.length }
927
1079
 
928
1080
  ---
929
1081
 
1082
+ ### FunctionalCalendar
1083
+
1084
+ Перенесено зі SkyMarket (`src/lib/functional-calendar`), стилі й розмітка 1:1. Форк [vue-functional-calendar](https://github.com/ManukMinasyan/vue-functional-calendar) під Vue 3 — пропси, події та слоти без змін відносно оригіналу.
1085
+
1086
+ ```vue
1087
+ <FunctionalCalendar
1088
+ :value="calendarData"
1089
+ @input="calendarData = $event"
1090
+ is-date-range
1091
+ is-modal
1092
+ />
1093
+ ```
1094
+
1095
+ ### SkyDateRangePicker
1096
+
1097
+ Перенесено зі SkyMarket (`DatePickerRange.vue`) — готовий попап-піка діапазону дат на базі `FunctionalCalendar`: іконка-тригер, лейбл періоду, пресети (Сьогодні / Вчора / Тиждень / Місяць / Минулий-Поточний місяць / За весь час), стилі 1:1. На відміну від оригіналу, який читав `store`/`@/langs` конкретного застосунку, тут стан і тексти (з UA-фолбеками) локальні.
1098
+
1099
+ ```vue
1100
+ <SkyDateRangePicker v-model="range" @set-date="onPreset" />
1101
+ ```
1102
+
1103
+ ```js
1104
+ const range = reactive({ start: '', end: '' }) // { start, end } у форматі yyyy-mm-dd
1105
+ ```
1106
+
1107
+ ---
1108
+
930
1109
  ## Features
931
1110
 
932
1111
  ### SkyCheckboxFilter
@@ -1053,11 +1232,14 @@ import iconRaw from '@/shared/assets/icons/home.svg?raw'
1053
1232
  ```bash
1054
1233
  npm install
1055
1234
 
1056
- # Playground (live preview компонентів)
1057
- npm run playground
1235
+ # Документація з живими демо (localhost:5173)
1236
+ npm run docs:dev
1058
1237
 
1059
1238
  # Білд (компоненти + SDK → dist/)
1060
1239
  npm run build
1240
+
1241
+ # Типи
1242
+ npm run typecheck
1061
1243
  ```
1062
1244
 
1063
1245
  ## Реліз
@@ -1097,18 +1279,26 @@ src/
1097
1279
  │ ├── BaseTeleport/
1098
1280
  │ ├── SkyButton/
1099
1281
  │ ├── SkySelect/ SkySelectSearch/ SkyInput/ SkySearchInput/ SkyCheckbox/
1282
+ │ ├── SkyTabs/ # сегментовані таби з анімованим індикатором
1100
1283
  │ ├── SkyAlert/
1101
1284
  │ ├── SkyBadge/
1102
1285
  │ ├── SkyCard/ SkyCardHeader/ SkyCardRow/
1103
1286
  │ ├── SkyLoader/
1104
- │ ├── SkyTable/ # віртуал-скрол таблиця (Header/Row/Footer/DynamicScroller/items/*)
1287
+ │ ├── table/ # примітиви композиційної таблиці (Root/Header/Head/Body/Row/Cell/Empty)
1288
+ │ ├── SkyTable/ # готова віртуал-скрол таблиця (Header/Row/Footer/DynamicScroller/items/*)
1105
1289
  │ ├── SkyTileCard/
1290
+ │ ├── functional-calendar/ # форк vue-functional-calendar, перенесений зі SkyMarket 1:1
1291
+ │ ├── SkyDateRangePicker/ # DatePickerRange зі SkyMarket, store/langs → props/локальний стан
1106
1292
  │ └── <Component>/
1107
1293
  │ ├── <Component>.vue
1108
1294
  │ └── index.ts
1295
+ │ └── lib/
1296
+ │ └── table/ # skyTableFeatures + useTableSort / useTableSelection / useColumnVisibility
1109
1297
  ├── features/ # фічові блоки (orchestration shared/ui)
1110
1298
  │ ├── index.ts
1111
- │ └── SkyCheckboxFilter/
1299
+ │ ├── SkyCheckboxFilter/
1300
+ │ ├── table/ # TableMassActions / TableColumnSettings / TableVirtualBody
1301
+ │ └── data-table/ # SkyDataTable на TanStack v9 + перемикач колонок
1112
1302
  ├── sdk/ # TypeScript SDK (без Vue залежностей)
1113
1303
  │ ├── bridge.ts # iframe postMessage API
1114
1304
  │ ├── api.ts # SkyserviceAPI HTTP клієнт
@@ -0,0 +1,210 @@
1
+ import { ColumnDef, SortingState, TableFeatures } from '@tanstack/vue-table';
2
+
3
+ declare const _default: <TData extends Record<string, any>>(__VLS_props: Awaited<typeof __VLS_setup>["props"], __VLS_ctx?: __VLS_Prettify<Pick<Awaited<typeof __VLS_setup>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
+ props: __VLS_Prettify<__VLS_OmitKeepDiscriminatedUnion<(Partial<{}> & Omit<{
5
+ readonly "onRow-click"?: ((row: TData) => any) | undefined;
6
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>) & {
7
+ /** Опис колонок у форматі TanStack. Ширину беремо з `size` / `meta.widthFr`. */
8
+ columns: ColumnDef<any, TData, any>[];
9
+ data: TData[];
10
+ /**
11
+ * Набір фіч. За замовчуванням — сортування, вибір, видимість колонок,
12
+ * пагінація і фільтрація. Потрібно більше — зберіть свій через `tableFeatures()`.
13
+ */
14
+ features?: TableFeatures;
15
+ /** Ключ рядка. Без нього TanStack бере індекс, і вибір «поїде» після сортування. */
16
+ rowId?: string | ((row: TData) => string);
17
+ /** Розмір сторінки. `0` вимикає пагінацію — рендеряться всі рядки. */
18
+ pageSize?: number;
19
+ /** Показати поле глобального пошуку в тулбарі. */
20
+ searchable?: boolean;
21
+ searchPlaceholder?: string;
22
+ initialSorting?: SortingState;
23
+ emptyText?: string;
24
+ /** Курсор-вказівник і hover на рядках. */
25
+ interactiveRows?: boolean;
26
+ }, keyof import('vue').VNodeProps | keyof import('vue').AllowedComponentProps>> & {} & (import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps);
27
+ expose(exposed: import('vue').ShallowUnwrapRef<{
28
+ table: import('@tanstack/vue-table').VueTable<{
29
+ columnFilteringFeature: import('@tanstack/table-core').TableFeature;
30
+ columnSizingFeature: import('@tanstack/table-core').TableFeature;
31
+ columnVisibilityFeature: import('@tanstack/table-core').TableFeature;
32
+ globalFilteringFeature: import('@tanstack/table-core').TableFeature;
33
+ rowPaginationFeature: import('@tanstack/table-core').TableFeature;
34
+ rowSelectionFeature: import('@tanstack/table-core').TableFeature;
35
+ rowSortingFeature: import('@tanstack/table-core').TableFeature;
36
+ coreRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
37
+ filteredRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
38
+ sortedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
39
+ paginatedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
40
+ sortFns: {
41
+ alphanumeric: import('@tanstack/table-core').CreatedSortFn<any, any>;
42
+ alphanumericCaseSensitive: import('@tanstack/table-core').CreatedSortFn<any, any>;
43
+ basic: import('@tanstack/table-core').CreatedSortFn<any, any>;
44
+ datetime: import('@tanstack/table-core').CreatedSortFn<any, any>;
45
+ text: import('@tanstack/table-core').CreatedSortFn<any, any>;
46
+ textCaseSensitive: import('@tanstack/table-core').CreatedSortFn<any, any>;
47
+ };
48
+ filterFns: {
49
+ arrIncludes: import('@tanstack/table-core').CreatedFilterFn<any, any>;
50
+ arrIncludesAll: import('@tanstack/table-core').CreatedFilterFn<any, any>;
51
+ arrHas: import('@tanstack/table-core').CreatedFilterFn<any, any>;
52
+ arrIncludesSome: import('@tanstack/table-core').CreatedFilterFn<any, any>;
53
+ between: import('@tanstack/table-core').CreatedFilterFn<any, any>;
54
+ betweenInclusive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
55
+ empty: import('@tanstack/table-core').CreatedFilterFn<any, any>;
56
+ endsWith: import('@tanstack/table-core').CreatedFilterFn<any, any>;
57
+ equals: import('@tanstack/table-core').CreatedFilterFn<any, any>;
58
+ equalsString: import('@tanstack/table-core').CreatedFilterFn<any, any>;
59
+ equalsStringSensitive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
60
+ inDateRange: import('@tanstack/table-core').CreatedFilterFn<any, any>;
61
+ inNumberRange: import('@tanstack/table-core').CreatedFilterFn<any, any>;
62
+ includesString: import('@tanstack/table-core').CreatedFilterFn<any, any>;
63
+ includesStringSensitive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
64
+ notEmpty: import('@tanstack/table-core').CreatedFilterFn<any, any>;
65
+ startsWith: import('@tanstack/table-core').CreatedFilterFn<any, any>;
66
+ weakEquals: import('@tanstack/table-core').CreatedFilterFn<any, any>;
67
+ };
68
+ }, TData>;
69
+ }>): void;
70
+ attrs: any;
71
+ slots: ReturnType<() => {
72
+ toolbar?(_: {
73
+ table: import('@tanstack/vue-table').VueTable<{
74
+ columnFilteringFeature: import('@tanstack/table-core').TableFeature;
75
+ columnSizingFeature: import('@tanstack/table-core').TableFeature;
76
+ columnVisibilityFeature: import('@tanstack/table-core').TableFeature;
77
+ globalFilteringFeature: import('@tanstack/table-core').TableFeature;
78
+ rowPaginationFeature: import('@tanstack/table-core').TableFeature;
79
+ rowSelectionFeature: import('@tanstack/table-core').TableFeature;
80
+ rowSortingFeature: import('@tanstack/table-core').TableFeature;
81
+ coreRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
82
+ filteredRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
83
+ sortedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
84
+ paginatedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
85
+ sortFns: {
86
+ alphanumeric: import('@tanstack/table-core').CreatedSortFn<any, any>;
87
+ alphanumericCaseSensitive: import('@tanstack/table-core').CreatedSortFn<any, any>;
88
+ basic: import('@tanstack/table-core').CreatedSortFn<any, any>;
89
+ datetime: import('@tanstack/table-core').CreatedSortFn<any, any>;
90
+ text: import('@tanstack/table-core').CreatedSortFn<any, any>;
91
+ textCaseSensitive: import('@tanstack/table-core').CreatedSortFn<any, any>;
92
+ };
93
+ filterFns: {
94
+ arrIncludes: import('@tanstack/table-core').CreatedFilterFn<any, any>;
95
+ arrIncludesAll: import('@tanstack/table-core').CreatedFilterFn<any, any>;
96
+ arrHas: import('@tanstack/table-core').CreatedFilterFn<any, any>;
97
+ arrIncludesSome: import('@tanstack/table-core').CreatedFilterFn<any, any>;
98
+ between: import('@tanstack/table-core').CreatedFilterFn<any, any>;
99
+ betweenInclusive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
100
+ empty: import('@tanstack/table-core').CreatedFilterFn<any, any>;
101
+ endsWith: import('@tanstack/table-core').CreatedFilterFn<any, any>;
102
+ equals: import('@tanstack/table-core').CreatedFilterFn<any, any>;
103
+ equalsString: import('@tanstack/table-core').CreatedFilterFn<any, any>;
104
+ equalsStringSensitive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
105
+ inDateRange: import('@tanstack/table-core').CreatedFilterFn<any, any>;
106
+ inNumberRange: import('@tanstack/table-core').CreatedFilterFn<any, any>;
107
+ includesString: import('@tanstack/table-core').CreatedFilterFn<any, any>;
108
+ includesStringSensitive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
109
+ notEmpty: import('@tanstack/table-core').CreatedFilterFn<any, any>;
110
+ startsWith: import('@tanstack/table-core').CreatedFilterFn<any, any>;
111
+ weakEquals: import('@tanstack/table-core').CreatedFilterFn<any, any>;
112
+ };
113
+ }, TData>;
114
+ }): any;
115
+ actions?(_: {
116
+ table: import('@tanstack/vue-table').VueTable<{
117
+ columnFilteringFeature: import('@tanstack/table-core').TableFeature;
118
+ columnSizingFeature: import('@tanstack/table-core').TableFeature;
119
+ columnVisibilityFeature: import('@tanstack/table-core').TableFeature;
120
+ globalFilteringFeature: import('@tanstack/table-core').TableFeature;
121
+ rowPaginationFeature: import('@tanstack/table-core').TableFeature;
122
+ rowSelectionFeature: import('@tanstack/table-core').TableFeature;
123
+ rowSortingFeature: import('@tanstack/table-core').TableFeature;
124
+ coreRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
125
+ filteredRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
126
+ sortedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
127
+ paginatedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
128
+ sortFns: {
129
+ alphanumeric: import('@tanstack/table-core').CreatedSortFn<any, any>;
130
+ alphanumericCaseSensitive: import('@tanstack/table-core').CreatedSortFn<any, any>;
131
+ basic: import('@tanstack/table-core').CreatedSortFn<any, any>;
132
+ datetime: import('@tanstack/table-core').CreatedSortFn<any, any>;
133
+ text: import('@tanstack/table-core').CreatedSortFn<any, any>;
134
+ textCaseSensitive: import('@tanstack/table-core').CreatedSortFn<any, any>;
135
+ };
136
+ filterFns: {
137
+ arrIncludes: import('@tanstack/table-core').CreatedFilterFn<any, any>;
138
+ arrIncludesAll: import('@tanstack/table-core').CreatedFilterFn<any, any>;
139
+ arrHas: import('@tanstack/table-core').CreatedFilterFn<any, any>;
140
+ arrIncludesSome: import('@tanstack/table-core').CreatedFilterFn<any, any>;
141
+ between: import('@tanstack/table-core').CreatedFilterFn<any, any>;
142
+ betweenInclusive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
143
+ empty: import('@tanstack/table-core').CreatedFilterFn<any, any>;
144
+ endsWith: import('@tanstack/table-core').CreatedFilterFn<any, any>;
145
+ equals: import('@tanstack/table-core').CreatedFilterFn<any, any>;
146
+ equalsString: import('@tanstack/table-core').CreatedFilterFn<any, any>;
147
+ equalsStringSensitive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
148
+ inDateRange: import('@tanstack/table-core').CreatedFilterFn<any, any>;
149
+ inNumberRange: import('@tanstack/table-core').CreatedFilterFn<any, any>;
150
+ includesString: import('@tanstack/table-core').CreatedFilterFn<any, any>;
151
+ includesStringSensitive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
152
+ notEmpty: import('@tanstack/table-core').CreatedFilterFn<any, any>;
153
+ startsWith: import('@tanstack/table-core').CreatedFilterFn<any, any>;
154
+ weakEquals: import('@tanstack/table-core').CreatedFilterFn<any, any>;
155
+ };
156
+ }, TData>;
157
+ }): any;
158
+ empty?(_: {}): any;
159
+ footer?(_: {
160
+ table: import('@tanstack/vue-table').VueTable<{
161
+ columnFilteringFeature: import('@tanstack/table-core').TableFeature;
162
+ columnSizingFeature: import('@tanstack/table-core').TableFeature;
163
+ columnVisibilityFeature: import('@tanstack/table-core').TableFeature;
164
+ globalFilteringFeature: import('@tanstack/table-core').TableFeature;
165
+ rowPaginationFeature: import('@tanstack/table-core').TableFeature;
166
+ rowSelectionFeature: import('@tanstack/table-core').TableFeature;
167
+ rowSortingFeature: import('@tanstack/table-core').TableFeature;
168
+ coreRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
169
+ filteredRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
170
+ sortedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
171
+ paginatedRowModel: (table: import('@tanstack/table-core').Table<any, any>) => () => import('@tanstack/table-core').RowModel<any, any>;
172
+ sortFns: {
173
+ alphanumeric: import('@tanstack/table-core').CreatedSortFn<any, any>;
174
+ alphanumericCaseSensitive: import('@tanstack/table-core').CreatedSortFn<any, any>;
175
+ basic: import('@tanstack/table-core').CreatedSortFn<any, any>;
176
+ datetime: import('@tanstack/table-core').CreatedSortFn<any, any>;
177
+ text: import('@tanstack/table-core').CreatedSortFn<any, any>;
178
+ textCaseSensitive: import('@tanstack/table-core').CreatedSortFn<any, any>;
179
+ };
180
+ filterFns: {
181
+ arrIncludes: import('@tanstack/table-core').CreatedFilterFn<any, any>;
182
+ arrIncludesAll: import('@tanstack/table-core').CreatedFilterFn<any, any>;
183
+ arrHas: import('@tanstack/table-core').CreatedFilterFn<any, any>;
184
+ arrIncludesSome: import('@tanstack/table-core').CreatedFilterFn<any, any>;
185
+ between: import('@tanstack/table-core').CreatedFilterFn<any, any>;
186
+ betweenInclusive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
187
+ empty: import('@tanstack/table-core').CreatedFilterFn<any, any>;
188
+ endsWith: import('@tanstack/table-core').CreatedFilterFn<any, any>;
189
+ equals: import('@tanstack/table-core').CreatedFilterFn<any, any>;
190
+ equalsString: import('@tanstack/table-core').CreatedFilterFn<any, any>;
191
+ equalsStringSensitive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
192
+ inDateRange: import('@tanstack/table-core').CreatedFilterFn<any, any>;
193
+ inNumberRange: import('@tanstack/table-core').CreatedFilterFn<any, any>;
194
+ includesString: import('@tanstack/table-core').CreatedFilterFn<any, any>;
195
+ includesStringSensitive: import('@tanstack/table-core').CreatedFilterFn<any, any>;
196
+ notEmpty: import('@tanstack/table-core').CreatedFilterFn<any, any>;
197
+ startsWith: import('@tanstack/table-core').CreatedFilterFn<any, any>;
198
+ weakEquals: import('@tanstack/table-core').CreatedFilterFn<any, any>;
199
+ };
200
+ }, TData>;
201
+ }): any;
202
+ }>;
203
+ emit: (evt: "row-click", row: TData) => void;
204
+ }>) => import('vue').VNode & {
205
+ __ctx?: Awaited<typeof __VLS_setup>;
206
+ };
207
+ export default _default;
208
+ type __VLS_Prettify<T> = {
209
+ [K in keyof T]: T[K];
210
+ } & {};
@@ -0,0 +1,36 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
2
+ table: any;
3
+ title?: string;
4
+ resetLabel?: string;
5
+ }>, {
6
+ title: string;
7
+ resetLabel: string;
8
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
9
+ table: any;
10
+ title?: string;
11
+ resetLabel?: string;
12
+ }>, {
13
+ title: string;
14
+ resetLabel: string;
15
+ }>>> & Readonly<{}>, {
16
+ title: string;
17
+ resetLabel: string;
18
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
19
+ export default _default;
20
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
21
+ type __VLS_TypePropsToRuntimeProps<T> = {
22
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
23
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
24
+ } : {
25
+ type: import('vue').PropType<T[K]>;
26
+ required: true;
27
+ };
28
+ };
29
+ type __VLS_WithDefaults<P, D> = {
30
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
31
+ default: D[K];
32
+ }> : P[K];
33
+ };
34
+ type __VLS_Prettify<T> = {
35
+ [K in keyof T]: T[K];
36
+ } & {};
@@ -0,0 +1,2 @@
1
+ export { default as SkyDataTable } from './SkyDataTable.vue';
2
+ export { default as SkyDataTableColumnToggle } from './SkyDataTableColumnToggle.vue';
@@ -1 +1,3 @@
1
1
  export { default as SkyCheckboxFilter } from './SkyCheckboxFilter';
2
+ export * from './table';
3
+ export * from './data-table';