xv-webcomponents 2.0.0-beta.2 → 2.0.0-beta.28

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 (166) hide show
  1. package/README.md +3 -2
  2. package/dist/angular/index.d.ts +1 -1
  3. package/dist/angular/index.js +3 -4
  4. package/dist/angular/proxies.d.ts +60 -34
  5. package/dist/angular/proxies.js +51 -67
  6. package/dist/angular/web-components.module.d.ts +1 -1
  7. package/dist/angular/web-components.module.js +10 -13
  8. package/dist/cjs/{index-Cfa6bBQW.js → index-DaTpiyaU.js} +1 -1
  9. package/dist/cjs/{index-Cixkr3sz.js → index-Dwhgrew8.js} +15 -10
  10. package/dist/cjs/index.cjs.js +2 -2
  11. package/dist/cjs/loader.cjs.js +2 -2
  12. package/dist/cjs/{xv-accordion-v2_50.cjs.entry.js → xv-accordion-v2_49.cjs.entry.js} +1529 -147
  13. package/dist/cjs/xv-header-next.cjs.entry.js +2 -2
  14. package/dist/cjs/xv-mega-menu-next.cjs.entry.js +2 -2
  15. package/dist/cjs/xv-webcomponents.cjs.js +3 -3
  16. package/dist/collection/collection-manifest.json +1 -2
  17. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu.js +9 -8
  18. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.css +129 -61
  19. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.js +277 -78
  20. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.css +138 -24
  21. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.js +334 -168
  22. package/dist/collection/components/xv-table/xv-table.css +240 -99
  23. package/dist/collection/components/xv-table/xv-table.js +2056 -63
  24. package/dist/collection/components/xv-table/xv-table.model.js +10 -0
  25. package/dist/collection/components/xv-table/xv-table.utils.js +243 -0
  26. package/dist/collection/components/xv-tabs/xv-tab/xv-tab.js +1 -1
  27. package/dist/collection/components/xv-tag/xv-tag.js +1 -1
  28. package/dist/collection/components/xv-tag-combobox/xv-tag-combobox.js +2 -2
  29. package/dist/collection/components/xv-text-input/xv-text-input.js +2 -2
  30. package/dist/collection/components/xv-textarea/xv-textarea.js +2 -2
  31. package/dist/collection/components/xv-tile/xv-tile.js +2 -2
  32. package/dist/collection/components/xv-toggle/xv-toggle.js +1 -1
  33. package/dist/collection/components/xv-toggle-tip/xv-toggle-tip.js +1 -1
  34. package/dist/collection/components/xv-tooltip/xv-tooltip.js +2 -2
  35. package/dist/collection/utils/table-layout.js +130 -0
  36. package/dist/components/index.js +1 -1
  37. package/dist/components/p-B0kwaJ8n.js +1 -0
  38. package/dist/components/{p-CbVZCn2p.js → p-BEoh0dZI.js} +1 -1
  39. package/dist/components/{p-ZYJfCCwX.js → p-BaZ-srfu.js} +1 -1
  40. package/dist/components/{p-DyGMZIub.js → p-Bej2l-wN.js} +1 -1
  41. package/dist/components/{p-Ddx5DwV5.js → p-BfhvpeQh.js} +1 -1
  42. package/dist/components/{p-kQVUwJXZ.js → p-CSYnNMKb.js} +1 -1
  43. package/dist/components/{p-BNP2Lw34.js → p-CspyoLL9.js} +1 -1
  44. package/dist/components/p-CvgDDcjp.js +1 -0
  45. package/dist/components/{p-COoj5JkZ.js → p-D4FwGeDJ.js} +1 -1
  46. package/dist/components/p-DCvH_Br_.js +1 -0
  47. package/dist/components/{p-CEjlxnKY.js → p-DFe9Mtw_.js} +1 -1
  48. package/dist/components/{p-BRZwUlfE.js → p-DFtMwE-h.js} +1 -1
  49. package/dist/components/p-DIvi4fI3.js +1 -0
  50. package/dist/components/{p-DTwz9Fsh.js → p-DNRISLNf.js} +1 -1
  51. package/dist/components/p-DPnvoOYj.js +1 -0
  52. package/dist/components/{p-Dzz9jxLm.js → p-Dwbe941A.js} +1 -1
  53. package/dist/components/{p-CMAJWZsP.js → p-JClekcEh.js} +1 -1
  54. package/dist/components/{p-DtUNYh73.js → p-NoM9oIJn.js} +1 -1
  55. package/dist/components/{p-DlLBjhuH.js → p-XEk4dHG3.js} +1 -1
  56. package/dist/components/p-i7_81si-.js +1 -0
  57. package/dist/components/{p-BRYrLHiz.js → p-i82EFiq6.js} +1 -1
  58. package/dist/components/{p-BXB4D7j4.js → p-jD7nSJaM.js} +1 -1
  59. package/dist/components/xv-accordion-v2-item.js +1 -1
  60. package/dist/components/xv-accordion-v2.js +1 -1
  61. package/dist/components/xv-breadcrumbs-v2.js +1 -1
  62. package/dist/components/xv-button-group-v2.js +1 -1
  63. package/dist/components/xv-button-v2.js +1 -1
  64. package/dist/components/xv-card-v2.js +1 -1
  65. package/dist/components/xv-checkbox-v2.js +1 -1
  66. package/dist/components/xv-content-switcher-item-v2.js +1 -1
  67. package/dist/components/xv-content-switcher-v2.js +1 -1
  68. package/dist/components/xv-data-table-cell.js +1 -1
  69. package/dist/components/xv-data-table-collapse.js +1 -1
  70. package/dist/components/xv-data-table-row.js +1 -1
  71. package/dist/components/xv-data-table.js +2 -2
  72. package/dist/components/xv-date-picker.js +1 -1
  73. package/dist/components/xv-datepicker.js +1 -1
  74. package/dist/components/xv-dropdown-v2-item.js +1 -1
  75. package/dist/components/xv-dropdown-v2.js +1 -1
  76. package/dist/components/xv-file-uploader.js +1 -1
  77. package/dist/components/xv-footer.js +1 -1
  78. package/dist/components/xv-geo-map-v2.js +1 -1
  79. package/dist/components/xv-header-next.js +1 -1
  80. package/dist/components/xv-header.js +1 -1
  81. package/dist/components/xv-image-viewer.js +1 -1
  82. package/dist/components/xv-link-v2.js +1 -1
  83. package/dist/components/xv-loader-v2.js +1 -1
  84. package/dist/components/xv-login-modal.js +1 -1
  85. package/dist/components/xv-mega-menu-next.js +1 -1
  86. package/dist/components/xv-mega-menu.js +1 -1
  87. package/dist/components/xv-modal-v2.js +1 -1
  88. package/dist/components/xv-notification-v2.js +1 -1
  89. package/dist/components/xv-number-input-v2.js +1 -1
  90. package/dist/components/xv-overflow-menu-v2-item.js +1 -1
  91. package/dist/components/xv-overflow-menu-v2.js +1 -1
  92. package/dist/components/xv-pagination.js +1 -1
  93. package/dist/components/xv-progress-indicator-v2-item.js +1 -1
  94. package/dist/components/xv-progress-indicator-v2.js +1 -1
  95. package/dist/components/xv-radio-v2.js +1 -1
  96. package/dist/components/xv-slider-v2.js +1 -1
  97. package/dist/components/xv-tab-v2.js +1 -1
  98. package/dist/components/{xv-table-v2-row.d.ts → xv-table-cell.d.ts} +4 -4
  99. package/dist/components/xv-table-cell.js +1 -0
  100. package/dist/components/{xv-table-v2-cell.d.ts → xv-table-row.d.ts} +4 -4
  101. package/dist/components/xv-table-row.js +1 -0
  102. package/dist/components/{xv-table-v2.d.ts → xv-table.d.ts} +4 -4
  103. package/dist/components/xv-table.js +1 -0
  104. package/dist/components/xv-tabs-v2.js +1 -1
  105. package/dist/components/xv-tag-combobox.js +1 -1
  106. package/dist/components/xv-tag-v2.js +1 -1
  107. package/dist/components/xv-text-input-v2.js +1 -1
  108. package/dist/components/xv-textarea.js +1 -1
  109. package/dist/components/xv-tile.js +1 -1
  110. package/dist/components/xv-toggle-tip.js +1 -1
  111. package/dist/components/xv-toggle.js +1 -1
  112. package/dist/components/xv-tooltip-v2.js +1 -1
  113. package/dist/custom-elements.json +1765 -294
  114. package/dist/docs.json +2749 -443
  115. package/dist/esm/{index-B6cY-_U1.js → index-ClusqSO5.js} +1 -1
  116. package/dist/esm/{index-Bu8SrOeR.js → index-DJC3-dS3.js} +15 -10
  117. package/dist/esm/index.js +2 -2
  118. package/dist/esm/loader.js +3 -3
  119. package/dist/esm/{xv-accordion-v2_50.entry.js → xv-accordion-v2_49.entry.js} +1527 -144
  120. package/dist/esm/xv-header-next.entry.js +2 -2
  121. package/dist/esm/xv-mega-menu-next.entry.js +2 -2
  122. package/dist/esm/xv-webcomponents.js +4 -4
  123. package/dist/react/components.d.ts +3 -4
  124. package/dist/react/components.js +3 -4
  125. package/dist/react/{xv-table-v2-expand.d.ts → xv-table-cell.d.ts} +3 -3
  126. package/dist/react/xv-table-cell.js +14 -0
  127. package/dist/react/{xv-table-v2.d.ts → xv-table-row.d.ts} +3 -3
  128. package/dist/react/{xv-table-v2.js → xv-table-row.js} +5 -5
  129. package/dist/react/xv-table.d.ts +18 -0
  130. package/dist/react/xv-table.js +22 -0
  131. package/dist/types/components/xv-table/xv-table-cell/xv-table-cell.d.ts +43 -8
  132. package/dist/types/components/xv-table/xv-table-row/xv-table-row.d.ts +57 -18
  133. package/dist/types/components/xv-table/xv-table.d.ts +298 -9
  134. package/dist/types/components/xv-table/xv-table.model.d.ts +78 -0
  135. package/dist/types/components/xv-table/xv-table.utils.d.ts +47 -0
  136. package/dist/types/components.d.ts +899 -118
  137. package/dist/types/stencil-public-runtime.d.ts +61 -55
  138. package/dist/types/utils/table-layout.d.ts +7 -0
  139. package/dist/vscode-data.json +347 -56
  140. package/dist/xv-webcomponents/index.esm.js +1 -1
  141. package/dist/xv-webcomponents/{p-1ffb0b4f.entry.js → p-0c30d09f.entry.js} +1 -1
  142. package/dist/xv-webcomponents/{p-eb9d7750.entry.js → p-6b58979e.entry.js} +2 -2
  143. package/dist/xv-webcomponents/{p-Bu8SrOeR.js → p-DJC3-dS3.js} +2 -2
  144. package/dist/xv-webcomponents/{p-DB4KqDJz.js → p-DSFVdw3w.js} +1 -1
  145. package/dist/xv-webcomponents/{p-d4d26ff2.entry.js → p-c4173686.entry.js} +1 -1
  146. package/dist/xv-webcomponents/xv-webcomponents.esm.js +1 -1
  147. package/package.json +139 -139
  148. package/dist/collection/components/xv-table/_vars.js +0 -2
  149. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.css +0 -58
  150. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.js +0 -75
  151. package/dist/components/p-CHtssNO9.js +0 -1
  152. package/dist/components/p-CILNPUHH.js +0 -1
  153. package/dist/components/p-DVZ2BlIP.js +0 -1
  154. package/dist/components/p-bdaoJ1tx.js +0 -1
  155. package/dist/components/xv-table-v2-cell.js +0 -1
  156. package/dist/components/xv-table-v2-expand.d.ts +0 -11
  157. package/dist/components/xv-table-v2-expand.js +0 -1
  158. package/dist/components/xv-table-v2-row.js +0 -1
  159. package/dist/components/xv-table-v2.js +0 -1
  160. package/dist/react/xv-table-v2-cell.d.ts +0 -12
  161. package/dist/react/xv-table-v2-cell.js +0 -14
  162. package/dist/react/xv-table-v2-expand.js +0 -14
  163. package/dist/react/xv-table-v2-row.d.ts +0 -13
  164. package/dist/react/xv-table-v2-row.js +0 -17
  165. package/dist/types/components/xv-table/_vars.d.ts +0 -15
  166. package/dist/types/components/xv-table/xv-table-expand/xv-table-expand.d.ts +0 -8
@@ -16,7 +16,7 @@ import { NOTIFICATION_VARIANTS_STR } from "./components/xv-notification/_vars";
16
16
  import { OverflowMenuEvent, OverflowMenuVariant } from "./components/xv-overflow-menu/_vars";
17
17
  import { XvPaginationVariant } from "./components/xv-pagination/xv-pagination.model";
18
18
  import { PROGRESS_ITEM_STATUS } from "./components/xv-progress-indicator/_vars";
19
- import { SelectRowDto, XVTableSortDto } from "./components/xv-table/_vars";
19
+ import { XvCellAlign, XvCellOverflow, XvTableColumn, XvTableExpandedDetail, XvTableExpandMode, XvTableLayout, XvTableMode, XvTablePage, XvTableRowClickDetail, XvTableRowOrder, XvTableSelectionDetail, XvTableSelectionMode, XvTableSort } from "./components/xv-table/xv-table.model";
20
20
  import { TABS_VATIANT_STR } from "./components/xv-tabs/_vars";
21
21
  import { TagComboboxOptIn } from "./components/xv-tag-combobox/xv-tag-combobox.config";
22
22
  import { Placement } from "@popperjs/core";
@@ -31,7 +31,7 @@ export { NOTIFICATION_VARIANTS_STR } from "./components/xv-notification/_vars";
31
31
  export { OverflowMenuEvent, OverflowMenuVariant } from "./components/xv-overflow-menu/_vars";
32
32
  export { XvPaginationVariant } from "./components/xv-pagination/xv-pagination.model";
33
33
  export { PROGRESS_ITEM_STATUS } from "./components/xv-progress-indicator/_vars";
34
- export { SelectRowDto, XVTableSortDto } from "./components/xv-table/_vars";
34
+ export { XvCellAlign, XvCellOverflow, XvTableColumn, XvTableExpandedDetail, XvTableExpandMode, XvTableLayout, XvTableMode, XvTablePage, XvTableRowClickDetail, XvTableRowOrder, XvTableSelectionDetail, XvTableSelectionMode, XvTableSort } from "./components/xv-table/xv-table.model";
35
35
  export { TABS_VATIANT_STR } from "./components/xv-tabs/_vars";
36
36
  export { TagComboboxOptIn } from "./components/xv-tag-combobox/xv-tag-combobox.config";
37
37
  export { Placement } from "@popperjs/core";
@@ -1079,42 +1079,395 @@ export namespace Components {
1079
1079
  "loading": boolean;
1080
1080
  "name"?: number | string;
1081
1081
  }
1082
- interface XvTableV2 {
1083
- "colsSize"?: (string | null)[];
1084
- "hover"?: boolean;
1085
- "loading"?: boolean;
1082
+ /**
1083
+ * A data table built on CSS grid with `subgrid` rows, so a row keeps its own box while its cells
1084
+ * stay aligned to the table's columns and an expanded panel can span the full width.
1085
+ * `columns` always describes the structure — widths, order, sorting, resizing, hiding and the
1086
+ * stored layout all read from it. Rows come either from `rows` as data, or as slotted
1087
+ * `xv-table-row` children when the cells hold arbitrary markup.
1088
+ */
1089
+ interface XvTable {
1090
+ /**
1091
+ * Stretches the table to the full width of its container.
1092
+ * @default false
1093
+ */
1094
+ "block": boolean;
1095
+ /**
1096
+ * Clears the selection.
1097
+ */
1098
+ "clearSelection": () => Promise<void>;
1099
+ /**
1100
+ * Column definitions. Accepts its JSON string form so it is settable from plain markup.
1101
+ * @default []
1102
+ */
1103
+ "columns": string | XvTableColumn[];
1104
+ /**
1105
+ * Tooltip on the column picker trigger.
1106
+ * @default 'Columns'
1107
+ */
1108
+ "columnsLabel": string;
1109
+ /**
1110
+ * Supporting text under the title.
1111
+ * @default ''
1112
+ */
1113
+ "description": string;
1114
+ /**
1115
+ * Shown when there are no rows.
1116
+ * @default ''
1117
+ */
1118
+ "emptyLabel": string;
1119
+ /**
1120
+ * Accessible name of a row's expand toggle.
1121
+ * @default 'Toggle row'
1122
+ */
1123
+ "expandLabel": string;
1124
+ /**
1125
+ * Whether rows expand, and whether more than one may be open.
1126
+ * @default 'none'
1127
+ */
1128
+ "expandMode": XvTableExpandMode;
1129
+ /**
1130
+ * Values of the expanded rows.
1131
+ * @default []
1132
+ */
1133
+ "expanded": string | unknown[];
1134
+ /**
1135
+ * The layout as it would be stored: only the deviations from the declared columns.
1136
+ */
1137
+ "getLayout": () => Promise<XvTableLayout>;
1138
+ /**
1139
+ * Highlights a row on pointer hover.
1140
+ * @default false
1141
+ */
1142
+ "hover": boolean;
1143
+ /**
1144
+ * Title above the table.
1145
+ * @default ''
1146
+ */
1147
+ "label": string;
1148
+ /**
1149
+ * Controlled column layout. Overrides whatever is stored.
1150
+ * @default null
1151
+ */
1152
+ "layout": string | XvTableLayout;
1153
+ /**
1154
+ * Covers the body with a loading state.
1155
+ * @default false
1156
+ */
1157
+ "loading": boolean;
1158
+ /**
1159
+ * Locale used for sorting and cell formatting. Falls back to the nearest `[lang]` ancestor.
1160
+ * @default ''
1161
+ */
1162
+ "locale": string;
1163
+ /**
1164
+ * Width below which the table scrolls instead of squeezing, at any viewport. Left unset, a table only stops squeezing below 1180px, where it scrolls at the width its columns declared.
1165
+ * @default 0
1166
+ */
1167
+ "minWidth": number;
1168
+ /**
1169
+ * Current page, 1-based.
1170
+ * @default 1
1171
+ */
1172
+ "page": number;
1173
+ /**
1174
+ * Rows per page.
1175
+ * @default 10
1176
+ */
1177
+ "pageSize": number;
1178
+ /**
1179
+ * Page size choices. Accepts a comma-separated attribute.
1180
+ * @default [10, 20, 30, 40, 50, 100]
1181
+ */
1182
+ "pageSizeOptions": string | number[];
1086
1183
  /**
1184
+ * `client` slices the `rows` prop; `server` only emits `pageChange`.
1185
+ * @default 'none'
1186
+ */
1187
+ "paginationMode": XvTableMode;
1188
+ /**
1189
+ * Accessible name of a row's drag grip.
1190
+ * @default 'Drag to reorder'
1191
+ */
1192
+ "reorderLabel": string;
1193
+ /**
1194
+ * Allows dragging column headers into a new order. Off by default, like `resizable`.
1195
+ * @default false
1196
+ */
1197
+ "reorderable": boolean;
1198
+ /**
1199
+ * Text of the button that restores the declared column layout.
1200
+ * @default 'Reset'
1201
+ */
1202
+ "resetLabel": string;
1203
+ /**
1204
+ * Drops the stored layout and returns to the declared columns.
1205
+ */
1206
+ "resetLayout": () => Promise<void>;
1207
+ /**
1208
+ * Allows dragging column edges. Off by default: no handle is rendered and nothing is bound until it is switched on. A column may switch itself off, never on.
1209
+ * @default false
1210
+ */
1211
+ "resizable": boolean;
1212
+ /**
1213
+ * Emits `rowClick` when a row is clicked outside an interactive element.
1214
+ * @default false
1215
+ */
1216
+ "rowClickable": boolean;
1217
+ /**
1218
+ * Property of a row object that identifies it in selection and expansion payloads.
1219
+ * @default 'id'
1220
+ */
1221
+ "rowKey": string;
1222
+ /**
1223
+ * Whether the whole row drags, or only a grip in a leading control cell.
1224
+ * @default 'icon'
1225
+ */
1226
+ "rowReorderHandle": 'icon' | 'row';
1227
+ /**
1228
+ * Allows dragging rows into a new order. Off by default: nothing is bound and no handle is rendered until it is switched on.
1229
+ * @default false
1230
+ */
1231
+ "rowReorderable": boolean;
1232
+ /**
1233
+ * Row data. Ignored when `xv-table-row` children are slotted.
1234
+ * @default []
1235
+ */
1236
+ "rows": string | any[];
1237
+ /**
1238
+ * Selects every selectable row.
1239
+ */
1240
+ "selectAll": () => Promise<void>;
1241
+ /**
1242
+ * Values of the selected rows.
1243
+ * @default []
1244
+ */
1245
+ "selected": string | unknown[];
1246
+ /**
1247
+ * Text of the batch bar counter. `{count}` is replaced with the number of selected rows.
1248
+ * @default ''
1249
+ */
1250
+ "selectedLabel": string;
1251
+ /**
1252
+ * `multiple` renders checkboxes, `single` renders radios.
1253
+ * @default 'none'
1254
+ */
1255
+ "selection": XvTableSelectionMode;
1256
+ /**
1257
+ * Row height ladder.
1087
1258
  * @default SIZE_VAR.MD
1088
1259
  */
1089
1260
  "size": SIZE_VAR_STR;
1261
+ /**
1262
+ * Placeholder rows drawn while `loading`. Zero draws a spinner instead.
1263
+ * @default 0
1264
+ */
1265
+ "skeletonRows": number;
1266
+ /**
1267
+ * Active sort, as `asc(field)` / `desc(field)` or an object.
1268
+ * @default ''
1269
+ */
1270
+ "sortBy": string | XvTableSort;
1271
+ /**
1272
+ * `none` makes headers inert whatever the column says; `client` sorts the `rows` prop itself; `server` offers the affordance and only emits `sortChange` for the consumer to reload.
1273
+ * @default 'none'
1274
+ */
1275
+ "sortMode": XvTableMode;
1276
+ /**
1277
+ * Keeps the header visible while the body scrolls.
1278
+ * @default false
1279
+ */
1280
+ "stickyHeader": boolean;
1281
+ /**
1282
+ * Persists the column layout under this key. Empty means the layout is not remembered.
1283
+ * @default ''
1284
+ */
1285
+ "storageKey": string;
1286
+ /**
1287
+ * Scopes the stored layout to a user.
1288
+ * @default 'anonymous'
1289
+ */
1290
+ "storageOwner": string;
1291
+ /**
1292
+ * Total row count, for `server` pagination.
1293
+ * @default 0
1294
+ */
1295
+ "total": number;
1090
1296
  }
1091
- interface XvTableV2Cell {
1092
- "align"?: 'left' | 'right' | 'center';
1093
- "multiline"?: boolean;
1094
- "name"?: string;
1095
- "sort"?: XV_SORT_DIR | '';
1297
+ /**
1298
+ * One cell of a table row. It holds arbitrary markup — buttons, links, tags, nested components —
1299
+ * which is why the table stays composed rather than driven only by data.
1300
+ * In a header row it also carries the column affordances: the sort arrow, the drag grip and the
1301
+ * resize handle. The table renders this same component in both modes, so a header written as
1302
+ * markup can do everything a header built from `columns` can.
1303
+ */
1304
+ interface XvTableCell {
1305
+ /**
1306
+ * Horizontal alignment of the content.
1307
+ * @default 'start'
1308
+ */
1309
+ "align": XvCellAlign;
1310
+ /**
1311
+ * Lines kept before clamping, when `overflow` is `clamp`.
1312
+ * @default 2
1313
+ */
1314
+ "clampLines": number;
1315
+ /**
1316
+ * Column this cell belongs to. Identifies it for sorting, resizing and the stored layout.
1317
+ * @default ''
1318
+ */
1319
+ "columnId": string;
1320
+ /**
1321
+ * Renders the cell as a column header. Set by the table from the row it sits in.
1322
+ * @default false
1323
+ */
1324
+ "header": boolean;
1325
+ /**
1326
+ * Lets the column picker hide this column. A header cell only.
1327
+ * @default false
1328
+ */
1329
+ "hideable": boolean;
1330
+ /**
1331
+ * How content wider than the column behaves.
1332
+ * @default 'ellipsis'
1333
+ */
1334
+ "overflow": XvCellOverflow;
1335
+ /**
1336
+ * Accessible name of the drag grip.
1337
+ * @default 'Drag to reorder'
1338
+ */
1339
+ "reorderLabel": string;
1340
+ /**
1341
+ * Offers the drag grip. A header cell only.
1342
+ * @default false
1343
+ */
1344
+ "reorderable": boolean;
1345
+ /**
1346
+ * Offers the resize handle. A header cell only.
1347
+ * @default false
1348
+ */
1349
+ "resizable": boolean;
1350
+ /**
1351
+ * Direction currently sorted by; empty when this column is not the active one.
1352
+ * @default ''
1353
+ */
1354
+ "sortDirection": XV_SORT_DIR | '';
1355
+ /**
1356
+ * Offers the sort affordance. A header cell only.
1357
+ * @default false
1358
+ */
1359
+ "sortable": boolean;
1360
+ /**
1361
+ * Tooltip shown on hover. Only a cell that sets it pays for the tooltip component.
1362
+ * @default ''
1363
+ */
1364
+ "tooltip": string;
1365
+ /**
1366
+ * Column width. Read off the header row when the table has no `columns`. Any CSS length.
1367
+ * @default ''
1368
+ */
1369
+ "width": string;
1096
1370
  }
1097
- interface XvTableV2Expand {
1371
+ /**
1372
+ * One row of a table. Everything it needs is pushed down by `xv-table`, so it never reads the
1373
+ * table's attributes itself — the old row did that on `slotchange` only and went stale.
1374
+ */
1375
+ interface XvTableRow {
1098
1376
  /**
1377
+ * Blocks selection and expansion.
1099
1378
  * @default false
1100
1379
  */
1101
1380
  "disabled": boolean;
1102
1381
  /**
1382
+ * Accessible name of the expand toggle. Set by the table.
1383
+ * @default 'Toggle row'
1384
+ */
1385
+ "expandLabel": string;
1386
+ /**
1387
+ * Whether the row can be expanded. Set by the table.
1388
+ * @default 'none'
1389
+ */
1390
+ "expandMode": XvTableExpandMode;
1391
+ /**
1392
+ * Whether this row has anything to expand. Set by the table.
1103
1393
  * @default false
1104
1394
  */
1105
- "open": boolean;
1106
- }
1107
- interface XvTableV2Row {
1108
- "checked"?: SelectRowDto['checked'];
1109
- "disabled"?: boolean;
1110
- "header"?: boolean;
1111
- "hover"?: boolean;
1112
- "name"?: SelectRowDto['name'];
1113
- "partial"?: SelectRowDto['partial'];
1114
- "readonly"?: boolean;
1115
- "required"?: boolean;
1116
- "value"?: SelectRowDto['value'];
1117
- "variant"?: 'checkbox' | 'radio' | '';
1395
+ "expandable": boolean;
1396
+ /**
1397
+ * Whether the row's expand panel is open.
1398
+ * @default false
1399
+ */
1400
+ "expanded": boolean;
1401
+ /**
1402
+ * Renders the row as a subtotal or grouping row: no controls, accented background.
1403
+ * @default false
1404
+ */
1405
+ "group": boolean;
1406
+ /**
1407
+ * Whether the row carries `slot="expand"` content. Set by the table.
1408
+ * @default false
1409
+ */
1410
+ "hasPanel": boolean;
1411
+ /**
1412
+ * Marks the row as the table's header. Its cells supply the column labels.
1413
+ * @default false
1414
+ */
1415
+ "header": boolean;
1416
+ /**
1417
+ * Highlights the row on pointer hover. Set by the table.
1418
+ * @default false
1419
+ */
1420
+ "hover": boolean;
1421
+ /**
1422
+ * Value of the row this one belongs to. Child rows are siblings in the same grid, so they keep the table's columns instead of living in a panel of their own.
1423
+ * @default ''
1424
+ */
1425
+ "parent": string;
1426
+ /**
1427
+ * Indeterminate state of the header row's select-all checkbox.
1428
+ * @default false
1429
+ */
1430
+ "partial": boolean;
1431
+ /**
1432
+ * Accessible name of the drag grip. Set by the table.
1433
+ * @default 'Drag to reorder'
1434
+ */
1435
+ "reorderLabel": string;
1436
+ /**
1437
+ * Whether the whole row drags, or only its grip. Set by the table.
1438
+ * @default 'icon'
1439
+ */
1440
+ "rowReorderHandle": 'icon' | 'row';
1441
+ /**
1442
+ * Whether this row can be dragged into a new position. Set by the table.
1443
+ * @default false
1444
+ */
1445
+ "rowReorderable": boolean;
1446
+ /**
1447
+ * Whether the row offers its selection control. A header with no rows under it has nothing to pick.
1448
+ * @default true
1449
+ */
1450
+ "selectable": boolean;
1451
+ /**
1452
+ * Whether the row is selected.
1453
+ * @default false
1454
+ */
1455
+ "selected": boolean;
1456
+ /**
1457
+ * Selection control rendered in the leading cell. Set by the table.
1458
+ * @default 'none'
1459
+ */
1460
+ "selectionMode": XvTableSelectionMode;
1461
+ /**
1462
+ * Row height ladder. Set by the table.
1463
+ * @default SIZE_VAR.MD
1464
+ */
1465
+ "size": SIZE_VAR_STR;
1466
+ /**
1467
+ * Identifies the row in selection and expansion payloads.
1468
+ * @default ''
1469
+ */
1470
+ "value": string | number;
1118
1471
  }
1119
1472
  interface XvTabsV2 {
1120
1473
  /**
@@ -1466,13 +1819,9 @@ export interface XvSliderV2CustomEvent<T> extends CustomEvent<T> {
1466
1819
  detail: T;
1467
1820
  target: HTMLXvSliderV2Element;
1468
1821
  }
1469
- export interface XvTableV2CellCustomEvent<T> extends CustomEvent<T> {
1822
+ export interface XvTableCustomEvent<T> extends CustomEvent<T> {
1470
1823
  detail: T;
1471
- target: HTMLXvTableV2CellElement;
1472
- }
1473
- export interface XvTableV2RowCustomEvent<T> extends CustomEvent<T> {
1474
- detail: T;
1475
- target: HTMLXvTableV2RowElement;
1824
+ target: HTMLXvTableElement;
1476
1825
  }
1477
1826
  export interface XvTabsV2CustomEvent<T> extends CustomEvent<T> {
1478
1827
  detail: T;
@@ -2131,52 +2480,58 @@ declare global {
2131
2480
  prototype: HTMLXvTabV2Element;
2132
2481
  new (): HTMLXvTabV2Element;
2133
2482
  };
2134
- interface HTMLXvTableV2Element extends Components.XvTableV2, HTMLStencilElement {
2135
- }
2136
- var HTMLXvTableV2Element: {
2137
- prototype: HTMLXvTableV2Element;
2138
- new (): HTMLXvTableV2Element;
2139
- };
2140
- interface HTMLXvTableV2CellElementEventMap {
2141
- "sortChange": XVTableSortDto;
2483
+ interface HTMLXvTableElementEventMap {
2484
+ "sortChange": XvTableSort;
2485
+ "selectedChange": XvTableSelectionDetail;
2486
+ "expandedChange": XvTableExpandedDetail;
2487
+ "pageChange": XvTablePage;
2488
+ "layoutChange": XvTableLayout;
2489
+ "rowClick": XvTableRowClickDetail;
2490
+ "rowOrderChange": XvTableRowOrder;
2142
2491
  }
2143
- interface HTMLXvTableV2CellElement extends Components.XvTableV2Cell, HTMLStencilElement {
2144
- addEventListener<K extends keyof HTMLXvTableV2CellElementEventMap>(type: K, listener: (this: HTMLXvTableV2CellElement, ev: XvTableV2CellCustomEvent<HTMLXvTableV2CellElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2492
+ /**
2493
+ * A data table built on CSS grid with `subgrid` rows, so a row keeps its own box while its cells
2494
+ * stay aligned to the table's columns and an expanded panel can span the full width.
2495
+ * `columns` always describes the structure — widths, order, sorting, resizing, hiding and the
2496
+ * stored layout all read from it. Rows come either from `rows` as data, or as slotted
2497
+ * `xv-table-row` children when the cells hold arbitrary markup.
2498
+ */
2499
+ interface HTMLXvTableElement extends Components.XvTable, HTMLStencilElement {
2500
+ addEventListener<K extends keyof HTMLXvTableElementEventMap>(type: K, listener: (this: HTMLXvTableElement, ev: XvTableCustomEvent<HTMLXvTableElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2145
2501
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2146
2502
  addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2147
2503
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2148
- removeEventListener<K extends keyof HTMLXvTableV2CellElementEventMap>(type: K, listener: (this: HTMLXvTableV2CellElement, ev: XvTableV2CellCustomEvent<HTMLXvTableV2CellElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2504
+ removeEventListener<K extends keyof HTMLXvTableElementEventMap>(type: K, listener: (this: HTMLXvTableElement, ev: XvTableCustomEvent<HTMLXvTableElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2149
2505
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2150
2506
  removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2151
2507
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2152
2508
  }
2153
- var HTMLXvTableV2CellElement: {
2154
- prototype: HTMLXvTableV2CellElement;
2155
- new (): HTMLXvTableV2CellElement;
2509
+ var HTMLXvTableElement: {
2510
+ prototype: HTMLXvTableElement;
2511
+ new (): HTMLXvTableElement;
2156
2512
  };
2157
- interface HTMLXvTableV2ExpandElement extends Components.XvTableV2Expand, HTMLStencilElement {
2513
+ /**
2514
+ * One cell of a table row. It holds arbitrary markup — buttons, links, tags, nested components —
2515
+ * which is why the table stays composed rather than driven only by data.
2516
+ * In a header row it also carries the column affordances: the sort arrow, the drag grip and the
2517
+ * resize handle. The table renders this same component in both modes, so a header written as
2518
+ * markup can do everything a header built from `columns` can.
2519
+ */
2520
+ interface HTMLXvTableCellElement extends Components.XvTableCell, HTMLStencilElement {
2158
2521
  }
2159
- var HTMLXvTableV2ExpandElement: {
2160
- prototype: HTMLXvTableV2ExpandElement;
2161
- new (): HTMLXvTableV2ExpandElement;
2522
+ var HTMLXvTableCellElement: {
2523
+ prototype: HTMLXvTableCellElement;
2524
+ new (): HTMLXvTableCellElement;
2162
2525
  };
2163
- interface HTMLXvTableV2RowElementEventMap {
2164
- "checkedChange": SelectRowDto;
2165
- "selectRow": SelectRowDto;
2166
- }
2167
- interface HTMLXvTableV2RowElement extends Components.XvTableV2Row, HTMLStencilElement {
2168
- addEventListener<K extends keyof HTMLXvTableV2RowElementEventMap>(type: K, listener: (this: HTMLXvTableV2RowElement, ev: XvTableV2RowCustomEvent<HTMLXvTableV2RowElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2169
- addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2170
- addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2171
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2172
- removeEventListener<K extends keyof HTMLXvTableV2RowElementEventMap>(type: K, listener: (this: HTMLXvTableV2RowElement, ev: XvTableV2RowCustomEvent<HTMLXvTableV2RowElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2173
- removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2174
- removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2175
- removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2526
+ /**
2527
+ * One row of a table. Everything it needs is pushed down by `xv-table`, so it never reads the
2528
+ * table's attributes itself — the old row did that on `slotchange` only and went stale.
2529
+ */
2530
+ interface HTMLXvTableRowElement extends Components.XvTableRow, HTMLStencilElement {
2176
2531
  }
2177
- var HTMLXvTableV2RowElement: {
2178
- prototype: HTMLXvTableV2RowElement;
2179
- new (): HTMLXvTableV2RowElement;
2532
+ var HTMLXvTableRowElement: {
2533
+ prototype: HTMLXvTableRowElement;
2534
+ new (): HTMLXvTableRowElement;
2180
2535
  };
2181
2536
  interface HTMLXvTabsV2ElementEventMap {
2182
2537
  "activeChange": number | string;
@@ -2366,10 +2721,9 @@ declare global {
2366
2721
  "xv-radio-v2": HTMLXvRadioV2Element;
2367
2722
  "xv-slider-v2": HTMLXvSliderV2Element;
2368
2723
  "xv-tab-v2": HTMLXvTabV2Element;
2369
- "xv-table-v2": HTMLXvTableV2Element;
2370
- "xv-table-v2-cell": HTMLXvTableV2CellElement;
2371
- "xv-table-v2-expand": HTMLXvTableV2ExpandElement;
2372
- "xv-table-v2-row": HTMLXvTableV2RowElement;
2724
+ "xv-table": HTMLXvTableElement;
2725
+ "xv-table-cell": HTMLXvTableCellElement;
2726
+ "xv-table-row": HTMLXvTableRowElement;
2373
2727
  "xv-tabs-v2": HTMLXvTabsV2Element;
2374
2728
  "xv-tag-combobox": HTMLXvTagComboboxElement;
2375
2729
  "xv-tag-v2": HTMLXvTagV2Element;
@@ -3499,45 +3853,407 @@ declare namespace LocalJSX {
3499
3853
  "loading"?: boolean;
3500
3854
  "name"?: number | string;
3501
3855
  }
3502
- interface XvTableV2 {
3503
- "colsSize"?: (string | null)[];
3856
+ /**
3857
+ * A data table built on CSS grid with `subgrid` rows, so a row keeps its own box while its cells
3858
+ * stay aligned to the table's columns and an expanded panel can span the full width.
3859
+ * `columns` always describes the structure — widths, order, sorting, resizing, hiding and the
3860
+ * stored layout all read from it. Rows come either from `rows` as data, or as slotted
3861
+ * `xv-table-row` children when the cells hold arbitrary markup.
3862
+ */
3863
+ interface XvTable {
3864
+ /**
3865
+ * Stretches the table to the full width of its container.
3866
+ * @default false
3867
+ */
3868
+ "block"?: boolean;
3869
+ /**
3870
+ * Column definitions. Accepts its JSON string form so it is settable from plain markup.
3871
+ * @default []
3872
+ */
3873
+ "columns"?: string | XvTableColumn[];
3874
+ /**
3875
+ * Tooltip on the column picker trigger.
3876
+ * @default 'Columns'
3877
+ */
3878
+ "columnsLabel"?: string;
3879
+ /**
3880
+ * Supporting text under the title.
3881
+ * @default ''
3882
+ */
3883
+ "description"?: string;
3884
+ /**
3885
+ * Shown when there are no rows.
3886
+ * @default ''
3887
+ */
3888
+ "emptyLabel"?: string;
3889
+ /**
3890
+ * Accessible name of a row's expand toggle.
3891
+ * @default 'Toggle row'
3892
+ */
3893
+ "expandLabel"?: string;
3894
+ /**
3895
+ * Whether rows expand, and whether more than one may be open.
3896
+ * @default 'none'
3897
+ */
3898
+ "expandMode"?: XvTableExpandMode;
3899
+ /**
3900
+ * Values of the expanded rows.
3901
+ * @default []
3902
+ */
3903
+ "expanded"?: string | unknown[];
3904
+ /**
3905
+ * Highlights a row on pointer hover.
3906
+ * @default false
3907
+ */
3504
3908
  "hover"?: boolean;
3909
+ /**
3910
+ * Title above the table.
3911
+ * @default ''
3912
+ */
3913
+ "label"?: string;
3914
+ /**
3915
+ * Controlled column layout. Overrides whatever is stored.
3916
+ * @default null
3917
+ */
3918
+ "layout"?: string | XvTableLayout;
3919
+ /**
3920
+ * Covers the body with a loading state.
3921
+ * @default false
3922
+ */
3505
3923
  "loading"?: boolean;
3506
3924
  /**
3925
+ * Locale used for sorting and cell formatting. Falls back to the nearest `[lang]` ancestor.
3926
+ * @default ''
3927
+ */
3928
+ "locale"?: string;
3929
+ /**
3930
+ * Width below which the table scrolls instead of squeezing, at any viewport. Left unset, a table only stops squeezing below 1180px, where it scrolls at the width its columns declared.
3931
+ * @default 0
3932
+ */
3933
+ "minWidth"?: number;
3934
+ /**
3935
+ * Emitted when the set of expanded rows changes.
3936
+ */
3937
+ "onExpandedChange"?: (event: XvTableCustomEvent<XvTableExpandedDetail>) => void;
3938
+ /**
3939
+ * Emitted after a column is resized, reordered, hidden or reset.
3940
+ */
3941
+ "onLayoutChange"?: (event: XvTableCustomEvent<XvTableLayout>) => void;
3942
+ /**
3943
+ * Emitted when the page or the page size changes.
3944
+ */
3945
+ "onPageChange"?: (event: XvTableCustomEvent<XvTablePage>) => void;
3946
+ /**
3947
+ * Emitted when a row is clicked, while `rowClickable` is set.
3948
+ */
3949
+ "onRowClick"?: (event: XvTableCustomEvent<XvTableRowClickDetail>) => void;
3950
+ /**
3951
+ * Emitted when a row is dropped in a new position. The table does not move the row itself — reorder the data and it re-renders, which keeps the DOM and the data from drifting apart.
3952
+ */
3953
+ "onRowOrderChange"?: (event: XvTableCustomEvent<XvTableRowOrder>) => void;
3954
+ /**
3955
+ * Emitted when the set of selected rows changes. Named after the `selected` prop it reports: `selectionChange` is refused by Stencil as a native DOM event name.
3956
+ */
3957
+ "onSelectedChange"?: (event: XvTableCustomEvent<XvTableSelectionDetail>) => void;
3958
+ /**
3959
+ * Emitted when a sortable header is activated.
3960
+ */
3961
+ "onSortChange"?: (event: XvTableCustomEvent<XvTableSort>) => void;
3962
+ /**
3963
+ * Current page, 1-based.
3964
+ * @default 1
3965
+ */
3966
+ "page"?: number;
3967
+ /**
3968
+ * Rows per page.
3969
+ * @default 10
3970
+ */
3971
+ "pageSize"?: number;
3972
+ /**
3973
+ * Page size choices. Accepts a comma-separated attribute.
3974
+ * @default [10, 20, 30, 40, 50, 100]
3975
+ */
3976
+ "pageSizeOptions"?: string | number[];
3977
+ /**
3978
+ * `client` slices the `rows` prop; `server` only emits `pageChange`.
3979
+ * @default 'none'
3980
+ */
3981
+ "paginationMode"?: XvTableMode;
3982
+ /**
3983
+ * Accessible name of a row's drag grip.
3984
+ * @default 'Drag to reorder'
3985
+ */
3986
+ "reorderLabel"?: string;
3987
+ /**
3988
+ * Allows dragging column headers into a new order. Off by default, like `resizable`.
3989
+ * @default false
3990
+ */
3991
+ "reorderable"?: boolean;
3992
+ /**
3993
+ * Text of the button that restores the declared column layout.
3994
+ * @default 'Reset'
3995
+ */
3996
+ "resetLabel"?: string;
3997
+ /**
3998
+ * Allows dragging column edges. Off by default: no handle is rendered and nothing is bound until it is switched on. A column may switch itself off, never on.
3999
+ * @default false
4000
+ */
4001
+ "resizable"?: boolean;
4002
+ /**
4003
+ * Emits `rowClick` when a row is clicked outside an interactive element.
4004
+ * @default false
4005
+ */
4006
+ "rowClickable"?: boolean;
4007
+ /**
4008
+ * Property of a row object that identifies it in selection and expansion payloads.
4009
+ * @default 'id'
4010
+ */
4011
+ "rowKey"?: string;
4012
+ /**
4013
+ * Whether the whole row drags, or only a grip in a leading control cell.
4014
+ * @default 'icon'
4015
+ */
4016
+ "rowReorderHandle"?: 'icon' | 'row';
4017
+ /**
4018
+ * Allows dragging rows into a new order. Off by default: nothing is bound and no handle is rendered until it is switched on.
4019
+ * @default false
4020
+ */
4021
+ "rowReorderable"?: boolean;
4022
+ /**
4023
+ * Row data. Ignored when `xv-table-row` children are slotted.
4024
+ * @default []
4025
+ */
4026
+ "rows"?: string | any[];
4027
+ /**
4028
+ * Values of the selected rows.
4029
+ * @default []
4030
+ */
4031
+ "selected"?: string | unknown[];
4032
+ /**
4033
+ * Text of the batch bar counter. `{count}` is replaced with the number of selected rows.
4034
+ * @default ''
4035
+ */
4036
+ "selectedLabel"?: string;
4037
+ /**
4038
+ * `multiple` renders checkboxes, `single` renders radios.
4039
+ * @default 'none'
4040
+ */
4041
+ "selection"?: XvTableSelectionMode;
4042
+ /**
4043
+ * Row height ladder.
3507
4044
  * @default SIZE_VAR.MD
3508
4045
  */
3509
4046
  "size"?: SIZE_VAR_STR;
4047
+ /**
4048
+ * Placeholder rows drawn while `loading`. Zero draws a spinner instead.
4049
+ * @default 0
4050
+ */
4051
+ "skeletonRows"?: number;
4052
+ /**
4053
+ * Active sort, as `asc(field)` / `desc(field)` or an object.
4054
+ * @default ''
4055
+ */
4056
+ "sortBy"?: string | XvTableSort;
4057
+ /**
4058
+ * `none` makes headers inert whatever the column says; `client` sorts the `rows` prop itself; `server` offers the affordance and only emits `sortChange` for the consumer to reload.
4059
+ * @default 'none'
4060
+ */
4061
+ "sortMode"?: XvTableMode;
4062
+ /**
4063
+ * Keeps the header visible while the body scrolls.
4064
+ * @default false
4065
+ */
4066
+ "stickyHeader"?: boolean;
4067
+ /**
4068
+ * Persists the column layout under this key. Empty means the layout is not remembered.
4069
+ * @default ''
4070
+ */
4071
+ "storageKey"?: string;
4072
+ /**
4073
+ * Scopes the stored layout to a user.
4074
+ * @default 'anonymous'
4075
+ */
4076
+ "storageOwner"?: string;
4077
+ /**
4078
+ * Total row count, for `server` pagination.
4079
+ * @default 0
4080
+ */
4081
+ "total"?: number;
3510
4082
  }
3511
- interface XvTableV2Cell {
3512
- "align"?: 'left' | 'right' | 'center';
3513
- "multiline"?: boolean;
3514
- "name"?: string;
3515
- "onSortChange"?: (event: XvTableV2CellCustomEvent<XVTableSortDto>) => void;
3516
- "sort"?: XV_SORT_DIR | '';
3517
- }
3518
- interface XvTableV2Expand {
4083
+ /**
4084
+ * One cell of a table row. It holds arbitrary markup — buttons, links, tags, nested components —
4085
+ * which is why the table stays composed rather than driven only by data.
4086
+ * In a header row it also carries the column affordances: the sort arrow, the drag grip and the
4087
+ * resize handle. The table renders this same component in both modes, so a header written as
4088
+ * markup can do everything a header built from `columns` can.
4089
+ */
4090
+ interface XvTableCell {
4091
+ /**
4092
+ * Horizontal alignment of the content.
4093
+ * @default 'start'
4094
+ */
4095
+ "align"?: XvCellAlign;
3519
4096
  /**
4097
+ * Lines kept before clamping, when `overflow` is `clamp`.
4098
+ * @default 2
4099
+ */
4100
+ "clampLines"?: number;
4101
+ /**
4102
+ * Column this cell belongs to. Identifies it for sorting, resizing and the stored layout.
4103
+ * @default ''
4104
+ */
4105
+ "columnId"?: string;
4106
+ /**
4107
+ * Renders the cell as a column header. Set by the table from the row it sits in.
3520
4108
  * @default false
3521
4109
  */
3522
- "disabled"?: boolean;
4110
+ "header"?: boolean;
3523
4111
  /**
4112
+ * Lets the column picker hide this column. A header cell only.
3524
4113
  * @default false
3525
4114
  */
3526
- "open"?: boolean;
4115
+ "hideable"?: boolean;
4116
+ /**
4117
+ * How content wider than the column behaves.
4118
+ * @default 'ellipsis'
4119
+ */
4120
+ "overflow"?: XvCellOverflow;
4121
+ /**
4122
+ * Accessible name of the drag grip.
4123
+ * @default 'Drag to reorder'
4124
+ */
4125
+ "reorderLabel"?: string;
4126
+ /**
4127
+ * Offers the drag grip. A header cell only.
4128
+ * @default false
4129
+ */
4130
+ "reorderable"?: boolean;
4131
+ /**
4132
+ * Offers the resize handle. A header cell only.
4133
+ * @default false
4134
+ */
4135
+ "resizable"?: boolean;
4136
+ /**
4137
+ * Direction currently sorted by; empty when this column is not the active one.
4138
+ * @default ''
4139
+ */
4140
+ "sortDirection"?: XV_SORT_DIR | '';
4141
+ /**
4142
+ * Offers the sort affordance. A header cell only.
4143
+ * @default false
4144
+ */
4145
+ "sortable"?: boolean;
4146
+ /**
4147
+ * Tooltip shown on hover. Only a cell that sets it pays for the tooltip component.
4148
+ * @default ''
4149
+ */
4150
+ "tooltip"?: string;
4151
+ /**
4152
+ * Column width. Read off the header row when the table has no `columns`. Any CSS length.
4153
+ * @default ''
4154
+ */
4155
+ "width"?: string;
3527
4156
  }
3528
- interface XvTableV2Row {
3529
- "checked"?: SelectRowDto['checked'];
4157
+ /**
4158
+ * One row of a table. Everything it needs is pushed down by `xv-table`, so it never reads the
4159
+ * table's attributes itself — the old row did that on `slotchange` only and went stale.
4160
+ */
4161
+ interface XvTableRow {
4162
+ /**
4163
+ * Blocks selection and expansion.
4164
+ * @default false
4165
+ */
3530
4166
  "disabled"?: boolean;
4167
+ /**
4168
+ * Accessible name of the expand toggle. Set by the table.
4169
+ * @default 'Toggle row'
4170
+ */
4171
+ "expandLabel"?: string;
4172
+ /**
4173
+ * Whether the row can be expanded. Set by the table.
4174
+ * @default 'none'
4175
+ */
4176
+ "expandMode"?: XvTableExpandMode;
4177
+ /**
4178
+ * Whether this row has anything to expand. Set by the table.
4179
+ * @default false
4180
+ */
4181
+ "expandable"?: boolean;
4182
+ /**
4183
+ * Whether the row's expand panel is open.
4184
+ * @default false
4185
+ */
4186
+ "expanded"?: boolean;
4187
+ /**
4188
+ * Renders the row as a subtotal or grouping row: no controls, accented background.
4189
+ * @default false
4190
+ */
4191
+ "group"?: boolean;
4192
+ /**
4193
+ * Whether the row carries `slot="expand"` content. Set by the table.
4194
+ * @default false
4195
+ */
4196
+ "hasPanel"?: boolean;
4197
+ /**
4198
+ * Marks the row as the table's header. Its cells supply the column labels.
4199
+ * @default false
4200
+ */
3531
4201
  "header"?: boolean;
4202
+ /**
4203
+ * Highlights the row on pointer hover. Set by the table.
4204
+ * @default false
4205
+ */
3532
4206
  "hover"?: boolean;
3533
- "name"?: SelectRowDto['name'];
3534
- "onCheckedChange"?: (event: XvTableV2RowCustomEvent<SelectRowDto>) => void;
3535
- "onSelectRow"?: (event: XvTableV2RowCustomEvent<SelectRowDto>) => void;
3536
- "partial"?: SelectRowDto['partial'];
3537
- "readonly"?: boolean;
3538
- "required"?: boolean;
3539
- "value"?: SelectRowDto['value'];
3540
- "variant"?: 'checkbox' | 'radio' | '';
4207
+ /**
4208
+ * Value of the row this one belongs to. Child rows are siblings in the same grid, so they keep the table's columns instead of living in a panel of their own.
4209
+ * @default ''
4210
+ */
4211
+ "parent"?: string;
4212
+ /**
4213
+ * Indeterminate state of the header row's select-all checkbox.
4214
+ * @default false
4215
+ */
4216
+ "partial"?: boolean;
4217
+ /**
4218
+ * Accessible name of the drag grip. Set by the table.
4219
+ * @default 'Drag to reorder'
4220
+ */
4221
+ "reorderLabel"?: string;
4222
+ /**
4223
+ * Whether the whole row drags, or only its grip. Set by the table.
4224
+ * @default 'icon'
4225
+ */
4226
+ "rowReorderHandle"?: 'icon' | 'row';
4227
+ /**
4228
+ * Whether this row can be dragged into a new position. Set by the table.
4229
+ * @default false
4230
+ */
4231
+ "rowReorderable"?: boolean;
4232
+ /**
4233
+ * Whether the row offers its selection control. A header with no rows under it has nothing to pick.
4234
+ * @default true
4235
+ */
4236
+ "selectable"?: boolean;
4237
+ /**
4238
+ * Whether the row is selected.
4239
+ * @default false
4240
+ */
4241
+ "selected"?: boolean;
4242
+ /**
4243
+ * Selection control rendered in the leading cell. Set by the table.
4244
+ * @default 'none'
4245
+ */
4246
+ "selectionMode"?: XvTableSelectionMode;
4247
+ /**
4248
+ * Row height ladder. Set by the table.
4249
+ * @default SIZE_VAR.MD
4250
+ */
4251
+ "size"?: SIZE_VAR_STR;
4252
+ /**
4253
+ * Identifies the row in selection and expansion payloads.
4254
+ * @default ''
4255
+ */
4256
+ "value"?: string | number;
3541
4257
  }
3542
4258
  interface XvTabsV2 {
3543
4259
  /**
@@ -4129,32 +4845,81 @@ declare namespace LocalJSX {
4129
4845
  "loading": boolean;
4130
4846
  "name": string;
4131
4847
  }
4132
- interface XvTableV2Attributes {
4848
+ interface XvTableAttributes {
4849
+ "columns": string | XvTableColumn[];
4850
+ "rows": string | any[];
4851
+ "rowKey": string;
4133
4852
  "size": SIZE_VAR_STR;
4134
- "hover": boolean;
4853
+ "block": boolean;
4135
4854
  "loading": boolean;
4855
+ "skeletonRows": number;
4856
+ "hover": boolean;
4857
+ "rowClickable": boolean;
4858
+ "label": string;
4859
+ "description": string;
4860
+ "emptyLabel": string;
4861
+ "selectedLabel": string;
4862
+ "columnsLabel": string;
4863
+ "resetLabel": string;
4864
+ "expandLabel": string;
4865
+ "reorderLabel": string;
4866
+ "sortMode": XvTableMode;
4867
+ "sortBy": string | XvTableSort;
4868
+ "selection": XvTableSelectionMode;
4869
+ "selected": string | unknown[];
4870
+ "expandMode": XvTableExpandMode;
4871
+ "expanded": string | unknown[];
4872
+ "paginationMode": XvTableMode;
4873
+ "page": number;
4874
+ "pageSize": number;
4875
+ "total": number;
4876
+ "pageSizeOptions": string | number[];
4877
+ "resizable": boolean;
4878
+ "reorderable": boolean;
4879
+ "rowReorderable": boolean;
4880
+ "rowReorderHandle": 'icon' | 'row';
4881
+ "stickyHeader": boolean;
4882
+ "minWidth": number;
4883
+ "storageKey": string;
4884
+ "storageOwner": string;
4885
+ "layout": string | XvTableLayout;
4886
+ "locale": string;
4136
4887
  }
4137
- interface XvTableV2CellAttributes {
4138
- "multiline": boolean;
4139
- "name": string;
4140
- "align": 'left' | 'right' | 'center';
4141
- "sort": XV_SORT_DIR | '';
4142
- }
4143
- interface XvTableV2ExpandAttributes {
4144
- "open": boolean;
4145
- "disabled": boolean;
4888
+ interface XvTableCellAttributes {
4889
+ "columnId": string;
4890
+ "align": XvCellAlign;
4891
+ "overflow": XvCellOverflow;
4892
+ "clampLines": number;
4893
+ "tooltip": string;
4894
+ "width": string;
4895
+ "header": boolean;
4896
+ "sortable": boolean;
4897
+ "sortDirection": XV_SORT_DIR | '';
4898
+ "hideable": boolean;
4899
+ "resizable": boolean;
4900
+ "reorderable": boolean;
4901
+ "reorderLabel": string;
4146
4902
  }
4147
- interface XvTableV2RowAttributes {
4148
- "checked": SelectRowDto['checked'];
4149
- "partial": SelectRowDto['partial'];
4150
- "name": SelectRowDto['name'];
4903
+ interface XvTableRowAttributes {
4151
4904
  "value": string;
4905
+ "selectionMode": XvTableSelectionMode;
4906
+ "expandMode": XvTableExpandMode;
4907
+ "selectable": boolean;
4908
+ "size": SIZE_VAR_STR;
4909
+ "selected": boolean;
4910
+ "partial": boolean;
4911
+ "expanded": boolean;
4912
+ "parent": string;
4913
+ "expandable": boolean;
4914
+ "hasPanel": boolean;
4915
+ "group": boolean;
4916
+ "header": boolean;
4152
4917
  "hover": boolean;
4153
- "readonly": boolean;
4154
- "required": boolean;
4155
4918
  "disabled": boolean;
4156
- "header": boolean;
4157
- "variant": 'checkbox' | 'radio' | '';
4919
+ "rowReorderable": boolean;
4920
+ "rowReorderHandle": 'icon' | 'row';
4921
+ "expandLabel": string;
4922
+ "reorderLabel": string;
4158
4923
  }
4159
4924
  interface XvTabsV2Attributes {
4160
4925
  "active": string;
@@ -4295,10 +5060,9 @@ declare namespace LocalJSX {
4295
5060
  "xv-radio-v2": Omit<XvRadioV2, keyof XvRadioV2Attributes> & { [K in keyof XvRadioV2 & keyof XvRadioV2Attributes]?: XvRadioV2[K] } & { [K in keyof XvRadioV2 & keyof XvRadioV2Attributes as `attr:${K}`]?: XvRadioV2Attributes[K] } & { [K in keyof XvRadioV2 & keyof XvRadioV2Attributes as `prop:${K}`]?: XvRadioV2[K] };
4296
5061
  "xv-slider-v2": Omit<XvSliderV2, keyof XvSliderV2Attributes> & { [K in keyof XvSliderV2 & keyof XvSliderV2Attributes]?: XvSliderV2[K] } & { [K in keyof XvSliderV2 & keyof XvSliderV2Attributes as `attr:${K}`]?: XvSliderV2Attributes[K] } & { [K in keyof XvSliderV2 & keyof XvSliderV2Attributes as `prop:${K}`]?: XvSliderV2[K] };
4297
5062
  "xv-tab-v2": Omit<XvTabV2, keyof XvTabV2Attributes> & { [K in keyof XvTabV2 & keyof XvTabV2Attributes]?: XvTabV2[K] } & { [K in keyof XvTabV2 & keyof XvTabV2Attributes as `attr:${K}`]?: XvTabV2Attributes[K] } & { [K in keyof XvTabV2 & keyof XvTabV2Attributes as `prop:${K}`]?: XvTabV2[K] };
4298
- "xv-table-v2": Omit<XvTableV2, keyof XvTableV2Attributes> & { [K in keyof XvTableV2 & keyof XvTableV2Attributes]?: XvTableV2[K] } & { [K in keyof XvTableV2 & keyof XvTableV2Attributes as `attr:${K}`]?: XvTableV2Attributes[K] } & { [K in keyof XvTableV2 & keyof XvTableV2Attributes as `prop:${K}`]?: XvTableV2[K] };
4299
- "xv-table-v2-cell": Omit<XvTableV2Cell, keyof XvTableV2CellAttributes> & { [K in keyof XvTableV2Cell & keyof XvTableV2CellAttributes]?: XvTableV2Cell[K] } & { [K in keyof XvTableV2Cell & keyof XvTableV2CellAttributes as `attr:${K}`]?: XvTableV2CellAttributes[K] } & { [K in keyof XvTableV2Cell & keyof XvTableV2CellAttributes as `prop:${K}`]?: XvTableV2Cell[K] };
4300
- "xv-table-v2-expand": Omit<XvTableV2Expand, keyof XvTableV2ExpandAttributes> & { [K in keyof XvTableV2Expand & keyof XvTableV2ExpandAttributes]?: XvTableV2Expand[K] } & { [K in keyof XvTableV2Expand & keyof XvTableV2ExpandAttributes as `attr:${K}`]?: XvTableV2ExpandAttributes[K] } & { [K in keyof XvTableV2Expand & keyof XvTableV2ExpandAttributes as `prop:${K}`]?: XvTableV2Expand[K] };
4301
- "xv-table-v2-row": Omit<XvTableV2Row, keyof XvTableV2RowAttributes> & { [K in keyof XvTableV2Row & keyof XvTableV2RowAttributes]?: XvTableV2Row[K] } & { [K in keyof XvTableV2Row & keyof XvTableV2RowAttributes as `attr:${K}`]?: XvTableV2RowAttributes[K] } & { [K in keyof XvTableV2Row & keyof XvTableV2RowAttributes as `prop:${K}`]?: XvTableV2Row[K] };
5063
+ "xv-table": Omit<XvTable, keyof XvTableAttributes> & { [K in keyof XvTable & keyof XvTableAttributes]?: XvTable[K] } & { [K in keyof XvTable & keyof XvTableAttributes as `attr:${K}`]?: XvTableAttributes[K] } & { [K in keyof XvTable & keyof XvTableAttributes as `prop:${K}`]?: XvTable[K] };
5064
+ "xv-table-cell": Omit<XvTableCell, keyof XvTableCellAttributes> & { [K in keyof XvTableCell & keyof XvTableCellAttributes]?: XvTableCell[K] } & { [K in keyof XvTableCell & keyof XvTableCellAttributes as `attr:${K}`]?: XvTableCellAttributes[K] } & { [K in keyof XvTableCell & keyof XvTableCellAttributes as `prop:${K}`]?: XvTableCell[K] };
5065
+ "xv-table-row": Omit<XvTableRow, keyof XvTableRowAttributes> & { [K in keyof XvTableRow & keyof XvTableRowAttributes]?: XvTableRow[K] } & { [K in keyof XvTableRow & keyof XvTableRowAttributes as `attr:${K}`]?: XvTableRowAttributes[K] } & { [K in keyof XvTableRow & keyof XvTableRowAttributes as `prop:${K}`]?: XvTableRow[K] };
4302
5066
  "xv-tabs-v2": Omit<XvTabsV2, keyof XvTabsV2Attributes> & { [K in keyof XvTabsV2 & keyof XvTabsV2Attributes]?: XvTabsV2[K] } & { [K in keyof XvTabsV2 & keyof XvTabsV2Attributes as `attr:${K}`]?: XvTabsV2Attributes[K] } & { [K in keyof XvTabsV2 & keyof XvTabsV2Attributes as `prop:${K}`]?: XvTabsV2[K] };
4303
5067
  "xv-tag-combobox": Omit<XvTagCombobox, keyof XvTagComboboxAttributes> & { [K in keyof XvTagCombobox & keyof XvTagComboboxAttributes]?: XvTagCombobox[K] } & { [K in keyof XvTagCombobox & keyof XvTagComboboxAttributes as `attr:${K}`]?: XvTagComboboxAttributes[K] } & { [K in keyof XvTagCombobox & keyof XvTagComboboxAttributes as `prop:${K}`]?: XvTagCombobox[K] };
4304
5068
  "xv-tag-v2": Omit<XvTagV2, keyof XvTagV2Attributes> & { [K in keyof XvTagV2 & keyof XvTagV2Attributes]?: XvTagV2[K] } & { [K in keyof XvTagV2 & keyof XvTagV2Attributes as `attr:${K}`]?: XvTagV2Attributes[K] } & { [K in keyof XvTagV2 & keyof XvTagV2Attributes as `prop:${K}`]?: XvTagV2[K] };
@@ -4425,10 +5189,27 @@ declare module "@stencil/core" {
4425
5189
  "xv-radio-v2": LocalJSX.IntrinsicElements["xv-radio-v2"] & JSXBase.HTMLAttributes<HTMLXvRadioV2Element>;
4426
5190
  "xv-slider-v2": LocalJSX.IntrinsicElements["xv-slider-v2"] & JSXBase.HTMLAttributes<HTMLXvSliderV2Element>;
4427
5191
  "xv-tab-v2": LocalJSX.IntrinsicElements["xv-tab-v2"] & JSXBase.HTMLAttributes<HTMLXvTabV2Element>;
4428
- "xv-table-v2": LocalJSX.IntrinsicElements["xv-table-v2"] & JSXBase.HTMLAttributes<HTMLXvTableV2Element>;
4429
- "xv-table-v2-cell": LocalJSX.IntrinsicElements["xv-table-v2-cell"] & JSXBase.HTMLAttributes<HTMLXvTableV2CellElement>;
4430
- "xv-table-v2-expand": LocalJSX.IntrinsicElements["xv-table-v2-expand"] & JSXBase.HTMLAttributes<HTMLXvTableV2ExpandElement>;
4431
- "xv-table-v2-row": LocalJSX.IntrinsicElements["xv-table-v2-row"] & JSXBase.HTMLAttributes<HTMLXvTableV2RowElement>;
5192
+ /**
5193
+ * A data table built on CSS grid with `subgrid` rows, so a row keeps its own box while its cells
5194
+ * stay aligned to the table's columns and an expanded panel can span the full width.
5195
+ * `columns` always describes the structure — widths, order, sorting, resizing, hiding and the
5196
+ * stored layout all read from it. Rows come either from `rows` as data, or as slotted
5197
+ * `xv-table-row` children when the cells hold arbitrary markup.
5198
+ */
5199
+ "xv-table": LocalJSX.IntrinsicElements["xv-table"] & JSXBase.HTMLAttributes<HTMLXvTableElement>;
5200
+ /**
5201
+ * One cell of a table row. It holds arbitrary markup — buttons, links, tags, nested components —
5202
+ * which is why the table stays composed rather than driven only by data.
5203
+ * In a header row it also carries the column affordances: the sort arrow, the drag grip and the
5204
+ * resize handle. The table renders this same component in both modes, so a header written as
5205
+ * markup can do everything a header built from `columns` can.
5206
+ */
5207
+ "xv-table-cell": LocalJSX.IntrinsicElements["xv-table-cell"] & JSXBase.HTMLAttributes<HTMLXvTableCellElement>;
5208
+ /**
5209
+ * One row of a table. Everything it needs is pushed down by `xv-table`, so it never reads the
5210
+ * table's attributes itself — the old row did that on `slotchange` only and went stale.
5211
+ */
5212
+ "xv-table-row": LocalJSX.IntrinsicElements["xv-table-row"] & JSXBase.HTMLAttributes<HTMLXvTableRowElement>;
4432
5213
  "xv-tabs-v2": LocalJSX.IntrinsicElements["xv-tabs-v2"] & JSXBase.HTMLAttributes<HTMLXvTabsV2Element>;
4433
5214
  "xv-tag-combobox": LocalJSX.IntrinsicElements["xv-tag-combobox"] & JSXBase.HTMLAttributes<HTMLXvTagComboboxElement>;
4434
5215
  "xv-tag-v2": LocalJSX.IntrinsicElements["xv-tag-v2"] & JSXBase.HTMLAttributes<HTMLXvTagV2Element>;