@kong-ui-public/table-data-grid 0.0.1 → 0.0.2-pr.3209.353936131.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 (83) hide show
  1. package/README.md +32 -9
  2. package/dist/style.css +1 -1
  3. package/dist/table-data-grid.es.js +2588 -2024
  4. package/dist/table-data-grid.umd.js +1 -1
  5. package/dist/types/components/TableDataGrid.vue.d.ts +7 -7
  6. package/dist/types/components/TableDataGrid.vue.d.ts.map +1 -1
  7. package/dist/types/components/TableDataGridBody.vue.d.ts +81 -0
  8. package/dist/types/components/TableDataGridBody.vue.d.ts.map +1 -0
  9. package/dist/types/components/TableDataGridCellRenderer.vue.d.ts +2 -9
  10. package/dist/types/components/TableDataGridCellRenderer.vue.d.ts.map +1 -1
  11. package/dist/types/components/TableDataGridControls.vue.d.ts +60 -0
  12. package/dist/types/components/TableDataGridControls.vue.d.ts.map +1 -0
  13. package/dist/types/components/TableDataGridFilters.vue.d.ts +35 -32
  14. package/dist/types/components/TableDataGridFilters.vue.d.ts.map +1 -1
  15. package/dist/types/components/TableDataGridHeaderRenderer.vue.d.ts +2 -5
  16. package/dist/types/components/TableDataGridHeaderRenderer.vue.d.ts.map +1 -1
  17. package/dist/types/components/TableDataGridSelectionCell.vue.d.ts +14 -0
  18. package/dist/types/components/TableDataGridSelectionCell.vue.d.ts.map +1 -0
  19. package/dist/types/components/TableDataGridSelectionHeader.vue.d.ts +12 -0
  20. package/dist/types/components/TableDataGridSelectionHeader.vue.d.ts.map +1 -0
  21. package/dist/types/components/TableDataGridToolbar.vue.d.ts +54 -0
  22. package/dist/types/components/TableDataGridToolbar.vue.d.ts.map +1 -0
  23. package/dist/types/composables/index.d.ts +155 -117
  24. package/dist/types/composables/index.d.ts.map +1 -1
  25. package/dist/types/composables/useI18n.d.ts +3 -0
  26. package/dist/types/composables/useI18n.d.ts.map +1 -1
  27. package/dist/types/composables/useTableDataGridColumnDefs.d.ts +45 -0
  28. package/dist/types/composables/useTableDataGridColumnDefs.d.ts.map +1 -0
  29. package/dist/types/composables/useTableDataGridColumnLayoutSync.d.ts +37 -0
  30. package/dist/types/composables/useTableDataGridColumnLayoutSync.d.ts.map +1 -0
  31. package/dist/types/composables/useTableDataGridColumnSizing.d.ts +24 -0
  32. package/dist/types/composables/useTableDataGridColumnSizing.d.ts.map +1 -0
  33. package/dist/types/composables/useTableDataGridConfig.d.ts +10 -9
  34. package/dist/types/composables/useTableDataGridConfig.d.ts.map +1 -1
  35. package/dist/types/composables/useTableDataGridConfigSync.d.ts +32 -0
  36. package/dist/types/composables/useTableDataGridConfigSync.d.ts.map +1 -0
  37. package/dist/types/composables/useTableDataGridFetchState.d.ts +6 -0
  38. package/dist/types/composables/useTableDataGridFetchState.d.ts.map +1 -0
  39. package/dist/types/composables/useTableDataGridGridLifecycle.d.ts +30 -0
  40. package/dist/types/composables/useTableDataGridGridLifecycle.d.ts.map +1 -0
  41. package/dist/types/composables/useTableDataGridInfiniteFetch.d.ts +13 -0
  42. package/dist/types/composables/useTableDataGridInfiniteFetch.d.ts.map +1 -0
  43. package/dist/types/composables/useTableDataGridInteractions.d.ts +30 -0
  44. package/dist/types/composables/useTableDataGridInteractions.d.ts.map +1 -0
  45. package/dist/types/composables/{useDatatablePagination.d.ts → useTableDataGridPagination.d.ts} +9 -2
  46. package/dist/types/composables/useTableDataGridPagination.d.ts.map +1 -0
  47. package/dist/types/composables/useTableDataGridPaginationFetch.d.ts +14 -0
  48. package/dist/types/composables/useTableDataGridPaginationFetch.d.ts.map +1 -0
  49. package/dist/types/composables/useTableDataGridRefreshTriggers.d.ts +19 -0
  50. package/dist/types/composables/useTableDataGridRefreshTriggers.d.ts.map +1 -0
  51. package/dist/types/composables/useTableDataGridSelection.d.ts +40 -0
  52. package/dist/types/composables/useTableDataGridSelection.d.ts.map +1 -0
  53. package/dist/types/composables/useTableDataGridState.d.ts +24 -0
  54. package/dist/types/composables/useTableDataGridState.d.ts.map +1 -0
  55. package/dist/types/types/index.d.ts +7 -3
  56. package/dist/types/types/index.d.ts.map +1 -1
  57. package/dist/types/types/internal.d.ts +109 -0
  58. package/dist/types/types/internal.d.ts.map +1 -0
  59. package/dist/types/utils/columnSizing.d.ts +34 -0
  60. package/dist/types/utils/columnSizing.d.ts.map +1 -0
  61. package/dist/types/utils/fetchers.d.ts +37 -0
  62. package/dist/types/utils/fetchers.d.ts.map +1 -0
  63. package/dist/types/utils/gridSync.d.ts +15 -0
  64. package/dist/types/utils/gridSync.d.ts.map +1 -0
  65. package/dist/types/utils/headers.d.ts +3 -0
  66. package/dist/types/utils/headers.d.ts.map +1 -1
  67. package/dist/types/utils/rowAttrs.d.ts +4 -0
  68. package/dist/types/utils/rowAttrs.d.ts.map +1 -0
  69. package/dist/types/utils/tableConfig.d.ts +5 -3
  70. package/dist/types/utils/tableConfig.d.ts.map +1 -1
  71. package/dist/types/utils/tablePreferencesInterop.d.ts.map +1 -1
  72. package/package.json +26 -26
  73. package/dist/types/composables/useDatatableColumnDefs.d.ts +0 -21
  74. package/dist/types/composables/useDatatableColumnDefs.d.ts.map +0 -1
  75. package/dist/types/composables/useDatatableColumnSizing.d.ts +0 -31
  76. package/dist/types/composables/useDatatableColumnSizing.d.ts.map +0 -1
  77. package/dist/types/composables/useDatatableGridSync.d.ts +0 -63
  78. package/dist/types/composables/useDatatableGridSync.d.ts.map +0 -1
  79. package/dist/types/composables/useDatatablePagination.d.ts.map +0 -1
  80. package/dist/types/composables/useDatatableSelection.d.ts +0 -18
  81. package/dist/types/composables/useDatatableSelection.d.ts.map +0 -1
  82. package/dist/types/composables/useTableDataGridFetchers.d.ts +0 -33
  83. package/dist/types/composables/useTableDataGridFetchers.d.ts.map +0 -1
package/README.md CHANGED
@@ -109,7 +109,7 @@ const fetchRows: TableDataGridFetcher<Row> = async ({
109
109
  </script>
110
110
  ```
111
111
 
112
- The fetcher must return `{ data, total?, cursor?, hasMore? }`. Paginated tables use `page`, `pageSize`, `sortColumnKey`, `sortColumnOrder`, `search`, and `filterSelection`; infinite tables use `startRow`, `endRow`, `cursor`, `pageSize`, `sortColumnKey`, `sortColumnOrder`, `search`, and `filterSelection`.
112
+ The fetcher must return `{ data, total?, cursor?, hasMore? }`. `total` is the known row count when the dataset is finite. `hasMore` is an explicit next-page signal that overrides the wrapper's fallback inference. In infinite mode, `cursor` may be `undefined` for offset-style APIs; the wrapper still advances blocks sequentially and will not call the next block until the prior one has completed. Paginated tables use `page`, `pageSize`, `sortColumnKey`, `sortColumnOrder`, `search`, and `filterSelection`; infinite tables use `startRow`, `endRow`, `cursor`, `pageSize`, `sortColumnKey`, `sortColumnOrder`, `search`, and `filterSelection`.
113
113
 
114
114
  ### Infinite Loading
115
115
 
@@ -134,6 +134,8 @@ const fetchRows: TableDataGridFetcher<Row> = async ({ startRow = 0, pageSize, cu
134
134
  }
135
135
  ```
136
136
 
137
+ If the API returns `cursor: undefined`, the wrapper still treats the block as completed and will request the next sequential block after the prior block resolves.
138
+
137
139
  ### Filterable Headers
138
140
 
139
141
  Headers can include `filter?: Filter` from `@kong/kongponents`. When at least one header has a filter definition, the table renders `KFilterGroup` in the toolbar.
@@ -269,7 +271,23 @@ const saveTableConfig = (config: TableDataGridConfig) => {
269
271
  }
270
272
  ```
271
273
 
272
- Config fields are optional overrides. For example, `columnVisibility: { latency: false }` hides only that column while the rest default to visible.
274
+ Config fields are optional overrides. Per-column layout state is nested under `columns`:
275
+
276
+ ```ts
277
+ const tableConfig = ref<TableDataGridConfig>({
278
+ columnOrder: ['name', 'status', 'latency'],
279
+ columns: {
280
+ latency: { visible: false },
281
+ status: { width: 160, pinned: 'right' },
282
+ name: { pinned: false },
283
+ },
284
+ pageSize: 25,
285
+ })
286
+ ```
287
+
288
+ Header options describe the initial/default column state. `tableConfig` describes the current table state and any host-provided overrides that should be replayed or persisted.
289
+
290
+ `columns[key].visible` hides or shows a hideable column, `columns[key].width` stores the column width in pixels, and `columns[key].pinned` stores `'left'`, `'right'`, or `false`. Omitted `visible` values fall back to `headers[].visible ?? true`; when `hideable: false`, visibility is not configurable and the column stays visible. Omitted `width` values fall back to the header width or the table's normal column fitting behavior. Omitted `pinned` values fall back to the header `pinned` value or unpinned. `pinned: false` explicitly unpins a column even when the matching header has a default `pinned` value.
273
291
 
274
292
  Host applications can map Kongponents `tablePreferences` into `tableConfig` with the exported conversion helpers:
275
293
 
@@ -371,6 +389,7 @@ Use `headers[].agGridColumnOptions.cellClass` or `headers[].agGridColumnOptions.
371
389
  :error="hasError"
372
390
  :fetcher="fetchRows"
373
391
  :headers="headers"
392
+ :loading="isLoading"
374
393
  >
375
394
  <template #empty-state>
376
395
  <KEmptyState title="No requests found" />
@@ -385,6 +404,8 @@ Use `headers[].agGridColumnOptions.cellClass` or `headers[].agGridColumnOptions.
385
404
  </TableDataGrid>
386
405
  ```
387
406
 
407
+ Use `loading` and `error` when the host app needs to force visible table state. Fetcher rejections are caught by the grid and emitted through the `state` event, but the host app owns request error policy and should set `error` when it wants to render error chrome.
408
+
388
409
  ### Toolbar Composition
389
410
 
390
411
  ```vue
@@ -446,11 +467,11 @@ Use `outside-search` and `outside-filters` to move built-in controls to Teleport
446
467
  | `headers` | `Array<TableDataGridHeader<Row>>` | Yes | - | Column definitions used to build AG Grid columns, slots, filters, and table config defaults. |
447
468
  | `fetcher` | `TableDataGridFetcher<Row>` | Yes | - | Async function called whenever the table needs rows. |
448
469
  | `mode` | `'pagination' \| 'infinite'` | No | `'pagination'` | Controls whether the table renders pagination or an infinite datasource. |
449
- | `rowKey` | `Extract<keyof Row, string>` | No | `'id'` | Row field used for AG Grid row identity and exposed selection methods. |
470
+ | `rowKey` | `Extract<keyof Row, string>` | No | `'id'` | Row field used for AG Grid row identity and exposed selection methods. Pick a unique, stable field so row selection and row updates stay attached to the same logical row. Missing values are treated as an empty string, so duplicate or missing keys can collide and break identity-sensitive behavior. |
450
471
  | `pageSize` | `number` | No | `25` | Default page or block size when `tableConfig.pageSize` is not set. |
451
472
  | `initialFetcherParams` | `{ search?: string }` | No | `{}` | Initial fetcher params currently limited to `search`. |
452
- | `loading` | `boolean` | No | `false` | Shows the table skeleton before rendering the grid. |
453
- | `error` | `boolean` | No | `false` | Shows the error state instead of the grid. |
473
+ | `loading` | `boolean` | No | `false` | Shows the table loading skeleton and hides the grid while host-owned loading work is in progress. |
474
+ | `error` | `boolean` | No | `false` | Shows the error state instead of the grid. Host apps should set this when they want fetch or request failures to render error chrome. |
454
475
  | `enableSearch` | `boolean` | No | `false` | Renders the built-in search input and passes debounced search changes to the fetcher. |
455
476
  | `outsideSearch` | `string \| HTMLElement` | No | - | Vue Teleport target for the built-in search input. |
456
477
  | `outsideFilters` | `string \| HTMLElement` | No | - | Vue Teleport target for the built-in filters. |
@@ -460,10 +481,10 @@ Use `outside-search` and `outside-filters` to move built-in controls to Teleport
460
481
  | `hidePagination` | `boolean` | No | `false` | Hides pagination controls in pagination mode. |
461
482
  | `hidePaginationWhenOptional` | `boolean` | No | `false` | Hides pagination controls when the loaded dataset fits on one page. |
462
483
  | `rowSelection` | `'none' \| 'single' \| 'multiple'` | No | `'none'` | Enables no selection, click-based single selection, or checkbox-backed multi-selection. |
463
- | `agGridOptions` | `TableDataGridGridOptions<Row>` | No | `{}` | Pass-through for lower-level AG Grid options. The wrapper still owns its documented behavior. |
484
+ | `agGridOptions` | `TableDataGridGridOptions<Row>` | No | `{}` | Pass-through for lower-level AG Grid options. This is an escape hatch: overrides can bypass wrapper defaults and guarantees, including datasource and row-model behavior. |
464
485
  | `paginationPageSizeOptions` | `number[]` | No | `[10, 15, 25, 50, 100]` | Page size choices shown in pagination mode. The active page size is included if missing. |
465
486
  | `refreshKey` | `string \| number` | No | - | Refetches when the key changes. |
466
- | `rowAttrs` | `(row: Row) => Record<string, unknown>` | No | - | Applies DOM attributes to rendered AG Grid rows. |
487
+ | `rowAttrs` | `(row: Row) => Record<string, unknown>` | No | - | Applies DOM attributes to rendered AG Grid rows. Supports `class` as a string, string array, or object map, `style` as an object, and any other DOM attributes as key/value pairs. |
467
488
  | `cellAttrs` | `({ row, rowValue, column, rowIndex, colIndex }) => Record<string, unknown>` | No | - | Applies DOM attributes to rendered cell content. |
468
489
  | `tableConfig` | `TableDataGridConfig` | No | Internal state | Optional controlled table state for column order, visibility, widths, pinning, sort, and page size. |
469
490
 
@@ -475,6 +496,7 @@ Use `outside-search` and `outside-filters` to move built-in controls to Teleport
475
496
  | `label` | `string` | - | Header label. |
476
497
  | `sortable` | `boolean` | `false` | Enables AG Grid sorting and wrapper sort payload updates for the column. |
477
498
  | `hideable` | `boolean` | `true` | Allows the column visibility menu to hide or show the column. |
499
+ | `visible` | `boolean` | `true` | Initial/default visibility for a hideable column. Ignored when `hideable: false`; non-hideable columns stay visible. |
478
500
  | `hideLabel` | `boolean` | `false` | Hides the visual header label while keeping the column key and slot mapping. |
479
501
  | `disableRowClick` | `boolean` | `false` | Suppresses `row:click` when clicks originate from this column without changing selection behavior. |
480
502
  | `tooltip` | `string` | - | Header tooltip text and fallback cell tooltip text. |
@@ -500,7 +522,7 @@ Use `outside-search` and `outside-filters` to move built-in controls to Teleport
500
522
  | `row:select` | `Row[]` | The selected row set changes. |
501
523
  | `update:tableConfig` | `TableDataGridConfig` | User interaction or wrapper-managed refitting changes table config state. |
502
524
  | `sort` | `{ sortColumnKey?: string, sortColumnOrder?: 'asc' \| 'desc' }` | Sort state changes before the updated table config is emitted. |
503
- | `state` | `{ state: 'loading' \| 'error' \| 'success' \| 'empty', hasData: boolean }` | The table loading, error, success, or empty state changes. |
525
+ | `state` | `{ state: 'loading' \| 'error' \| 'success' \| 'empty', hasData: boolean }` | The table state changes. Host-forced loading/error props and first-load fetch failures can emit loading/error; background refetches and later infinite-block failures keep emitting `success` while existing rows remain visible. |
504
526
  | `grid:ready` | `GridApi<Row>` | AG Grid is ready and the wrapper has applied initial column state. |
505
527
  | `filter:apply` | `(filterKey: string, selection: FilterGroupSelection)` | KFilterGroup emits apply. Default filters update `v-model:filter-selection`; custom filter slots must write their selected value to the model in the host. |
506
528
  | `filter:clear` | `(filterKey: string, selection: FilterGroupSelection)` | KFilterGroup emits clear. Default filters update `v-model:filter-selection`; custom filter slots must clear their value from the model in the host. |
@@ -514,7 +536,7 @@ Use `outside-search` and `outside-filters` to move built-in controls to Teleport
514
536
  | `[header.key]` | `{ row, rowValue, column, rowIndex, refreshCell, selected }` | Dynamic cell slot for the matching column key. Call `refreshCell()` when async slot content changes internal loading or display state. |
515
537
  | `bulk-action-items` | `{ selectedRows }` | Dropdown items rendered inside the selected-row actions dropdown. |
516
538
  | `toolbar` | `{ selectedRows, filterSelection, filters, search, updateFilterSelection, updateSearch, refresh }` | Replaces the host-controlled toolbar content. The column visibility menu still renders as the rightmost toolbar control unless `hideColumnVisibility` is true. |
517
- | `toolbar-left` | `{ selectedRows, filterSelection, filters, search, updateFilterSelection, updateSearch, refresh }` | Renders before built-in bulk actions, search, and filters. |
539
+ | `toolbar-left` | `{ selectedRows, filterSelection, filters, search, updateFilterSelection, updateSearch, refresh }` | Renders before built-in search, filters, and bulk actions. |
518
540
  | `toolbar-right` | `{ selectedRows, filterSelection, filters, search, updateFilterSelection, updateSearch, refresh }` | Renders before the built-in column visibility menu. |
519
541
  | `outside-actions` | `{ selectedRows, filterSelection, filters, search, updateFilterSelection, updateSearch, refresh }` | Always-mounted renderless slot for custom controls that host apps Teleport outside the visible table toolbar. |
520
542
  | `filter-${header.key}` | None | Forwards custom filter popover content to the built-in KFilterGroup. The host app must update `v-model:filter-selection` when custom filter values are applied or cleared. |
@@ -540,6 +562,7 @@ Use a template ref on `TableDataGrid` to call these methods.
540
562
  - `TableDataGridPinnedState`
541
563
  - `TableDataGridState`
542
564
  - `TableDataGridStatePayload`
565
+ - `TableDataGridColumnConfig`
543
566
  - `TableDataGridConfig`
544
567
  - `TableDataGridHeader`
545
568
  - `TableDataGridFetcherParams`
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .datatable-cell-content[data-v-0e73bfa7]{align-items:center;display:flex;height:100%;min-width:0;width:100%}.table-data-grid-header{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;box-shadow:none;box-sizing:border-box;color:#6c7489;color:var(--kui-color-text-neutral, #6c7489);display:inline-flex;flex-wrap:nowrap;font-family:Inter,Roboto,Helvetica,sans-serif;font-family:var(--kui-font-family-text, "Inter", Roboto, Helvetica, sans-serif);font-size:14px;font-size:var(--kui-font-size-30, 14px);font-weight:600;font-weight:var(--kui-font-weight-semibold, 600);gap:6px;gap:var(--kui-space-30, 6px);height:100%;line-height:20px;line-height:var(--kui-line-height-30, 20px);margin:0;min-width:0;padding:0;text-align:left;width:100%}.table-data-grid-header.is-sortable{cursor:pointer}.table-data-grid-header.is-sorted{color:#0044f4;color:var(--kui-color-text-primary, #0044f4)}.table-data-grid-header:focus{outline:none}.table-data-grid-header:focus-visible{border-radius:2px;border-radius:var(--kui-border-radius-10, 2px);box-shadow:0 0 0 4px #0044f433;box-shadow:var(--kui-shadow-focus, 0px 0px 0px 4px rgba(0, 68, 244, .2))}.header-label{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-tooltip,.header-tooltip-trigger,.header-sort-icon{display:inline-flex;flex-shrink:0}.header-tooltip-trigger{cursor:help}.header-tooltip-icon{color:#6c7489;color:var(--kui-color-text-neutral, #6c7489)}.header-sort-icon{color:#afb7c5;color:var(--kui-color-text-neutral-weak, #afb7c5)}.is-sorted .header-sort-icon{color:#0044f4;color:var(--kui-color-text-primary, #0044f4)}.header-tooltip :deep(svg),.header-sort-icon :deep(svg){color:currentColor;display:block;flex-shrink:0}.table-data-grid-column-visibility-menu[data-v-c7a3d29f]{line-height:12px;line-height:var(--kui-line-height-10, 12px)}.table-data-grid-column-visibility-menu .column-search-wrapper[data-v-c7a3d29f]{padding:6px;padding:var(--kui-space-30, 6px)}.table-data-grid-column-visibility-menu[data-v-c7a3d29f] .k-input.column-search{max-width:100%;width:100%}.table-data-grid-column-visibility-menu[data-v-c7a3d29f] .k-input.column-search ::-webkit-search-cancel-button{-webkit-appearance:none}.table-data-grid-column-visibility-menu .column-items[data-v-c7a3d29f]{max-height:250px;overflow-y:auto}.table-data-grid-column-visibility-menu .column-visibility-item[data-v-c7a3d29f]{align-items:center;display:flex}.table-data-grid-column-visibility-menu .column-label[data-v-c7a3d29f]{cursor:pointer;display:block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-data-grid-column-visibility-menu .column-actions[data-v-c7a3d29f]{display:flex;justify-content:flex-end;padding:4px;padding:var(--kui-space-20, 4px)}.table-data-grid-column-visibility-menu .clear-search[data-v-c7a3d29f]{flex-shrink:0}.datatable-search[data-v-9d5cbebc]{align-items:center;display:flex;min-width:0}[data-v-9d5cbebc] .k-input.datatable-search-input{max-width:100%;min-width:220px;width:260px}[data-v-9d5cbebc] .k-input.datatable-search-input ::-webkit-search-cancel-button{-webkit-appearance:none}.clear-search[data-v-9d5cbebc]{flex-shrink:0}.kong-ui-public-table-data-grid[data-v-b0aefb40]{border:1px solid #e0e4ea;border:1px solid var(--kui-color-border, #e0e4ea);border-radius:4px;border-radius:var(--kui-border-radius-20, 4px);display:flex;flex-direction:column;gap:0;height:100%;min-height:360px;overflow:hidden;position:relative;width:100%}.datatable-toolbar[data-v-b0aefb40]{align-items:center;background:#fff;background:var(--kui-color-background, #ffffff);border-bottom:1px solid #e0e4ea;border-bottom:1px solid var(--kui-color-border, #e0e4ea);display:flex;gap:8px;gap:var(--kui-space-40, 8px);justify-content:space-between;padding:6px;padding:var(--kui-space-30, 6px)}.datatable-outside-actions-host[data-v-b0aefb40]{height:0;overflow:hidden;pointer-events:none;position:absolute;width:0}.datatable-toolbar-primary[data-v-b0aefb40]{align-items:center;display:flex;flex:1 1 auto;gap:8px;gap:var(--kui-space-40, 8px);min-width:0}.datatable-toolbar-secondary[data-v-b0aefb40]{align-items:center;display:flex;flex:0 0 auto;gap:8px;gap:var(--kui-space-40, 8px);min-width:0}.datatable-toolbar-selection[data-v-b0aefb40]{align-items:center;display:flex;min-width:0}.datatable-bulk-actions-dropdown[data-v-b0aefb40] .k-button.datatable-bulk-actions-trigger{border-width:1px;border-width:var(--kui-border-width-10, 1px);font-size:14px;font-size:var(--kui-font-size-30, 14px);width:140px}.table-data-grid-grid[data-v-b0aefb40]{flex:1 1 420px;min-height:0;width:100%}.table-data-grid-grid[data-v-b0aefb40] .ag-header-cell{border-right:1px solid #e0e4ea;border-right:1px solid var(--kui-color-border, #e0e4ea)}.table-data-grid-grid[data-v-b0aefb40] .ag-header-cell[col-id=ag-Grid-SelectionColumn]{border-right:0;gap:0}.table-data-grid-grid[data-v-b0aefb40] .ag-header-cell-resize:after{display:none}.table-data-grid-grid[data-v-b0aefb40] .ag-root-wrapper{border:0;border-radius:0}.table-data-grid-grid[data-v-b0aefb40] .ag-cell{align-items:center;display:flex}.table-data-grid-grid[data-v-b0aefb40] .ag-cell-wrapper,.table-data-grid-grid[data-v-b0aefb40] .ag-cell-value{align-items:center;display:flex;height:100%;min-width:0;width:100%}.datatable-pagination[data-v-b0aefb40]{background:#fff;background:var(--kui-color-background, #ffffff);border-top:1px solid #e0e4ea;border-top:1px solid var(--kui-color-border, #e0e4ea);padding:4px 12px 6px;padding:var(--kui-space-20, 4px) var(--kui-space-50, 12px) var(--kui-space-30, 6px)}.datatable-pagination-control[data-v-b0aefb40]{margin-top:0;padding:0;width:100%}.datatable-pagination-control[data-v-b0aefb40] .pagination-text.large-screen{padding-left:8px;padding-left:var(--kui-space-40, 8px)}.datatable-pagination-control[data-v-b0aefb40] .pagination-button.placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center}
1
+ .datatable-cell-content[data-v-464159b9]{align-items:center;display:flex;height:100%;min-width:0;width:100%}.table-data-grid-header{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;box-shadow:none;box-sizing:border-box;color:#6c7489;color:var(--kui-color-text-neutral, #6c7489);display:inline-flex;flex-wrap:nowrap;font-family:Inter,Roboto,Helvetica,sans-serif;font-family:var(--kui-font-family-text, "Inter", Roboto, Helvetica, sans-serif);font-size:14px;font-size:var(--kui-font-size-30, 14px);font-weight:600;font-weight:var(--kui-font-weight-semibold, 600);gap:6px;gap:var(--kui-space-30, 6px);height:100%;line-height:20px;line-height:var(--kui-line-height-30, 20px);margin:0;min-width:0;padding:0;text-align:left;width:100%}.table-data-grid-header.is-sortable{cursor:pointer}.table-data-grid-header.is-sorted{color:#0044f4;color:var(--kui-color-text-primary, #0044f4)}.table-data-grid-header:focus{outline:none}.table-data-grid-header:focus-visible{border-radius:2px;border-radius:var(--kui-border-radius-10, 2px);box-shadow:0 0 0 4px #0044f433;box-shadow:var(--kui-shadow-focus, 0px 0px 0px 4px rgba(0, 68, 244, .2))}.header-label{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-tooltip,.header-tooltip-trigger,.header-sort-icon{display:inline-flex;flex-shrink:0}.header-tooltip-trigger{cursor:help}.header-tooltip-icon{color:#6c7489;color:var(--kui-color-text-neutral, #6c7489)}.header-sort-icon{color:#afb7c5;color:var(--kui-color-text-neutral-weak, #afb7c5)}.is-sorted .header-sort-icon{color:#0044f4;color:var(--kui-color-text-primary, #0044f4)}.header-tooltip svg,.header-sort-icon svg{color:currentColor;display:block;flex-shrink:0}.datatable-selection-cell[data-v-938085bb]{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.datatable-selection-checkbox[data-v-938085bb]{margin:0}.datatable-selection-header[data-v-456d84ae]{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.datatable-selection-checkbox[data-v-456d84ae]{margin:0}.table-data-grid-grid[data-v-2a165223]{--ag-background-color: var(--kui-color-background, #ffffff);--ag-border-color: var(--kui-color-border, #e0e4ea);--ag-header-background-color: var(--kui-color-background, #ffffff);--ag-header-column-border: 1px solid var(--kui-color-border, #e0e4ea);--ag-header-column-resize-handle-color: transparent;--ag-selected-row-background-color: var(--kui-color-background-primary-weakest, #eefaff);--ag-wrapper-border: none;--ag-wrapper-border-radius: 0;flex:1 1 420px;min-height:0;width:100%}.datatable-pagination[data-v-2a165223]{background:#fff;background:var(--kui-color-background, #ffffff);border-top:1px solid #e0e4ea;border-top:1px solid var(--kui-color-border, #e0e4ea);padding:4px 12px 6px;padding:var(--kui-space-20, 4px) var(--kui-space-50, 12px) var(--kui-space-30, 6px)}.datatable-pagination-control[data-v-2a165223]{margin-top:0;padding:0;width:100%}.pagination-text.large-screen{padding-left:8px;padding-left:var(--kui-space-40, 8px)}.ag-header-cell[col-id=ag-Grid-SelectionColumn]{--ag-header-column-border: none;border-right:0;gap:0}.ag-cell{align-items:center;display:flex}.ag-cell-wrapper,.ag-cell-value,.datatable-cell-content{align-items:center;display:flex;height:100%;min-width:0;width:100%}.pagination-button.placeholder{box-sizing:border-box}.datatable-search[data-v-9d5cbebc]{align-items:center;display:flex;min-width:0}[data-v-9d5cbebc] .k-input.datatable-search-input{max-width:100%;min-width:220px;width:260px}[data-v-9d5cbebc] .k-input.datatable-search-input ::-webkit-search-cancel-button{-webkit-appearance:none}.clear-search[data-v-9d5cbebc]{flex-shrink:0}.table-data-grid-column-visibility-menu[data-v-c7a3d29f]{line-height:12px;line-height:var(--kui-line-height-10, 12px)}.table-data-grid-column-visibility-menu .column-search-wrapper[data-v-c7a3d29f]{padding:6px;padding:var(--kui-space-30, 6px)}.table-data-grid-column-visibility-menu[data-v-c7a3d29f] .k-input.column-search{max-width:100%;width:100%}.table-data-grid-column-visibility-menu[data-v-c7a3d29f] .k-input.column-search ::-webkit-search-cancel-button{-webkit-appearance:none}.table-data-grid-column-visibility-menu .column-items[data-v-c7a3d29f]{max-height:250px;overflow-y:auto}.table-data-grid-column-visibility-menu .column-visibility-item[data-v-c7a3d29f]{align-items:center;display:flex}.table-data-grid-column-visibility-menu .column-label[data-v-c7a3d29f]{cursor:pointer;display:block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-data-grid-column-visibility-menu .column-actions[data-v-c7a3d29f]{display:flex;justify-content:flex-end;padding:4px;padding:var(--kui-space-20, 4px)}.table-data-grid-column-visibility-menu .clear-search[data-v-c7a3d29f]{flex-shrink:0}.datatable-toolbar[data-v-257c452e]{align-items:center;background:#fff;background:var(--kui-color-background, #ffffff);border-bottom:1px solid #e0e4ea;border-bottom:1px solid var(--kui-color-border, #e0e4ea);display:flex;gap:8px;gap:var(--kui-space-40, 8px);justify-content:space-between;padding:6px;padding:var(--kui-space-30, 6px)}.datatable-toolbar-primary[data-v-257c452e]{align-items:center;display:flex;flex:1 1 auto;gap:8px;gap:var(--kui-space-40, 8px);min-width:0}.datatable-toolbar-secondary[data-v-257c452e]{align-items:center;display:flex;flex:0 0 auto;gap:8px;gap:var(--kui-space-40, 8px);min-width:0}.datatable-toolbar-selection[data-v-257c452e]{align-items:center;display:flex;min-width:0}.datatable-bulk-actions-dropdown[data-v-257c452e] .k-button.datatable-bulk-actions-trigger{border-width:1px;border-width:var(--kui-border-width-10, 1px);font-size:14px;font-size:var(--kui-font-size-30, 14px);width:140px}.datatable-outside-actions-host[data-v-97158669]{height:0;overflow:hidden;pointer-events:none;position:absolute;width:0}.kong-ui-public-table-data-grid[data-v-8fd5824b]{border:1px solid #e0e4ea;border:1px solid var(--kui-color-border, #e0e4ea);border-radius:4px;border-radius:var(--kui-border-radius-20, 4px);display:flex;flex-direction:column;gap:0;height:100%;min-height:360px;overflow:hidden;position:relative;width:100%}