@inandu-solutions/grid-vue 0.2.2 → 0.3.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 +27 -8
- package/dist/components/InanduGrid.vue.d.ts +14 -5
- package/dist/composables/rowKey.d.ts +15 -0
- package/dist/composables/useInanduGrid.d.ts +15 -2
- package/dist/composables/useInanduGridServer.d.ts +6 -3
- package/dist/core/index.d.ts +1 -17
- package/dist/inandu-grid-vue.cjs +3 -3
- package/dist/inandu-grid-vue.js +798 -1155
- package/dist/index.d.ts +1 -0
- package/dist/style.css +13 -0
- package/package.json +7 -3
- package/dist/core/aggregate.d.ts +0 -5
- package/dist/core/columns.d.ts +0 -11
- package/dist/core/constants.d.ts +0 -14
- package/dist/core/dom.d.ts +0 -8
- package/dist/core/export/csv.d.ts +0 -2
- package/dist/core/export/download.d.ts +0 -2
- package/dist/core/export/markup.d.ts +0 -2
- package/dist/core/export/pdf.d.ts +0 -3
- package/dist/core/filter.d.ts +0 -26
- package/dist/core/format.d.ts +0 -24
- package/dist/core/i18n/en.d.ts +0 -46
- package/dist/core/i18n/es.d.ts +0 -46
- package/dist/core/i18n/fr.d.ts +0 -46
- package/dist/core/i18n/index.d.ts +0 -8
- package/dist/core/i18n/it.d.ts +0 -46
- package/dist/core/i18n/zh.d.ts +0 -46
- package/dist/core/parse.d.ts +0 -14
- package/dist/core/sort.d.ts +0 -1
- package/dist/core/tree.d.ts +0 -28
- package/dist/core/types.d.ts +0 -46
package/README.md
CHANGED
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
**A lightweight Vue 3 data grid with the essentials other grids gate behind a paid enterprise
|
|
4
4
|
licence — row grouping, aggregates, inline editing and Excel-compatible export — fully MIT.** The
|
|
5
5
|
Vue port of [`@inandu-solutions/grid-angular`](https://github.com/inandusolutions/inandu-grid),
|
|
6
|
-
|
|
7
|
-
[`@inandu-solutions/grid-
|
|
6
|
+
on the same framework-agnostic core
|
|
7
|
+
([`@inandu-solutions/grid-core`](https://github.com/inandusolutions/inandu-grid-core)) as its Angular and
|
|
8
|
+
React siblings: one core, three interfaces
|
|
9
|
+
([how it fits together](https://inandusolutions.github.io/inandu-grid-vue/architecture.html)).
|
|
10
|
+
|
|
11
|
+
<p align="center"><img src="https://raw.githubusercontent.com/inandusolutions/inandu-grid-core/main/docs/architecture.svg" alt="Angular, React and Vue grids on top of one shared core package, which shares its query contract with Inandu.Grid.Extensions on .NET" width="820"></p>
|
|
8
12
|
|
|
9
13
|
[](https://www.npmjs.com/package/@inandu-solutions/grid-vue)
|
|
10
14
|
[](https://www.npmjs.com/package/@inandu-solutions/grid-vue)
|
|
@@ -59,7 +63,7 @@ this isn't that — see [Not included](#not-included) below.
|
|
|
59
63
|
|
|
60
64
|
## Angular and React versions
|
|
61
65
|
|
|
62
|
-
[`inandu-grid`](https://github.com/inandusolutions/inandu-grid) is the original,
|
|
66
|
+
[`inandu-grid`](https://github.com/inandusolutions/inandu-grid) is the original, reference implementation,
|
|
63
67
|
MIT-licensed Angular grid this repo is ported from, and
|
|
64
68
|
[`inandu-grid-react`](https://github.com/inandusolutions/inandu-grid-react) is its React port — same
|
|
65
69
|
feature set, same core logic, adapted for Vue's composition API (`computed`/`shallowRef`, SFCs,
|
|
@@ -85,10 +89,10 @@ which also has tabs for inline editing and tree data.
|
|
|
85
89
|
|
|
86
90
|
## Features
|
|
87
91
|
|
|
88
|
-
**
|
|
89
|
-
filtering, aggregation, export, i18n) is
|
|
90
|
-
[`
|
|
91
|
-
|
|
92
|
+
**Covers the core feature set of grid-angular; a few Angular-only features are not ported (see the [feature matrix](https://github.com/inandusolutions/inandu-grid/blob/main/docs/feature-matrix.md)).** The framework-agnostic core (sorting,
|
|
93
|
+
filtering, aggregation, export, i18n) is the
|
|
94
|
+
[`@inandu-solutions/grid-core`](https://github.com/inandusolutions/inandu-grid-core) package, shared with
|
|
95
|
+
grid-angular and grid-react. The Vue-specific layer — the
|
|
92
96
|
[`<InanduGrid>`](#api-shape) component and the [`useInanduGrid()`](#api-shape) headless
|
|
93
97
|
composable — covers:
|
|
94
98
|
|
|
@@ -107,7 +111,7 @@ composable — covers:
|
|
|
107
111
|
- Master-detail — a `#detail="{ row }"` slot (or a `renderDetail` render-function prop)
|
|
108
112
|
- Custom cell / header / edit-control rendering per column — `#cell-<field>`, `#header-<field>` and
|
|
109
113
|
`#editor-<field>` scoped slots, or `renderCell` / `renderHeader` / `renderEditor` render functions
|
|
110
|
-
on the column definition — without losing sorting, resizing, or validation
|
|
114
|
+
on the column definition — without losing sorting, resizing, or validation. Note: the editor's `value` is always the raw control shape (text), so keep array/object cell values as delimited strings (or read `row[field]`) - see `InanduEditRenderContext`.
|
|
111
115
|
- Excel-style cell range selection (`cell-range-selection`, `multi-range`) — click-and-drag or
|
|
112
116
|
shift-click across cells to select a rectangular block; `Ctrl+C` copies the whole range as TSV
|
|
113
117
|
when `clipboard` is also on
|
|
@@ -190,6 +194,21 @@ totals are off (they would only ever see one page), and a column's Excel-style v
|
|
|
190
194
|
the values on the current page. Use `buildInanduGridQuery(query)` if you'd rather do the fetching
|
|
191
195
|
yourself, and `fetcher` / `init` on the composable for auth headers or a custom client.
|
|
192
196
|
|
|
197
|
+
### Row identity (`rowId`)
|
|
198
|
+
|
|
199
|
+
Selection, tree expansion and master-detail expansion are remembered **by a key**, not by the row object,
|
|
200
|
+
so they survive a page change, a `reload()` and a parent that passes a derived array (`:rows="data.filter(...)"`).
|
|
201
|
+
By default the key is the row's `id` field when it has one; otherwise the row object itself (the previous
|
|
202
|
+
behaviour). Point it somewhere else with `rowId`:
|
|
203
|
+
|
|
204
|
+
```vue
|
|
205
|
+
<InanduGrid :rows="rows" :columns="columns" row-id="sku" />
|
|
206
|
+
<InanduGrid :rows="rows" :columns="columns" :row-id="row => `${row.orderId}-${row.line}`" />
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The key is also the `:key` of each row, so edit state follows a row through sorting, filtering and
|
|
210
|
+
drag-reorder. Give rows a unique key: duplicate ids are your data's problem and Vue will warn about them.
|
|
211
|
+
|
|
193
212
|
## Development
|
|
194
213
|
|
|
195
214
|
```bash
|
|
@@ -2,6 +2,7 @@ import { VNodeChild } from 'vue';
|
|
|
2
2
|
import { InanduGridColumnFilterValue, InanduGridRow } from '../core';
|
|
3
3
|
import { InanduCellRenderContext, InanduEditRenderContext, InanduGridCellPaste, InanduGridColumn, InanduGridRowSave, InanduGridServerQuery, InanduHeaderRenderContext } from '../composables/useInanduGrid';
|
|
4
4
|
import { InanduGridCellRangeSelection } from './types';
|
|
5
|
+
import { InanduGridRowId } from '../composables/rowKey';
|
|
5
6
|
type __VLS_Props = {
|
|
6
7
|
rows: InanduGridRow[];
|
|
7
8
|
columns: InanduGridColumn[];
|
|
@@ -67,8 +68,15 @@ type __VLS_Props = {
|
|
|
67
68
|
renderDetail?: (row: InanduGridRow) => VNodeChild;
|
|
68
69
|
/** Collapses any other expanded row first, accordion-style, when a new one expands. Off (any number of rows can be expanded at once) by default. */
|
|
69
70
|
singleDetailExpand?: boolean;
|
|
70
|
-
/** An extra per-row predicate ANDed onto the free-text + column filters — same as grid-angular's `extraRowFilter`. Lets a caller layer its own filtering (e.g. an advanced-filter query) on top of the grid's own. Unset: no extra filtering. */
|
|
71
|
+
/** An extra per-row predicate ANDed onto the free-text + column filters — same as grid-angular's `extraRowFilter`. Lets a caller layer its own filtering (e.g. an advanced-filter query) on top of the grid's own. Unset: no extra filtering. Keep the function's identity stable (declare it once, or wrap it in `computed`): a new function on every parent render re-filters and re-sorts all rows each time. */
|
|
71
72
|
extraRowFilter?: (row: InanduGridRow) => boolean;
|
|
73
|
+
/**
|
|
74
|
+
* How a row is identified across data refreshes: a field name (`'sku'`) or a function returning the key.
|
|
75
|
+
* Selection, tree and detail expansion are remembered by it, so they survive a server-side page change or
|
|
76
|
+
* `reload()` and a parent that passes a derived array; it is also the `:key` of the row. Unset: the row's
|
|
77
|
+
* `id` field when it has one, otherwise the row object itself (identity), as before.
|
|
78
|
+
*/
|
|
79
|
+
rowId?: InanduGridRowId;
|
|
72
80
|
/** Server-side mode: `rows` is the current page as sorted/filtered/paged by the server and `totalItems` is the full match count. See `useInanduGridServer`. Needs `pageSize` > 0. */
|
|
73
81
|
serverSide?: {
|
|
74
82
|
totalItems: number;
|
|
@@ -117,8 +125,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
117
125
|
readonly allColumns: InanduGridColumn[];
|
|
118
126
|
stickyOffset: (field: string) => number;
|
|
119
127
|
stickyOffsetRight: (field: string) => number;
|
|
120
|
-
columnPinnedSide: (field: string) => import('
|
|
121
|
-
setColumnPinned: (field: string, side: import('
|
|
128
|
+
columnPinnedSide: (field: string) => import('@inandu-solutions/grid-core').InanduColumnStickySide | undefined;
|
|
129
|
+
setColumnPinned: (field: string, side: import('@inandu-solutions/grid-core').InanduColumnStickySide | undefined) => void;
|
|
122
130
|
readonly hideableColumns: InanduGridColumn[];
|
|
123
131
|
isColumnHidden: (field: string) => boolean;
|
|
124
132
|
toggleColumnVisibility: (field: string) => void;
|
|
@@ -133,7 +141,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
133
141
|
onRowDragStart: (row: InanduGridRow) => void;
|
|
134
142
|
onRowDrop: (targetRow: InanduGridRow) => void;
|
|
135
143
|
readonly hasTreeData: boolean;
|
|
136
|
-
readonly treeRows: import('
|
|
144
|
+
readonly treeRows: import('@inandu-solutions/grid-core').TreeVisibleRow<InanduGridRow>[];
|
|
137
145
|
isTreeRowExpanded: (row: InanduGridRow) => boolean;
|
|
138
146
|
toggleTreeRow: (row: InanduGridRow) => void;
|
|
139
147
|
setAllTreeRowsExpanded: (expanded: boolean) => void;
|
|
@@ -164,6 +172,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
164
172
|
readonly totals: Record<string, number>;
|
|
165
173
|
readonly selectedRows: Set<InanduGridRow>;
|
|
166
174
|
isRowSelected: (row: InanduGridRow) => boolean;
|
|
175
|
+
rowKeyOf: (row: InanduGridRow) => string;
|
|
167
176
|
toggleRowSelection: (row: InanduGridRow) => void;
|
|
168
177
|
readonly allSelected: boolean;
|
|
169
178
|
readonly someSelected: boolean;
|
|
@@ -216,9 +225,9 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
216
225
|
locale: string;
|
|
217
226
|
pageSize: number;
|
|
218
227
|
treeDefaultExpanded: number | "none" | "all";
|
|
228
|
+
height: number;
|
|
219
229
|
exportFilenameBase: string;
|
|
220
230
|
virtualRowHeight: number;
|
|
221
|
-
height: number;
|
|
222
231
|
overscan: number;
|
|
223
232
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
224
233
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InanduGridRow } from '../core';
|
|
2
|
+
/**
|
|
3
|
+
* How the grid identifies a row across renders and data refreshes: the name of a field (`'sku'`) or a
|
|
4
|
+
* function that returns the row's key. Without it, the row's `id` field is used when it is present
|
|
5
|
+
* (not null / undefined), and the row object itself otherwise (identity, the pre-`rowId` behaviour).
|
|
6
|
+
*/
|
|
7
|
+
export type InanduGridRowId = string | ((row: InanduGridRow) => string | number);
|
|
8
|
+
/** The stable key for `row`: the id value when there is one, otherwise the row object itself. */
|
|
9
|
+
export declare function createRowKey(rowId: InanduGridRowId | undefined): (row: InanduGridRow) => unknown;
|
|
10
|
+
/**
|
|
11
|
+
* A `:key` for `row`. An id is namespaced by its type (the string `"1"` and the number `1` are different
|
|
12
|
+
* rows, as they are in a `Set`), and a row without an id gets a per-object counter, so keys stay unique
|
|
13
|
+
* and follow the row through sorting, filtering and drag-reorder.
|
|
14
|
+
*/
|
|
15
|
+
export declare function toVueKey(key: unknown): string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { InanduGridRowId } from './rowKey';
|
|
1
2
|
import { MaybeRefOrGetter, VNodeChild } from 'vue';
|
|
2
3
|
import { InanduColumnAggregate, InanduColumnStickySide, InanduColumnType, InanduGridColumnFilterValue, InanduGridRow, TreeVisibleRow } from '../core';
|
|
3
4
|
/**
|
|
@@ -58,7 +59,11 @@ export interface InanduHeaderRenderContext {
|
|
|
58
59
|
title: string;
|
|
59
60
|
field: string;
|
|
60
61
|
}
|
|
61
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* Passed to a column's `renderEditor` / `#editor-<field>` slot. `row` is `{}` for the add-new-row draft.
|
|
64
|
+
*
|
|
65
|
+
* Because `value` is always the raw control shape, a cell that holds an array or an object arrives as text (`String(raw)`: `['a','b']` becomes `"a,b"`, `{ ... }` becomes `"[object Object]"`). Store such values as strings (comma-joined, `from..to`, ...) and let the editor parse and format them - as grid-pro's multiselect (`joinWith`) and date-range (`sep`) editors do - or read the original typed value from `row[field]`.
|
|
66
|
+
*/
|
|
62
67
|
export interface InanduEditRenderContext {
|
|
63
68
|
value: unknown;
|
|
64
69
|
row: InanduGridRow;
|
|
@@ -148,8 +153,15 @@ export interface UseInanduGridOptions {
|
|
|
148
153
|
* `<InanduGrid>` component's job, not this composable's — it has no way to observe scroll state itself.
|
|
149
154
|
*/
|
|
150
155
|
virtualScroll?: boolean;
|
|
151
|
-
/** An extra per-row predicate ANDed onto the free-text + column filters — same as grid-angular's `extraRowFilter`. Lets a caller layer its own filtering (e.g. an advanced-filter query) on top of the grid's own. Unset: no extra filtering. */
|
|
156
|
+
/** An extra per-row predicate ANDed onto the free-text + column filters — same as grid-angular's `extraRowFilter`. Lets a caller layer its own filtering (e.g. an advanced-filter query) on top of the grid's own. Unset: no extra filtering. Keep the function's identity stable (declare it once, or wrap it in `computed`): a new function on every parent render re-filters and re-sorts all rows each time. */
|
|
152
157
|
extraRowFilter?: (row: InanduGridRow) => boolean;
|
|
158
|
+
/**
|
|
159
|
+
* How a row is identified across data refreshes: a field name (`'sku'`) or a function returning the key.
|
|
160
|
+
* Selection, tree expansion and master-detail expansion are remembered by this key, so they survive a
|
|
161
|
+
* server-side page change or `reload()` (which return new row objects) and a parent that passes a derived
|
|
162
|
+
* array. Unset: the row's `id` field when it has one, otherwise the row object itself (identity), as before.
|
|
163
|
+
*/
|
|
164
|
+
rowId?: InanduGridRowId;
|
|
153
165
|
/**
|
|
154
166
|
* Server-side mode: `rows` is already the current page, as sorted/filtered/paged by the server
|
|
155
167
|
* (see `useInanduGridServer`). The composable keeps owning the sort / filter / search / page
|
|
@@ -230,6 +242,7 @@ export declare function useInanduGrid(options: MaybeRefOrGetter<UseInanduGridOpt
|
|
|
230
242
|
readonly totals: Record<string, number>;
|
|
231
243
|
readonly selectedRows: Set<InanduGridRow>;
|
|
232
244
|
isRowSelected: (row: InanduGridRow) => boolean;
|
|
245
|
+
rowKeyOf: (row: InanduGridRow) => string;
|
|
233
246
|
toggleRowSelection: (row: InanduGridRow) => void;
|
|
234
247
|
readonly allSelected: boolean;
|
|
235
248
|
readonly someSelected: boolean;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ShallowRef } from 'vue';
|
|
1
|
+
import { MaybeRefOrGetter, ShallowRef } from 'vue';
|
|
2
2
|
import { InanduGridRow } from '../core';
|
|
3
3
|
import { InanduGridServerQuery } from './useInanduGrid';
|
|
4
4
|
export interface InanduGridQueryOptions {
|
|
5
|
-
/** Extra params appended after the grid's own (a tenant id, a fixed filter, ...). */
|
|
5
|
+
/** Extra params appended after the grid's own (a tenant id, a fixed filter, ...). A key the grid already sends (`page`, `sort`, a column filter...) is replaced by yours, with a one-time console warning. */
|
|
6
6
|
extraParams?: Record<string, string>;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
@@ -47,7 +47,10 @@ export interface InanduGridServerResult {
|
|
|
47
47
|
* :server-side="{ totalItems: server.total.value }" @query-change="server.setQuery" />
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
|
+
* `options` may be a plain object, a ref or a getter; `url` and `extraParams` are read on every request, and
|
|
51
|
+
* changing them requests the current query again.
|
|
52
|
+
*
|
|
50
53
|
* Expects the `Inandu.Grid.Extensions` response shape, `{ data: [...], total: n }`. A request that
|
|
51
54
|
* is superseded by a newer one is aborted, and a late response from it is ignored.
|
|
52
55
|
*/
|
|
53
|
-
export declare function useInanduGridServer(
|
|
56
|
+
export declare function useInanduGridServer(optionsSource: MaybeRefOrGetter<InanduGridServerOptions>): InanduGridServerResult;
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { MIN_COLUMN_WIDTH, MAX_COLUMN_WIDTH, SELECT_COLUMN_WIDTH, ROW_DRAG_COLUMN_WIDTH, DETAIL_TOGGLE_COLUMN_WIDTH, STATE_STORAGE_PREFIX, } from './constants';
|
|
3
|
-
export { coerceToDate, formatDateValue, formatCellValue, defaultNumberFormatter, } from './format';
|
|
4
|
-
export type { NumberFormatter } from './format';
|
|
5
|
-
export { compareCellValues } from './sort';
|
|
6
|
-
export { flattenTree, collectTreeRows } from './tree';
|
|
7
|
-
export type { TreeVisibleRow, FlattenTreeOptions } from './tree';
|
|
8
|
-
export { hasMeaningfulFilterValue, matchesColumnFilter } from './filter';
|
|
9
|
-
export { AGGREGATE_SYMBOLS, computeGroupAggregates } from './aggregate';
|
|
10
|
-
export { placeColumnsByOrder } from './columns';
|
|
11
|
-
export { parseDraftValue, parsePastedCellValue } from './parse';
|
|
12
|
-
export { escapeAttributeSelectorValue } from './dom';
|
|
13
|
-
export { escapeCsvValue } from './export/csv';
|
|
14
|
-
export { escapeMarkup } from './export/markup';
|
|
15
|
-
export { truncatePdfText } from './export/pdf';
|
|
16
|
-
export { downloadBlob } from './export/download';
|
|
17
|
-
export { en, es, fr, it, zh, INANDU_GRID_TRANSLATIONS } from './i18n';
|
|
1
|
+
export * from '@inandu-solutions/grid-core';
|
package/dist/inandu-grid-vue.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue");var t=/^(\d+)?\.(\d+)-(\d+)$/;function n(e,n,r){let i={},a=r?t.exec(r):null;return a?(a[1]&&(i.minimumIntegerDigits=Number(a[1])),i.minimumFractionDigits=Number(a[2]),i.maximumFractionDigits=Number(a[3])):i.maximumFractionDigits=3,new Intl.NumberFormat(n||void 0,i).format(e)}function r(e){return e instanceof Date?e:typeof e==`string`?new Date(e.replace(/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2})/,`$1T$2`)):new Date(e)}var i=/YYYY|sss|MM|DD|HH|mm|ss/g;function a(e,t){let n=(e,t=2)=>String(e).padStart(t,`0`);return t.replace(i,t=>{switch(t){case`YYYY`:return String(e.getFullYear());case`MM`:return n(e.getMonth()+1);case`DD`:return n(e.getDate());case`HH`:return n(e.getHours());case`mm`:return n(e.getMinutes());case`ss`:return n(e.getSeconds());case`sss`:return n(e.getMilliseconds(),3);default:return t}})}function o(e,t,i,o,s=n){if(e==null)return``;switch(t){case`number`:{let t=typeof e==`number`?e:Number(e);return Number.isNaN(t)?String(e):s(t,o,i||void 0)}case`date`:{let t=r(e);return Number.isNaN(t.getTime())?String(e):a(t,i||`YYYY-MM-DD`)}case`boolean`:{let[t,n]=(i||`true|false`).split(`|`);return e?t:n}default:return String(e)}}function s(e,t,n){return e==null&&t==null?0:e==null?-1:t==null?1:e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():typeof e==`number`&&typeof t==`number`?e-t:String(e).localeCompare(String(t),n||void 0)}function c(e,t){let{getChildren:n,isExpanded:r,match:i,compare:a}=t,o=[],s=new Map,c=e=>{if(!i)return!0;let t=s.get(e);if(t!==void 0)return t;let r=i(e);if(!r){let t=n(e);r=!!t&&t.some(c)}return s.set(e,r),r},l=(e,t)=>{let s=i?e.filter(c):[...e];a&&(s=s.slice().sort(a));for(let e of s){let a=n(e),s=(a?i?a.filter(c):a:[]).length>0,u=s&&(i?!0:r(e));o.push({row:e,depth:t,expandable:s,expanded:u}),u&&l(a,t+1)}};return l(e,0),o}function l(e,t){let n=[],r=e=>{for(let i of e){n.push(i);let e=t(i);e&&e.length&&r(e)}};return r(e),n}function u(e){return e?Object.values(e).some(e=>Array.isArray(e)?!0:!!e):!1}function d(e,t,n,i,a){let s=t[e.field()];if(n.values!==void 0)return n.values.includes(o(s,e.type(),e.format(),i,a));switch(e.type()){case`number`:{let e=!!n.min,t=!!n.max;if(!e&&!t)return!0;let r=typeof s==`number`?s:Number(s);return!(s==null||Number.isNaN(r)||e&&r<Number(n.min)||t&&r>Number(n.max))}case`date`:{let e=!!n.from,t=!!n.to;if(!e&&!t)return!0;if(s==null)return!1;let i=r(s);if(Number.isNaN(i.getTime())||e&&i<new Date(n.from))return!1;if(t){let e=new Date(n.to);if(e.setHours(23,59,59,999),i>e)return!1}return!0}case`boolean`:return!n.bool||!!s==(n.bool===`true`);default:{let t=(n.text??``).trim().toLowerCase();return!t||o(s,e.type(),e.format(),i,a).toLowerCase().includes(t)}}}var f={sum:`Σ`,avg:`x̄`,min:`min`,max:`max`,count:`#`};function p(e,t){let n={};for(let r of t){let t=r.field(),i=r.aggregate();if(i===`count`){n[t]=e.length;continue}let a=e.map(e=>e[t]).filter(e=>e!=null&&e!==``&&typeof e!=`boolean`).map(e=>Number(e)).filter(e=>Number.isFinite(e));if(a.length===0)n[t]=0;else switch(i){case`sum`:n[t]=a.reduce((e,t)=>e+t,0);break;case`avg`:n[t]=a.reduce((e,t)=>e+t,0)/a.length;break;case`min`:n[t]=a.reduce((e,t)=>t<e?t:e,1/0);break;case`max`:n[t]=a.reduce((e,t)=>t>e?t:e,-1/0)}}return n}function m(e,t){switch(t){case`number`:{if(e===``||e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}case`date`:{let t=typeof e==`string`?/^(\d{4})-(\d{2})-(\d{2})$/.exec(e):null,n=t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3])):new Date(e);return Number.isNaN(n.getTime())?void 0:n}case`boolean`:return!!e;default:return e}}function ee(e,t){return t===`boolean`?e.trim().toLowerCase()===`true`:m(e,t)}function te(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function h(e){return/[",\r\n]/.test(e)?`"`+e.replace(/"/g,`""`)+`"`:e}function g(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}function ne(e,t,n){if(e.getTextWidth(t)<=n)return t;let r=t;for(;r.length>0&&e.getTextWidth(r+`…`)>n;)r=r.slice(0,-1);return r+`…`}function _(e,t,n){let r=e instanceof Blob?e:new Blob([e],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i)}var v={MsgNoData:`No data`,MsgFirstPage:`First page`,MsgPreviousPage:`Previous page`,MsgNextPage:`Next page`,MsgLastPage:`Last page`,MsgSortBy:`Sort by {{column}}`,MsgPageOf:`Page {{page}} of {{total}}`,MsgFilterPlaceholder:`Search`,MsgFilterColumn:`Filter {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`From`,MsgFilterTo:`To`,MsgAll:`All`,MsgCancelFilter:`Cancel filter`,MsgCancelAllFilters:`Clear filters`,MsgGroupByHint:`Drag a column header here to group by it`,MsgGroupedBy:`Grouped by {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Cancel grouping`,MsgSelectAll:`Select all rows`,MsgSelectRow:`Select row {{index}}`,MsgExportCsv:`Export CSV`,MsgExportExcel:`Export Excel`,MsgExportPdf:`Export PDF`,MsgPrint:`Print`,MsgToggleColumns:`Columns`,MsgToggleColumn:`Toggle {{column}}`,MsgEditCell:`Edit {{column}}`,MsgEditRow:`Edit`,MsgSaveRow:`Save`,MsgCancelRowEdit:`Cancel`,MsgDeleteRow:`Delete`,MsgAddRow:`Add row`,MsgLoading:`Loading…`,MsgDragRow:`Drag to reorder row`,MsgAutosizeColumn:`Double-click to fit column to content`,MsgExpandDetail:`Expand row details`,MsgCollapseDetail:`Collapse row details`,MsgDeleteSelected:`Delete selected ({{count}})`,MsgValidationRequired:`This field is required`,MsgValidationMin:`Must be at least {{min}}`,MsgValidationMax:`Must be at most {{max}}`,MsgValidationPattern:`Invalid format`},y={MsgNoData:`Sin datos`,MsgFirstPage:`Primera página`,MsgPreviousPage:`Página anterior`,MsgNextPage:`Página siguiente`,MsgLastPage:`Última página`,MsgSortBy:`Ordenar por {{column}}`,MsgPageOf:`Página {{page}} de {{total}}`,MsgFilterPlaceholder:`Buscar`,MsgFilterColumn:`Filtrar {{column}}`,MsgFilterMin:`Mín`,MsgFilterMax:`Máx`,MsgFilterFrom:`Desde`,MsgFilterTo:`Hasta`,MsgAll:`Todos`,MsgCancelFilter:`Cancelar filtro`,MsgCancelAllFilters:`Cancelar filtros`,MsgGroupByHint:`Arrastra el encabezado de una columna aquí para agrupar por ella`,MsgGroupedBy:`Agrupado por {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Cancelar agrupación`,MsgSelectAll:`Seleccionar todas las filas`,MsgSelectRow:`Seleccionar fila {{index}}`,MsgExportCsv:`Exportar CSV`,MsgExportExcel:`Exportar Excel`,MsgExportPdf:`Exportar PDF`,MsgPrint:`Imprimir`,MsgToggleColumns:`Columnas`,MsgToggleColumn:`Mostrar u ocultar {{column}}`,MsgEditCell:`Editar {{column}}`,MsgEditRow:`Editar`,MsgSaveRow:`Guardar`,MsgCancelRowEdit:`Cancelar`,MsgDeleteRow:`Eliminar`,MsgAddRow:`Agregar fila`,MsgLoading:`Cargando…`,MsgDragRow:`Arrastrar para reordenar fila`,MsgAutosizeColumn:`Doble clic para ajustar la columna al contenido`,MsgExpandDetail:`Expandir detalle de fila`,MsgCollapseDetail:`Contraer detalle de fila`,MsgDeleteSelected:`Eliminar seleccionados ({{count}})`,MsgValidationRequired:`Este campo es obligatorio`,MsgValidationMin:`Debe ser como mínimo {{min}}`,MsgValidationMax:`Debe ser como máximo {{max}}`,MsgValidationPattern:`Formato inválido`},b={MsgNoData:`Aucune donnée`,MsgFirstPage:`Première page`,MsgPreviousPage:`Page précédente`,MsgNextPage:`Page suivante`,MsgLastPage:`Dernière page`,MsgSortBy:`Trier par {{column}}`,MsgPageOf:`Page {{page}} sur {{total}}`,MsgFilterPlaceholder:`Rechercher`,MsgFilterColumn:`Filtrer {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`De`,MsgFilterTo:`À`,MsgAll:`Tous`,MsgCancelFilter:`Annuler le filtre`,MsgCancelAllFilters:`Effacer les filtres`,MsgGroupByHint:`Faites glisser l'en-tête d'une colonne ici pour regrouper par celle-ci`,MsgGroupedBy:`Regroupé par {{column}}`,MsgGroupHeader:`{{column}} : {{value}} ({{count}})`,MsgCancelGrouping:`Annuler le regroupement`,MsgSelectAll:`Sélectionner toutes les lignes`,MsgSelectRow:`Sélectionner la ligne {{index}}`,MsgExportCsv:`Exporter CSV`,MsgExportExcel:`Exporter Excel`,MsgExportPdf:`Exporter PDF`,MsgPrint:`Imprimer`,MsgToggleColumns:`Colonnes`,MsgToggleColumn:`Afficher/masquer {{column}}`,MsgEditCell:`Modifier {{column}}`,MsgEditRow:`Modifier`,MsgSaveRow:`Enregistrer`,MsgCancelRowEdit:`Annuler`,MsgDeleteRow:`Supprimer`,MsgAddRow:`Ajouter une ligne`,MsgLoading:`Chargement…`,MsgDragRow:`Glisser pour réordonner la ligne`,MsgAutosizeColumn:`Double-cliquez pour ajuster la colonne au contenu`,MsgExpandDetail:`Développer les détails de la ligne`,MsgCollapseDetail:`Réduire les détails de la ligne`,MsgDeleteSelected:`Supprimer la sélection ({{count}})`,MsgValidationRequired:`Ce champ est obligatoire`,MsgValidationMin:`Doit être au moins {{min}}`,MsgValidationMax:`Doit être au plus {{max}}`,MsgValidationPattern:`Format invalide`},x={MsgNoData:`Nessun dato`,MsgFirstPage:`Prima pagina`,MsgPreviousPage:`Pagina precedente`,MsgNextPage:`Pagina successiva`,MsgLastPage:`Ultima pagina`,MsgSortBy:`Ordina per {{column}}`,MsgPageOf:`Pagina {{page}} di {{total}}`,MsgFilterPlaceholder:`Cerca`,MsgFilterColumn:`Filtra {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`Da`,MsgFilterTo:`A`,MsgAll:`Tutti`,MsgCancelFilter:`Annulla filtro`,MsgCancelAllFilters:`Cancella filtri`,MsgGroupByHint:`Trascina qui l'intestazione di una colonna per raggruppare per essa`,MsgGroupedBy:`Raggruppato per {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Annulla raggruppamento`,MsgSelectAll:`Seleziona tutte le righe`,MsgSelectRow:`Seleziona riga {{index}}`,MsgExportCsv:`Esporta CSV`,MsgExportExcel:`Esporta Excel`,MsgExportPdf:`Esporta PDF`,MsgPrint:`Stampa`,MsgToggleColumns:`Colonne`,MsgToggleColumn:`Mostra/nascondi {{column}}`,MsgEditCell:`Modifica {{column}}`,MsgEditRow:`Modifica`,MsgSaveRow:`Salva`,MsgCancelRowEdit:`Annulla`,MsgDeleteRow:`Elimina`,MsgAddRow:`Aggiungi riga`,MsgLoading:`Caricamento…`,MsgDragRow:`Trascina per riordinare la riga`,MsgAutosizeColumn:`Doppio clic per adattare la colonna al contenuto`,MsgExpandDetail:`Espandi dettagli riga`,MsgCollapseDetail:`Comprimi dettagli riga`,MsgDeleteSelected:`Elimina selezionati ({{count}})`,MsgValidationRequired:`Questo campo è obbligatorio`,MsgValidationMin:`Deve essere almeno {{min}}`,MsgValidationMax:`Deve essere al massimo {{max}}`,MsgValidationPattern:`Formato non valido`},S={MsgNoData:`暂无数据`,MsgFirstPage:`首页`,MsgPreviousPage:`上一页`,MsgNextPage:`下一页`,MsgLastPage:`末页`,MsgSortBy:`按{{column}}排序`,MsgPageOf:`第 {{page}} 页,共 {{total}} 页`,MsgFilterPlaceholder:`搜索`,MsgFilterColumn:`筛选{{column}}`,MsgFilterMin:`最小`,MsgFilterMax:`最大`,MsgFilterFrom:`从`,MsgFilterTo:`到`,MsgAll:`全部`,MsgCancelFilter:`取消筛选`,MsgCancelAllFilters:`清除所有筛选`,MsgGroupByHint:`将列标题拖到此处以按其分组`,MsgGroupedBy:`按{{column}}分组`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`取消分组`,MsgSelectAll:`选择所有行`,MsgSelectRow:`选择第 {{index}} 行`,MsgExportCsv:`导出 CSV`,MsgExportExcel:`导出 Excel`,MsgExportPdf:`导出 PDF`,MsgPrint:`打印`,MsgToggleColumns:`列`,MsgToggleColumn:`显示/隐藏{{column}}`,MsgEditCell:`编辑{{column}}`,MsgEditRow:`编辑`,MsgSaveRow:`保存`,MsgCancelRowEdit:`取消`,MsgDeleteRow:`删除`,MsgAddRow:`添加行`,MsgLoading:`加载中…`,MsgDragRow:`拖动以重新排序行`,MsgAutosizeColumn:`双击以使列适应内容`,MsgExpandDetail:`展开行详情`,MsgCollapseDetail:`收起行详情`,MsgDeleteSelected:`删除所选 ({{count}})`,MsgValidationRequired:`此字段为必填项`,MsgValidationMin:`不得小于 {{min}}`,MsgValidationMax:`不得大于 {{max}}`,MsgValidationPattern:`格式无效`},C={en:v,es:y,fr:b,it:x,zh:S};function w(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?String(t[n]):e):e}function re(e){let t=C[e.split(`-`)[0]]??v;return(e,n)=>w(t[e]??v[e],n)}function ie(e){return{field:()=>e.field,type:()=>e.type??`string`,format:()=>e.format??``,order:()=>e.order,aggregate:()=>e.aggregate??``}}function T(t){let n=n=>(0,e.computed)(()=>(0,e.toValue)(t)[n]),i=n(`rows`),a=n(`columns`),f=(0,e.computed)(()=>(0,e.toValue)(t).locale??`en`),te=n(`lang`),h=(0,e.computed)(()=>(0,e.toValue)(t).pageSize??0),g=(0,e.computed)(()=>(0,e.toValue)(t).selectable??!1),ne=n(`treeChildrenKey`),_=(0,e.computed)(()=>(0,e.toValue)(t).treeDefaultExpanded??`none`),v=(0,e.computed)(()=>(0,e.toValue)(t).virtualScroll??!1),y=n(`extraRowFilter`),b=n(`serverSide`),x=(0,e.computed)(()=>!!b.value),S=()=>(0,e.toValue)(t),C=(0,e.shallowRef)([]),w=(0,e.shallowRef)({}),T=(0,e.shallowRef)(``),E=(0,e.shallowRef)(0),D=(0,e.shallowRef)(void 0),O=(0,e.computed)(()=>x.value?void 0:D.value),k=(0,e.shallowRef)(new Set),A=(0,e.shallowRef)(void 0),j=(0,e.shallowRef)(!1),M=(0,e.shallowRef)({}),N=(0,e.shallowRef)({}),ae=(0,e.shallowRef)(!1),P=(0,e.shallowRef)(new Set),F=(0,e.shallowRef)(void 0),I=(0,e.shallowRef)(void 0),L=(0,e.shallowRef)({}),oe=(0,e.shallowRef)({}),R=(0,e.shallowRef)(void 0),z=(0,e.shallowRef)(new Set),B=(0,e.shallowRef)(new Set),se,V=(0,e.computed)(()=>re(te.value??f.value)),H=(0,e.computed)(()=>{let e=F.value;if(!e)return a.value;let t=new Map(a.value.map(e=>[e.field,e])),n=[];for(let r of e){let e=t.get(r);e&&(n.push(e),t.delete(r))}return n.push(...t.values()),n}),U=(0,e.computed)(()=>P.value.size===0?H.value:H.value.filter(e=>!P.value.has(e.field))),ce=(0,e.computed)(()=>H.value.filter(e=>e.hideable!==!1));function le(e){let t=H.value.map(e=>e.field),n=new Set(t),r=e.filter(e=>n.has(e)),i=new Set(r),a=t.filter(e=>!i.has(e));F.value=[...r,...a]}function ue(e){I.value=e}function de(e){let t=I.value;if(I.value=void 0,!t||t===e)return;let n=H.value.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=H.value.map(e=>e.field),i=r.indexOf(t),a=r.indexOf(e);i!==-1&&a!==-1&&(r.splice(i,1),i<a&&a--,r.splice(a,0,t),le(r))}function fe(e){return P.value.has(e)}function W(e){if(P.value.has(e)){let t=new Set(P.value);t.delete(e),P.value=t}else U.value.length<=1||(P.value=new Set(P.value).add(e))}let pe=(0,e.computed)(()=>U.value.filter(e=>e.editable));function me(e){E.value=0,T.value=e}let G=(0,e.computed)(()=>new Map(U.value.map(e=>[e.field,ie(e)]))),he=(0,e.computed)(()=>U.value.filter(e=>e.aggregate).map(e=>G.value.get(e.field)));function ge(e,t){E.value=0,w.value={...w.value,[e]:t}}function K(){E.value=0,w.value={}}function _e(e,t){return U.value.some(n=>{let r=G.value.get(n.field);return o(e[n.field],r.type(),r.format(),f.value).toLowerCase().includes(t)})}function ve(e,t){return t.every(([t,n])=>{let r=G.value.get(t);return!r||d(r,e,n,f.value)})}function q(e,t){for(let{field:n,direction:r}of C.value){let i=s(e[n],t[n],f.value)*(r===`asc`?1:-1);if(i!==0)return i}return 0}let J=(0,e.computed)(()=>{let e=i.value;if(x.value)return e;let t=T.value.trim().toLowerCase();t&&(e=e.filter(e=>_e(e,t)));let n=Object.entries(w.value).filter(([,e])=>u(e));n.length>0&&(e=e.filter(e=>ve(e,n)));let r=y.value;return r&&(e=e.filter(r)),C.value.length>0&&(e=[...e].sort(q)),e}),ye=(0,e.computed)(()=>{let e=O.value;if(!e)return null;let t=G.value.get(e);if(!t)return null;let n=new Map;for(let r of J.value){let i=o(r[e],t.type(),t.format(),f.value),a=n.get(i);a?a.push(r):n.set(i,[r])}return Array.from(n.entries()).map(([e,t])=>({key:e,rows:t,aggregates:p(t,he.value)}))}),be=(0,e.computed)(()=>p(J.value,he.value)),Y=(0,e.computed)(()=>!!ne.value&&!O.value&&!v.value&&!x.value);function X(e){let t=ne.value,n=t?e[t]:void 0;return Array.isArray(n)?n:void 0}let xe=(0,e.computed)(()=>{if(!Y.value)return[];let e=T.value.trim().toLowerCase(),t=Object.entries(w.value).filter(([,e])=>u(e)),n=y.value,r=e||t.length>0||n?r=>e&&!_e(r,e)||!ve(r,t)?!1:!n||n(r):void 0,a=C.value.length>0?q:void 0,o=z.value;return c(i.value,{getChildren:X,isExpanded:e=>o.has(e),match:r,compare:a})});(0,e.watch)([Y,i,_],()=>{if(!Y.value||se===i.value)return;se=i.value;let e=_.value;if(e===`none`){z.value=new Set;return}let t=new Set;if(e===`all`)for(let e of l(i.value,X))X(e)?.length&&t.add(e);else{let n=(r,i)=>{if(!(i>=e))for(let e of r){let r=X(e);r?.length&&(t.add(e),n(r,i+1))}};n(i.value,0)}z.value=t},{immediate:!0,flush:`sync`});function Se(e){return z.value.has(e)}function Ce(e){let t=new Set(z.value);t.has(e)?t.delete(e):t.add(e),z.value=t}function we(e){if(!e){z.value=new Set;return}let t=new Set;for(let e of l(i.value,X))X(e)?.length&&t.add(e);z.value=t}let Te=(0,e.computed)(()=>v.value&&!O.value&&!x.value),Ee=(0,e.computed)(()=>h.value>0&&!O.value&&!Y.value&&!Te.value),De=(0,e.computed)(()=>b.value?b.value.totalItems:J.value.length),Oe=(0,e.computed)(()=>Ee.value?Math.max(1,Math.ceil(De.value/h.value)):1),ke=(0,e.computed)(()=>x.value?E.value:Math.min(E.value,Oe.value-1)),Z=(0,e.computed)(()=>{if(Y.value)return xe.value.map(e=>e.row);if(!Ee.value||x.value)return J.value;let e=ke.value*h.value;return J.value.slice(e,e+h.value)});(0,e.watch)([x,ke,h,C,w,T],()=>{x.value&&S().onQueryChange?.({page:ke.value,pageSize:h.value,sortCriteria:C.value,filterValues:w.value,filterQuery:T.value})},{immediate:!0});let Q=(0,e.computed)(()=>O.value?J.value:Z.value);function Ae(e){return k.value.has(e)}function je(e){let t=new Set(k.value);t.has(e)?t.delete(e):t.add(e),k.value=t}let Me=(0,e.computed)(()=>Q.value.length>0&&Q.value.every(e=>k.value.has(e))),Ne=(0,e.computed)(()=>!Me.value&&Q.value.some(e=>k.value.has(e)));function Pe(){let e=!Me.value,t=new Set(k.value);for(let n of Q.value)e?t.add(n):t.delete(n);k.value=t}function Fe(){k.value=new Set}function Ie(e,t=!1){E.value=0;let n=C.value,r=n.findIndex(t=>t.field===e);if(t){if(r===-1){C.value=[...n,{field:e,direction:`asc`}];return}let t=[...n];t[r]={field:e,direction:n[r].direction===`asc`?`desc`:`asc`},C.value=t}else n.length===1&&n[0].field===e?C.value=[{field:e,direction:n[0].direction===`asc`?`desc`:`asc`}]:C.value=[{field:e,direction:`asc`}]}function Le(e){C.value=e}function Re(e){return C.value.find(t=>t.field===e)?.direction}function ze(e){if(C.value.length<2)return;let t=C.value.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function Be(e){return A.value===e}function Ve(e){return j.value?!0:A.value!==void 0&&A.value!==e}function He(e,t){let n=t.type??`string`;if(n===`boolean`)return!!e[t.field];if(n===`date`){let n=r(e[t.field]);if(Number.isNaN(n.getTime()))return``;let i=e=>String(e).padStart(2,`0`);return`${n.getFullYear()}-${i(n.getMonth()+1)}-${i(n.getDate())}`}let i=e[t.field];return i==null?``:String(i)}function Ue(e){let t={};for(let n of pe.value)t[n.field]=He(e,n);A.value=e,M.value=t,N.value={}}function We(){A.value=void 0,M.value={},N.value={}}function Ge(e,t){M.value={...M.value,[e]:t}}function Ke(e,t,n,r){let i=V.value;if(e.required&&(t===``||t==null))return i(`MsgValidationRequired`);if((e.type??`string`)===`number`&&typeof n==`number`){if(e.min!==void 0&&n<e.min)return i(`MsgValidationMin`,{min:e.min});if(e.max!==void 0&&n>e.max)return i(`MsgValidationMax`,{max:e.max})}if(e.pattern&&typeof t==`string`&&t!==``){let n;try{n=new RegExp(e.pattern)}catch{n=void 0}if(n&&!n.test(t))return i(`MsgValidationPattern`)}return e.validator?e.validator(n,r):null}function qe(e,t,n={}){return Ke(e,t,t,n)}async function Je(e){let t=pe.value,n={};for(let r of t)n[r.field]=m(e[r.field],r.type??`string`);let r={},i={},a=[];for(let o of t){let t=o.field,s=Ke(o,e[t],n[t],n);s?r[t]=s:o.asyncValidator?a.push(o.asyncValidator(n[t],n).then(e=>{e?r[t]=e:n[t]!==void 0&&(i[t]=n[t])})):n[t]!==void 0&&(i[t]=n[t])}if(a.length>0){ae.value=!0;try{await Promise.all(a)}finally{ae.value=!1}}return{errors:r,values:i}}async function Ye(e){if(A.value!==e)return;let{errors:t,values:n}=await Je(M.value);A.value===e&&(Object.keys(t).length>0?N.value=t:(A.value=void 0,M.value={},N.value={},S().onRowSave?.({row:e,values:n})))}function Xe(e){let t=S().deleteConfirmMessage;(!t||window.confirm(t))&&S().onRowDelete?.(e)}function Ze(){let e=S().bulkDeleteConfirmMessage;if(e&&!window.confirm(e))return;let t=Array.from(k.value);Fe(),S().onRowsDelete?.(t)}function Qe(){j.value=!0,M.value={},N.value={}}function $e(){j.value=!1,M.value={},N.value={}}async function et(){if(!j.value)return;let{errors:e,values:t}=await Je(M.value);j.value&&(Object.keys(e).length>0?N.value=e:(j.value=!1,M.value={},N.value={},S().onRowCreate?.(t)))}function tt(e,t){let n=Z.value[e],r=G.value.get(t);return!n||!r?``:o(n[t],r.type(),r.format(),f.value)}function nt(e,t,n){let r=U.value,i=Z.value,a=r.findIndex(e=>e.field===t);if(e===-1||a===-1)return;let o=[];n.replace(/\r\n$|\r$|\n$/,``).split(/\r\n|\r|\n/).map(e=>e.split(` `)).forEach((t,n)=>{let s=i[e+n];s&&t.forEach((e,t)=>{let n=r[a+t];n&&n.editable&&o.push({row:s,field:n.field,value:ee(e,n.type??`string`)})})}),o.length>0&&S().onCellsPaste?.(o)}function rt(e){let t=L.value[e];return t===void 0?H.value.find(t=>t.field===e)?.width??80:t}function it(e){return L.value[e]!==void 0}function at(e,t){H.value.some(t=>t.field===e)&&(L.value={...L.value,[e]:Math.max(30,t)})}function ot(e){R.value=e}function st(e){return B.value.has(e)}function ct(e){let t=B.value,n=S().singleDetailExpand?new Set:new Set(t);t.has(e)?n.delete(e):n.add(e),B.value=n}function lt(e){let t=R.value;if(R.value=void 0,!t||t===e)return;let n=[...J.value],r=n.indexOf(t),i=n.indexOf(e);r!==-1&&i!==-1&&(n.splice(r,1),r<i&&i--,n.splice(i,0,t),S().onRowOrderChange?.(n))}function ut(e){let t=oe.value[e];if(t===`left`||t===`right`)return t;if(t!==`none`)return H.value.find(t=>t.field===e)?.pinned}function dt(e,t){oe.value={...oe.value,[e]:t??`none`}}function $(e){let t=g.value?36:0;for(let n of U.value){if(n.field===e)break;ut(n.field)===`left`&&(t+=rt(n.field))}return t}function ft(e){let t=0,n=!1;for(let r of U.value)r.field===e?n=!0:n&&ut(r.field)===`right`&&(t+=rt(r.field));return t}function pt(e){E.value=e}function mt(e){D.value=e}return{get visibleColumns(){return U.value},get allColumns(){return H.value},stickyOffset:$,stickyOffsetRight:ft,columnPinnedSide:ut,setColumnPinned:dt,get hideableColumns(){return ce.value},isColumnHidden:fe,toggleColumnVisibility:W,setColumnOrder:le,get draggingField(){return I.value},onColumnDragStart:ue,onColumnDrop:de,effectiveWidth:rt,isColumnResized:it,setColumnWidth:at,get draggingRow(){return R.value},onRowDragStart:ot,onRowDrop:lt,get hasTreeData(){return Y.value},get treeRows(){return xe.value},isTreeRowExpanded:Se,toggleTreeRow:Ce,setAllTreeRowsExpanded:we,isRowExpanded:st,toggleRowExpanded:ct,get hasVirtualScroll(){return Te.value},get visibleRows(){return Z.value},get exportRows(){return Q.value},get sortedRows(){return J.value},get filteredRowCount(){return De.value},get locale(){return f.value},get sortCriteria(){return C.value},setSort:Le,toggleSort:Ie,sortDirectionFor:Re,sortPriorityFor:ze,get filterValues(){return w.value},setFilterValue:ge,clearAllFilters:K,get filterQuery(){return T.value},setFilterQuery:me,get page(){return ke.value},setPage:pt,get pageCount(){return Ee.value?Oe.value:1},get groupByField(){return O.value},setGroupByField:mt,get groups(){return ye.value},get totals(){return be.value},get selectedRows(){return k.value},isRowSelected:Ae,toggleRowSelection:je,get allSelected(){return Me.value},get someSelected(){return Ne.value},toggleSelectAll:Pe,clearSelection:Fe,get editableColumns(){return pe.value},get editingRow(){return A.value},get isAddingRow(){return j.value},get rowDraft(){return M.value},get fieldErrors(){return N.value},get isValidating(){return ae.value},isEditingRow:Be,isAnotherRowEditing:Ve,startEditingRow:Ue,cancelRowEdit:We,setRowDraftValue:Ge,saveRow:Ye,deleteRow:Xe,deleteSelectedRows:Ze,startAddingRow:Qe,cancelAddRow:$e,saveNewRow:et,validateCell:qe,copyCellText:tt,pasteAt:nt}}function E(e){return e.headerText||e.field}function D(e,t,n){return o(t[e.field],e.type??`string`,e.format??``,n)}function O(e,t,n){return``+[t.map(e=>h(E(e))).join(`,`),...e.map(e=>t.map(t=>h(D(t,e,n))).join(`,`))].join(`\r
|
|
2
|
-
`)}function k(e,t,n,r=`inandu-grid`){_(O(e,t,n),`${r}-export.csv`,`text/csv;charset=utf-8;`)}function A(e,t,n){let r=(e,t)=>{let n=t[e.field];return e.type===`number`&&typeof n==`number`&&Number.isFinite(n)?n:void 0},i=(e,t)=>{let i=r(e,t);return i===void 0?`<Cell><Data ss:Type="String">${g(D(e,t,n))}</Data></Cell>`:`<Cell><Data ss:Type="Number">${i}</Data></Cell>`},a=`<Row ss:StyleID="header">${t.map(e=>`<Cell><Data ss:Type="String">${g(E(e))}</Data></Cell>`).join(``)}</Row>`,o=e.map(e=>`<Row>${t.map(t=>i(t,e)).join(``)}</Row>`).join(``);return`<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"><Styles><Style ss:ID="header"><Font ss:Bold="1"/></Style></Styles><Worksheet ss:Name="Sheet1"><Table>`+a+o+`</Table></Worksheet></Workbook>`}function j(e,t,n,r=`inandu-grid`){_(A(e,t,n),`${r}-export.xls`,`application/vnd.ms-excel`)}function M(e,t,n,r=`inandu-grid`){let i=t.map(e=>`<th>${g(E(e))}</th>`).join(``),a=e.map(e=>`<tr>${t.map(t=>`<td>${g(D(t,e,n))}</td>`).join(``)}</tr>`).join(``),o=`<!doctype html><html><head><meta charset="utf-8"><title>${g(r)}</title><style>table{border-collapse:collapse;width:100%}th,td{border:1px solid #333;padding:4px 8px;text-align:left}th{background:#eee}</style></head><body><table><thead><tr>${i}</tr></thead><tbody>${a}</tbody></table></body></html>`,s=window.open(``,`_blank`);s&&(s.document.write(o),s.document.close(),s.focus(),setTimeout(()=>s.print(),0))}async function N(e,t,n,r=`inandu-grid`){let{jsPDF:i}=await import(`jspdf`),a=t.map(E),o=new i({orientation:`landscape`}),s=o.internal.pageSize.getWidth()-20,c=o.internal.pageSize.getHeight()-10,l=s/(t.length||1),u=10,d=(e,t)=>{o.setFont(`helvetica`,t?`bold`:`normal`);let n=10;e.forEach(e=>{o.text(ne(o,e,l-4),n+2,u+6),n+=l}),u+=8};d(a,!0);for(let r of e)u+8>c&&(o.addPage(),u=10,d(a,!0)),d(t.map(e=>D(e,r,n)),!1);_(o.output(`blob`),`${r}-export.pdf`)}function ae(e,t,n){let r=typeof CSS<`u`&&CSS.escape?CSS.escape(t):te(t),i=Array.from(e.querySelectorAll(`td[data-field="${r}"]`)),a=e.querySelector(`th[data-field="${r}"]`),o=i[0]??a??e,s=getComputedStyle(o),c=document.createElement(`span`);c.style.cssText=`position:absolute;left:-9999px;top:-9999px;visibility:hidden;white-space:pre;pointer-events:none`,c.style.font=s.font||`${s.fontStyle} ${s.fontWeight} ${s.fontSize}/${s.lineHeight} ${s.fontFamily}`,c.style.letterSpacing=s.letterSpacing,document.body.appendChild(c);let l=(parseFloat(s.paddingLeft)||0)+(parseFloat(s.paddingRight)||0)+2,u=0;c.textContent=n||t,u=Math.max(u,c.offsetWidth+44);for(let e of i)c.textContent=(e.textContent??``).replace(/\s+/g,` `).trim(),u=Math.max(u,c.offsetWidth+l);return c.remove(),i.length||a?Math.ceil(u):0}var P={class:`inandu-grid-edit-cell`},F=[`aria-label`,`checked`],I=[`aria-label`,`type`,`value`],L={key:2,class:`inandu-grid-field-error`},oe=(0,e.defineComponent)({__name:`EditCell`,props:{column:{},value:{},error:{},t:{type:Function}},emits:[`change`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.column.type??`string`),o=(0,e.computed)(()=>r.t(`MsgEditCell`,{column:r.column.headerText??r.column.field})),s=(0,e.computed)(()=>typeof r.value==`string`?r.value:``);return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,P,[a.value===`boolean`?((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,"aria-label":o.value,type:`checkbox`,checked:!!t.value,onChange:r[0]||=e=>i(`change`,e.target.checked)},null,40,F)):((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:1,"aria-label":o.value,type:a.value===`date`?`date`:a.value===`number`?`number`:`text`,value:s.value,onInput:r[1]||=e=>i(`change`,e.target.value)},null,40,I)),t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,L,(0,e.toDisplayString)(t.error),1)):(0,e.createCommentVNode)(``,!0)]))}}),R=(0,e.defineComponent)({name:`InanduGridRenderNodes`,props:{nodes:{type:null,default:null}},setup(e){return()=>e.nodes}}),z=[`data-row-index`],B={key:0},se=[`aria-label`,`title`],V={key:1},H=[`aria-label`],U=[`aria-label`,`checked`],ce=[`data-field`,`tabindex`,`onMousedown`,`onMouseenter`],le={key:3,class:`inandu-grid-row-actions`},ue=[`disabled`],de=[`disabled`],fe=[`disabled`],W=[`disabled`],pe={key:0,class:`inandu-grid-detail-row`},me=[`colspan`],G=(0,e.defineComponent)({__name:`DataRow`,props:{ctx:{},row:{},rowIndex:{},hasRowDragHandle:{type:Boolean,default:!1},isDragOverRow:{type:Boolean,default:!1},hasMasterDetail:{type:Boolean,default:!1},isRowExpanded:{type:Boolean,default:!1}},emits:[`rowDragStart`,`rowDragOver`,`rowDragLeave`,`rowDrop`,`toggleExpanded`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.ctx.isEditingRow(r.row)),o=(0,e.computed)(()=>r.isRowExpanded?r.ctx.t(`MsgCollapseDetail`):r.ctx.t(`MsgExpandDetail`));function s(e){r.hasRowDragHandle&&(e.preventDefault(),i(`rowDragOver`))}function c(e){r.hasRowDragHandle&&(e.preventDefault(),i(`rowDrop`))}function l(e){i(`rowDragStart`),e.dataTransfer?.setData(`text/plain`,`row`)}function u(e,t){r.ctx.cellRangeSelection&&r.ctx.onCellRangeMouseDown(e,r.rowIndex,t)}function d(e){r.ctx.cellRangeSelection&&r.ctx.onCellRangeMouseEnter(r.rowIndex,e)}return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`tr`,{"data-row-index":t.rowIndex,class:(0,e.normalizeClass)(t.isDragOverRow?`inandu-drag-over`:void 0),onDragover:s,onDragleave:r[6]||=e=>t.hasRowDragHandle&&i(`rowDragLeave`),onDrop:c},[t.hasMasterDetail?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,B,[(0,e.createElementVNode)(`button`,{type:`button`,class:`inandu-grid-detail-toggle`,"aria-label":o.value,title:o.value,onClick:r[0]||=e=>i(`toggleExpanded`)},(0,e.toDisplayString)(t.isRowExpanded?`▾`:`▸`),9,se)])):(0,e.createCommentVNode)(``,!0),t.hasRowDragHandle?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,V,[(0,e.createElementVNode)(`span`,{class:`inandu-grid-row-drag-handle`,"aria-label":t.ctx.t(`MsgDragRow`),draggable:`true`,onDragstart:l},`⋮⋮`,40,H)])):(0,e.createCommentVNode)(``,!0),t.ctx.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(t.ctx.selectColumnStyle)},[(0,e.createElementVNode)(`input`,{"aria-label":t.ctx.t(`MsgSelectRow`,{index:t.rowIndex+1}),type:`checkbox`,checked:t.ctx.isRowSelected(t.row),onChange:r[1]||=e=>t.ctx.toggleRowSelection(t.row)},null,40,U)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.ctx.columns,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:n.field,style:(0,e.normalizeStyle)(t.ctx.columnStyle(n)),"data-field":n.field,tabindex:t.ctx.clipboard?0:void 0,class:(0,e.normalizeClass)(t.ctx.cellRangeSelection&&t.ctx.isCellInRange(t.rowIndex,r)?`inandu-cell-range-selected`:void 0),onMousedown:e=>u(e,r),onMouseenter:e=>d(r)},[a.value&&n.editable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[t.ctx.editorContent(n,t.row)===void 0?((0,e.openBlock)(),(0,e.createBlock)(oe,{key:1,column:n,value:t.ctx.rowDraft[n.field],error:t.ctx.fieldErrors[n.field],t:t.ctx.t,onChange:e=>t.ctx.setRowDraftValue(n.field,e)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:0,nodes:t.ctx.editorContent(n,t.row)},null,8,[`nodes`]))],64)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:1,nodes:t.ctx.cellContent(n,t.row)},null,8,[`nodes`]))],46,ce))),128)),t.ctx.hasRowActions?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,le,[a.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`button`,{type:`button`,disabled:t.ctx.isValidating,onClick:r[2]||=e=>t.ctx.saveRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgSaveRow`)),9,ue),(0,e.createElementVNode)(`button`,{type:`button`,disabled:t.ctx.isValidating,onClick:r[3]||=e=>t.ctx.cancelRowEdit()},(0,e.toDisplayString)(t.ctx.t(`MsgCancelRowEdit`)),9,de)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[t.ctx.editableColumnCount>0?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,disabled:t.ctx.isAnotherRowEditing(t.row),onClick:r[4]||=e=>t.ctx.startEditingRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgEditRow`)),9,fe)):(0,e.createCommentVNode)(``,!0),t.ctx.deletable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,type:`button`,disabled:t.ctx.isAnotherRowEditing(t.row),onClick:r[5]||=e=>t.ctx.deleteRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgDeleteRow`)),9,W)):(0,e.createCommentVNode)(``,!0)],64))])):(0,e.createCommentVNode)(``,!0)],42,z),t.hasMasterDetail&&t.isRowExpanded?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,pe,[(0,e.createElementVNode)(`td`,{colspan:t.ctx.columns.length+t.ctx.extraColumnCount},[(0,e.createVNode)((0,e.unref)(R),{nodes:t.ctx.detailContent(t.row)},null,8,[`nodes`])],8,me)])):(0,e.createCommentVNode)(``,!0)],64))}}),he={key:0,class:`inandu-grid-filter-range`},ge=[`aria-label`,`value`],K=[`aria-label`,`value`],_e={key:1,class:`inandu-grid-filter-range`},ve=[`aria-label`,`value`],q=[`aria-label`,`value`],J=[`aria-label`,`value`],ye={value:``},be=[`aria-label`,`value`],Y=(0,e.defineComponent)({__name:`FilterControl`,props:{column:{},value:{},t:{type:Function}},emits:[`change`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.column.type??`string`),o=(0,e.computed)(()=>r.t(`MsgFilterColumn`,{column:r.column.headerText??r.column.field}));function s(e){return e.target.value}return(n,r)=>a.value===`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,he,[(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterMin`)}`,type:`number`,value:t.value?.min??``,onInput:r[0]||=e=>i(`change`,{min:s(e)})},null,40,ge),(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterMax`)}`,type:`number`,value:t.value?.max??``,onInput:r[1]||=e=>i(`change`,{max:s(e)})},null,40,K)])):a.value===`date`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,_e,[(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterFrom`)}`,type:`date`,value:t.value?.from??``,onInput:r[2]||=e=>i(`change`,{from:s(e)})},null,40,ve),(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterTo`)}`,type:`date`,value:t.value?.to??``,onInput:r[3]||=e=>i(`change`,{to:s(e)})},null,40,q)])):a.value===`boolean`?((0,e.openBlock)(),(0,e.createElementBlock)(`select`,{key:2,"aria-label":o.value,value:t.value?.bool??``,onChange:r[4]||=e=>i(`change`,{bool:s(e)})},[(0,e.createElementVNode)(`option`,ye,(0,e.toDisplayString)(t.t(`MsgAll`)),1),r[6]||=(0,e.createElementVNode)(`option`,{value:`true`},`true`,-1),r[7]||=(0,e.createElementVNode)(`option`,{value:`false`},`false`,-1)],40,J)):((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:3,"aria-label":o.value,type:`text`,value:t.value?.text??``,onInput:r[5]||=e=>i(`change`,{text:s(e)})},null,40,be))}}),X={class:`inandu-grid-vue`},xe={class:`inandu-grid-search`},Se=[`aria-label`,`placeholder`,`value`],Ce={class:`inandu-grid-toolbar`},we={key:3,class:`inandu-grid-column-toggle`},Te=[`aria-label`,`checked`,`onChange`],Ee={key:0,class:`inandu-grid-group-by`},De=[`value`],Oe={value:``},ke=[`value`],Z={key:0},Q={key:1},Ae=[`aria-label`,`checked`,`indeterminate`],je=[`data-field`,`draggable`,`aria-label`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`,`onClick`],Me={key:0,class:`inandu-grid-sort-priority`},Ne=[`onMousedown`,`onDblclick`],Pe={key:3},Fe={class:`inandu-grid-filter-row`},Ie={key:0},Le={key:1},Re={key:3},ze={key:0,class:`inandu-grid-new-row`},Be={key:1,class:`inandu-grid-row-actions`},Ve=[`disabled`],He=[`disabled`],Ue={key:1},We=[`colspan`],Ge=[`aria-level`,`aria-expanded`],Ke=[`aria-label`,`checked`,`onChange`],qe=[`aria-label`,`title`,`onClick`],Je={key:1,class:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`},Ye={key:1,class:`inandu-grid-row-actions`},Xe={class:`inandu-grid-group-row`},Ze=[`colspan`],Qe={key:0,class:`inandu-grid-group-aggregates`},$e={key:0,"aria-hidden":`true`},et=[`colspan`],tt={key:1,"aria-hidden":`true`},nt=[`colspan`],rt={key:0},it={class:`inandu-grid-totals-row`},at={key:0},ot={key:1},st={key:3},ct={key:1,class:`inandu-grid-pagination`},lt=[`disabled`],ut=[`disabled`],dt=(0,e.defineComponent)({name:`InanduGrid`,__name:`InanduGrid`,props:{rows:{},columns:{},locale:{default:`en`},lang:{},pageSize:{default:0},selectable:{type:Boolean},exportable:{type:Boolean},exportFilenameBase:{default:`inandu-grid`},deletable:{type:Boolean},deleteConfirmMessage:{},bulkDeleteConfirmMessage:{},creatable:{type:Boolean},clipboard:{type:Boolean},cellRangeSelection:{type:Boolean},multiRange:{type:Boolean},columnToggle:{type:Boolean},rowReorder:{type:Boolean},treeChildrenKey:{},treeDefaultExpanded:{default:`none`},renderDetail:{},singleDetailExpand:{type:Boolean},extraRowFilter:{},serverSide:{},virtualScroll:{type:Boolean},virtualRowHeight:{default:40},height:{default:400},overscan:{default:4},autosize:{type:Boolean}},emits:[`queryChange`,`selectionChange`,`rowSave`,`rowCreate`,`rowDelete`,`rowsDelete`,`cellsPaste`,`cellRangeChange`,`cellRangesChange`,`rowOrderChange`],setup(t,{expose:n,emit:r}){function i(e,t){return{minRow:Math.min(e.row,t.row),maxRow:Math.max(e.row,t.row),minCol:Math.min(e.col,t.col),maxCol:Math.max(e.col,t.col)}}function a(e,t,n){return t>=e.minRow&&t<=e.maxRow&&n>=e.minCol&&n<=e.maxCol}let s=t,c=r,l=(0,e.useSlots)(),u=T(()=>({rows:s.rows,columns:s.columns,locale:s.locale,lang:s.lang,pageSize:s.pageSize,selectable:s.selectable,deleteConfirmMessage:s.deleteConfirmMessage,bulkDeleteConfirmMessage:s.bulkDeleteConfirmMessage,onRowSave:e=>c(`rowSave`,e),onRowCreate:e=>c(`rowCreate`,e),onRowDelete:e=>c(`rowDelete`,e),onRowsDelete:e=>c(`rowsDelete`,e),onCellsPaste:e=>c(`cellsPaste`,e),onRowOrderChange:e=>c(`rowOrderChange`,e),treeChildrenKey:s.treeChildrenKey,treeDefaultExpanded:s.treeDefaultExpanded,singleDetailExpand:s.singleDetailExpand,extraRowFilter:s.extraRowFilter,virtualScroll:s.virtualScroll,serverSide:s.serverSide,onQueryChange:e=>c(`queryChange`,e)}));n({grid:u});let d=(0,e.computed)(()=>re(s.lang??s.locale)),p=(0,e.shallowRef)(void 0),m=(0,e.shallowRef)(void 0),ee=(0,e.shallowRef)(0),te=(0,e.shallowRef)(null);(0,e.watch)(()=>u.selectedRows,e=>c(`selectionChange`,Array.from(e)),{immediate:!0});let h;function g(e,t){e.preventDefault(),h?.();let n=e.clientX,r=u.effectiveWidth(t),i=e=>u.setColumnWidth(t,r+(e.clientX-n)),a=()=>h?.();window.addEventListener(`mousemove`,i),window.addEventListener(`mouseup`,a),h=()=>{window.removeEventListener(`mousemove`,i),window.removeEventListener(`mouseup`,a),h=void 0}}function ne(e,t){if(!s.autosize||!te.value)return;e.preventDefault(),e.stopPropagation();let n=ae(te.value,t.field,t.headerText??t.field);n>0&&u.setColumnWidth(t.field,Math.min(600,n))}let _=(0,e.computed)(()=>s.cellRangeSelection&&!u.groupByField&&!u.hasVirtualScroll&&!u.hasTreeData),v=(0,e.shallowRef)(void 0),y=(0,e.shallowRef)(void 0),b=(0,e.shallowRef)([]),x=!1,S=(0,e.computed)(()=>v.value&&y.value?i(v.value,y.value):void 0),C=(0,e.computed)(()=>S.value?[...b.value,S.value]:b.value);function w(e,t){return C.value.some(n=>a(n,e,t))}function ie(e){return{rows:u.visibleRows.slice(e.minRow,e.maxRow+1),fields:u.visibleColumns.slice(e.minCol,e.maxCol+1).map(e=>e.field)}}(0,e.watch)([_,C,()=>u.visibleRows,()=>u.visibleColumns],()=>{_.value&&(c(`cellRangeChange`,S.value?ie(S.value):void 0),c(`cellRangesChange`,C.value.map(ie)))},{immediate:!0});function E(e,t,n){e.button===0&&(x=!0,s.multiRange&&(e.ctrlKey||e.metaKey)&&!e.shiftKey?(S.value&&(b.value=[...b.value,S.value]),v.value={row:t,col:n}):(!e.shiftKey||!v.value)&&(b.value=[],v.value={row:t,col:n}),y.value={row:t,col:n})}function D(e,t){x&&(y.value={row:e,col:t})}let O=()=>{x=!1};(0,e.watch)(_,(e,t,n)=>{e&&(document.addEventListener(`mouseup`,O),n(()=>document.removeEventListener(`mouseup`,O)))},{immediate:!0}),(0,e.onBeforeUnmount)(()=>h?.());function A(e){let t=u.visibleRows.slice(e.minRow,e.maxRow+1),n=u.visibleColumns.slice(e.minCol,e.maxCol+1);return t.map(e=>n.map(t=>o(e[t.field],t.type??`string`,t.format??``,s.locale)).join(` `)).join(`
|
|
3
|
-
`)}let P=(0,e.computed)(()=>u.visibleColumns.filter(e=>e.aggregate)),F=(0,e.computed)(()=>s.serverSide?[]:u.visibleColumns.filter(e=>e.groupable!==!1)),I=(0,e.computed)(()=>u.groups?u.groups.length===0:u.visibleRows.length===0),L=(0,e.computed)(()=>u.editableColumns.length>0||s.deletable||s.creatable),z=(0,e.computed)(()=>s.rowReorder&&!u.groupByField&&!u.hasVirtualScroll),B=(0,e.computed)(()=>(!!l.detail||!!s.renderDetail)&&!u.groupByField&&!u.hasVirtualScroll),se=(0,e.computed)(()=>+!!B.value+ +!!z.value+ +!!s.selectable+ +!!L.value),V=(0,e.computed)(()=>u.visibleColumns.length+se.value),H=(0,e.computed)(()=>u.hasVirtualScroll?Math.max(0,Math.floor(ee.value/s.virtualRowHeight)-s.overscan):0),U=(0,e.computed)(()=>u.hasVirtualScroll?Math.min(u.visibleRows.length,Math.ceil((ee.value+s.height)/s.virtualRowHeight)+s.overscan):u.visibleRows.length),ce=(0,e.computed)(()=>u.hasVirtualScroll?u.visibleRows.slice(H.value,U.value):u.visibleRows),le=(0,e.computed)(()=>H.value*s.virtualRowHeight),ue=(0,e.computed)(()=>(u.visibleRows.length-U.value)*s.virtualRowHeight);function de(e){u.hasVirtualScroll&&(ee.value=e.currentTarget.scrollTop)}function fe(e,t){u.setFilterValue(e,{...u.filterValues[e],...t})}function W(e){let t=e.width!==void 0||u.isColumnResized(e.field)?{width:`${u.effectiveWidth(e.field)}px`}:{},n=u.columnPinnedSide(e.field);return n===`left`?{...t,position:`sticky`,left:`${u.stickyOffset(e.field)}px`,zIndex:1}:n===`right`?{...t,position:`sticky`,right:`${u.stickyOffsetRight(e.field)}px`,zIndex:1}:t}function pe(e,t){u.onColumnDragStart(t),e.dataTransfer?.setData(`text/plain`,t)}function me(e,t){e.preventDefault(),p.value=t}function he(e){p.value===e&&(p.value=void 0)}function ge(e,t){e.preventDefault(),p.value=void 0,u.onColumnDrop(t)}let K=(0,e.computed)(()=>s.selectable?{position:`sticky`,left:`0px`,zIndex:1}:void 0);function _e(e,t){let n=e.aggregate,r=t[e.field];if(!n||r===void 0)return``;let i=n===`count`?String(r):o(r,`number`,e.format??``,s.locale);return`${e.headerText??e.field} ${f[n]}: ${i}`}function ve(e){let t={title:e.headerText??e.field,field:e.field},n=l[`header-${e.field}`];return n?n(t):e.renderHeader?e.renderHeader(t):t.title}function q(e,t){let n={value:t[e.field],row:t,field:e.field},r=l[`cell-${e.field}`];return r?r(n):e.renderCell?e.renderCell(n):o(t[e.field],e.type??`string`,e.format??``,s.locale)}function J(e,t){let n=l[`editor-${e.field}`];if(!n&&!e.renderEditor)return;let r={value:u.rowDraft[e.field],row:t,field:e.field,setValue:t=>u.setRowDraftValue(e.field,t),error:u.fieldErrors[e.field]};return n?n(r):e.renderEditor(r)}function ye(e){return l.detail?l.detail({row:e}):s.renderDetail?.(e)}function be(e,t){u.toggleColumnVisibility(t),e.target.checked=!u.isColumnHidden(t)}function dt(e){if(!s.clipboard||!(e.ctrlKey||e.metaKey))return;let t=e.key.toLowerCase();if(t!==`c`&&t!==`v`)return;let n=e.target;if(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)return;let r=n.closest(`td[data-field]`),i=r?.getAttribute(`data-field`),a=r?.closest(`tr`)?.getAttribute(`data-row-index`);if(!r||!i||a==null)return;let o=Number(a);if(e.preventDefault(),t===`c`){let e=S.value,t=_.value&&e&&(e.minRow!==e.maxRow||e.minCol!==e.maxCol)?A(e):void 0;navigator.clipboard?.writeText(t??u.copyCellText(o,i))?.catch(()=>void 0)}else navigator.clipboard?.readText()?.then(e=>u.pasteAt(o,i,e)).catch(()=>void 0)}function $(e,t){return e.id==null?t:String(e.id)}let ft=(0,e.computed)(()=>({columns:u.visibleColumns,t:d.value,selectable:s.selectable,selectColumnStyle:K.value,columnStyle:W,isRowSelected:u.isRowSelected,toggleRowSelection:u.toggleRowSelection,hasRowActions:L.value,editableColumnCount:u.editableColumns.length,isEditingRow:u.isEditingRow,isAnotherRowEditing:u.isAnotherRowEditing,startEditingRow:u.startEditingRow,cancelRowEdit:u.cancelRowEdit,saveRow:e=>void u.saveRow(e),deleteRow:u.deleteRow,deletable:s.deletable,rowDraft:u.rowDraft,fieldErrors:u.fieldErrors,isValidating:u.isValidating,setRowDraftValue:u.setRowDraftValue,cellContent:q,editorContent:J,detailContent:ye,clipboard:s.clipboard,cellRangeSelection:_.value,isCellInRange:w,onCellRangeMouseDown:E,onCellRangeMouseEnter:D,extraColumnCount:se.value}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,X,[(0,e.createElementVNode)(`div`,xe,[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgFilterPlaceholder`),type:`text`,placeholder:`${d.value(`MsgFilterPlaceholder`)}…`,value:(0,e.unref)(u).filterQuery,onInput:r[0]||=t=>(0,e.unref)(u).setFilterQuery(t.target.value)},null,40,Se)]),(0,e.createElementVNode)(`div`,Ce,[t.exportable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[1]||=n=>(0,e.unref)(k)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportCsv`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[2]||=n=>(0,e.unref)(j)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportExcel`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[3]||=n=>void(0,e.unref)(N)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportPdf`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[4]||=n=>(0,e.unref)(M)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgPrint`)),1)],64)):(0,e.createCommentVNode)(``,!0),t.creatable&&(0,e.unref)(u).editableColumns.length>0&&!(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,type:`button`,onClick:r[5]||=t=>(0,e.unref)(u).startAddingRow()},(0,e.toDisplayString)(d.value(`MsgAddRow`)),1)):(0,e.createCommentVNode)(``,!0),t.selectable&&t.deletable&&(0,e.unref)(u).selectedRows.size>0?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:2,type:`button`,onClick:r[6]||=t=>(0,e.unref)(u).deleteSelectedRows()},(0,e.toDisplayString)(d.value(`MsgDeleteSelected`,{count:(0,e.unref)(u).selectedRows.size})),1)):(0,e.createCommentVNode)(``,!0),t.columnToggle?((0,e.openBlock)(),(0,e.createElementBlock)(`details`,we,[(0,e.createElementVNode)(`summary`,null,(0,e.toDisplayString)(d.value(`MsgToggleColumns`)),1),(0,e.createElementVNode)(`ul`,null,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).hideableColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`li`,{key:t.field},[(0,e.createElementVNode)(`label`,null,[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgToggleColumn`,{column:t.headerText??t.field}),type:`checkbox`,checked:!(0,e.unref)(u).isColumnHidden(t.field),onChange:e=>be(e,t.field)},null,40,Te),(0,e.createTextVNode)(` `+(0,e.toDisplayString)(t.headerText??t.field),1)])]))),128))])])):(0,e.createCommentVNode)(``,!0)]),F.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ee,[(0,e.createElementVNode)(`label`,null,[(0,e.createTextVNode)((0,e.toDisplayString)((0,e.unref)(u).groupByField?d.value(`MsgGroupedBy`,{column:F.value.find(t=>t.field===(0,e.unref)(u).groupByField)?.headerText??(0,e.unref)(u).groupByField}):d.value(`MsgGroupByHint`))+` `,1),(0,e.createElementVNode)(`select`,{"aria-label":`Group by`,value:(0,e.unref)(u).groupByField??``,onChange:r[7]||=t=>(0,e.unref)(u).setGroupByField(t.target.value||void 0)},[(0,e.createElementVNode)(`option`,Oe,(0,e.toDisplayString)(d.value(`MsgCancelGrouping`)),1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(F.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`option`,{key:t.field,value:t.field},(0,e.toDisplayString)(t.headerText??t.field),9,ke))),128))],40,De)])])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)((0,e.unref)(u).hasVirtualScroll?`inandu-grid-viewport`:void 0),style:(0,e.normalizeStyle)((0,e.unref)(u).hasVirtualScroll?{height:`${t.height}px`,overflow:`auto`}:void 0),onScroll:de},[(0,e.createElementVNode)(`table`,{ref_key:`tableRef`,ref:te,class:`inandu-grid`,onKeydown:dt},[(0,e.createElementVNode)(`thead`,null,[(0,e.createElementVNode)(`tr`,null,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Z)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Q)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(K.value)},[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectAll`),type:`checkbox`,checked:(0,e.unref)(u).allSelected,indeterminate:(0,e.unref)(u).someSelected,onChange:r[8]||=t=>(0,e.unref)(u).toggleSelectAll()},null,40,Ae)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:t.field,"data-field":t.field,style:(0,e.normalizeStyle)(W(t)),class:(0,e.normalizeClass)(p.value===t.field?`inandu-drag-over`:void 0),draggable:t.reorder!==!1,"aria-label":d.value(`MsgSortBy`,{column:t.headerText??t.field}),onDragstart:e=>pe(e,t.field),onDragover:e=>me(e,t.field),onDragleave:e=>he(t.field),onDrop:e=>ge(e,t.field),onClick:n=>(0,e.unref)(u).toggleSort(t.field,n.shiftKey)},[(0,e.createVNode)((0,e.unref)(R),{nodes:ve(t)},null,8,[`nodes`]),(0,e.createTextVNode)((0,e.toDisplayString)((0,e.unref)(u).sortDirectionFor(t.field)?(0,e.unref)(u).sortDirectionFor(t.field)===`asc`?` ▲`:` ▼`:``),1),(0,e.unref)(u).sortPriorityFor(t.field)===void 0?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`sup`,Me,(0,e.toDisplayString)((0,e.unref)(u).sortPriorityFor(t.field)),1)),(0,e.createElementVNode)(`span`,{class:`inandu-grid-resize-handle`,draggable:`false`,onMousedown:e=>g(e,t.field),onDblclick:e=>ne(e,t),onClick:r[9]||=(0,e.withModifiers)(()=>{},[`stop`])},null,40,Ne)],46,je))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Pe)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`tr`,Fe,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Ie)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Le)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[(0,e.createVNode)(Y,{column:t,value:(0,e.unref)(u).filterValues[t.field],t:d.value,onChange:e=>fe(t.field,e)},null,8,[`column`,`value`,`t`,`onChange`])],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Re)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`tbody`,null,[(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,ze,[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[t.editable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[J(t,{})===void 0?((0,e.openBlock)(),(0,e.createBlock)(oe,{key:1,column:t,value:(0,e.unref)(u).rowDraft[t.field],error:(0,e.unref)(u).fieldErrors[t.field],t:d.value,onChange:n=>(0,e.unref)(u).setRowDraftValue(t.field,n)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:0,nodes:J(t,{})},null,8,[`nodes`]))],64)):(0,e.createCommentVNode)(``,!0)],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Be,[(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).isValidating,onClick:r[10]||=t=>void(0,e.unref)(u).saveNewRow()},(0,e.toDisplayString)(d.value(`MsgSaveRow`)),9,Ve),(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).isValidating,onClick:r[11]||=t=>(0,e.unref)(u).cancelAddRow()},(0,e.toDisplayString)(d.value(`MsgCancelRowEdit`)),9,He)])):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),I.value?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,Ue,[(0,e.createElementVNode)(`td`,{colspan:V.value},(0,e.toDisplayString)(d.value(`MsgNoData`)),9,We)])):(0,e.unref)(u).hasTreeData?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:2},(0,e.renderList)((0,e.unref)(u).treeRows,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,{key:$(n.row,r),"aria-level":n.depth+1,"aria-expanded":n.expandable?(0,e.unref)(u).isTreeRowExpanded(n.row):void 0},[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(K.value)},[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectRow`,{index:r+1}),type:`checkbox`,checked:(0,e.unref)(u).isRowSelected(n.row),onChange:t=>(0,e.unref)(u).toggleRowSelection(n.row)},null,40,Ke)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[r===0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,class:`inandu-grid-tree-cell`,style:(0,e.normalizeStyle)({paddingInlineStart:`${n.depth*16}px`})},[n.expandable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,class:`inandu-grid-tree-toggle`,"aria-label":(0,e.unref)(u).isTreeRowExpanded(n.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),title:(0,e.unref)(u).isTreeRowExpanded(n.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),onClick:t=>(0,e.unref)(u).toggleTreeRow(n.row)},(0,e.toDisplayString)((0,e.unref)(u).isTreeRowExpanded(n.row)?`▾`:`▸`),9,qe)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Je)),(0,e.createVNode)((0,e.unref)(R),{nodes:q(t,n.row)},null,8,[`nodes`])],4)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:1,nodes:q(t,n.row)},null,8,[`nodes`]))],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Ye)):(0,e.createCommentVNode)(``,!0)],8,Ge))),128)):(0,e.unref)(u).groups?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:3},(0,e.renderList)((0,e.unref)(u).groups,t=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:t.key},[(0,e.createElementVNode)(`tr`,Xe,[(0,e.createElementVNode)(`td`,{colspan:V.value},[(0,e.createElementVNode)(`strong`,null,(0,e.toDisplayString)(t.key),1),(0,e.createTextVNode)(` (`+(0,e.toDisplayString)(t.rows.length)+`) `,1),P.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Qe,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(P.value,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:n.field},` · `+(0,e.toDisplayString)(_e(n,t.aggregates)),1))),128))])):(0,e.createCommentVNode)(``,!0)],8,Ze)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.rows,(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(G,{key:$(n,`${t.key}:${r}`),ctx:ft.value,row:n,"row-index":r},null,8,[`ctx`,`row`,`row-index`]))),128))],64))),128)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:4},[(0,e.unref)(u).hasVirtualScroll&&le.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,$e,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${le.value}px`,padding:0,border:`none`}),colspan:V.value},null,12,et)])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(ce.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(G,{key:$(t,H.value+n),ctx:ft.value,row:t,"row-index":H.value+n,"has-row-drag-handle":z.value,"is-drag-over-row":(0,e.unref)(u).draggingRow!==void 0&&m.value===t,"has-master-detail":B.value,"is-row-expanded":(0,e.unref)(u).isRowExpanded(t),onRowDragStart:n=>(0,e.unref)(u).onRowDragStart(t),onRowDragOver:e=>m.value=t,onRowDragLeave:e=>m.value===t&&(m.value=void 0),onRowDrop:n=>(0,e.unref)(u).onRowDrop(t),onToggleExpanded:n=>(0,e.unref)(u).toggleRowExpanded(t)},null,8,[`ctx`,`row`,`row-index`,`has-row-drag-handle`,`is-drag-over-row`,`has-master-detail`,`is-row-expanded`,`onRowDragStart`,`onRowDragOver`,`onRowDragLeave`,`onRowDrop`,`onToggleExpanded`]))),128)),(0,e.unref)(u).hasVirtualScroll&&ue.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,tt,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${ue.value}px`,padding:0,border:`none`}),colspan:V.value},null,12,nt)])):(0,e.createCommentVNode)(``,!0)],64))]),P.value.length>0&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`tfoot`,rt,[(0,e.createElementVNode)(`tr`,it,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,at)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,ot)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},(0,e.toDisplayString)(t.aggregate?_e(t,(0,e.unref)(u).totals):``),5))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,st)):(0,e.createCommentVNode)(``,!0)])])):(0,e.createCommentVNode)(``,!0)],544)],38),t.pageSize>0&&!(0,e.unref)(u).groupByField&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ct,[(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).page===0,onClick:r[12]||=t=>(0,e.unref)(u).setPage((0,e.unref)(u).page-1)},`‹ `+(0,e.toDisplayString)(d.value(`MsgPreviousPage`)),9,lt),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(d.value(`MsgPageOf`,{page:(0,e.unref)(u).page+1,total:(0,e.unref)(u).pageCount}))+` (`+(0,e.toDisplayString)((0,e.unref)(u).filteredRowCount)+`)`,1),(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).page>=(0,e.unref)(u).pageCount-1,onClick:r[13]||=t=>(0,e.unref)(u).setPage((0,e.unref)(u).page+1)},(0,e.toDisplayString)(d.value(`MsgNextPage`))+` ›`,9,ut)])):(0,e.createCommentVNode)(``,!0)]))}});function $(e,t={}){let n=new URLSearchParams;n.set(`page`,String(e.page+1)),e.pageSize>0&&n.set(`pageSize`,String(e.pageSize)),e.sortCriteria.length>0&&n.set(`sort`,e.sortCriteria.map(e=>(e.direction===`desc`?`-`:``)+e.field).join(`,`));let r=e.filterQuery.trim();r&&n.set(`q`,r);for(let[t,r]of Object.entries(e.filterValues))u(r)&&(r.values&&r.values.length>0?n.set(`${t}_in`,r.values.join(`,`)):(r.text&&n.set(`${t}_contains`,r.text),r.min&&n.set(`${t}_gte`,r.min),r.max&&n.set(`${t}_lte`,r.max),r.from&&n.set(`${t}_gte`,r.from),r.to&&n.set(`${t}_lte`,r.to),(r.bool===`true`||r.bool===`false`)&&n.set(`${t}_eq`,r.bool)));for(let[e,r]of Object.entries(t.extraParams??{}))n.set(e,r);return n}function ft(t){let n=(0,e.shallowRef)(void 0),r=(0,e.shallowRef)([]),i=(0,e.shallowRef)(0),a=(0,e.shallowRef)(!1),o=(0,e.shallowRef)(void 0),s=(0,e.shallowRef)(0),c=!1,l;function u(e){l?.();let n=new AbortController,s=async()=>{u(!0),o.value=void 0;try{let a=$(e,{extraParams:t.extraParams}).toString(),o=t.url+(t.url.includes(`?`)?`&`:`?`)+a,s={...t.init,signal:n.signal},c=await(t.fetcher??fetch)(o,s);if(!c.ok)throw Error(`Request failed: ${c.status} ${c.statusText}`);let l=await c.json();if(n.signal.aborted)return;r.value=l.data??[],i.value=l.total??0}catch(e){if(n.signal.aborted)return;o.value=e instanceof Error?e:Error(String(e))}finally{n.signal.aborted||u(!1)}};function u(e){a.value=e}let d=c?t.debounceMs??200:0;c=!0;let f=setTimeout(s,d);l=()=>{clearTimeout(f),n.abort()}}return(0,e.watch)([n,s],()=>{n.value&&u(n.value)}),(0,e.onScopeDispose)(()=>l?.(),!0),{rows:r,total:i,loading:a,error:o,setQuery:e=>{n.value=e},reload:()=>{s.value+=1}}}exports.AGGREGATE_SYMBOLS=f,exports.INANDU_GRID_TRANSLATIONS=C,exports.InanduGrid=dt,exports.buildCsv=O,exports.buildExcelXml=A,exports.buildInanduGridQuery=$,exports.compareCellValues=s,exports.computeGroupAggregates=p,exports.createTranslator=re,exports.en=v,exports.es=y,exports.exportCsv=k,exports.exportExcel=j,exports.exportPdf=N,exports.formatCellValue=o,exports.fr=b,exports.interpolate=w,exports.it=x,exports.matchesColumnFilter=d,exports.measureColumnContentWidth=ae,exports.printTable=M,exports.useInanduGrid=T,exports.useInanduGridServer=ft,exports.zh=S;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},a=(i,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(var c=n(a),l=0,u=c.length,d;l<u;l++)d=c[l],!r.call(i,d)&&d!==o&&e(i,d,{get:(e=>a[e]).bind(null,d),enumerable:!(s=t(a,d))||s.enumerable});return i},o=(e,t,n)=>(a(e,t,`default`),n&&a(n,t,`default`));let s=require("vue");var c=i({});o(c,require("@inandu-solutions/grid-core"));var l=new WeakMap,u=0;function d(e){if(typeof e==`function`)return t=>e(t)??t;let t=e??`id`;return e=>e[t]??e}function f(e){if(typeof e==`object`&&e){let t=l.get(e);return t===void 0&&(t=++u,l.set(e,t)),`o${t}`}return`${typeof e}:${String(e)}`}function p(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?String(t[n]):e):e}function ee(e){let t=e.split(`-`)[0],n=c.INANDU_GRID_TRANSLATIONS[t]??c.en;return(e,t)=>p(n[e]??c.en[e],t)}function te(e){return{field:()=>e.field,type:()=>e.type??`string`,format:()=>e.format??``,order:()=>e.order,aggregate:()=>e.aggregate??``}}function ne(e){let t=t=>(0,s.computed)(()=>(0,s.toValue)(e)[t]),n=t(`rows`),r=t(`columns`),i=(0,s.computed)(()=>(0,s.toValue)(e).locale??`en`),a=t(`lang`),o=(0,s.computed)(()=>(0,s.toValue)(e).pageSize??0),l=(0,s.computed)(()=>(0,s.toValue)(e).selectable??!1),u=t(`treeChildrenKey`),p=(0,s.computed)(()=>(0,s.toValue)(e).treeDefaultExpanded??`none`),ne=(0,s.computed)(()=>(0,s.toValue)(e).virtualScroll??!1),m=t(`extraRowFilter`),h=t(`rowId`),g=(0,s.computed)(()=>d(h.value)),re=t(`serverSide`),_=(0,s.computed)(()=>!!re.value),v=()=>(0,s.toValue)(e),y=(0,s.shallowRef)([]),b=(0,s.shallowRef)({}),x=(0,s.shallowRef)(``),S=(0,s.shallowRef)(0),C=(0,s.shallowRef)(void 0),w=(0,s.computed)(()=>_.value?void 0:C.value),T=(0,s.shallowRef)(new Map),ie=(0,s.computed)(()=>new Set(T.value.values())),E=(0,s.shallowRef)(void 0),D=(0,s.shallowRef)(!1),O=(0,s.shallowRef)({}),k=(0,s.shallowRef)({}),A=(0,s.shallowRef)(!1),j=(0,s.shallowRef)(new Set),ae=(0,s.shallowRef)(void 0),M=(0,s.shallowRef)(void 0),N=(0,s.shallowRef)({}),P=(0,s.shallowRef)({}),F=(0,s.shallowRef)(void 0),I=(0,s.shallowRef)(new Set),L=(0,s.shallowRef)(new Set),oe=new Set,se=(0,s.computed)(()=>ee(a.value??i.value)),R=(0,s.computed)(()=>{let e=ae.value;if(!e)return r.value;let t=new Map(r.value.map(e=>[e.field,e])),n=[];for(let r of e){let e=t.get(r);e&&(n.push(e),t.delete(r))}return n.push(...t.values()),n}),z=(0,s.computed)(()=>j.value.size===0?R.value:R.value.filter(e=>!j.value.has(e.field))),B=(0,s.computed)(()=>R.value.filter(e=>e.hideable!==!1));function V(e){let t=R.value.map(e=>e.field),n=new Set(t),r=e.filter(e=>n.has(e)),i=new Set(r),a=t.filter(e=>!i.has(e));ae.value=[...r,...a]}function ce(e){M.value=e}function H(e){let t=M.value;if(M.value=void 0,!t||t===e)return;let n=R.value.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=R.value.map(e=>e.field),i=r.indexOf(t),a=r.indexOf(e);i!==-1&&a!==-1&&(r.splice(i,1),i<a&&a--,r.splice(a,0,t),V(r))}function U(e){return j.value.has(e)}function le(e){if(j.value.has(e)){let t=new Set(j.value);t.delete(e),j.value=t}else z.value.length<=1||(j.value=new Set(j.value).add(e))}let W=(0,s.computed)(()=>z.value.filter(e=>e.editable));function ue(e){S.value=0,x.value=e}let G=(0,s.computed)(()=>new Map(z.value.map(e=>[e.field,te(e)]))),de=(0,s.computed)(()=>z.value.filter(e=>e.aggregate).map(e=>G.value.get(e.field)));function fe(e,t){S.value=0,b.value={...b.value,[e]:t}}function pe(){S.value=0,b.value={}}function me(e,t){return z.value.some(n=>{let r=G.value.get(n.field);return(0,c.formatCellValue)(e[n.field],r.type(),r.format(),i.value).toLowerCase().includes(t)})}function he(e,t){return t.every(([t,n])=>{let r=G.value.get(t);return!r||(0,c.matchesColumnFilter)(r,e,n,i.value)})}function ge(e,t){for(let{field:n,direction:r}of y.value){let a=(0,c.compareCellValues)(e[n],t[n],i.value)*(r===`asc`?1:-1);if(a!==0)return a}return 0}let K=(0,s.computed)(()=>{let e=n.value;if(_.value)return e;let t=x.value.trim().toLowerCase();t&&(e=e.filter(e=>me(e,t)));let r=Object.entries(b.value).filter(([,e])=>(0,c.hasMeaningfulFilterValue)(e));r.length>0&&(e=e.filter(e=>he(e,r)));let i=m.value;return i&&(e=e.filter(i)),y.value.length>0&&(e=[...e].sort(ge)),e}),_e=(0,s.computed)(()=>{let e=w.value;if(!e)return null;let t=G.value.get(e);if(!t)return null;let n=new Map;for(let r of K.value){let a=(0,c.formatCellValue)(r[e],t.type(),t.format(),i.value),o=n.get(a);o?o.push(r):n.set(a,[r])}return Array.from(n.entries()).map(([e,t])=>({key:e,rows:t,aggregates:(0,c.computeGroupAggregates)(t,de.value)}))}),ve=(0,s.computed)(()=>(0,c.computeGroupAggregates)(K.value,de.value)),q=(0,s.computed)(()=>!!u.value&&!w.value&&!ne.value&&!_.value);function J(e){let t=u.value,n=t?e[t]:void 0;return Array.isArray(n)?n:void 0}let ye=(0,s.computed)(()=>{if(!q.value)return[];let e=x.value.trim().toLowerCase(),t=Object.entries(b.value).filter(([,e])=>(0,c.hasMeaningfulFilterValue)(e)),r=m.value,i=e||t.length>0||r?n=>e&&!me(n,e)||!he(n,t)?!1:!r||r(n):void 0,a=y.value.length>0?ge:void 0,o=I.value,s=g.value;return(0,c.flattenTree)(n.value,{getChildren:J,isExpanded:e=>o.has(s(e)),match:i,compare:a})});(0,s.watch)([q,n,p,g],()=>{if(!q.value)return;let e=g.value,t=p.value,r=new Set;if(t===`all`)for(let t of(0,c.collectTreeRows)(n.value,J))J(t)?.length&&r.add(e(t));else if(t!==`none`){let i=(n,a)=>{if(!(a>=t))for(let t of n){let n=J(t);n?.length&&(r.add(e(t)),i(n,a+1))}};i(n.value,0)}let i=[];for(let t of(0,c.collectTreeRows)(n.value,J)){let n=e(t);oe.has(n)||(oe.add(n),r.has(n)&&i.push(n))}if(i.length>0){let e=new Set(I.value);for(let t of i)e.add(t);I.value=e}},{immediate:!0,flush:`sync`});function be(e){return I.value.has(g.value(e))}function xe(e){let t=g.value(e),n=new Set(I.value);n.has(t)?n.delete(t):n.add(t),I.value=n}function Se(e){if(!e){I.value=new Set;return}let t=new Set;for(let e of(0,c.collectTreeRows)(n.value,J))J(e)?.length&&t.add(g.value(e));I.value=t}let Ce=(0,s.computed)(()=>ne.value&&!w.value&&!_.value),we=(0,s.computed)(()=>o.value>0&&!w.value&&!q.value&&!Ce.value),Te=(0,s.computed)(()=>re.value?re.value.totalItems:K.value.length),Ee=(0,s.computed)(()=>we.value?Math.max(1,Math.ceil(Te.value/o.value)):1),Y=(0,s.computed)(()=>_.value?S.value:Math.min(S.value,Ee.value-1)),De=(0,s.computed)(()=>{if(q.value)return ye.value.map(e=>e.row);if(!we.value||_.value)return K.value;let e=Y.value*o.value;return K.value.slice(e,e+o.value)});(0,s.watch)([_,Y,o,y,b,x],()=>{_.value&&v().onQueryChange?.({page:Y.value,pageSize:o.value,sortCriteria:y.value,filterValues:b.value,filterQuery:x.value})},{immediate:!0});let X=(0,s.computed)(()=>w.value?K.value:De.value);function Oe(e){return f(g.value(e))}function ke(e){return T.value.has(g.value(e))}function Ae(e){let t=g.value(e),n=new Map(T.value);n.has(t)?n.delete(t):n.set(t,e),T.value=n}let je=(0,s.computed)(()=>X.value.length>0&&X.value.every(e=>T.value.has(g.value(e)))),Me=(0,s.computed)(()=>!je.value&&X.value.some(e=>T.value.has(g.value(e))));function Ne(){let e=!je.value,t=g.value,n=new Map(T.value);for(let r of X.value)e?n.set(t(r),r):n.delete(t(r));T.value=n}function Pe(){T.value=new Map}(0,s.watch)([n,q,g],()=>{let e=T.value;if(e.size===0)return;let t=g.value,r,i=q.value?(0,c.collectTreeRows)(n.value,J):n.value;for(let n of i??[]){let i=t(n);e.has(i)&&e.get(i)!==n&&(r??=new Map(e),r.set(i,n))}r&&(T.value=r)},{flush:`sync`});function Fe(e,t=!1){S.value=0;let n=y.value,r=n.findIndex(t=>t.field===e);if(t){if(r===-1){y.value=[...n,{field:e,direction:`asc`}];return}let t=[...n];t[r]={field:e,direction:n[r].direction===`asc`?`desc`:`asc`},y.value=t}else n.length===1&&n[0].field===e?y.value=[{field:e,direction:n[0].direction===`asc`?`desc`:`asc`}]:y.value=[{field:e,direction:`asc`}]}function Ie(e){y.value=e}function Le(e){return y.value.find(t=>t.field===e)?.direction}function Re(e){if(y.value.length<2)return;let t=y.value.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function ze(e){return E.value===e}function Be(e){return D.value?!0:E.value!==void 0&&E.value!==e}function Ve(e,t){let n=t.type??`string`;if(n===`boolean`)return!!e[t.field];if(n===`date`){let n=(0,c.coerceToDate)(e[t.field]);if(Number.isNaN(n.getTime()))return``;let r=e=>String(e).padStart(2,`0`);return`${n.getFullYear()}-${r(n.getMonth()+1)}-${r(n.getDate())}`}let r=e[t.field];return r==null?``:String(r)}function He(e){let t={};for(let n of W.value)t[n.field]=Ve(e,n);E.value=e,O.value=t,k.value={}}function Ue(){E.value=void 0,O.value={},k.value={}}function We(e,t){O.value={...O.value,[e]:t}}function Ge(e,t,n,r){let i=se.value;if(e.required&&(t===``||t==null))return i(`MsgValidationRequired`);if((e.type??`string`)===`number`&&typeof n==`number`){if(e.min!==void 0&&n<e.min)return i(`MsgValidationMin`,{min:e.min});if(e.max!==void 0&&n>e.max)return i(`MsgValidationMax`,{max:e.max})}if(e.pattern&&typeof t==`string`&&t!==``){let n;try{n=new RegExp(e.pattern)}catch{n=void 0}if(n&&!n.test(t))return i(`MsgValidationPattern`)}return e.validator?e.validator(n,r):null}function Ke(e,t,n={}){return Ge(e,t,t,n)}async function qe(e){let t=W.value,n={};for(let r of t)n[r.field]=(0,c.parseDraftValue)(e[r.field],r.type??`string`);let r={},i={},a=[];for(let o of t){let t=o.field,s=Ge(o,e[t],n[t],n);s?r[t]=s:o.asyncValidator?a.push(o.asyncValidator(n[t],n).then(e=>{e?r[t]=e:n[t]!==void 0&&(i[t]=n[t])})):n[t]!==void 0&&(i[t]=n[t])}if(a.length>0){A.value=!0;try{await Promise.all(a)}finally{A.value=!1}}return{errors:r,values:i}}async function Je(e){if(E.value!==e)return;let{errors:t,values:n}=await qe(O.value);E.value===e&&(Object.keys(t).length>0?k.value=t:(E.value=void 0,O.value={},k.value={},v().onRowSave?.({row:e,values:n})))}function Ye(e){let t=v().deleteConfirmMessage;(!t||window.confirm(t))&&v().onRowDelete?.(e)}function Xe(){let e=v().bulkDeleteConfirmMessage;if(e&&!window.confirm(e))return;let t=Array.from(ie.value);Pe(),v().onRowsDelete?.(t)}function Ze(){D.value=!0,O.value={},k.value={}}function Qe(){D.value=!1,O.value={},k.value={}}async function $e(){if(!D.value)return;let{errors:e,values:t}=await qe(O.value);D.value&&(Object.keys(e).length>0?k.value=e:(D.value=!1,O.value={},k.value={},v().onRowCreate?.(t)))}function et(e,t){let n=De.value[e],r=G.value.get(t);return!n||!r?``:(0,c.formatCellValue)(n[t],r.type(),r.format(),i.value)}function tt(e,t,n){let r=z.value,i=De.value,a=r.findIndex(e=>e.field===t);if(e===-1||a===-1)return;let o=[];n.replace(/\r\n$|\r$|\n$/,``).split(/\r\n|\r|\n/).map(e=>e.split(` `)).forEach((t,n)=>{let s=i[e+n];s&&t.forEach((e,t)=>{let n=r[a+t];n&&n.editable&&o.push({row:s,field:n.field,value:(0,c.parsePastedCellValue)(e,n.type??`string`)})})}),o.length>0&&v().onCellsPaste?.(o)}function Z(e){let t=N.value[e];return t===void 0?R.value.find(t=>t.field===e)?.width??80:t}function nt(e){return N.value[e]!==void 0}function Q(e,t){R.value.some(t=>t.field===e)&&(N.value={...N.value,[e]:Math.max(c.MIN_COLUMN_WIDTH,t)})}function rt(e){F.value=e}function it(e){return L.value.has(g.value(e))}function at(e){let t=g.value(e),n=L.value,r=v().singleDetailExpand?new Set:new Set(n);n.has(t)?r.delete(t):r.add(t),L.value=r}function ot(e){let t=F.value;if(F.value=void 0,!t||t===e)return;let n=[...K.value],r=n.indexOf(t),i=n.indexOf(e);r!==-1&&i!==-1&&(n.splice(r,1),r<i&&i--,n.splice(i,0,t),v().onRowOrderChange?.(n))}function $(e){let t=P.value[e];if(t===`left`||t===`right`)return t;if(t!==`none`)return R.value.find(t=>t.field===e)?.pinned}function st(e,t){P.value={...P.value,[e]:t??`none`}}function ct(e){let t=l.value?c.SELECT_COLUMN_WIDTH:0;for(let n of z.value){if(n.field===e)break;$(n.field)===`left`&&(t+=Z(n.field))}return t}function lt(e){let t=0,n=!1;for(let r of z.value)r.field===e?n=!0:n&&$(r.field)===`right`&&(t+=Z(r.field));return t}function ut(e){S.value=e}function dt(e){C.value=e}return{get visibleColumns(){return z.value},get allColumns(){return R.value},stickyOffset:ct,stickyOffsetRight:lt,columnPinnedSide:$,setColumnPinned:st,get hideableColumns(){return B.value},isColumnHidden:U,toggleColumnVisibility:le,setColumnOrder:V,get draggingField(){return M.value},onColumnDragStart:ce,onColumnDrop:H,effectiveWidth:Z,isColumnResized:nt,setColumnWidth:Q,get draggingRow(){return F.value},onRowDragStart:rt,onRowDrop:ot,get hasTreeData(){return q.value},get treeRows(){return ye.value},isTreeRowExpanded:be,toggleTreeRow:xe,setAllTreeRowsExpanded:Se,isRowExpanded:it,toggleRowExpanded:at,get hasVirtualScroll(){return Ce.value},get visibleRows(){return De.value},get exportRows(){return X.value},get sortedRows(){return K.value},get filteredRowCount(){return Te.value},get locale(){return i.value},get sortCriteria(){return y.value},setSort:Ie,toggleSort:Fe,sortDirectionFor:Le,sortPriorityFor:Re,get filterValues(){return b.value},setFilterValue:fe,clearAllFilters:pe,get filterQuery(){return x.value},setFilterQuery:ue,get page(){return Y.value},setPage:ut,get pageCount(){return we.value?Ee.value:1},get groupByField(){return w.value},setGroupByField:dt,get groups(){return _e.value},get totals(){return ve.value},get selectedRows(){return ie.value},isRowSelected:ke,rowKeyOf:Oe,toggleRowSelection:Ae,get allSelected(){return je.value},get someSelected(){return Me.value},toggleSelectAll:Ne,clearSelection:Pe,get editableColumns(){return W.value},get editingRow(){return E.value},get isAddingRow(){return D.value},get rowDraft(){return O.value},get fieldErrors(){return k.value},get isValidating(){return A.value},isEditingRow:ze,isAnotherRowEditing:Be,startEditingRow:He,cancelRowEdit:Ue,setRowDraftValue:We,saveRow:Je,deleteRow:Ye,deleteSelectedRows:Xe,startAddingRow:Ze,cancelAddRow:Qe,saveNewRow:$e,validateCell:Ke,copyCellText:et,pasteAt:tt}}function m(e){return e.headerText||e.field}function h(e,t,n){return(0,c.formatCellValue)(t[e.field],e.type??`string`,e.format??``,n)}function g(e,t,n){return``+[t.map(e=>(0,c.escapeCsvValue)(m(e))).join(`,`),...e.map(e=>t.map(t=>(0,c.escapeCsvValue)(h(t,e,n))).join(`,`))].join(`\r
|
|
2
|
+
`)}function re(e,t,n,r=`inandu-grid`){(0,c.downloadBlob)(g(e,t,n),`${r}-export.csv`,`text/csv;charset=utf-8;`)}function _(e,t,n){let r=(e,t)=>{let n=t[e.field];return e.type===`number`&&typeof n==`number`&&Number.isFinite(n)?n:void 0},i=(e,t)=>{let i=r(e,t);return i===void 0?`<Cell><Data ss:Type="String">${(0,c.escapeMarkup)(h(e,t,n))}</Data></Cell>`:`<Cell><Data ss:Type="Number">${i}</Data></Cell>`},a=`<Row ss:StyleID="header">${t.map(e=>`<Cell><Data ss:Type="String">${(0,c.escapeMarkup)(m(e))}</Data></Cell>`).join(``)}</Row>`,o=e.map(e=>`<Row>${t.map(t=>i(t,e)).join(``)}</Row>`).join(``);return`<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"><Styles><Style ss:ID="header"><Font ss:Bold="1"/></Style></Styles><Worksheet ss:Name="Sheet1"><Table>`+a+o+`</Table></Worksheet></Workbook>`}function v(e,t,n,r=`inandu-grid`){(0,c.downloadBlob)(_(e,t,n),`${r}-export.xls`,`application/vnd.ms-excel`)}function y(e,t,n,r=`inandu-grid`){let i=t.map(e=>`<th>${(0,c.escapeMarkup)(m(e))}</th>`).join(``),a=e.map(e=>`<tr>${t.map(t=>`<td>${(0,c.escapeMarkup)(h(t,e,n))}</td>`).join(``)}</tr>`).join(``),o=`<!doctype html><html><head><meta charset="utf-8"><title>${(0,c.escapeMarkup)(r)}</title><style>table{border-collapse:collapse;width:100%}th,td{border:1px solid #333;padding:4px 8px;text-align:left}th{background:#eee}</style></head><body><table><thead><tr>${i}</tr></thead><tbody>${a}</tbody></table></body></html>`,s=window.open(``,`_blank`);s&&(s.document.write(o),s.document.close(),s.focus(),setTimeout(()=>s.print(),0))}async function b(e,t,n,r=`inandu-grid`){let{jsPDF:i}=await import(`jspdf`),a=t.map(m),o=new i({orientation:`landscape`}),s=o.internal.pageSize.getWidth()-20,l=o.internal.pageSize.getHeight()-10,u=s/(t.length||1),d=10,f=(e,t)=>{o.setFont(`helvetica`,t?`bold`:`normal`);let n=10;e.forEach(e=>{o.text((0,c.truncatePdfText)(o,e,u-4),n+2,d+6),n+=u}),d+=8};f(a,!0);for(let r of e)d+8>l&&(o.addPage(),d=10,f(a,!0)),f(t.map(e=>h(e,r,n)),!1);(0,c.downloadBlob)(o.output(`blob`),`${r}-export.pdf`)}function x(e,t,n){let r=typeof CSS<`u`&&CSS.escape?CSS.escape(t):(0,c.escapeAttributeSelectorValue)(t),i=Array.from(e.querySelectorAll(`td[data-field="${r}"]`)),a=e.querySelector(`th[data-field="${r}"]`),o=i[0]??a??e,s=getComputedStyle(o),l=document.createElement(`span`);l.style.cssText=`position:absolute;left:-9999px;top:-9999px;visibility:hidden;white-space:pre;pointer-events:none`,l.style.font=s.font||`${s.fontStyle} ${s.fontWeight} ${s.fontSize}/${s.lineHeight} ${s.fontFamily}`,l.style.letterSpacing=s.letterSpacing,document.body.appendChild(l);let u=(parseFloat(s.paddingLeft)||0)+(parseFloat(s.paddingRight)||0)+2,d=0;l.textContent=n||t,d=Math.max(d,l.offsetWidth+44);for(let e of i)l.textContent=(e.textContent??``).replace(/\s+/g,` `).trim(),d=Math.max(d,l.offsetWidth+u);return l.remove(),i.length||a?Math.ceil(d):0}var S={class:`inandu-grid-edit-cell`},C=[`aria-label`,`checked`],w=[`aria-label`,`type`,`value`],T={key:2,class:`inandu-grid-field-error`},ie=(0,s.defineComponent)({__name:`EditCell`,props:{column:{},value:{},error:{},t:{type:Function}},emits:[`change`],setup(e,{emit:t}){let n=e,r=t,i=(0,s.computed)(()=>n.column.type??`string`),a=(0,s.computed)(()=>n.t(`MsgEditCell`,{column:n.column.headerText??n.column.field})),o=(0,s.computed)(()=>typeof n.value==`string`?n.value:``);return(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`span`,S,[i.value===`boolean`?((0,s.openBlock)(),(0,s.createElementBlock)(`input`,{key:0,"aria-label":a.value,type:`checkbox`,checked:!!e.value,onChange:n[0]||=e=>r(`change`,e.target.checked)},null,40,C)):((0,s.openBlock)(),(0,s.createElementBlock)(`input`,{key:1,"aria-label":a.value,type:i.value===`date`?`date`:i.value===`number`?`number`:`text`,value:o.value,onInput:n[1]||=e=>r(`change`,e.target.value)},null,40,w)),e.error?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,T,(0,s.toDisplayString)(e.error),1)):(0,s.createCommentVNode)(``,!0)]))}}),E=(0,s.defineComponent)({name:`InanduGridRenderNodes`,props:{nodes:{type:null,default:null}},setup(e){return()=>e.nodes}}),D=[`data-row-index`,`aria-selected`],O={key:0},k=[`aria-label`,`title`],A={key:1},j=[`aria-label`],ae=[`aria-label`,`checked`],M=[`data-field`,`tabindex`,`onMousedown`,`onMouseenter`],N={key:3,class:`inandu-grid-row-actions`},P=[`disabled`],F=[`disabled`],I=[`disabled`],L=[`disabled`],oe={key:0,class:`inandu-grid-detail-row`},se=[`colspan`],R=(0,s.defineComponent)({__name:`DataRow`,props:{ctx:{},row:{},rowIndex:{},hasRowDragHandle:{type:Boolean,default:!1},isDragOverRow:{type:Boolean,default:!1},hasMasterDetail:{type:Boolean,default:!1},isRowExpanded:{type:Boolean,default:!1}},emits:[`rowDragStart`,`rowDragOver`,`rowDragLeave`,`rowDrop`,`toggleExpanded`],setup(e,{emit:t}){let n=e,r=t,i=(0,s.computed)(()=>n.ctx.isEditingRow(n.row)),a=(0,s.computed)(()=>n.isRowExpanded?n.ctx.t(`MsgCollapseDetail`):n.ctx.t(`MsgExpandDetail`));function o(e){n.hasRowDragHandle&&(e.preventDefault(),r(`rowDragOver`))}function c(e){n.hasRowDragHandle&&(e.preventDefault(),r(`rowDrop`))}function l(e){r(`rowDragStart`),e.dataTransfer?.setData(`text/plain`,`row`)}function u(e,t){n.ctx.cellRangeSelection&&n.ctx.onCellRangeMouseDown(e,n.rowIndex,t)}function d(e){n.ctx.cellRangeSelection&&n.ctx.onCellRangeMouseEnter(n.rowIndex,e)}return(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,null,[(0,s.createElementVNode)(`tr`,{"data-row-index":e.rowIndex,"aria-selected":e.ctx.selectable?e.ctx.isRowSelected(e.row):void 0,class:(0,s.normalizeClass)(e.isDragOverRow?`inandu-drag-over`:void 0),onDragover:o,onDragleave:n[6]||=t=>e.hasRowDragHandle&&r(`rowDragLeave`),onDrop:c},[e.hasMasterDetail?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,O,[(0,s.createElementVNode)(`button`,{type:`button`,class:`inandu-grid-detail-toggle`,"aria-label":a.value,title:a.value,onClick:n[0]||=e=>r(`toggleExpanded`)},(0,s.toDisplayString)(e.isRowExpanded?`▾`:`▸`),9,k)])):(0,s.createCommentVNode)(``,!0),e.hasRowDragHandle?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,A,[(0,s.createElementVNode)(`span`,{class:`inandu-grid-row-drag-handle`,"aria-label":e.ctx.t(`MsgDragRow`),draggable:`true`,onDragstart:l},`⋮⋮`,40,j)])):(0,s.createCommentVNode)(``,!0),e.ctx.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:2,style:(0,s.normalizeStyle)(e.ctx.selectColumnStyle)},[(0,s.createElementVNode)(`input`,{"aria-label":e.ctx.t(`MsgSelectRow`,{index:e.rowIndex+1}),type:`checkbox`,checked:e.ctx.isRowSelected(e.row),onChange:n[1]||=t=>e.ctx.toggleRowSelection(e.row)},null,40,ae)],4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.ctx.columns,(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:t.field,style:(0,s.normalizeStyle)(e.ctx.columnStyle(t)),"data-field":t.field,tabindex:e.ctx.clipboard?0:void 0,class:(0,s.normalizeClass)(e.ctx.cellRangeSelection&&e.ctx.isCellInRange(e.rowIndex,n)?`inandu-cell-range-selected`:void 0),onMousedown:e=>u(e,n),onMouseenter:e=>d(n)},[i.value&&t.editable?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[e.ctx.editorContent(t,e.row)===void 0?((0,s.openBlock)(),(0,s.createBlock)(ie,{key:1,column:t,value:e.ctx.rowDraft[t.field],error:e.ctx.fieldErrors[t.field],t:e.ctx.t,onChange:n=>e.ctx.setRowDraftValue(t.field,n)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(E),{key:0,nodes:e.ctx.editorContent(t,e.row)},null,8,[`nodes`]))],64)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(E),{key:1,nodes:e.ctx.cellContent(t,e.row)},null,8,[`nodes`]))],46,M))),128)),e.ctx.hasRowActions?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,N,[i.value?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[(0,s.createElementVNode)(`button`,{type:`button`,disabled:e.ctx.isValidating,onClick:n[2]||=t=>e.ctx.saveRow(e.row)},(0,s.toDisplayString)(e.ctx.t(`MsgSaveRow`)),9,P),(0,s.createElementVNode)(`button`,{type:`button`,disabled:e.ctx.isValidating,onClick:n[3]||=t=>e.ctx.cancelRowEdit()},(0,s.toDisplayString)(e.ctx.t(`MsgCancelRowEdit`)),9,F)],64)):((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:1},[e.ctx.editableColumnCount>0?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:0,type:`button`,disabled:e.ctx.isAnotherRowEditing(e.row),onClick:n[4]||=t=>e.ctx.startEditingRow(e.row)},(0,s.toDisplayString)(e.ctx.t(`MsgEditRow`)),9,I)):(0,s.createCommentVNode)(``,!0),e.ctx.deletable?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:1,type:`button`,disabled:e.ctx.isAnotherRowEditing(e.row),onClick:n[5]||=t=>e.ctx.deleteRow(e.row)},(0,s.toDisplayString)(e.ctx.t(`MsgDeleteRow`)),9,L)):(0,s.createCommentVNode)(``,!0)],64))])):(0,s.createCommentVNode)(``,!0)],42,D),e.hasMasterDetail&&e.isRowExpanded?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,oe,[(0,s.createElementVNode)(`td`,{colspan:e.ctx.columns.length+e.ctx.extraColumnCount},[(0,s.createVNode)((0,s.unref)(E),{nodes:e.ctx.detailContent(e.row)},null,8,[`nodes`])],8,se)])):(0,s.createCommentVNode)(``,!0)],64))}}),z={key:0,class:`inandu-grid-filter-range`},B=[`aria-label`,`value`],V=[`aria-label`,`value`],ce={key:1,class:`inandu-grid-filter-range`},H=[`aria-label`,`value`],U=[`aria-label`,`value`],le=[`aria-label`,`value`],W={value:``},ue=[`aria-label`,`value`],G=(0,s.defineComponent)({__name:`FilterControl`,props:{column:{},value:{},t:{type:Function}},emits:[`change`],setup(e,{emit:t}){let n=e,r=t,i=(0,s.computed)(()=>n.column.type??`string`),a=(0,s.computed)(()=>n.t(`MsgFilterColumn`,{column:n.column.headerText??n.column.field}));function o(e){return e.target.value}return(t,n)=>i.value===`number`?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,z,[(0,s.createElementVNode)(`input`,{"aria-label":`${a.value} ${e.t(`MsgFilterMin`)}`,type:`number`,value:e.value?.min??``,onInput:n[0]||=e=>r(`change`,{min:o(e)})},null,40,B),(0,s.createElementVNode)(`input`,{"aria-label":`${a.value} ${e.t(`MsgFilterMax`)}`,type:`number`,value:e.value?.max??``,onInput:n[1]||=e=>r(`change`,{max:o(e)})},null,40,V)])):i.value===`date`?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,ce,[(0,s.createElementVNode)(`input`,{"aria-label":`${a.value} ${e.t(`MsgFilterFrom`)}`,type:`date`,value:e.value?.from??``,onInput:n[2]||=e=>r(`change`,{from:o(e)})},null,40,H),(0,s.createElementVNode)(`input`,{"aria-label":`${a.value} ${e.t(`MsgFilterTo`)}`,type:`date`,value:e.value?.to??``,onInput:n[3]||=e=>r(`change`,{to:o(e)})},null,40,U)])):i.value===`boolean`?((0,s.openBlock)(),(0,s.createElementBlock)(`select`,{key:2,"aria-label":a.value,value:e.value?.bool??``,onChange:n[4]||=e=>r(`change`,{bool:o(e)})},[(0,s.createElementVNode)(`option`,W,(0,s.toDisplayString)(e.t(`MsgAll`)),1),n[6]||=(0,s.createElementVNode)(`option`,{value:`true`},`true`,-1),n[7]||=(0,s.createElementVNode)(`option`,{value:`false`},`false`,-1)],40,le)):((0,s.openBlock)(),(0,s.createElementBlock)(`input`,{key:3,"aria-label":a.value,type:`text`,value:e.value?.text??``,onInput:n[5]||=e=>r(`change`,{text:o(e)})},null,40,ue))}}),de={class:`inandu-grid-vue`},fe={class:`inandu-grid-sr-only`,role:`status`,"aria-live":`polite`},pe={class:`inandu-grid-search`},me=[`aria-label`,`placeholder`,`value`],he={class:`inandu-grid-toolbar`},ge={key:3,class:`inandu-grid-column-toggle`},K=[`aria-label`,`checked`,`onChange`],_e={key:0,class:`inandu-grid-group-by`},ve=[`value`],q={value:``},J=[`value`],ye=[`aria-rowcount`],be={key:0},xe={key:1},Se=[`aria-label`,`checked`,`indeterminate`],Ce=[`data-field`,`aria-sort`,`draggable`,`aria-label`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`,`onClick`],we={key:0,class:`inandu-grid-sort-priority`},Te=[`onMousedown`,`onDblclick`],Ee={key:3},Y={class:`inandu-grid-filter-row`},De={key:0},X={key:1},Oe={key:3},ke={key:0,class:`inandu-grid-new-row`},Ae={key:1,class:`inandu-grid-row-actions`},je=[`disabled`],Me=[`disabled`],Ne={key:1},Pe=[`colspan`],Fe=[`aria-selected`,`aria-level`,`aria-expanded`],Ie=[`aria-label`,`checked`,`onChange`],Le=[`aria-label`,`title`,`onClick`],Re={key:1,class:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`},ze={key:1,class:`inandu-grid-row-actions`},Be={class:`inandu-grid-group-row`},Ve=[`colspan`],He={key:0,class:`inandu-grid-group-aggregates`},Ue={key:0,"aria-hidden":`true`},We=[`colspan`],Ge={key:1,"aria-hidden":`true`},Ke=[`colspan`],qe={key:0},Je={class:`inandu-grid-totals-row`},Ye={key:0},Xe={key:1},Ze={key:3},Qe={key:1,class:`inandu-grid-pagination`},$e=[`disabled`],et=[`disabled`],tt=(0,s.defineComponent)({name:`InanduGrid`,__name:`InanduGrid`,props:{rows:{},columns:{},locale:{default:`en`},lang:{},pageSize:{default:0},selectable:{type:Boolean},exportable:{type:Boolean},exportFilenameBase:{default:`inandu-grid`},deletable:{type:Boolean},deleteConfirmMessage:{},bulkDeleteConfirmMessage:{},creatable:{type:Boolean},clipboard:{type:Boolean},cellRangeSelection:{type:Boolean},multiRange:{type:Boolean},columnToggle:{type:Boolean},rowReorder:{type:Boolean},treeChildrenKey:{},treeDefaultExpanded:{default:`none`},renderDetail:{},singleDetailExpand:{type:Boolean},extraRowFilter:{},rowId:{},serverSide:{},virtualScroll:{type:Boolean},virtualRowHeight:{default:40},height:{default:400},overscan:{default:4},autosize:{type:Boolean}},emits:[`queryChange`,`selectionChange`,`rowSave`,`rowCreate`,`rowDelete`,`rowsDelete`,`cellsPaste`,`cellRangeChange`,`cellRangesChange`,`rowOrderChange`],setup(e,{expose:t,emit:n}){function r(e,t){return{minRow:Math.min(e.row,t.row),maxRow:Math.max(e.row,t.row),minCol:Math.min(e.col,t.col),maxCol:Math.max(e.col,t.col)}}function i(e,t,n){return t>=e.minRow&&t<=e.maxRow&&n>=e.minCol&&n<=e.maxCol}let a=e,o=n,l=(0,s.useSlots)(),u=ne(()=>({rows:a.rows,columns:a.columns,locale:a.locale,lang:a.lang,pageSize:a.pageSize,selectable:a.selectable,deleteConfirmMessage:a.deleteConfirmMessage,bulkDeleteConfirmMessage:a.bulkDeleteConfirmMessage,onRowSave:e=>o(`rowSave`,e),onRowCreate:e=>o(`rowCreate`,e),onRowDelete:e=>o(`rowDelete`,e),onRowsDelete:e=>o(`rowsDelete`,e),onCellsPaste:e=>o(`cellsPaste`,e),onRowOrderChange:e=>o(`rowOrderChange`,e),treeChildrenKey:a.treeChildrenKey,treeDefaultExpanded:a.treeDefaultExpanded,singleDetailExpand:a.singleDetailExpand,extraRowFilter:a.extraRowFilter,rowId:a.rowId,virtualScroll:a.virtualScroll,serverSide:a.serverSide,onQueryChange:e=>o(`queryChange`,e)}));t({grid:u});let d=(0,s.computed)(()=>ee(a.lang??a.locale)),f=(0,s.shallowRef)(void 0),p=(0,s.shallowRef)(void 0),te=(0,s.shallowRef)(0),m=(0,s.shallowRef)(null);(0,s.watch)(()=>u.selectedRows,e=>o(`selectionChange`,Array.from(e)),{immediate:!0});let h;function g(e,t){e.preventDefault(),h?.();let n=e.clientX,r=u.effectiveWidth(t),i=e=>u.setColumnWidth(t,r+(e.clientX-n)),a=()=>h?.();window.addEventListener(`mousemove`,i),window.addEventListener(`mouseup`,a),h=()=>{window.removeEventListener(`mousemove`,i),window.removeEventListener(`mouseup`,a),h=void 0}}function _(e,t){if(!a.autosize||!m.value)return;e.preventDefault(),e.stopPropagation();let n=x(m.value,t.field,t.headerText??t.field);n>0&&u.setColumnWidth(t.field,Math.min(c.MAX_COLUMN_WIDTH,n))}let S=(0,s.computed)(()=>a.cellRangeSelection&&!u.groupByField&&!u.hasVirtualScroll&&!u.hasTreeData),C=(0,s.shallowRef)(void 0),w=(0,s.shallowRef)(void 0),T=(0,s.shallowRef)([]),D=!1,O=(0,s.computed)(()=>C.value&&w.value?r(C.value,w.value):void 0),k=(0,s.computed)(()=>O.value?[...T.value,O.value]:T.value);function A(e,t){return k.value.some(n=>i(n,e,t))}function j(e){return{rows:u.visibleRows.slice(e.minRow,e.maxRow+1),fields:u.visibleColumns.slice(e.minCol,e.maxCol+1).map(e=>e.field)}}(0,s.watch)([S,k,()=>u.visibleRows,()=>u.visibleColumns],()=>{S.value&&(o(`cellRangeChange`,O.value?j(O.value):void 0),o(`cellRangesChange`,k.value.map(j)))},{immediate:!0});function ae(e,t,n){e.button===0&&(D=!0,a.multiRange&&(e.ctrlKey||e.metaKey)&&!e.shiftKey?(O.value&&(T.value=[...T.value,O.value]),C.value={row:t,col:n}):e.shiftKey&&C.value||(T.value=[],C.value={row:t,col:n}),w.value={row:t,col:n})}function M(e,t){D&&(w.value={row:e,col:t})}let N=()=>{D=!1};(0,s.watch)(S,(e,t,n)=>{e&&(document.addEventListener(`mouseup`,N),n(()=>document.removeEventListener(`mouseup`,N)))},{immediate:!0}),(0,s.onBeforeUnmount)(()=>h?.());function P(e){let t=u.visibleRows.slice(e.minRow,e.maxRow+1),n=u.visibleColumns.slice(e.minCol,e.maxCol+1);return t.map(e=>n.map(t=>(0,c.formatCellValue)(e[t.field],t.type??`string`,t.format??``,a.locale)).join(` `)).join(`
|
|
3
|
+
`)}let F=(0,s.computed)(()=>u.visibleColumns.filter(e=>e.aggregate)),I=(0,s.computed)(()=>a.serverSide?[]:u.visibleColumns.filter(e=>e.groupable!==!1)),L=(0,s.computed)(()=>u.groups?u.groups.length===0:u.visibleRows.length===0);function oe(e){let t=u.sortDirectionFor(e);return t===`asc`?`ascending`:t===`desc`?`descending`:`none`}let se=(0,s.computed)(()=>a.serverSide||a.pageSize>0&&!u.groupByField||u.hasVirtualScroll?(a.serverSide?a.serverSide.totalItems:u.filteredRowCount)+2:void 0),z=(0,s.computed)(()=>u.editableColumns.length>0||a.deletable||a.creatable),B=(0,s.computed)(()=>a.rowReorder&&!u.groupByField&&!u.hasVirtualScroll),V=(0,s.computed)(()=>(!!l.detail||!!a.renderDetail)&&!u.groupByField&&!u.hasVirtualScroll),ce=(0,s.computed)(()=>+!!V.value+ +!!B.value+ +!!a.selectable+ +!!z.value),H=(0,s.computed)(()=>u.visibleColumns.length+ce.value),U=(0,s.computed)(()=>u.hasVirtualScroll?Math.max(0,Math.floor(te.value/a.virtualRowHeight)-a.overscan):0),le=(0,s.computed)(()=>u.hasVirtualScroll?Math.min(u.visibleRows.length,Math.ceil((te.value+a.height)/a.virtualRowHeight)+a.overscan):u.visibleRows.length),W=(0,s.computed)(()=>u.hasVirtualScroll?u.visibleRows.slice(U.value,le.value):u.visibleRows),ue=(0,s.computed)(()=>U.value*a.virtualRowHeight),tt=(0,s.computed)(()=>(u.visibleRows.length-le.value)*a.virtualRowHeight);function Z(e){u.hasVirtualScroll&&(te.value=e.currentTarget.scrollTop)}function nt(e,t){u.setFilterValue(e,{...u.filterValues[e],...t})}function Q(e){let t=e.width!==void 0||u.isColumnResized(e.field)?{width:`${u.effectiveWidth(e.field)}px`}:{},n=u.columnPinnedSide(e.field);return n===`left`?{...t,position:`sticky`,left:`${u.stickyOffset(e.field)}px`,zIndex:1}:n===`right`?{...t,position:`sticky`,right:`${u.stickyOffsetRight(e.field)}px`,zIndex:1}:t}function rt(e,t){u.onColumnDragStart(t),e.dataTransfer?.setData(`text/plain`,t)}function it(e,t){e.preventDefault(),f.value=t}function at(e){f.value===e&&(f.value=void 0)}function ot(e,t){e.preventDefault(),f.value=void 0,u.onColumnDrop(t)}let $=(0,s.computed)(()=>a.selectable?{position:`sticky`,left:`0px`,zIndex:1}:void 0);function st(e,t){let n=e.aggregate,r=t[e.field];if(!n||r===void 0)return``;let i=n===`count`?String(r):(0,c.formatCellValue)(r,`number`,e.format??``,a.locale);return`${e.headerText??e.field} ${c.AGGREGATE_SYMBOLS[n]}: ${i}`}function ct(e){let t={title:e.headerText??e.field,field:e.field},n=l[`header-${e.field}`];return n?n(t):e.renderHeader?e.renderHeader(t):t.title}function lt(e,t){let n={value:t[e.field],row:t,field:e.field},r=l[`cell-${e.field}`];return r?r(n):e.renderCell?e.renderCell(n):(0,c.formatCellValue)(t[e.field],e.type??`string`,e.format??``,a.locale)}function ut(e,t){let n=l[`editor-${e.field}`];if(!n&&!e.renderEditor)return;let r={value:u.rowDraft[e.field],row:t,field:e.field,setValue:t=>u.setRowDraftValue(e.field,t),error:u.fieldErrors[e.field]};return n?n(r):e.renderEditor(r)}function dt(e){return l.detail?l.detail({row:e}):a.renderDetail?.(e)}function ft(e,t){u.toggleColumnVisibility(t),e.target.checked=!u.isColumnHidden(t)}function pt(e){if(!a.clipboard||!(e.ctrlKey||e.metaKey))return;let t=e.key.toLowerCase();if(t!==`c`&&t!==`v`)return;let n=e.target;if(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)return;let r=n.closest(`td[data-field]`),i=r?.getAttribute(`data-field`),o=r?.closest(`tr`)?.getAttribute(`data-row-index`);if(!r||!i||o==null)return;let s=Number(o);if(e.preventDefault(),t===`c`){let e=O.value,t=S.value&&e&&(e.minRow!==e.maxRow||e.minCol!==e.maxCol)?P(e):void 0;navigator.clipboard?.writeText(t??u.copyCellText(s,i))?.catch(()=>void 0)}else navigator.clipboard?.readText()?.then(e=>u.pasteAt(s,i,e)).catch(()=>void 0)}function mt(e){return u.rowKeyOf(e)}let ht=(0,s.computed)(()=>({columns:u.visibleColumns,t:d.value,selectable:a.selectable,selectColumnStyle:$.value,columnStyle:Q,isRowSelected:u.isRowSelected,toggleRowSelection:u.toggleRowSelection,hasRowActions:z.value,editableColumnCount:u.editableColumns.length,isEditingRow:u.isEditingRow,isAnotherRowEditing:u.isAnotherRowEditing,startEditingRow:u.startEditingRow,cancelRowEdit:u.cancelRowEdit,saveRow:e=>void u.saveRow(e),deleteRow:u.deleteRow,deletable:a.deletable,rowDraft:u.rowDraft,fieldErrors:u.fieldErrors,isValidating:u.isValidating,setRowDraftValue:u.setRowDraftValue,cellContent:lt,editorContent:ut,detailContent:dt,clipboard:a.clipboard,cellRangeSelection:S.value,isCellInRange:A,onCellRangeMouseDown:ae,onCellRangeMouseEnter:M,extraColumnCount:ce.value}));return(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,de,[(0,s.createElementVNode)(`div`,fe,(0,s.toDisplayString)(L.value?d.value(`MsgNoData`):``),1),(0,s.createElementVNode)(`div`,pe,[(0,s.createElementVNode)(`input`,{"aria-label":d.value(`MsgFilterPlaceholder`),type:`text`,placeholder:`${d.value(`MsgFilterPlaceholder`)}…`,value:(0,s.unref)(u).filterQuery,onInput:n[0]||=e=>(0,s.unref)(u).setFilterQuery(e.target.value)},null,40,me)]),(0,s.createElementVNode)(`div`,he,[e.exportable?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[1]||=t=>(0,s.unref)(re)((0,s.unref)(u).exportRows,(0,s.unref)(u).visibleColumns,e.locale,e.exportFilenameBase)},(0,s.toDisplayString)(d.value(`MsgExportCsv`)),1),(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[2]||=t=>(0,s.unref)(v)((0,s.unref)(u).exportRows,(0,s.unref)(u).visibleColumns,e.locale,e.exportFilenameBase)},(0,s.toDisplayString)(d.value(`MsgExportExcel`)),1),(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[3]||=t=>void(0,s.unref)(b)((0,s.unref)(u).exportRows,(0,s.unref)(u).visibleColumns,e.locale,e.exportFilenameBase)},(0,s.toDisplayString)(d.value(`MsgExportPdf`)),1),(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[4]||=t=>(0,s.unref)(y)((0,s.unref)(u).exportRows,(0,s.unref)(u).visibleColumns,e.locale,e.exportFilenameBase)},(0,s.toDisplayString)(d.value(`MsgPrint`)),1)],64)):(0,s.createCommentVNode)(``,!0),e.creatable&&(0,s.unref)(u).editableColumns.length>0&&!(0,s.unref)(u).isAddingRow?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:1,type:`button`,onClick:n[5]||=e=>(0,s.unref)(u).startAddingRow()},(0,s.toDisplayString)(d.value(`MsgAddRow`)),1)):(0,s.createCommentVNode)(``,!0),e.selectable&&e.deletable&&(0,s.unref)(u).selectedRows.size>0?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:2,type:`button`,onClick:n[6]||=e=>(0,s.unref)(u).deleteSelectedRows()},(0,s.toDisplayString)(d.value(`MsgDeleteSelected`,{count:(0,s.unref)(u).selectedRows.size})),1)):(0,s.createCommentVNode)(``,!0),e.columnToggle?((0,s.openBlock)(),(0,s.createElementBlock)(`details`,ge,[(0,s.createElementVNode)(`summary`,null,(0,s.toDisplayString)(d.value(`MsgToggleColumns`)),1),(0,s.createElementVNode)(`ul`,null,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).hideableColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`li`,{key:e.field},[(0,s.createElementVNode)(`label`,null,[(0,s.createElementVNode)(`input`,{"aria-label":d.value(`MsgToggleColumn`,{column:e.headerText??e.field}),type:`checkbox`,checked:!(0,s.unref)(u).isColumnHidden(e.field),onChange:t=>ft(t,e.field)},null,40,K),(0,s.createTextVNode)(` `+(0,s.toDisplayString)(e.headerText??e.field),1)])]))),128))])])):(0,s.createCommentVNode)(``,!0)]),I.value.length>0?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,_e,[(0,s.createElementVNode)(`label`,null,[(0,s.createTextVNode)((0,s.toDisplayString)((0,s.unref)(u).groupByField?d.value(`MsgGroupedBy`,{column:I.value.find(e=>e.field===(0,s.unref)(u).groupByField)?.headerText??(0,s.unref)(u).groupByField}):d.value(`MsgGroupByHint`))+` `,1),(0,s.createElementVNode)(`select`,{"aria-label":`Group by`,value:(0,s.unref)(u).groupByField??``,onChange:n[7]||=e=>(0,s.unref)(u).setGroupByField(e.target.value||void 0)},[(0,s.createElementVNode)(`option`,q,(0,s.toDisplayString)(d.value(`MsgCancelGrouping`)),1),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(I.value,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`option`,{key:e.field,value:e.field},(0,s.toDisplayString)(e.headerText??e.field),9,J))),128))],40,ve)])])):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,{class:(0,s.normalizeClass)((0,s.unref)(u).hasVirtualScroll?`inandu-grid-viewport`:void 0),style:(0,s.normalizeStyle)((0,s.unref)(u).hasVirtualScroll?{height:`${e.height}px`,overflow:`auto`}:void 0),onScroll:Z},[(0,s.createElementVNode)(`table`,{ref_key:`tableRef`,ref:m,class:`inandu-grid`,"aria-rowcount":se.value,onKeydown:pt},[(0,s.createElementVNode)(`thead`,null,[(0,s.createElementVNode)(`tr`,null,[V.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,be)):(0,s.createCommentVNode)(``,!0),B.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,xe)):(0,s.createCommentVNode)(``,!0),e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:2,style:(0,s.normalizeStyle)($.value)},[(0,s.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectAll`),type:`checkbox`,checked:(0,s.unref)(u).allSelected,indeterminate:(0,s.unref)(u).someSelected,onChange:n[8]||=e=>(0,s.unref)(u).toggleSelectAll()},null,40,Se)],4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:e.field,"data-field":e.field,"aria-sort":oe(e.field),style:(0,s.normalizeStyle)(Q(e)),class:(0,s.normalizeClass)(f.value===e.field?`inandu-drag-over`:void 0),draggable:e.reorder!==!1,"aria-label":d.value(`MsgSortBy`,{column:e.headerText??e.field}),onDragstart:t=>rt(t,e.field),onDragover:t=>it(t,e.field),onDragleave:t=>at(e.field),onDrop:t=>ot(t,e.field),onClick:t=>(0,s.unref)(u).toggleSort(e.field,t.shiftKey)},[(0,s.createVNode)((0,s.unref)(E),{nodes:ct(e)},null,8,[`nodes`]),(0,s.createTextVNode)((0,s.toDisplayString)((0,s.unref)(u).sortDirectionFor(e.field)?(0,s.unref)(u).sortDirectionFor(e.field)===`asc`?` ▲`:` ▼`:``),1),(0,s.unref)(u).sortPriorityFor(e.field)===void 0?(0,s.createCommentVNode)(``,!0):((0,s.openBlock)(),(0,s.createElementBlock)(`sup`,we,(0,s.toDisplayString)((0,s.unref)(u).sortPriorityFor(e.field)),1)),(0,s.createElementVNode)(`span`,{class:`inandu-grid-resize-handle`,draggable:`false`,onMousedown:t=>g(t,e.field),onDblclick:t=>_(t,e),onClick:n[9]||=(0,s.withModifiers)(()=>{},[`stop`])},null,40,Te)],46,Ce))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,Ee)):(0,s.createCommentVNode)(``,!0)]),(0,s.createElementVNode)(`tr`,Y,[V.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,De)):(0,s.createCommentVNode)(``,!0),B.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,X)):(0,s.createCommentVNode)(``,!0),e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:2,style:(0,s.normalizeStyle)($.value)},null,4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:e.field,style:(0,s.normalizeStyle)(Q(e))},[(0,s.createVNode)(G,{column:e,value:(0,s.unref)(u).filterValues[e.field],t:d.value,onChange:t=>nt(e.field,t)},null,8,[`column`,`value`,`t`,`onChange`])],4))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,Oe)):(0,s.createCommentVNode)(``,!0)])]),(0,s.createElementVNode)(`tbody`,null,[(0,s.unref)(u).isAddingRow?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,ke,[e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:0,style:(0,s.normalizeStyle)($.value)},null,4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:e.field,style:(0,s.normalizeStyle)(Q(e))},[e.editable?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[ut(e,{})===void 0?((0,s.openBlock)(),(0,s.createBlock)(ie,{key:1,column:e,value:(0,s.unref)(u).rowDraft[e.field],error:(0,s.unref)(u).fieldErrors[e.field],t:d.value,onChange:t=>(0,s.unref)(u).setRowDraftValue(e.field,t)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(E),{key:0,nodes:ut(e,{})},null,8,[`nodes`]))],64)):(0,s.createCommentVNode)(``,!0)],4))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,Ae,[(0,s.createElementVNode)(`button`,{type:`button`,disabled:(0,s.unref)(u).isValidating,onClick:n[10]||=e=>void(0,s.unref)(u).saveNewRow()},(0,s.toDisplayString)(d.value(`MsgSaveRow`)),9,je),(0,s.createElementVNode)(`button`,{type:`button`,disabled:(0,s.unref)(u).isValidating,onClick:n[11]||=e=>(0,s.unref)(u).cancelAddRow()},(0,s.toDisplayString)(d.value(`MsgCancelRowEdit`)),9,Me)])):(0,s.createCommentVNode)(``,!0)])):(0,s.createCommentVNode)(``,!0),L.value?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,Ne,[(0,s.createElementVNode)(`td`,{colspan:H.value},(0,s.toDisplayString)(d.value(`MsgNoData`)),9,Pe)])):(0,s.unref)(u).hasTreeData?((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,{key:2},(0,s.renderList)((0,s.unref)(u).treeRows,(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,{key:mt(t.row),"aria-selected":e.selectable?(0,s.unref)(u).isRowSelected(t.row):void 0,"aria-level":t.depth+1,"aria-expanded":t.expandable?(0,s.unref)(u).isTreeRowExpanded(t.row):void 0},[e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:0,style:(0,s.normalizeStyle)($.value)},[(0,s.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectRow`,{index:n+1}),type:`checkbox`,checked:(0,s.unref)(u).isRowSelected(t.row),onChange:e=>(0,s.unref)(u).toggleRowSelection(t.row)},null,40,Ie)],4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,(e,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:e.field,style:(0,s.normalizeStyle)(Q(e))},[n===0?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,{key:0,class:`inandu-grid-tree-cell`,style:(0,s.normalizeStyle)({paddingInlineStart:`${t.depth*16}px`})},[t.expandable?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:0,type:`button`,class:`inandu-grid-tree-toggle`,"aria-label":(0,s.unref)(u).isTreeRowExpanded(t.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),title:(0,s.unref)(u).isTreeRowExpanded(t.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),onClick:e=>(0,s.unref)(u).toggleTreeRow(t.row)},(0,s.toDisplayString)((0,s.unref)(u).isTreeRowExpanded(t.row)?`▾`:`▸`),9,Le)):((0,s.openBlock)(),(0,s.createElementBlock)(`span`,Re)),(0,s.createVNode)((0,s.unref)(E),{nodes:lt(e,t.row)},null,8,[`nodes`])],4)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(E),{key:1,nodes:lt(e,t.row)},null,8,[`nodes`]))],4))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,ze)):(0,s.createCommentVNode)(``,!0)],8,Fe))),128)):(0,s.unref)(u).groups?((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,{key:3},(0,s.renderList)((0,s.unref)(u).groups,e=>((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:e.key},[(0,s.createElementVNode)(`tr`,Be,[(0,s.createElementVNode)(`td`,{colspan:H.value},[(0,s.createElementVNode)(`strong`,null,(0,s.toDisplayString)(e.key),1),(0,s.createTextVNode)(` (`+(0,s.toDisplayString)(e.rows.length)+`) `,1),F.value.length>0?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,He,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(F.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`span`,{key:t.field},` · `+(0,s.toDisplayString)(st(t,e.aggregates)),1))),128))])):(0,s.createCommentVNode)(``,!0)],8,Ve)]),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.rows,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(R,{key:mt(e),ctx:ht.value,row:e,"row-index":t},null,8,[`ctx`,`row`,`row-index`]))),128))],64))),128)):((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:4},[(0,s.unref)(u).hasVirtualScroll&&ue.value>0?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,Ue,[(0,s.createElementVNode)(`td`,{style:(0,s.normalizeStyle)({height:`${ue.value}px`,padding:0,border:`none`}),colspan:H.value},null,12,We)])):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(W.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(R,{key:mt(e),ctx:ht.value,row:e,"row-index":U.value+t,"has-row-drag-handle":B.value,"is-drag-over-row":(0,s.unref)(u).draggingRow!==void 0&&p.value===e,"has-master-detail":V.value,"is-row-expanded":(0,s.unref)(u).isRowExpanded(e),onRowDragStart:t=>(0,s.unref)(u).onRowDragStart(e),onRowDragOver:t=>p.value=e,onRowDragLeave:t=>p.value===e&&(p.value=void 0),onRowDrop:t=>(0,s.unref)(u).onRowDrop(e),onToggleExpanded:t=>(0,s.unref)(u).toggleRowExpanded(e)},null,8,[`ctx`,`row`,`row-index`,`has-row-drag-handle`,`is-drag-over-row`,`has-master-detail`,`is-row-expanded`,`onRowDragStart`,`onRowDragOver`,`onRowDragLeave`,`onRowDrop`,`onToggleExpanded`]))),128)),(0,s.unref)(u).hasVirtualScroll&&tt.value>0?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,Ge,[(0,s.createElementVNode)(`td`,{style:(0,s.normalizeStyle)({height:`${tt.value}px`,padding:0,border:`none`}),colspan:H.value},null,12,Ke)])):(0,s.createCommentVNode)(``,!0)],64))]),F.value.length>0&&!(0,s.unref)(u).hasVirtualScroll?((0,s.openBlock)(),(0,s.createElementBlock)(`tfoot`,qe,[(0,s.createElementVNode)(`tr`,Je,[V.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,Ye)):(0,s.createCommentVNode)(``,!0),B.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,Xe)):(0,s.createCommentVNode)(``,!0),e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:2,style:(0,s.normalizeStyle)($.value)},null,4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:e.field,style:(0,s.normalizeStyle)(Q(e))},(0,s.toDisplayString)(e.aggregate?st(e,(0,s.unref)(u).totals):``),5))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,Ze)):(0,s.createCommentVNode)(``,!0)])])):(0,s.createCommentVNode)(``,!0)],40,ye)],38),e.pageSize>0&&!(0,s.unref)(u).groupByField&&!(0,s.unref)(u).hasVirtualScroll?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,Qe,[(0,s.createElementVNode)(`button`,{type:`button`,disabled:(0,s.unref)(u).page===0,onClick:n[12]||=e=>(0,s.unref)(u).setPage((0,s.unref)(u).page-1)},`‹ `+(0,s.toDisplayString)(d.value(`MsgPreviousPage`)),9,$e),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(d.value(`MsgPageOf`,{page:(0,s.unref)(u).page+1,total:(0,s.unref)(u).pageCount}))+` (`+(0,s.toDisplayString)((0,s.unref)(u).filteredRowCount)+`)`,1),(0,s.createElementVNode)(`button`,{type:`button`,disabled:(0,s.unref)(u).page>=(0,s.unref)(u).pageCount-1,onClick:n[13]||=e=>(0,s.unref)(u).setPage((0,s.unref)(u).page+1)},(0,s.toDisplayString)(d.value(`MsgNextPage`))+` ›`,9,et)])):(0,s.createCommentVNode)(``,!0)]))}}),Z=new Set;function nt(e,t={}){let n=new URLSearchParams;n.set(`page`,String(e.page+1)),e.pageSize>0&&n.set(`pageSize`,String(e.pageSize)),e.sortCriteria.length>0&&n.set(`sort`,e.sortCriteria.map(e=>(e.direction===`desc`?`-`:``)+e.field).join(`,`));let r=e.filterQuery.trim();r&&n.set(`q`,r);let i=Object.values(e.filterValues).some(e=>!!e.values&&e.values.some(e=>e===``||e.includes(`,`)||e!==e.trim()));for(let[t,r]of Object.entries(e.filterValues))if(r.values&&r.values.length===0)n.set(`${t}_none`,`1`);else if((0,c.hasMeaningfulFilterValue)(r)){if(r.values&&r.values.length>0){if(i)for(let e of r.values)n.append(`${t}_in`,e);else n.set(`${t}_in`,r.values.join(`,`))}else r.text&&n.set(`${t}_contains`,r.text),r.min&&n.set(`${t}_gte`,r.min),r.max&&n.set(`${t}_lte`,r.max),r.from&&n.set(`${t}_gte`,r.from),r.to&&n.set(`${t}_lte`,r.to),(r.bool===`true`||r.bool===`false`)&&n.set(`${t}_eq`,r.bool)}i&&n.set(`inEncoding`,`repeat`);for(let[e,r]of Object.entries(t.extraParams??{}))n.has(e)&&!Z.has(e)&&(Z.add(e),console.warn(`[inandu-grid] extraParams.${e} replaces the grid's own "${e}" query parameter.`)),n.set(e,r);return n}function Q(e){let t=()=>(0,s.toValue)(e),n=(0,s.shallowRef)(void 0),r=(0,s.shallowRef)([]),i=(0,s.shallowRef)(0),a=(0,s.shallowRef)(!1),o=(0,s.shallowRef)(void 0),c=(0,s.shallowRef)(0),l=!1,u;function d(e){u?.();let n=new AbortController,s=async()=>{c(!0),o.value=void 0;try{let a=t(),o=nt(e,{extraParams:a.extraParams}).toString(),s=a.url+(a.url.includes(`?`)?`&`:`?`)+o,c={...a.init,signal:n.signal},l=await(a.fetcher??fetch)(s,c);if(!l.ok)throw Error(`Request failed: ${l.status} ${l.statusText}`);let u=await l.json();if(n.signal.aborted)return;r.value=u.data??[],i.value=u.total??0}catch(e){if(n.signal.aborted)return;o.value=e instanceof Error?e:Error(String(e))}finally{n.signal.aborted||c(!1)}};function c(e){a.value=e}let d=l?t().debounceMs??200:0;l=!0;let f=setTimeout(s,d);u=()=>{clearTimeout(f),n.abort()}}return(0,s.watch)([n,c],()=>{n.value&&d(n.value)}),(0,s.watch)(()=>{let e=t();return`${e.url}|${JSON.stringify(e.extraParams??{})}`},()=>{n.value&&d(n.value)}),(0,s.onScopeDispose)(()=>u?.(),!0),{rows:r,total:i,loading:a,error:o,setQuery:e=>{n.value=e},reload:()=>{c.value+=1}}}Object.defineProperty(exports,"AGGREGATE_SYMBOLS",{enumerable:!0,get:function(){return c.AGGREGATE_SYMBOLS}}),Object.defineProperty(exports,"INANDU_GRID_TRANSLATIONS",{enumerable:!0,get:function(){return c.INANDU_GRID_TRANSLATIONS}}),exports.InanduGrid=tt,exports.buildCsv=g,exports.buildExcelXml=_,exports.buildInanduGridQuery=nt,Object.defineProperty(exports,"compareCellValues",{enumerable:!0,get:function(){return c.compareCellValues}}),Object.defineProperty(exports,"computeGroupAggregates",{enumerable:!0,get:function(){return c.computeGroupAggregates}}),exports.createTranslator=ee,Object.defineProperty(exports,"en",{enumerable:!0,get:function(){return c.en}}),Object.defineProperty(exports,"es",{enumerable:!0,get:function(){return c.es}}),exports.exportCsv=re,exports.exportExcel=v,exports.exportPdf=b,Object.defineProperty(exports,"formatCellValue",{enumerable:!0,get:function(){return c.formatCellValue}}),Object.defineProperty(exports,"fr",{enumerable:!0,get:function(){return c.fr}}),exports.interpolate=p,Object.defineProperty(exports,"it",{enumerable:!0,get:function(){return c.it}}),Object.defineProperty(exports,"matchesColumnFilter",{enumerable:!0,get:function(){return c.matchesColumnFilter}}),exports.measureColumnContentWidth=x,exports.printTable=y,exports.useInanduGrid=ne,exports.useInanduGridServer=Q,Object.defineProperty(exports,"zh",{enumerable:!0,get:function(){return c.zh}});
|