@kong-ui-public/table-data-grid 0.5.5-pr.3867.b72366818.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -120,7 +120,7 @@ const handleState = (payload: TableDataGridStatePayload) => {
120
120
  | `error` | `boolean` | No | `false` | Host-controlled visible error state. Internal fetch failures emit state but do not render error UI unless this prop is true. |
121
121
  | `pageSize` | `number` | No | `25` | Infinite mode only. AG Grid cache block size and fetcher request size. `tableConfig.pageSize` wins when present. |
122
122
  | `refreshKey` | `string \| number \| boolean` | No | - | Infinite mode only. Parent invalidation signal that rebuilds the datasource from the beginning. |
123
- | `tableConfig` | `TableDataGridConfig` | No | - | Host-controlled current sort, page size, and optional content-height sizing. Restores a previously-chosen sort on mount, or moves it after mount, without a click. Uncontrolled (internal state) when omitted. |
123
+ | `tableConfig` | `TableDataGridConfig` | No | - | Host-controlled current sort and page size. Restores a previously-chosen sort on mount, or moves it after mount, without a click. Uncontrolled (internal state) when omitted. |
124
124
 
125
125
  ## Fetcher Contract
126
126
 
@@ -151,10 +151,10 @@ type TableDataGridFetcher<Row> = (
151
151
  uses `cursor: undefined`; later requests receive the previous response cursor.
152
152
 
153
153
  `sort` carries the current single-column sort, with `sortColumnKey` and
154
- `sortColumnOrder` left `undefined` when nothing is sorted. A sort change makes
155
- AG Grid reload its blocks and restarts the cursor chain from the beginning
156
- without replacing the datasource, because a cursor produced under one sort
157
- order is not valid under another.
154
+ `sortColumnOrder` left `undefined` when nothing is sorted. A sort change is a
155
+ request-context change like `refreshKey` or `pageSize`: it rebuilds the
156
+ datasource and restarts the cursor chain from the beginning, because a cursor
157
+ produced under one sort order is not valid under another.
158
158
 
159
159
  AG Grid range details are datasource internals. Consumers should not depend on,
160
160
  or return, datasource request positions or AG Grid row-count callback values in
@@ -175,12 +175,6 @@ changes. An empty `rows` array shows the empty state.
175
175
  The row model is selected when `TableDataGrid` mounts. To switch between
176
176
  `infinite` and `unpaginated`, key the component by mode so Vue remounts it.
177
177
 
178
- For compact, content-sized tables, set `tableConfig.fitToContent` to `true` and
179
- leave the host height unconstrained. The grid fits its header and all returned
180
- rows, retains horizontal scrolling, and resizes when the result changes. This
181
- option defaults to `false` and is ignored in infinite mode. Otherwise, give the
182
- host a height and the grid scrolls within it.
183
-
184
178
  ```vue
185
179
  <TableDataGrid
186
180
  mode="unpaginated"
@@ -253,24 +247,6 @@ should opt out of the default flexible fill behavior.
253
247
  | `disableRowClick` | `boolean` | No | Suppresses `row:click` for clicks landing in this column's cells, e.g. an actions column. `cell:click` still fires. |
254
248
  | `sortable` | `boolean` | No | Enables sorting on this column via AG Grid's built-in header sort control. Only one column can be sorted at a time. |
255
249
  | `showSortIcon` | `boolean` | No | Shows the unsorted sort icon on this column even when it isn't the active sort, instead of only on hover or once sorted. Only relevant when `sortable` is true. |
256
- | `dataType` | `'number'` | No | Enables numeric presentation options for this column. Aggregate options are applied only in unpaginated mode. |
257
- | `valueFormatter` | `(value, row) => string` | No | Formats a raw value for display. A custom cell slot still receives the original `rowValue`. |
258
- | `showPercentage` | `boolean` | No | In unpaginated numeric columns, shows the row's percentage of the complete returned column sum. |
259
- | `percentageFormatter` | `(percentage) => string` | No | Optional formatter for the percentage points (50 means 50%) shown by `showPercentage`. The default uses the grid locale, up to two decimal places, and `< 0.01 %` for small positive values. |
260
- | `bar` | `'relative' \| 'absolute'` | No | In unpaginated numeric columns, renders a bar. `relative` uses `value / sum`; `absolute` uses `value / maximum`, matching the TopN scales. |
261
- | `thresholds` | `Array<{ value: number, type: 'warning' \| 'error' }>` | No | Applies threshold text/bar colors at or above the highest crossed threshold. Numeric finite values only. |
262
- | `icons` | `Array<{ pattern: RegExp, icon: Component }>` | No | Renders the first matching icon beside the value. Mappings are checked in order against the raw cell value, and regular-expression state is preserved. The grid has no built-in mappings. |
263
-
264
- Numeric presentation is intentionally derived from the complete `rows` result
265
- in unpaginated mode. Infinite mode does not calculate aggregate values; supplying
266
- numeric presentation options there, or on a header without `dataType: 'number'`,
267
- emits a console warning and omits those adornments. Nonnumeric or non-finite
268
- values also warn once per column and keep their ordinary content without numeric
269
- adornments. Missing values retain an empty bar track when a bar is configured.
270
- Bars clamp to 0–100%; percentage labels are omitted when the column total is not positive.
271
-
272
- Icons render only for columns whose header configures `icons`. Domain-specific
273
- mappings, such as analytics provider icons, belong to the host.
274
250
 
275
251
  ## Sorting
276
252
 
@@ -296,35 +272,14 @@ The current sort lives in `tableConfig` (`sortColumnKey`, `sortColumnOrder`),
296
272
  alongside `pageSize`. Pass `tableConfig` to restore a previously-chosen sort
297
273
  on mount, or to move the sort after mount without a click; omit it to let the
298
274
  component own the sort internally. A sort change emits `sort` (the narrower,
299
- sort-only payload) and then `update:tableConfig` (the full current config).
300
-
301
- For client-side sorting, use `mode="unpaginated"` and pass the complete result
302
- as `rows`. AG Grid sorts those rows locally with its built-in row animation.
303
-
304
- ```vue
305
- <TableDataGrid
306
- mode="unpaginated"
307
- :rows="rows"
308
- :headers="[
309
- { key: 'name', label: 'Name', sortable: true },
310
- { key: 'requests', label: 'Requests', sortable: true },
311
- ]"
312
- />
313
- ```
314
-
315
- In the default infinite mode, sorting reloads AG Grid's blocks while reusing
316
- the datasource. The cursor chain starts over, and the fetcher receives the new
317
- sort as rows load again.
275
+ sort-only payload) and then `update:tableConfig` (the full current config),
276
+ and rebuilds the infinite datasource from the beginning — a cursor produced
277
+ under one sort order is not valid under another.
318
278
 
319
279
  ## Custom Cell Content
320
280
 
321
281
  Columns render custom cell content through a slot named after `header.key`.
322
- Columns without a matching slot render `valueFormatter(rowValue, row)` when
323
- configured, otherwise their raw `rowValue`. Icons, percentages, and bars decorate
324
- both default values and slot content.
325
- When a named slot renders no content, the grid falls back to the formatted
326
- default value with ellipsis and an overflow tooltip; non-empty slot content
327
- remains host-owned.
282
+ Columns without a matching slot render their raw `rowValue`.
328
283
 
329
284
  ```vue
330
285
  <TableDataGrid
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .table-data-grid-cell-renderer,.table-data-grid-cell-tooltip,.table-data-grid-cell-content,.table-data-grid-cell-slot-content{display:block;min-width:0;width:100%}.table-data-grid-cell-renderer{align-items:center;display:flex;font-feature-settings:"case";font-variant-numeric:tabular-nums;gap:4px;gap:var(--kui-space-20, 4px);min-width:0;width:100%}.table-data-grid-cell-content,.table-data-grid-cell-slot-content,.table-data-grid-cell-relative{white-space:nowrap}.table-data-grid-cell-relative{font-size:12px;font-size:var(--kui-font-size-20, 12px);font-weight:400;font-weight:var(--kui-font-weight-regular, 400)}.table-data-grid-cell-renderer--bar .table-data-grid-cell-content,.table-data-grid-cell-renderer--bar .table-data-grid-cell-slot-content,.table-data-grid-cell-renderer--text-warning .table-data-grid-cell-content,.table-data-grid-cell-renderer--text-warning .table-data-grid-cell-slot-content,.table-data-grid-cell-renderer--text-error .table-data-grid-cell-content,.table-data-grid-cell-renderer--text-error .table-data-grid-cell-slot-content{font-weight:600;font-weight:var(--kui-font-weight-semibold, 600)}.table-data-grid-cell-renderer--text-warning{color:#995c00;color:var(--kui-color-text-warning, #995c00)}.table-data-grid-cell-renderer--text-error{color:#d60027;color:var(--kui-color-text-danger, #d60027)}.table-data-grid-cell-renderer--bar .table-data-grid-cell-content,.table-data-grid-cell-renderer--bar .table-data-grid-cell-slot-content,.table-data-grid-cell-renderer--bar .table-data-grid-cell-tooltip,.table-data-grid-cell-renderer--percentage .table-data-grid-cell-slot-content,.table-data-grid-cell-renderer--percentage .table-data-grid-cell-tooltip,.table-data-grid-cell-renderer--percentage .table-data-grid-cell-content{flex:0 1 auto;width:auto}.table-data-grid-cell-bar{background-color:#e0e4ea;background-color:var(--kui-color-background-neutral-weaker, #e0e4ea);border-radius:100px;border-radius:var(--kui-border-radius-round, 100px);display:block;flex:1 1 80px;height:8px;min-width:80px;overflow:hidden;width:100%}.table-data-grid-cell-bar-fill{background-color:#6a86d2;border-radius:inherit;display:block;height:100%}.table-data-grid-cell-bar[data-threshold=warning] .table-data-grid-cell-bar-fill{background-color:#995c00;background-color:var(--kui-color-background-warning, #995c00)}.table-data-grid-cell-bar[data-threshold=error] .table-data-grid-cell-bar-fill{background-color:#d60027;background-color:var(--kui-color-background-danger, #d60027)}.table-data-grid-cell-icon{flex:0 0 auto;height:16px;height:var(--kui-icon-size-30, 16px);width:16px;width:var(--kui-icon-size-30, 16px)}.table-data-grid-cell-content{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kong-ui-public-table-data-grid[data-v-4de66077]{border:none;border-radius:4px;border-radius:var(--kui-border-radius-20, 4px);box-sizing:border-box;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;width:100%}.kong-ui-public-table-data-grid.fit-to-content[data-v-4de66077]{height:auto}.kong-ui-public-table-data-grid.fit-to-content[data-v-4de66077] .ag-grid-scrolling-rows{min-height:0}.table-data-grid-grid[data-v-4de66077]{--ag-background-color: var(--kui-color-background, #ffffff);--ag-border-color: var(--kui-color-border, #e0e4ea);--ag-foreground-color: var(--kui-color-text, #0d0e14);--ag-header-background-color: var(--kui-color-background, #ffffff);--ag-header-column-border: 1px solid var(--kui-color-border, #e0e4ea);--ag-header-column-border-height: 30%;--ag-header-column-resize-handle-color: transparent;--ag-header-font-weight: var(--kui-font-weight-semibold, 600);--ag-header-text-color: var(--kui-color-text-neutral, #6c7489);--ag-wrapper-border: none;--ag-wrapper-border-radius: 0;flex:1 1 auto;min-height:0;width:100%}.ag-cell{align-items:center;display:flex;min-width:0}.ag-cell-wrapper,.ag-cell-value{min-width:0;width:100%}
1
+ .table-data-grid-cell-renderer,.table-data-grid-cell-tooltip,.table-data-grid-cell-content{display:block;min-width:0;width:100%}.table-data-grid-cell-content{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kong-ui-public-table-data-grid[data-v-17889e6a]{border:none;border-radius:4px;border-radius:var(--kui-border-radius-20, 4px);box-sizing:border-box;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;width:100%}.table-data-grid-grid[data-v-17889e6a]{--ag-background-color: var(--kui-color-background, #ffffff);--ag-border-color: var(--kui-color-border, #e0e4ea);--ag-foreground-color: var(--kui-color-text, #0d0e14);--ag-header-background-color: var(--kui-color-background, #ffffff);--ag-header-column-border: 1px solid var(--kui-color-border, #e0e4ea);--ag-header-column-border-height: 30%;--ag-header-column-resize-handle-color: transparent;--ag-header-font-weight: var(--kui-font-weight-semibold, 600);--ag-header-text-color: var(--kui-color-text-neutral, #6c7489);--ag-wrapper-border: none;--ag-wrapper-border-radius: 0;flex:1 1 auto;min-height:0;width:100%}.ag-cell{align-items:center;display:flex;min-width:0}.ag-cell-wrapper,.ag-cell-value{min-width:0;width:100%}