@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.
- package/README.md +229 -39
- 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/Modal/Modal.vue.d.ts +2 -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 +11949 -8835
- 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
|
-
|
|
393
|
+
Нативний `<select>` у фірмовому стилі, зі станами `default | success | error` та підказкою під полем.
|
|
385
394
|
|
|
386
395
|
```vue
|
|
387
|
-
<!-- Об'єкти -->
|
|
388
396
|
<SkySelect
|
|
389
|
-
v-model="
|
|
397
|
+
v-model="payment"
|
|
390
398
|
:options="[
|
|
391
|
-
{
|
|
392
|
-
{
|
|
399
|
+
{ value: 'cash', text: 'Готівка' },
|
|
400
|
+
{ value: 'card', text: 'Картка' },
|
|
393
401
|
]"
|
|
394
402
|
placeholder="Оберіть спосіб оплати"
|
|
395
403
|
/>
|
|
396
404
|
|
|
397
|
-
|
|
398
|
-
<SkySelect v-model="
|
|
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`
|
|
409
|
-
| `options` | `Array
|
|
410
|
-
| `
|
|
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
|
-
| `
|
|
413
|
-
| `
|
|
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
|
-
| `
|
|
420
|
-
| `↑` / `↓` | Навігація по опціях |
|
|
421
|
-
| `Enter` | Вибрати поточну опцію |
|
|
422
|
-
| `Esc` | Закрити дропдаун |
|
|
423
|
+
| Event | Payload | Опис |
|
|
424
|
+
|-------|---------|------|
|
|
425
|
+
| `update:modelValue` | `string \| number` | Emit при виборі опції |
|
|
423
426
|
|
|
424
|
-
|
|
427
|
+
> **Формат опцій — тільки `{ value, text }`.** Масив рядків або `{ label, value }` дадуть порожні пункти:
|
|
428
|
+
> компонент читає `option.value` і `option.text`. Мапте дані заздалегідь — `units.map(u => ({ value: u, text: u }))`.
|
|
425
429
|
|
|
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
|
-
```
|
|
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
|
-
#
|
|
1057
|
-
npm run
|
|
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
|
-
│ ├──
|
|
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
|
-
│
|
|
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
|
+
} & {};
|
package/dist/features/index.d.ts
CHANGED