@inandu-solutions/grid-vue 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -3
  3. package/dist/components/DataRow.vue.d.ts +34 -0
  4. package/dist/components/EditCell.vue.d.ts +16 -0
  5. package/dist/components/FilterControl.vue.d.ts +16 -0
  6. package/dist/components/InanduGrid.vue.d.ts +231 -0
  7. package/dist/components/internal.d.ts +60 -0
  8. package/dist/components/types.d.ts +6 -0
  9. package/dist/composables/useInanduGrid.d.ts +260 -0
  10. package/dist/composables/useInanduGridServer.d.ts +53 -0
  11. package/dist/core/aggregate.d.ts +5 -0
  12. package/dist/core/columns.d.ts +11 -0
  13. package/dist/core/constants.d.ts +14 -0
  14. package/dist/core/dom.d.ts +8 -0
  15. package/dist/core/export/csv.d.ts +2 -0
  16. package/dist/core/export/download.d.ts +2 -0
  17. package/dist/core/export/markup.d.ts +2 -0
  18. package/dist/core/export/pdf.d.ts +3 -0
  19. package/dist/core/filter.d.ts +26 -0
  20. package/dist/core/format.d.ts +24 -0
  21. package/dist/core/i18n/en.d.ts +46 -0
  22. package/dist/core/i18n/es.d.ts +46 -0
  23. package/dist/core/i18n/fr.d.ts +46 -0
  24. package/dist/core/i18n/index.d.ts +8 -0
  25. package/dist/core/i18n/it.d.ts +46 -0
  26. package/dist/core/i18n/zh.d.ts +46 -0
  27. package/dist/core/index.d.ts +17 -0
  28. package/dist/core/parse.d.ts +14 -0
  29. package/dist/core/sort.d.ts +1 -0
  30. package/dist/core/tree.d.ts +28 -0
  31. package/dist/core/types.d.ts +46 -0
  32. package/dist/inandu-grid-vue.cjs +3 -0
  33. package/dist/inandu-grid-vue.js +1973 -0
  34. package/dist/index.d.ts +13 -0
  35. package/dist/style.css +358 -0
  36. package/dist/utils/exporters.d.ts +29 -0
  37. package/dist/utils/measureColumn.d.ts +15 -0
  38. package/dist/utils/translate.d.ts +10 -0
  39. package/package.json +92 -6
@@ -0,0 +1,46 @@
1
+ export declare const zh: {
2
+ MsgNoData: string;
3
+ MsgFirstPage: string;
4
+ MsgPreviousPage: string;
5
+ MsgNextPage: string;
6
+ MsgLastPage: string;
7
+ MsgSortBy: string;
8
+ MsgPageOf: string;
9
+ MsgFilterPlaceholder: string;
10
+ MsgFilterColumn: string;
11
+ MsgFilterMin: string;
12
+ MsgFilterMax: string;
13
+ MsgFilterFrom: string;
14
+ MsgFilterTo: string;
15
+ MsgAll: string;
16
+ MsgCancelFilter: string;
17
+ MsgCancelAllFilters: string;
18
+ MsgGroupByHint: string;
19
+ MsgGroupedBy: string;
20
+ MsgGroupHeader: string;
21
+ MsgCancelGrouping: string;
22
+ MsgSelectAll: string;
23
+ MsgSelectRow: string;
24
+ MsgExportCsv: string;
25
+ MsgExportExcel: string;
26
+ MsgExportPdf: string;
27
+ MsgPrint: string;
28
+ MsgToggleColumns: string;
29
+ MsgToggleColumn: string;
30
+ MsgEditCell: string;
31
+ MsgEditRow: string;
32
+ MsgSaveRow: string;
33
+ MsgCancelRowEdit: string;
34
+ MsgDeleteRow: string;
35
+ MsgAddRow: string;
36
+ MsgLoading: string;
37
+ MsgDragRow: string;
38
+ MsgAutosizeColumn: string;
39
+ MsgExpandDetail: string;
40
+ MsgCollapseDetail: string;
41
+ MsgDeleteSelected: string;
42
+ MsgValidationRequired: string;
43
+ MsgValidationMin: string;
44
+ MsgValidationMax: string;
45
+ MsgValidationPattern: string;
46
+ };
@@ -0,0 +1,17 @@
1
+ export type { InanduColumnType, InanduColumnStickySide, InanduColumnAggregate, InanduGridRow, InanduGridColumnFilterValue, ColumnConfig, } from './types';
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';
@@ -0,0 +1,14 @@
1
+ import { InanduColumnType } from './types';
2
+ /**
3
+ * Parses a row-edit draft's raw control value (a string for text/number/date, a boolean for the
4
+ * checkbox — see `InanduGridComponent.onRowFieldChange`) per the column's `type`. Returns `undefined` for
5
+ * an unparseable `'number'`/`'date'`, the signal `saveRow()` uses to omit that field from `values`
6
+ * rather than committing garbage.
7
+ */
8
+ export declare function parseDraftValue(raw: unknown, type: InanduColumnType): unknown;
9
+ /**
10
+ * Parses one pasted TSV cell's raw text per `type` — like `parseDraftValue()`, except `'boolean'`:
11
+ * a pasted cell is always plain text (`"true"`/`"false"`, whatever the clipboard actually held),
12
+ * never an already-boolean checkbox `.checked` the way a manual row edit's draft value is.
13
+ */
14
+ export declare function parsePastedCellValue(raw: string, type: InanduColumnType): unknown;
@@ -0,0 +1 @@
1
+ export declare function compareCellValues(a: unknown, b: unknown, locale?: string): number;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Tree-data flattening (#3) — pure, framework-agnostic. Walks a nested-children hierarchy into the
3
+ * flat list of rows that should render right now: a node's children appear directly below it, but
4
+ * only while that node is expanded. Filtering keeps a node when it (or any descendant) matches, and
5
+ * force-expands the ancestors of a match so it's visible; an optional comparator sorts each level.
6
+ */
7
+ export interface TreeVisibleRow<T> {
8
+ row: T;
9
+ /** 0 for a root, +1 per level. Drives the first cell's indentation. */
10
+ depth: number;
11
+ /** Has at least one (surviving) child — i.e. worth showing a toggle. */
12
+ expandable: boolean;
13
+ /** Currently showing its children. */
14
+ expanded: boolean;
15
+ }
16
+ export interface FlattenTreeOptions<T> {
17
+ /** A node's children array (or `undefined` / `[]` for a leaf). */
18
+ getChildren: (row: T) => readonly T[] | undefined;
19
+ /** Whether `row` is expanded — consulted only when there is no active `match`. */
20
+ isExpanded: (row: T) => boolean;
21
+ /** When set, a node survives iff it or a descendant returns `true`; matches render expanded. */
22
+ match?: (row: T) => boolean;
23
+ /** Sorts the siblings at every level (applied after filtering). */
24
+ compare?: (a: T, b: T) => number;
25
+ }
26
+ export declare function flattenTree<T>(roots: readonly T[], options: FlattenTreeOptions<T>): TreeVisibleRow<T>[];
27
+ /** Every node in the hierarchy, depth-first — used for "expand all" / counting. */
28
+ export declare function collectTreeRows<T>(roots: readonly T[], getChildren: (row: T) => readonly T[] | undefined): T[];
@@ -0,0 +1,46 @@
1
+ /** How a column's raw cell value is interpreted and formatted. See `InanduColumnComponent.type`. */
2
+ export type InanduColumnType = 'string' | 'number' | 'boolean' | 'date';
3
+ /** Which side of the grid a `sticky="true"` column pins to. See `InanduColumnComponent.stickySide`. */
4
+ export type InanduColumnStickySide = 'left' | 'right';
5
+ /** Aggregate shown in a group's header row when the grid is grouped. See `InanduColumnComponent.aggregate`. */
6
+ export type InanduColumnAggregate = 'sum' | 'avg' | 'min' | 'max' | 'count' | '';
7
+ /** A grid row — a plain bag of field values. The grid never assumes any particular key. */
8
+ export type InanduGridRow = Record<string, unknown>;
9
+ /**
10
+ * The subset of a column definition the pure helpers read, expressed as the signal-getter shape
11
+ * `InanduColumnComponent` already exposes (so an `InanduColumnComponent` instance satisfies this
12
+ * structurally, with no adapter). A non-Angular consumer can pass any object with these five
13
+ * zero-arg accessors — e.g. `{ field: () => 'name', type: () => 'string', ... }`.
14
+ */
15
+ export interface ColumnConfig {
16
+ field(): string;
17
+ type(): InanduColumnType;
18
+ format(): string;
19
+ order(): number | undefined;
20
+ aggregate(): InanduColumnAggregate;
21
+ }
22
+ /** Raw values from a single column's filter controls; which keys are used depends on that column's `type`. */
23
+ export interface InanduGridColumnFilterValue {
24
+ /** `'string'` columns. */
25
+ text?: string;
26
+ /** `'number'` columns. */
27
+ min?: string;
28
+ max?: string;
29
+ /** `'date'` columns, `yyyy-mm-dd` (native `<input type="date">` value format). */
30
+ from?: string;
31
+ to?: string;
32
+ /** `'boolean'` columns: `''` (no filter), `'true'`, or `'false'`. */
33
+ bool?: string;
34
+ /**
35
+ * Excel-style "set filter" — an explicit list of the column's own *formatted* display values to
36
+ * match (OR within the column, same as every other filter key combines with AND across
37
+ * columns). Works the same regardless of `type` — unlike `text`/`min`/`max`/`from`/`to`/`bool`,
38
+ * which are each specific to one `type` — since it compares against the already-formatted
39
+ * string, not the raw value. Whenever this key is *present* (defined) at all, it takes over
40
+ * matching for the column entirely and the type-specific keys above are ignored — including an
41
+ * **empty array**, which means "every value unchecked" and matches nothing, not "no
42
+ * constraint". Omit the key (or set it to `undefined`) for "no constraint" instead. See
43
+ * `matchesColumnFilter`/`hasMeaningfulFilterValue`.
44
+ */
45
+ values?: string[];
46
+ }
@@ -0,0 +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,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}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;