@skyservice-developers/vue-dev-kit 2.14.3 → 2.15.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 +76 -8
- package/dist/features/data-table/SkyDataTable.vue.d.ts +20 -1
- package/dist/features/data-table/index.d.ts +1 -0
- package/dist/features/table/TableVirtualBody.vue.d.ts +10 -5
- package/dist/shared/ui/SkySelectSearch/SkySelectSearch.vue.d.ts +13 -0
- 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/table/SkyTableBody.vue.d.ts +1 -10
- package/dist/shared/ui/table/SkyTableVirtualBody.vue.d.ts +43 -0
- package/dist/shared/ui/table/index.d.ts +1 -0
- package/dist/style.css +1 -1
- package/dist/vue-dev-kit.cjs +13 -13
- package/dist/vue-dev-kit.js +5408 -5296
- package/package.json +8 -3
package/README.md
CHANGED
|
@@ -30,7 +30,8 @@ import {
|
|
|
30
30
|
SkyTable,
|
|
31
31
|
// грід на TanStack + примітиви таблиці + композабли
|
|
32
32
|
SkyDataTable, createSkyColumnHelper, skyTableFeatures,
|
|
33
|
-
SkyTableRoot, SkyTableHeader, SkyTableHead, SkyTableBody,
|
|
33
|
+
SkyTableRoot, SkyTableHeader, SkyTableHead, SkyTableBody, SkyTableVirtualBody,
|
|
34
|
+
SkyTableRow, SkyTableCell,
|
|
34
35
|
useTableSort, useTableSelection, useColumnVisibility,
|
|
35
36
|
FunctionalCalendar, SkyDateRangePicker,
|
|
36
37
|
SkyFilterDropdown,
|
|
@@ -437,6 +438,10 @@ import {
|
|
|
437
438
|
|
|
438
439
|
Кастомний select **з полем пошуку** у дропдауні — для довгих списків опцій. Дизайн 1:1 зі `SkySelect`, той самий формат опцій (`{ value, text }`) та стани. Не використовує нативний `<select>`, тому працює на старих браузерах (перевірено з Chromium 84): без `flex gap`, `inset`, `:focus-visible`, `Array.at()` тощо.
|
|
439
440
|
|
|
441
|
+
Панель не вилазить за нижній край вікна: якщо знизу тісно, вона розкривається **вгору**, а висоту обмежує під доступне місце — скролиться список усередині. Сторона переобирається на скрол і ресайз, поки панель відкрита. Teleport-а немає, тож контейнер з `overflow: hidden` (напр. `Modal`) панель усе одно обріже — там беріть `SkyFilterDropdown`.
|
|
442
|
+
|
|
443
|
+
Поле пошуку з'являється **від 6 опцій** (`searchThreshold`): на коротких списках воно лише шумить. Коли пошуку немає, стрілками й `Enter` керує сам тригер — фокус нікуди не переносимо.
|
|
444
|
+
|
|
440
445
|
```vue
|
|
441
446
|
<SkySelectSearch
|
|
442
447
|
v-model="selected"
|
|
@@ -463,6 +468,7 @@ import {
|
|
|
463
468
|
| `hint` | `String` | `''` | Підказка під полем |
|
|
464
469
|
| `searchPlaceholder` | `String` | `'Пошук…'` | Placeholder поля пошуку |
|
|
465
470
|
| `noResultsText` | `String` | `'Нічого не знайдено'` | Текст за відсутності збігів |
|
|
471
|
+
| `searchThreshold` | `Number` | `6` | Від скількох опцій показувати поле пошуку. `0` — завжди, `Infinity` — ніколи |
|
|
466
472
|
|
|
467
473
|
#### Events
|
|
468
474
|
|
|
@@ -908,8 +914,37 @@ const columns = [
|
|
|
908
914
|
| `initialSorting` | `SortingState` | — | Початкове сортування |
|
|
909
915
|
| `emptyText` | `String` | `'Даних немає'` | Текст порожнього стану |
|
|
910
916
|
| `interactiveRows` | `Boolean` | `false` | Курсор і hover на рядках |
|
|
917
|
+
| `virtual` | `Boolean \| SkyDataTableVirtualOptions` | `false` | Віртуалізація тіла — у DOM лише видиме вікно рядків |
|
|
918
|
+
|
|
919
|
+
Слоти: `toolbar`, `actions`, `footer`, `empty` (усі отримують `{ table }`). Події: `row-click`, `reach-end` (тільки у віртуальному режимі). Інстанс таблиці доступний через `ref` → `tableRef.table`.
|
|
920
|
+
|
|
921
|
+
#### Віртуалізація
|
|
911
922
|
|
|
912
|
-
|
|
923
|
+
На кілька тисяч рядків браузер провисає не на даних, а на DOM. Проп `virtual` лишає в розмітці тільки видиме вікно:
|
|
924
|
+
|
|
925
|
+
```vue
|
|
926
|
+
<SkyDataTable :columns="columns" :data="rows" row-id="id" virtual />
|
|
927
|
+
|
|
928
|
+
<SkyDataTable
|
|
929
|
+
:columns="columns"
|
|
930
|
+
:data="rows"
|
|
931
|
+
row-id="id"
|
|
932
|
+
:virtual="{ estimateSize: 44, overscan: 8 }"
|
|
933
|
+
@reach-end="loadMore"
|
|
934
|
+
/>
|
|
935
|
+
```
|
|
936
|
+
|
|
937
|
+
| Опція | Тип | За замовчуванням | Опис |
|
|
938
|
+
|-------|-----|------------------|------|
|
|
939
|
+
| `estimateSize` | `Number` | `40` | Очікувана висота рядка в px |
|
|
940
|
+
| `overscan` | `Number` | `6` | Скільки рядків тримати понад видиме вікно |
|
|
941
|
+
| `dynamic` | `Boolean` | `false` | Рядки різної висоти — вимірювання через ResizeObserver |
|
|
942
|
+
|
|
943
|
+
Змінюється рівно одне: хто вирішує, які рядки зараз у DOM. Сортування, фільтрація, вибір і `getRowCount()` працюють по всьому набору даних.
|
|
944
|
+
|
|
945
|
+
> **Потрібна обмежена висота.** Скрол-контейнером є тіло таблиці — дайте таблиці `height` або `flex: 1; min-height: 0`, інакше скролитиметься сторінка й вікно не зсуватиметься.
|
|
946
|
+
|
|
947
|
+
> **Не поєднуйте з `pageSize`.** На сторінці в кілька десятків рядків віртуалізувати нічого; компонент попередить у консолі. Природна пара до `virtual` — довантаження за `reach-end`.
|
|
913
948
|
|
|
914
949
|
#### Набір фіч
|
|
915
950
|
|
|
@@ -940,7 +975,7 @@ const features = tableFeatures({
|
|
|
940
975
|
<script setup>
|
|
941
976
|
import {
|
|
942
977
|
SkyTableRoot, SkyTableHeader, SkyTableHead,
|
|
943
|
-
SkyTableBody, SkyTableRow, SkyTableCell,
|
|
978
|
+
SkyTableBody, SkyTableVirtualBody, SkyTableRow, SkyTableCell,
|
|
944
979
|
} from '@skyservice-developers/vue-dev-kit'
|
|
945
980
|
|
|
946
981
|
const columns = [
|
|
@@ -968,7 +1003,7 @@ const columns = [
|
|
|
968
1003
|
|
|
969
1004
|
| Шар | Експорти | Коли підключати |
|
|
970
1005
|
|-----|----------|-----------------|
|
|
971
|
-
| Примітиви (`shared/ui/table`) | `SkyTableRoot`, `SkyTableHeader`, `SkyTableHead`, `SkyTableBody`, `SkyTableRow`, `SkyTableCell`, `SkyTableEmpty` | завжди |
|
|
1006
|
+
| Примітиви (`shared/ui/table`) | `SkyTableRoot`, `SkyTableHeader`, `SkyTableHead`, `SkyTableBody`, `SkyTableVirtualBody`, `SkyTableRow`, `SkyTableCell`, `SkyTableEmpty` | завжди |
|
|
972
1007
|
| Композабли (`shared/lib/table`) | `useTableSort`, `useTableSelection`, `useColumnVisibility` | за потреби |
|
|
973
1008
|
| Фічі (`features/table`) | `TableMassActions`, `TableColumnSettings`, `TableVirtualBody` | опційно, кожна окремо |
|
|
974
1009
|
|
|
@@ -980,13 +1015,46 @@ const { visibility, visibleColumns } = useColumnVisibility(columns, { storageKey
|
|
|
980
1015
|
|
|
981
1016
|
Композабли не сортують і не фільтрують дані — вони тримають стан, а дані лишаються за застосунком (зазвичай сортує сервер). Колонка вибору описується як звичайна колонка (`{ name: '_select', width: 44 }`), щоб грід шапки й рядків рахувався з одного джерела.
|
|
982
1017
|
|
|
983
|
-
|
|
1018
|
+
#### Тіло: два режими, один контракт
|
|
1019
|
+
|
|
1020
|
+
`SkyTableBody` без пропа `rows` — прозора обгортка (рядки складаєте самі, як вище). З `rows` — ітерує сам і віддає scoped-слот:
|
|
1021
|
+
|
|
1022
|
+
```vue
|
|
1023
|
+
<SkyTableBody :rows="rows" :row-key="row => row.id">
|
|
1024
|
+
<template #empty><SkyTableEmpty text="Даних немає" /></template>
|
|
1025
|
+
<template #default="{ row }">
|
|
1026
|
+
<SkyTableRow><SkyTableCell>{{ row.name }}</SkyTableCell></SkyTableRow>
|
|
1027
|
+
</template>
|
|
1028
|
+
</SkyTableBody>
|
|
1029
|
+
```
|
|
1030
|
+
|
|
1031
|
+
`SkyTableVirtualBody` приймає ті самі `rows`/`rowKey` і віддає той самий слот, лишаючи в DOM тільки видиме вікно рядків. Тому перемикання віртуалізації — це заміна тега, а не переписування розмітки:
|
|
1032
|
+
|
|
1033
|
+
```vue
|
|
1034
|
+
<component :is="virtual ? SkyTableVirtualBody : SkyTableBody" :rows="rows" :row-key="row => row.id">
|
|
1035
|
+
<template #default="{ row }">…</template>
|
|
1036
|
+
</component>
|
|
1037
|
+
```
|
|
1038
|
+
|
|
1039
|
+
| Prop `SkyTableVirtualBody` | Тип | За замовчуванням | Опис |
|
|
1040
|
+
|------|-----|------------------|------|
|
|
1041
|
+
| `rows` | `TRow[]` | — | Рядки (обовʼязково) |
|
|
1042
|
+
| `rowKey` | `(row, index) => string \| number` | індекс | Ключ рядка |
|
|
1043
|
+
| `estimateSize` | `Number` | `40` | Очікувана висота рядка в px |
|
|
1044
|
+
| `overscan` | `Number` | `6` | Скільки рядків тримати понад видиме вікно |
|
|
1045
|
+
| `dynamic` | `Boolean` | `false` | Рядки різної висоти — вимірювання через ResizeObserver |
|
|
1046
|
+
|
|
1047
|
+
Подія `reach-end` — коли останній рядок увійшов у вікно.
|
|
1048
|
+
|
|
1049
|
+
> **Потрібна обмежена висота.** Скрол-контейнером є саме тіло. Якщо таблиця росте разом з контентом і скролиться сторінка, вікно ніколи не зсувається. Дайте таблиці `height` або `flex: 1; min-height: 0`.
|
|
1050
|
+
|
|
1051
|
+
> `TableVirtualBody` з `features/table` лишається як сумісна обгортка зі старим контрактом (`items` + слот `{ item, index }`). У новому коді беріть `SkyTableVirtualBody`.
|
|
984
1052
|
|
|
985
1053
|
---
|
|
986
1054
|
|
|
987
1055
|
### SkyTable
|
|
988
1056
|
|
|
989
|
-
Віртуал-скрол таблиця (на
|
|
1057
|
+
Віртуал-скрол таблиця (на `@tanstack/vue-virtual`) для великих списків — у DOM тримаються лише видимі рядки. Розмітка й стилі 1:1 з таблицею товарів POS: чекбокси, масові дії, сортування, зміна ширини/видимості колонок, розкриття вкладених рядків (модифікацій), inline-редагування комірок і теги.
|
|
990
1058
|
|
|
991
1059
|
```vue
|
|
992
1060
|
<SkyTable
|
|
@@ -1076,7 +1144,7 @@ const json = { items, total: items.length }
|
|
|
1076
1144
|
|------|-------|------|
|
|
1077
1145
|
| `cell-<name>` | `{ row, value, item }` | Кастомний рендер комірки колонки `<name>` |
|
|
1078
1146
|
|
|
1079
|
-
> **Примітка:** компонент розрахований на хост-середовище Skyservice POS. Він читає словник i18n з `window.lang` (з UA-фолбеками) і використовує host-assets за абсолютними шляхами (`/image/dragons/…`, `/svg/arrow_black.svg`), які віддає застосунок-хост — тому в бібліотеці вони навмисно не бандляться (`vite.config` → `transformAssetUrls.includeAbsolute: false`).
|
|
1147
|
+
> **Примітка:** компонент розрахований на хост-середовище Skyservice POS. Він читає словник i18n з `window.lang` (з UA-фолбеками) і використовує host-assets за абсолютними шляхами (`/image/dragons/…`, `/svg/arrow_black.svg`), які віддає застосунок-хост — тому в бібліотеці вони навмисно не бандляться (`vite.config` → `transformAssetUrls.includeAbsolute: false`). `@tanstack/vue-virtual` — зовнішня залежність: встанови її в застосунку-хості.
|
|
1080
1148
|
|
|
1081
1149
|
---
|
|
1082
1150
|
|
|
@@ -1357,7 +1425,7 @@ src/
|
|
|
1357
1425
|
│ ├── SkyBadge/
|
|
1358
1426
|
│ ├── SkyCard/ SkyCardHeader/ SkyCardRow/
|
|
1359
1427
|
│ ├── SkyLoader/
|
|
1360
|
-
│ ├── table/ # примітиви композиційної таблиці (Root/Header/Head/Body/Row/Cell/Empty)
|
|
1428
|
+
│ ├── table/ # примітиви композиційної таблиці (Root/Header/Head/Body/VirtualBody/Row/Cell/Empty)
|
|
1361
1429
|
│ ├── SkyTable/ # готова віртуал-скрол таблиця (Header/Row/Footer/DynamicScroller/items/*)
|
|
1362
1430
|
│ ├── SkyTileCard/
|
|
1363
1431
|
│ ├── SkyFilterDropdown/ # оболонка фільтра (тригер + панель) + FilterSearch
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { ColumnDef, SortingState, TableFeatures } from '@tanstack/vue-table';
|
|
2
2
|
|
|
3
|
+
/** Налаштування віртуалізації тіла — те саме, що приймає SkyTableVirtualBody. */
|
|
4
|
+
export interface SkyDataTableVirtualOptions {
|
|
5
|
+
/** Очікувана висота рядка в px. За замовчуванням 40 — як `--sky-table-row-height`. */
|
|
6
|
+
estimateSize?: number;
|
|
7
|
+
/** Скільки рядків тримати в DOM понад видиме вікно. */
|
|
8
|
+
overscan?: number;
|
|
9
|
+
/** Рядки різної висоти. Вмикає вимірювання рядків — дорожче, лише за потреби. */
|
|
10
|
+
dynamic?: boolean;
|
|
11
|
+
}
|
|
3
12
|
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
13
|
props: __VLS_Prettify<__VLS_OmitKeepDiscriminatedUnion<(Partial<{}> & Omit<{
|
|
14
|
+
readonly "onReach-end"?: (() => any) | undefined;
|
|
5
15
|
readonly "onRow-click"?: ((row: TData) => any) | undefined;
|
|
6
16
|
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>) & {
|
|
7
17
|
/** Опис колонок у форматі TanStack. Ширину беремо з `size` / `meta.widthFr`. */
|
|
@@ -23,6 +33,15 @@ declare const _default: <TData extends Record<string, any>>(__VLS_props: Awaited
|
|
|
23
33
|
emptyText?: string;
|
|
24
34
|
/** Курсор-вказівник і hover на рядках. */
|
|
25
35
|
interactiveRows?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Віртуалізація тіла: в DOM лишається тільки видиме вікно рядків.
|
|
38
|
+
* `true` — з дефолтами, обʼєкт — з налаштуваннями.
|
|
39
|
+
*
|
|
40
|
+
* Вимагає обмеженої висоти таблиці й несумісна з `pageSize`: на сторінці
|
|
41
|
+
* в кілька десятків рядків віртуалізувати нічого. Природна пара до неї —
|
|
42
|
+
* не пагінація, а довантаження за подією `reach-end`.
|
|
43
|
+
*/
|
|
44
|
+
virtual?: boolean | SkyDataTableVirtualOptions;
|
|
26
45
|
}, keyof import('vue').VNodeProps | keyof import('vue').AllowedComponentProps>> & {} & (import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps);
|
|
27
46
|
expose(exposed: import('vue').ShallowUnwrapRef<{
|
|
28
47
|
table: import('@tanstack/vue-table').VueTable<{
|
|
@@ -200,7 +219,7 @@ declare const _default: <TData extends Record<string, any>>(__VLS_props: Awaited
|
|
|
200
219
|
}, TData>;
|
|
201
220
|
}): any;
|
|
202
221
|
}>;
|
|
203
|
-
emit: (evt: "row-click", row: TData) => void;
|
|
222
|
+
emit: ((evt: "reach-end") => void) & ((evt: "row-click", row: TData) => void);
|
|
204
223
|
}>) => import('vue').VNode & {
|
|
205
224
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
206
225
|
};
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
1
|
declare function __VLS_template(): {
|
|
3
2
|
default?(_: {
|
|
4
3
|
item: any;
|
|
5
|
-
index:
|
|
6
|
-
active:
|
|
4
|
+
index: number;
|
|
5
|
+
active: boolean;
|
|
7
6
|
}): any;
|
|
8
7
|
};
|
|
9
8
|
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
@@ -12,7 +11,10 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
12
11
|
keyField?: string;
|
|
13
12
|
/** Очікувана мінімальна висота рядка — база для розрахунку вікна. */
|
|
14
13
|
minItemSize?: number;
|
|
15
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Більше ні на що не впливає: висоту рядків тепер стежить
|
|
16
|
+
* ResizeObserver, тож перелічувати залежності вручну не треба.
|
|
17
|
+
*/
|
|
16
18
|
sizeDependencies?: (row: any) => unknown[];
|
|
17
19
|
}>, {
|
|
18
20
|
keyField: string;
|
|
@@ -26,7 +28,10 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
26
28
|
keyField?: string;
|
|
27
29
|
/** Очікувана мінімальна висота рядка — база для розрахунку вікна. */
|
|
28
30
|
minItemSize?: number;
|
|
29
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated Більше ні на що не впливає: висоту рядків тепер стежить
|
|
33
|
+
* ResizeObserver, тож перелічувати залежності вручну не треба.
|
|
34
|
+
*/
|
|
30
35
|
sizeDependencies?: (row: any) => unknown[];
|
|
31
36
|
}>, {
|
|
32
37
|
keyField: string;
|
|
@@ -12,6 +12,11 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
12
12
|
hint?: string;
|
|
13
13
|
searchPlaceholder?: string;
|
|
14
14
|
noResultsText?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Скільки опцій має бути, щоб з'явилось поле пошуку. На коротких списках воно
|
|
17
|
+
* лише заважає — усе видно й так. `0` — показувати завжди, `Infinity` — ніколи.
|
|
18
|
+
*/
|
|
19
|
+
searchThreshold?: number;
|
|
15
20
|
}>, {
|
|
16
21
|
modelValue: undefined;
|
|
17
22
|
id: undefined;
|
|
@@ -21,6 +26,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
21
26
|
hint: string;
|
|
22
27
|
searchPlaceholder: string;
|
|
23
28
|
noResultsText: string;
|
|
29
|
+
searchThreshold: number;
|
|
24
30
|
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
25
31
|
"update:modelValue": (value: string | number) => void;
|
|
26
32
|
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
@@ -33,6 +39,11 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
33
39
|
hint?: string;
|
|
34
40
|
searchPlaceholder?: string;
|
|
35
41
|
noResultsText?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Скільки опцій має бути, щоб з'явилось поле пошуку. На коротких списках воно
|
|
44
|
+
* лише заважає — усе видно й так. `0` — показувати завжди, `Infinity` — ніколи.
|
|
45
|
+
*/
|
|
46
|
+
searchThreshold?: number;
|
|
36
47
|
}>, {
|
|
37
48
|
modelValue: undefined;
|
|
38
49
|
id: undefined;
|
|
@@ -42,6 +53,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
42
53
|
hint: string;
|
|
43
54
|
searchPlaceholder: string;
|
|
44
55
|
noResultsText: string;
|
|
56
|
+
searchThreshold: number;
|
|
45
57
|
}>>> & Readonly<{
|
|
46
58
|
"onUpdate:modelValue"?: ((value: string | number) => any) | undefined;
|
|
47
59
|
}>, {
|
|
@@ -53,6 +65,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
53
65
|
state: "success" | "error" | "default";
|
|
54
66
|
hint: string;
|
|
55
67
|
noResultsText: string;
|
|
68
|
+
searchThreshold: number;
|
|
56
69
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
57
70
|
export default _default;
|
|
58
71
|
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
@@ -7,8 +7,8 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
7
7
|
$emit: (event: "checkbox" | "open" | "selectUpdate" | "inputEdit" | "openContext" | "openTagsModal" | "deleteTag" | "deleteRow" | "shrink" | "expand", ...args: any[]) => void;
|
|
8
8
|
selected: unknown[];
|
|
9
9
|
index: number;
|
|
10
|
-
item: Record<string, any>;
|
|
11
10
|
params: Record<string, any>;
|
|
11
|
+
item: Record<string, any>;
|
|
12
12
|
selectedColumns: Record<string, any>;
|
|
13
13
|
widthColumns: Record<string, any>;
|
|
14
14
|
tableViewExpanded: boolean;
|
|
@@ -17,8 +17,8 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
17
17
|
$props: {
|
|
18
18
|
readonly selected?: unknown[] | undefined;
|
|
19
19
|
readonly index?: number | undefined;
|
|
20
|
-
readonly item?: Record<string, any> | undefined;
|
|
21
20
|
readonly params?: Record<string, any> | undefined;
|
|
21
|
+
readonly item?: Record<string, any> | undefined;
|
|
22
22
|
readonly selectedColumns?: Record<string, any> | undefined;
|
|
23
23
|
readonly widthColumns?: Record<string, any> | undefined;
|
|
24
24
|
readonly tableViewExpanded?: boolean | undefined;
|
|
@@ -8,15 +8,15 @@ declare const __VLS_component: import('vue').DefineComponent<{}, {
|
|
|
8
8
|
name: string;
|
|
9
9
|
section: string;
|
|
10
10
|
index: number;
|
|
11
|
-
item: Record<string, any>;
|
|
12
11
|
params: Record<string, any>;
|
|
12
|
+
item: Record<string, any>;
|
|
13
13
|
widthFlex: string;
|
|
14
14
|
$props: {
|
|
15
15
|
readonly name?: string | undefined;
|
|
16
16
|
readonly section?: string | undefined;
|
|
17
17
|
readonly index?: number | undefined;
|
|
18
|
-
readonly item?: Record<string, any> | undefined;
|
|
19
18
|
readonly params?: Record<string, any> | undefined;
|
|
19
|
+
readonly item?: Record<string, any> | undefined;
|
|
20
20
|
readonly widthFlex?: string | undefined;
|
|
21
21
|
};
|
|
22
22
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
@@ -42,8 +42,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
42
42
|
};
|
|
43
43
|
}>> & Readonly<{}>, {
|
|
44
44
|
index: number;
|
|
45
|
-
item: Record<string, any>;
|
|
46
45
|
params: Record<string, any>;
|
|
46
|
+
item: Record<string, any>;
|
|
47
47
|
widthFlex: string;
|
|
48
48
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
49
49
|
export default _default;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
declare const _default: import('vue').DefineComponent<{}, {
|
|
2
2
|
$emit: (event: "selectUpdate", ...args: any[]) => void;
|
|
3
3
|
index: number;
|
|
4
|
-
item: Record<string, any>;
|
|
5
4
|
params: Record<string, any>;
|
|
5
|
+
item: Record<string, any>;
|
|
6
6
|
widthFlex: string;
|
|
7
7
|
$props: {
|
|
8
8
|
readonly index?: number | undefined;
|
|
9
|
-
readonly item?: Record<string, any> | undefined;
|
|
10
9
|
readonly params?: Record<string, any> | undefined;
|
|
10
|
+
readonly item?: Record<string, any> | undefined;
|
|
11
11
|
readonly widthFlex?: string | undefined;
|
|
12
12
|
};
|
|
13
13
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
declare const _default: import('vue').DefineComponent<{}, {
|
|
2
2
|
$emit: (event: "inputEdit", ...args: any[]) => void;
|
|
3
|
-
item: Record<string, any>;
|
|
4
3
|
params: Record<string, any>;
|
|
4
|
+
item: Record<string, any>;
|
|
5
5
|
widthFlex: string;
|
|
6
6
|
$props: {
|
|
7
|
-
readonly item?: Record<string, any> | undefined;
|
|
8
7
|
readonly params?: Record<string, any> | undefined;
|
|
8
|
+
readonly item?: Record<string, any> | undefined;
|
|
9
9
|
readonly widthFlex?: string | undefined;
|
|
10
10
|
};
|
|
11
11
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
@@ -42,8 +42,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
42
42
|
};
|
|
43
43
|
}>> & Readonly<{}>, {
|
|
44
44
|
index: number;
|
|
45
|
-
item: Record<string, any>;
|
|
46
45
|
params: Record<string, any>;
|
|
46
|
+
item: Record<string, any>;
|
|
47
47
|
widthFlex: string;
|
|
48
48
|
}, {}, {
|
|
49
49
|
TagsInput: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
declare
|
|
2
|
-
default?(_: {}): any;
|
|
3
|
-
};
|
|
4
|
-
declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
5
|
-
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
1
|
+
declare const _default: boolean;
|
|
6
2
|
export default _default;
|
|
7
|
-
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
8
|
-
new (): {
|
|
9
|
-
$slots: S;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
declare const _default: <TRow>(__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<{
|
|
2
|
+
props: __VLS_Prettify<__VLS_OmitKeepDiscriminatedUnion<(Partial<{}> & Omit<{
|
|
3
|
+
readonly "onReach-end"?: (() => any) | undefined;
|
|
4
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>) & {
|
|
5
|
+
/** Рядки. На відміну від SkyTableBody тут вони обовʼязкові. */
|
|
6
|
+
rows: TRow[];
|
|
7
|
+
/** Ключ рядка. Індекс за замовчуванням — лише для статичних списків. */
|
|
8
|
+
rowKey?: (row: TRow, index: number) => string | number;
|
|
9
|
+
/** Очікувана висота рядка в px — база для розрахунку вікна. */
|
|
10
|
+
estimateSize?: number;
|
|
11
|
+
/** Скільки рядків тримати в DOM понад видиме вікно. */
|
|
12
|
+
overscan?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Рядки різної висоти (перенос тексту, розкриті деталі). Вмикає вимірювання
|
|
15
|
+
* кожного видимого рядка через ResizeObserver — точно, але дорожче.
|
|
16
|
+
* Якщо висота фіксована, лишайте `false`: тоді геометрія рахується
|
|
17
|
+
* арифметикою, без жодного читання з DOM.
|
|
18
|
+
*/
|
|
19
|
+
dynamic?: boolean;
|
|
20
|
+
}, keyof import('vue').VNodeProps | keyof import('vue').AllowedComponentProps>> & {} & (import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps);
|
|
21
|
+
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
22
|
+
attrs: any;
|
|
23
|
+
slots: ReturnType<() => Readonly<{
|
|
24
|
+
default(props: {
|
|
25
|
+
row: TRow;
|
|
26
|
+
index: number;
|
|
27
|
+
}): unknown;
|
|
28
|
+
empty(): unknown;
|
|
29
|
+
}> & {
|
|
30
|
+
default(props: {
|
|
31
|
+
row: TRow;
|
|
32
|
+
index: number;
|
|
33
|
+
}): unknown;
|
|
34
|
+
empty(): unknown;
|
|
35
|
+
}>;
|
|
36
|
+
emit: (evt: "reach-end") => void;
|
|
37
|
+
}>) => import('vue').VNode & {
|
|
38
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
39
|
+
};
|
|
40
|
+
export default _default;
|
|
41
|
+
type __VLS_Prettify<T> = {
|
|
42
|
+
[K in keyof T]: T[K];
|
|
43
|
+
} & {};
|
|
@@ -2,6 +2,7 @@ export { default as SkyTableRoot } from './SkyTableRoot.vue';
|
|
|
2
2
|
export { default as SkyTableHeader } from './SkyTableHeader.vue';
|
|
3
3
|
export { default as SkyTableHead } from './SkyTableHead.vue';
|
|
4
4
|
export { default as SkyTableBody } from './SkyTableBody.vue';
|
|
5
|
+
export { default as SkyTableVirtualBody } from './SkyTableVirtualBody.vue';
|
|
5
6
|
export { default as SkyTableRow } from './SkyTableRow.vue';
|
|
6
7
|
export { default as SkyTableCell } from './SkyTableCell.vue';
|
|
7
8
|
export { default as SkyTableEmpty } from './SkyTableEmpty.vue';
|