@skyservice-developers/vue-dev-kit 2.11.0 → 2.12.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 +223 -37
- package/dist/features/data-table/SkyDataTable.vue.d.ts +210 -0
- package/dist/features/data-table/SkyDataTableColumnToggle.vue.d.ts +36 -0
- package/dist/features/data-table/index.d.ts +2 -0
- package/dist/features/index.d.ts +2 -0
- package/dist/features/table/TableColumnSettings.vue.d.ts +31 -0
- package/dist/features/table/TableMassActions.vue.d.ts +56 -0
- package/dist/features/table/TableVirtualBody.vue.d.ts +65 -0
- package/dist/features/table/index.d.ts +3 -0
- package/dist/index.d.ts +1 -0
- package/dist/shared/lib/table/index.d.ts +8 -0
- package/dist/shared/lib/table/tableFeatures.d.ts +110 -0
- package/dist/shared/lib/table/useColumnVisibility.d.ts +29 -0
- package/dist/shared/lib/table/useTableSelection.d.ts +34 -0
- package/dist/shared/lib/table/useTableSort.d.ts +28 -0
- package/dist/shared/ui/SkyDateRangePicker/SkyDateRangePicker.vue.d.ts +749 -0
- package/dist/shared/ui/SkyDateRangePicker/index.d.ts +1 -0
- package/dist/shared/ui/SkyTable/DynamicScroller.vue.d.ts +2 -2
- package/dist/shared/ui/SkyTable/Row.vue.d.ts +2 -2
- package/dist/shared/ui/SkyTable/items/itemDefault.vue.d.ts +2 -2
- package/dist/shared/ui/SkyTable/items/itemInput.vue.d.ts +1 -1
- package/dist/shared/ui/SkyTable/items/itemSelect.vue.d.ts +2 -2
- package/dist/shared/ui/SkyTable/items/itemTagEditor.vue.d.ts +2 -2
- package/dist/shared/ui/SkyTable/items/itemTags.vue.d.ts +1 -1
- package/dist/shared/ui/functional-calendar/components/Arrows.vue.d.ts +49 -0
- package/dist/shared/ui/functional-calendar/components/Day.vue.d.ts +81 -0
- package/dist/shared/ui/functional-calendar/components/Footer.vue.d.ts +2 -0
- package/dist/shared/ui/functional-calendar/components/FunctionalCalendar.vue.d.ts +554 -0
- package/dist/shared/ui/functional-calendar/components/MonthYearPicker.vue.d.ts +27 -0
- package/dist/shared/ui/functional-calendar/components/PickerInputs.vue.d.ts +41 -0
- package/dist/shared/ui/functional-calendar/components/TimePicker.vue.d.ts +23 -0
- package/dist/shared/ui/functional-calendar/components/WeekNumbers.vue.d.ts +22 -0
- package/dist/shared/ui/index.d.ts +3 -0
- package/dist/shared/ui/table/SkyTableBody.vue.d.ts +11 -0
- package/dist/shared/ui/table/SkyTableCell.vue.d.ts +45 -0
- package/dist/shared/ui/table/SkyTableEmpty.vue.d.ts +39 -0
- package/dist/shared/ui/table/SkyTableHead.vue.d.ts +34 -0
- package/dist/shared/ui/table/SkyTableHeader.vue.d.ts +40 -0
- package/dist/shared/ui/table/SkyTableRoot.vue.d.ts +50 -0
- package/dist/shared/ui/table/SkyTableRow.vue.d.ts +49 -0
- package/dist/shared/ui/table/index.d.ts +9 -0
- package/dist/shared/ui/table/types.d.ts +36 -0
- package/dist/style.css +1 -1
- package/dist/vue-dev-kit.cjs +14 -12
- package/dist/vue-dev-kit.js +11942 -8833
- package/package.json +11 -2
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
|
|
@@ -381,60 +389,47 @@ import {
|
|
|
381
389
|
|
|
382
390
|
### SkySelect
|
|
383
391
|
|
|
384
|
-
|
|
392
|
+
Нативний `<select>` у фірмовому стилі, зі станами `default | success | error` та підказкою під полем.
|
|
385
393
|
|
|
386
394
|
```vue
|
|
387
|
-
<!-- Об'єкти -->
|
|
388
395
|
<SkySelect
|
|
389
|
-
v-model="
|
|
396
|
+
v-model="payment"
|
|
390
397
|
:options="[
|
|
391
|
-
{
|
|
392
|
-
{
|
|
398
|
+
{ value: 'cash', text: 'Готівка' },
|
|
399
|
+
{ value: 'card', text: 'Картка' },
|
|
393
400
|
]"
|
|
394
401
|
placeholder="Оберіть спосіб оплати"
|
|
395
402
|
/>
|
|
396
403
|
|
|
397
|
-
|
|
398
|
-
<SkySelect v-model="
|
|
399
|
-
|
|
400
|
-
<!-- На всю ширину -->
|
|
401
|
-
<SkySelect v-model="selected" :options="options" block />
|
|
404
|
+
<SkySelect v-model="payment" :options="options" state="error" hint="Оберіть спосіб" />
|
|
405
|
+
<SkySelect v-model="payment" :options="options" disabled />
|
|
402
406
|
```
|
|
403
407
|
|
|
404
408
|
#### Props
|
|
405
409
|
|
|
406
410
|
| Prop | Тип | За замовчуванням | Опис |
|
|
407
411
|
|------|-----|------------------|------|
|
|
408
|
-
| `modelValue`
|
|
409
|
-
| `options` | `Array
|
|
410
|
-
| `
|
|
412
|
+
| `modelValue` | `string \| number` | — | Поточне значення (v-model) |
|
|
413
|
+
| `options` | `Array<{ value: string \| number; text: string }>` | — | Список опцій (обов'язковий) |
|
|
414
|
+
| `id` | `String` | — | HTML id |
|
|
411
415
|
| `disabled` | `Boolean` | `false` | Вимкнений стан |
|
|
412
|
-
| `
|
|
413
|
-
| `
|
|
416
|
+
| `state` | `'default' \| 'success' \| 'error'` | `'default'` | Візуальний стан рамки |
|
|
417
|
+
| `placeholder` | `String` | `''` | Текст-заглушка (рендериться як `disabled hidden` опція) |
|
|
418
|
+
| `hint` | `String` | `''` | Підказка під полем у кольорі `state` |
|
|
414
419
|
|
|
415
|
-
####
|
|
420
|
+
#### Events
|
|
416
421
|
|
|
417
|
-
|
|
|
418
|
-
|
|
419
|
-
| `
|
|
420
|
-
| `↑` / `↓` | Навігація по опціях |
|
|
421
|
-
| `Enter` | Вибрати поточну опцію |
|
|
422
|
-
| `Esc` | Закрити дропдаун |
|
|
422
|
+
| Event | Payload | Опис |
|
|
423
|
+
|-------|---------|------|
|
|
424
|
+
| `update:modelValue` | `string \| number` | Emit при виборі опції |
|
|
423
425
|
|
|
424
|
-
|
|
426
|
+
> **Формат опцій — тільки `{ value, text }`.** Масив рядків або `{ label, value }` дадуть порожні пункти:
|
|
427
|
+
> компонент читає `option.value` і `option.text`. Мапте дані заздалегідь — `units.map(u => ({ value: u, text: u }))`.
|
|
425
428
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
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
|
-
```
|
|
429
|
+
> Список малює браузер, тож клавіатура й поведінка на мобільних — рідні для платформи, а дропдаун
|
|
430
|
+
> не обрізається контейнерами з `overflow: hidden` (усередині `Modal` teleport не потрібен).
|
|
431
|
+
> Компонент займає всю ширину контейнера — обмежуйте батьківський блок, якщо треба вужче.
|
|
436
432
|
|
|
437
|
-
---
|
|
438
433
|
|
|
439
434
|
### SkySelectSearch
|
|
440
435
|
|
|
@@ -579,6 +574,39 @@ import {
|
|
|
579
574
|
|
|
580
575
|
---
|
|
581
576
|
|
|
577
|
+
### SkyTabs
|
|
578
|
+
|
|
579
|
+
Сегментовані таби з анімованим індикатором: біла «пігулка» плавно переїжджає під активну опцію й підлаштовує ширину під довжину тексту.
|
|
580
|
+
|
|
581
|
+
```vue
|
|
582
|
+
<SkyTabs
|
|
583
|
+
v-model="period"
|
|
584
|
+
:options="[
|
|
585
|
+
{ value: 'day', text: 'День' },
|
|
586
|
+
{ value: 'week', text: 'Тиждень' },
|
|
587
|
+
{ value: 'month', text: 'Місяць' },
|
|
588
|
+
]"
|
|
589
|
+
/>
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
#### Props
|
|
593
|
+
|
|
594
|
+
| Prop | Тип | За замовчуванням | Опис |
|
|
595
|
+
|------|-----|------------------|------|
|
|
596
|
+
| `modelValue` | `string \| number` | — | Активне значення (v-model) |
|
|
597
|
+
| `options` | `Array<{ value: string \| number; text: string }>` | — | Список табів (обов'язковий) |
|
|
598
|
+
| `disabled` | `Boolean` | `false` | Блокує весь набір |
|
|
599
|
+
|
|
600
|
+
#### Events
|
|
601
|
+
|
|
602
|
+
| Event | Payload | Опис |
|
|
603
|
+
|-------|---------|------|
|
|
604
|
+
| `update:modelValue` | `string \| number` | Emit при виборі таба |
|
|
605
|
+
|
|
606
|
+
> Індикатор вимірює активну кнопку через `getBoundingClientRect()`: на першому рендері стає на місце без анімації, далі — з переходом. Реагує на `resize` вікна і зміну кількості опцій. У прихованому контейнері (`display: none`) розміри нульові — позиція виправиться після показу.
|
|
607
|
+
|
|
608
|
+
---
|
|
609
|
+
|
|
582
610
|
### SkyAlert
|
|
583
611
|
|
|
584
612
|
Інформаційне повідомлення з 4 тональностями та опціональною іконкою.
|
|
@@ -831,6 +859,129 @@ Shell-контейнер для карток: ribbon / header / body / footer
|
|
|
831
859
|
|
|
832
860
|
---
|
|
833
861
|
|
|
862
|
+
### SkyDataTable
|
|
863
|
+
|
|
864
|
+
Грід на [TanStack Table v9](https://tanstack.com/table/latest): headless-ядро тримає стан і обчислення, розмітка й стилі — наші. Візуально це та сама таблиця, що в POS. Повний опис — у [документації](https://74cfe434-a2b3-4d49-8fa7-db7343e399dc.apps.platform365.online/components/data-table).
|
|
865
|
+
|
|
866
|
+
```vue
|
|
867
|
+
<script setup lang="ts">
|
|
868
|
+
import { h } from 'vue'
|
|
869
|
+
import { SkyDataTable, SkyBadge, createSkyColumnHelper } from '@skyservice-developers/vue-dev-kit'
|
|
870
|
+
|
|
871
|
+
const column = createSkyColumnHelper<Product>()
|
|
872
|
+
|
|
873
|
+
const columns = [
|
|
874
|
+
column.accessor('name', { header: 'Назва', meta: { widthFr: 2 } }),
|
|
875
|
+
column.accessor('price', {
|
|
876
|
+
header: 'Ціна',
|
|
877
|
+
size: 110,
|
|
878
|
+
meta: { align: 'right' },
|
|
879
|
+
cell: ({ getValue }) => `${getValue()} ₴`,
|
|
880
|
+
}),
|
|
881
|
+
column.accessor('status', {
|
|
882
|
+
header: 'Статус',
|
|
883
|
+
size: 150,
|
|
884
|
+
enableSorting: false,
|
|
885
|
+
cell: ({ getValue }) =>
|
|
886
|
+
h(SkyBadge, { tone: getValue() === 'Активний' ? 'success' : 'default', label: getValue() }),
|
|
887
|
+
}),
|
|
888
|
+
]
|
|
889
|
+
</script>
|
|
890
|
+
|
|
891
|
+
<template>
|
|
892
|
+
<SkyDataTable :columns="columns" :data="products" :page-size="25" row-id="id" searchable />
|
|
893
|
+
</template>
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
#### Props
|
|
897
|
+
|
|
898
|
+
| Prop | Тип | За замовчуванням | Опис |
|
|
899
|
+
|------|-----|------------------|------|
|
|
900
|
+
| `columns` | `ColumnDef[]` | — | Опис колонок (TanStack) |
|
|
901
|
+
| `data` | `TData[]` | — | Дані |
|
|
902
|
+
| `features` | `TableFeatures` | `skyTableFeatures` | Власний набір фіч |
|
|
903
|
+
| `rowId` | `String \| (row) => string` | — | Ключ рядка |
|
|
904
|
+
| `pageSize` | `Number` | `0` | Розмір сторінки; `0` — без пагінації |
|
|
905
|
+
| `searchable` | `Boolean` | `false` | Поле глобального пошуку в тулбарі |
|
|
906
|
+
| `initialSorting` | `SortingState` | — | Початкове сортування |
|
|
907
|
+
| `emptyText` | `String` | `'Даних немає'` | Текст порожнього стану |
|
|
908
|
+
| `interactiveRows` | `Boolean` | `false` | Курсор і hover на рядках |
|
|
909
|
+
|
|
910
|
+
Слоти: `toolbar`, `actions`, `footer`, `empty` (усі отримують `{ table }`). Подія: `row-click`. Інстанс таблиці доступний через `ref` → `tableRef.table`.
|
|
911
|
+
|
|
912
|
+
#### Набір фіч
|
|
913
|
+
|
|
914
|
+
Фічі TanStack v9 вмикаються явно — кіт експортує стабільний `skyTableFeatures` (сортування, вибір, видимість колонок, пагінація, фільтрація + слоти row-моделей і реєстри `sortFns`/`filterFns`). Потрібно більше — зберіть свій обʼєкт і передайте пропом `features`:
|
|
915
|
+
|
|
916
|
+
```ts
|
|
917
|
+
import { tableFeatures, rowExpandingFeature, createExpandedRowModel } from '@tanstack/vue-table'
|
|
918
|
+
import { skyTableFeatures } from '@skyservice-developers/vue-dev-kit'
|
|
919
|
+
|
|
920
|
+
const features = tableFeatures({
|
|
921
|
+
...skyTableFeatures,
|
|
922
|
+
rowExpandingFeature,
|
|
923
|
+
expandedRowModel: createExpandedRowModel(),
|
|
924
|
+
})
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
Ширина колонок: `size: 150` — фіксовані px, `meta: { widthFr: 2 }` — гнучка частка (має пріоритет над `size`), `meta: { align }` і `meta: { minWidthScreen }` — вирівнювання й приховування на вузьких екранах.
|
|
928
|
+
|
|
929
|
+
> `@tanstack/vue-table` входить у залежності пакета й лишається зовнішнім у бандлі — застосунки, які гріда не використовують, його не тягнуть.
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
### Таблиця з примітивів (композиційна)
|
|
934
|
+
|
|
935
|
+
Набір примітивів і композаблів замість одного великого компонента: береш тільки те, що треба. Без вибору рядків, без масових дій, без віртуалізації — і нічого з цього не потрапляє в бандл. Повний опис — у [документації](https://74cfe434-a2b3-4d49-8fa7-db7343e399dc.apps.platform365.online/components/table).
|
|
936
|
+
|
|
937
|
+
```vue
|
|
938
|
+
<script setup>
|
|
939
|
+
import {
|
|
940
|
+
SkyTableRoot, SkyTableHeader, SkyTableHead,
|
|
941
|
+
SkyTableBody, SkyTableRow, SkyTableCell,
|
|
942
|
+
} from '@skyservice-developers/vue-dev-kit'
|
|
943
|
+
|
|
944
|
+
const columns = [
|
|
945
|
+
{ name: 'name', title: 'Товар', widthFr: 2 },
|
|
946
|
+
{ name: 'price', title: 'Ціна', width: 90, align: 'right' },
|
|
947
|
+
]
|
|
948
|
+
</script>
|
|
949
|
+
|
|
950
|
+
<template>
|
|
951
|
+
<SkyTableRoot :columns="columns">
|
|
952
|
+
<SkyTableHeader>
|
|
953
|
+
<SkyTableHead v-for="c in columns" :key="c.name" :column="c" />
|
|
954
|
+
</SkyTableHeader>
|
|
955
|
+
<SkyTableBody>
|
|
956
|
+
<SkyTableRow v-for="row in rows" :key="row.id">
|
|
957
|
+
<SkyTableCell>{{ row.name }}</SkyTableCell>
|
|
958
|
+
<SkyTableCell align="right">{{ row.price }}</SkyTableCell>
|
|
959
|
+
</SkyTableRow>
|
|
960
|
+
</SkyTableBody>
|
|
961
|
+
</SkyTableRoot>
|
|
962
|
+
</template>
|
|
963
|
+
```
|
|
964
|
+
|
|
965
|
+
#### Що входить
|
|
966
|
+
|
|
967
|
+
| Шар | Експорти | Коли підключати |
|
|
968
|
+
|-----|----------|-----------------|
|
|
969
|
+
| Примітиви (`shared/ui/table`) | `SkyTableRoot`, `SkyTableHeader`, `SkyTableHead`, `SkyTableBody`, `SkyTableRow`, `SkyTableCell`, `SkyTableEmpty` | завжди |
|
|
970
|
+
| Композабли (`shared/lib/table`) | `useTableSort`, `useTableSelection`, `useColumnVisibility` | за потреби |
|
|
971
|
+
| Фічі (`features/table`) | `TableMassActions`, `TableColumnSettings`, `TableVirtualBody` | опційно, кожна окремо |
|
|
972
|
+
|
|
973
|
+
```ts
|
|
974
|
+
const { sort, toggle } = useTableSort({ initial: { of: 'name', ot: 'asc' } })
|
|
975
|
+
const { selected, isSelected, toggle: select, toggleAll } = useTableSelection(rows, { rowId: 'id' })
|
|
976
|
+
const { visibility, visibleColumns } = useColumnVisibility(columns, { storageKey: 'products' })
|
|
977
|
+
```
|
|
978
|
+
|
|
979
|
+
Композабли не сортують і не фільтрують дані — вони тримають стан, а дані лишаються за застосунком (зазвичай сортує сервер). Колонка вибору описується як звичайна колонка (`{ name: '_select', width: 44 }`), щоб грід шапки й рядків рахувався з одного джерела.
|
|
980
|
+
|
|
981
|
+
> `vue-virtual-scroller` імпортує лише `TableVirtualBody`. Не потрібна віртуалізація — беріть `SkyTableBody`, і залежність не знадобиться.
|
|
982
|
+
|
|
983
|
+
---
|
|
984
|
+
|
|
834
985
|
### SkyTable
|
|
835
986
|
|
|
836
987
|
Віртуал-скрол таблиця (на `vue-virtual-scroller`) для великих списків — у DOM тримаються лише видимі рядки. Розмітка й стилі 1:1 з таблицею товарів POS: чекбокси, масові дії, сортування, зміна ширини/видимості колонок, розкриття вкладених рядків (модифікацій), inline-редагування комірок і теги.
|
|
@@ -927,6 +1078,33 @@ const json = { items, total: items.length }
|
|
|
927
1078
|
|
|
928
1079
|
---
|
|
929
1080
|
|
|
1081
|
+
### FunctionalCalendar
|
|
1082
|
+
|
|
1083
|
+
Перенесено зі SkyMarket (`src/lib/functional-calendar`), стилі й розмітка 1:1. Форк [vue-functional-calendar](https://github.com/ManukMinasyan/vue-functional-calendar) під Vue 3 — пропси, події та слоти без змін відносно оригіналу.
|
|
1084
|
+
|
|
1085
|
+
```vue
|
|
1086
|
+
<FunctionalCalendar
|
|
1087
|
+
:value="calendarData"
|
|
1088
|
+
@input="calendarData = $event"
|
|
1089
|
+
is-date-range
|
|
1090
|
+
is-modal
|
|
1091
|
+
/>
|
|
1092
|
+
```
|
|
1093
|
+
|
|
1094
|
+
### SkyDateRangePicker
|
|
1095
|
+
|
|
1096
|
+
Перенесено зі SkyMarket (`DatePickerRange.vue`) — готовий попап-піка діапазону дат на базі `FunctionalCalendar`: іконка-тригер, лейбл періоду, пресети (Сьогодні / Вчора / Тиждень / Місяць / Минулий-Поточний місяць / За весь час), стилі 1:1. На відміну від оригіналу, який читав `store`/`@/langs` конкретного застосунку, тут стан і тексти (з UA-фолбеками) локальні.
|
|
1097
|
+
|
|
1098
|
+
```vue
|
|
1099
|
+
<SkyDateRangePicker v-model="range" @set-date="onPreset" />
|
|
1100
|
+
```
|
|
1101
|
+
|
|
1102
|
+
```js
|
|
1103
|
+
const range = reactive({ start: '', end: '' }) // { start, end } у форматі yyyy-mm-dd
|
|
1104
|
+
```
|
|
1105
|
+
|
|
1106
|
+
---
|
|
1107
|
+
|
|
930
1108
|
## Features
|
|
931
1109
|
|
|
932
1110
|
### SkyCheckboxFilter
|
|
@@ -1097,18 +1275,26 @@ src/
|
|
|
1097
1275
|
│ ├── BaseTeleport/
|
|
1098
1276
|
│ ├── SkyButton/
|
|
1099
1277
|
│ ├── SkySelect/ SkySelectSearch/ SkyInput/ SkySearchInput/ SkyCheckbox/
|
|
1278
|
+
│ ├── SkyTabs/ # сегментовані таби з анімованим індикатором
|
|
1100
1279
|
│ ├── SkyAlert/
|
|
1101
1280
|
│ ├── SkyBadge/
|
|
1102
1281
|
│ ├── SkyCard/ SkyCardHeader/ SkyCardRow/
|
|
1103
1282
|
│ ├── SkyLoader/
|
|
1104
|
-
│ ├──
|
|
1283
|
+
│ ├── table/ # примітиви композиційної таблиці (Root/Header/Head/Body/Row/Cell/Empty)
|
|
1284
|
+
│ ├── SkyTable/ # готова віртуал-скрол таблиця (Header/Row/Footer/DynamicScroller/items/*)
|
|
1105
1285
|
│ ├── SkyTileCard/
|
|
1286
|
+
│ ├── functional-calendar/ # форк vue-functional-calendar, перенесений зі SkyMarket 1:1
|
|
1287
|
+
│ ├── SkyDateRangePicker/ # DatePickerRange зі SkyMarket, store/langs → props/локальний стан
|
|
1106
1288
|
│ └── <Component>/
|
|
1107
1289
|
│ ├── <Component>.vue
|
|
1108
1290
|
│ └── index.ts
|
|
1291
|
+
│ └── lib/
|
|
1292
|
+
│ └── table/ # skyTableFeatures + useTableSort / useTableSelection / useColumnVisibility
|
|
1109
1293
|
├── features/ # фічові блоки (orchestration shared/ui)
|
|
1110
1294
|
│ ├── index.ts
|
|
1111
|
-
│
|
|
1295
|
+
│ ├── SkyCheckboxFilter/
|
|
1296
|
+
│ ├── table/ # TableMassActions / TableColumnSettings / TableVirtualBody
|
|
1297
|
+
│ └── data-table/ # SkyDataTable на TanStack v9 + перемикач колонок
|
|
1112
1298
|
├── sdk/ # TypeScript SDK (без Vue залежностей)
|
|
1113
1299
|
│ ├── bridge.ts # iframe postMessage API
|
|
1114
1300
|
│ ├── 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
|
+
} & {};
|
package/dist/features/index.d.ts
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SkyTableColumn } from '../../shared/ui/table/types';
|
|
2
|
+
|
|
3
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
|
|
4
|
+
columns: SkyTableColumn[];
|
|
5
|
+
/** Мапа `name → показувати` з useColumnVisibility. */
|
|
6
|
+
modelValue: Record<string, boolean>;
|
|
7
|
+
title?: string;
|
|
8
|
+
resetLabel?: string;
|
|
9
|
+
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
10
|
+
"update:modelValue": (value: Record<string, boolean>) => void;
|
|
11
|
+
reset: () => void;
|
|
12
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
|
|
13
|
+
columns: SkyTableColumn[];
|
|
14
|
+
/** Мапа `name → показувати` з useColumnVisibility. */
|
|
15
|
+
modelValue: Record<string, boolean>;
|
|
16
|
+
title?: string;
|
|
17
|
+
resetLabel?: string;
|
|
18
|
+
}>>> & Readonly<{
|
|
19
|
+
"onUpdate:modelValue"?: ((value: Record<string, boolean>) => any) | undefined;
|
|
20
|
+
onReset?: (() => any) | undefined;
|
|
21
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
22
|
+
export default _default;
|
|
23
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
24
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
25
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
26
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
27
|
+
} : {
|
|
28
|
+
type: import('vue').PropType<T[K]>;
|
|
29
|
+
required: true;
|
|
30
|
+
};
|
|
31
|
+
};
|