@optimum-intelligence/opti-ui 0.7.2 → 0.7.3

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 (53) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/components/app-shell/AppShell.d.ts +12 -3
  3. package/dist/components/app-shell/AppShell.js +45 -26
  4. package/dist/components/app-shell/AppShell.js.map +1 -1
  5. package/dist/components/data-table/DataTable.d.ts +25 -4
  6. package/dist/components/data-table/DataTable.js +238 -90
  7. package/dist/components/data-table/DataTable.js.map +1 -1
  8. package/dist/components/data-table/DataTableContent.d.ts +6 -1
  9. package/dist/components/data-table/DataTableContent.js +306 -409
  10. package/dist/components/data-table/DataTableContent.js.map +1 -1
  11. package/dist/components/data-table/DataTableFilters.d.ts +6 -1
  12. package/dist/components/data-table/DataTableFilters.js +65 -45
  13. package/dist/components/data-table/DataTableFilters.js.map +1 -1
  14. package/dist/components/data-table/DataTableRow.js +2 -0
  15. package/dist/components/data-table/DataTableRow.js.map +1 -1
  16. package/dist/components/data-table/types.d.ts +14 -1
  17. package/dist/components/data-table/useDataTable.js +2 -0
  18. package/dist/components/data-table/useDataTable.js.map +1 -1
  19. package/dist/components/drawer/Drawer.d.ts +7 -4
  20. package/dist/components/drawer/Drawer.js +2 -1
  21. package/dist/components/drawer/Drawer.js.map +1 -1
  22. package/dist/components/map/Map.d.ts +30 -6
  23. package/dist/components/map/Map.js +387 -271
  24. package/dist/components/map/Map.js.map +1 -1
  25. package/dist/components/stat-card/StatCard.d.ts +2 -2
  26. package/dist/components/stat-card/StatCard.js +1 -1
  27. package/dist/components/stat-card/StatCard.js.map +1 -1
  28. package/dist/components/stepper/Stepper.d.ts +7 -1
  29. package/dist/components/stepper/Stepper.js +46 -27
  30. package/dist/components/stepper/Stepper.js.map +1 -1
  31. package/dist/components/table/Table.d.ts +1 -1
  32. package/dist/components/table/Table.js +3 -1
  33. package/dist/components/table/Table.js.map +1 -1
  34. package/dist/components/tabs/Tabs.d.ts +4 -1
  35. package/dist/components/tabs/Tabs.js +33 -23
  36. package/dist/components/tabs/Tabs.js.map +1 -1
  37. package/dist/components/toggle/Toggle.d.ts +1 -1
  38. package/dist/components/toggle/Toggle.js.map +1 -1
  39. package/dist/components.json +101 -29
  40. package/dist/icons/index.d.ts +8 -0
  41. package/dist/icons/index.js +11 -1
  42. package/dist/icons/index.js.map +1 -1
  43. package/dist/index.js +2 -2
  44. package/dist/llms-full.txt +48 -19
  45. package/dist/llms.txt +7 -7
  46. package/dist/opti-ui.css +380 -29
  47. package/dist/utils/media.d.ts +4 -0
  48. package/dist/utils/media.js +34 -0
  49. package/dist/utils/media.js.map +1 -0
  50. package/dist/utils/scroll-fade.d.ts +9 -0
  51. package/dist/utils/scroll-fade.js +45 -0
  52. package/dist/utils/scroll-fade.js.map +1 -0
  53. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableContent.js","names":["React","cx","Button","Checkbox","EmptyState","Skeleton","Table","TableBody","TableCell","TableHead","TableHeader","TableRow","TableProps","useDataTableContext","DataTableRow","SizerRow","isTextEditor","pickSizerRows","useColumnLock","usePageHeight","useVirtualRows","ROW_ESTIMATE","compact","normal","comfortable","DataTableVirtualOptions","rowHeight","overscan","DataTableContentProps","Pick","layout","maxHeight","virtualized","onEndReached","empty","ReactNode","tableProps","Omit","DataTableContent","t0","$","_c","density","t1","striped","stickyHeader","t2","t3","undefined","table","labels","text","visibleColumns","columns","loading","error","anchor","setAnchor","useState","reported","useRef","virtual","t4","t5","height","scrolls","stable","hasActions","Boolean","rowActions","editable","deletable","placeholders","pending","Math","min","paginated","pageSize","noMatch","mode","filtered","totalCount","t6","find","id","focused","t7","pageRows","shown","span","length","Number","selectable","t8","map","_temp","columnKey","join","lock","measuring","t9","t10","t11","enabled","count","estimate","viewport","key","rows","t12","end","start","slice","rendered","sizers","allRows","holdsPage","pageHeight","shortPage","page","t13","wrapper","current","scrollHeight","scrollTop","clientHeight","reportEnd","t14","t15","search","t16","sort","t17","direction","t18","filterValues","JSON","stringify","t19","view","t20","closest","parentElement","scrollTo","top","t21","useEffect","t22","wrapper_0","T0","t23","t24","t25","t26","t27","t28","t29","style","width","minWidth","t30","wrapperProps","t31","t32","className","t33","t34","t35","t36","minHeight","t37","event","onScroll","currentTarget","t38","t39","widths","_temp2","t40","t41","t42","selectAll","allSelected","someSelected","checked","toggleAll","t43","t44","column","align","numeric","isSortable","toggleSort","header","actions","t45","t46","before","t47","t48","_","index_0","index","column_0","position","Array","from","t49","entry","index_1","t50","after","t51","entry_0","t52","t53","activeFilterCount","onRetry","reset","errorTitle","retry","noMatchTitle","emptyTitle","emptyDescription","noFilterMatchDescription","noMatchDescription","clearFilters","clearSearch","t54","c","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTableContent.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { Button } from '../button/Button';\nimport { Checkbox } from '../choice/Choice';\nimport { EmptyState } from '../empty-state/EmptyState';\nimport { Skeleton } from '../skeleton/Skeleton';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, type TableProps } from '../table/Table';\nimport { useDataTableContext } from './context';\nimport { DataTableRow, SizerRow, isTextEditor } from './DataTableRow';\nimport { pickSizerRows, useColumnLock, usePageHeight, useVirtualRows } from './layout';\n\n// Row heights of the three densities, assumed until the first row is measured.\nconst ROW_ESTIMATE = { compact: 31, normal: 35, comfortable: 46 };\n\nexport interface DataTableVirtualOptions {\n /** Height of every row in pixels. Left out, the rows are measured. */\n rowHeight?: number;\n /** Rows rendered beyond each edge of the view (default 8). */\n overscan?: number;\n}\n\nexport interface DataTableContentProps extends Pick<TableProps, 'density' | 'striped' | 'stickyHeader'> {\n /**\n * `stable` (default) measures the columns once and holds their widths, keeps a\n * short last page as tall as a full one, and keeps a row's height while it is\n * edited: nothing moves while the table is used. `auto` leaves the layout to\n * the browser, which fits the columns to the rows on screen.\n */\n layout?: 'stable' | 'auto';\n /** Scrolls the rows inside this height and keeps the header in view. */\n maxHeight?: number | string;\n /**\n * Renders only the rows in view, for thousands of rows without pagination.\n * Rows are one line high: columns fit their longest value, so mark those with\n * long text `truncate`. Scrolls inside `maxHeight` (default `32rem`).\n */\n virtualized?: boolean | DataTableVirtualOptions;\n /**\n * Called when the rows are scrolled near their end, once per row count: load\n * and append the next rows. Needs `maxHeight` or `virtualized`.\n */\n onEndReached?: () => void;\n /** Replaces the default empty state. */\n empty?: React.ReactNode;\n /** Props for the underlying `Table` (className, wrapperProps, aria-*). */\n tableProps?: Omit<TableProps, 'children'>;\n}\n\n/** The table itself, with its loading, empty and error states. */\nexport function DataTableContent({\n density = 'normal',\n striped,\n stickyHeader,\n layout = 'stable',\n maxHeight,\n virtualized = false,\n onEndReached,\n empty,\n tableProps,\n}: DataTableContentProps) {\n const table = useDataTableContext();\n const { labels: text, visibleColumns: columns, loading, error } = table;\n // Found by the layout hooks through `closest('table')`.\n const [anchor, setAnchor] = React.useState<HTMLElement | null>(null);\n const reported = React.useRef(-1);\n\n const virtual = virtualized !== false;\n const { rowHeight, overscan = 8 } = typeof virtualized === 'object' ? virtualized : {};\n const height = maxHeight ?? (virtual ? '32rem' : undefined);\n const scrolls = height !== undefined;\n const stable = layout === 'stable' || virtual;\n\n const hasActions = Boolean(table.rowActions) || table.editable || table.deletable;\n const placeholders = table.pending ? Math.min(table.paginated ? table.pageSize : 5, 10) : 0;\n const noMatch = table.mode === 'server' ? table.filtered : table.totalCount > 0;\n const focused = columns.find(isTextEditor)?.id;\n const shown = error ? [] : table.pageRows;\n const span = columns.length + Number(table.selectable) + Number(hasActions);\n\n const columnKey = [density, table.selectable, hasActions, ...columns.map((c) => `${c.id}:${c.width ?? ''}:${c.minWidth ?? ''}`)].join('|');\n const { lock, measuring } = useColumnLock(anchor, stable, columnKey, shown.length > 0);\n const rows = useVirtualRows(anchor, {\n enabled: virtual,\n count: shown.length,\n rowHeight,\n overscan,\n estimate: ROW_ESTIMATE[density],\n viewport: typeof maxHeight === 'number' ? maxHeight : 512,\n key: density,\n });\n const rendered = virtual ? shown.slice(rows.start, rows.end) : shown;\n const sizers = measuring && table.allRows.length > rendered.length ? pickSizerRows(table.allRows, columns) : [];\n\n const holdsPage = stable && table.paginated && !scrolls;\n const pageHeight = usePageHeight(anchor, holdsPage, shown.length === table.pageSize, `${density}|${table.pageSize}`);\n const shortPage = table.page > 1 && shown.length > 0 && shown.length < table.pageSize;\n\n const reportEnd = (wrapper: HTMLElement) => {\n if (!onEndReached || !scrolls || loading || !shown.length || reported.current === shown.length) return;\n if (wrapper.scrollHeight - wrapper.scrollTop - wrapper.clientHeight > 4 * ROW_ESTIMATE[density]) return;\n reported.current = shown.length;\n onEndReached();\n };\n\n // New rows start at the top: the scroll position belonged to the previous ones.\n const view = [table.page, table.search, table.sort?.id, table.sort?.direction, JSON.stringify(table.filterValues)].join('|');\n React.useEffect(() => {\n if (scrolls) anchor?.closest('table')?.parentElement?.scrollTo({ top: 0 });\n }, [anchor, scrolls, view]);\n\n // Rows that do not fill the view cannot be scrolled to their end: ask for more right away.\n React.useEffect(() => {\n const wrapper = anchor?.closest('table')?.parentElement;\n if (wrapper) reportEnd(wrapper);\n });\n\n return (\n <>\n <Table\n density={density}\n striped={striped}\n stickyHeader={stickyHeader ?? scrolls}\n aria-busy={loading || undefined}\n aria-rowcount={virtual ? shown.length + 1 : undefined}\n {...tableProps}\n data-layout={stable ? 'stable' : undefined}\n data-locked={lock ? '' : undefined}\n data-virtualized={virtual ? '' : undefined}\n style={lock ? { width: lock.table, minWidth: '100%', ...tableProps?.style } : tableProps?.style}\n wrapperProps={{\n ...tableProps?.wrapperProps,\n className: cx(scrolls && 'oui-data-table__scroll', tableProps?.wrapperProps?.className),\n style: {\n maxHeight: height,\n minHeight: holdsPage && shortPage ? pageHeight : undefined,\n ...tableProps?.wrapperProps?.style,\n },\n onScroll: (event) => {\n tableProps?.wrapperProps?.onScroll?.(event);\n rows.onScroll(event);\n reportEnd(event.currentTarget);\n },\n }}\n >\n <colgroup ref={setAnchor}>{lock?.widths.map((width, index) => <col key={index} style={{ width }} />)}</colgroup>\n <TableHeader>\n <TableRow aria-rowindex={virtual ? 1 : undefined}>\n {table.selectable && (\n <TableHead className=\"oui-data-table__check\">\n <Checkbox\n size=\"sm\"\n aria-label={text.selectAll}\n checked={table.allSelected}\n indeterminate={table.someSelected}\n disabled={!table.rows.length}\n onCheckedChange={(checked) => table.toggleAll(checked)}\n />\n </TableHead>\n )}\n {columns.map((column) => (\n <TableHead\n key={column.id}\n align={column.align ?? (column.numeric ? 'end' : 'start')}\n style={\n !lock && (column.width !== undefined || column.minWidth !== undefined)\n ? { width: column.width, minWidth: column.minWidth }\n : undefined\n }\n sort={table.isSortable(column) ? (table.sort?.id === column.id ? table.sort.direction : false) : undefined}\n onSort={() => table.toggleSort(column.id)}\n >\n {column.header}\n </TableHead>\n ))}\n {hasActions && (\n <TableHead className=\"oui-data-table__row-actions\">\n <span className=\"oui-visually-hidden\">{text.actions}</span>\n </TableHead>\n )}\n </TableRow>\n </TableHeader>\n {rows.before > 0 && (\n <tbody className=\"oui-data-table__spacer\" aria-hidden>\n <tr style={{ height: rows.before }}>\n <td colSpan={span} />\n </tr>\n </tbody>\n )}\n <TableBody>\n {Array.from({ length: placeholders }, (_, index) => (\n <TableRow key={index} aria-hidden>\n {table.selectable && <TableCell className=\"oui-data-table__check\" />}\n {columns.map((column, position) => (\n <TableCell key={column.id} align={column.align} numeric={column.numeric}>\n <Skeleton className=\"oui-data-table__skeleton\" width={`${45 + ((index * 3 + position * 5) % 7) * 8}%`} />\n </TableCell>\n ))}\n {hasActions && <TableCell className=\"oui-data-table__row-actions\" />}\n </TableRow>\n ))}\n {rendered.map((entry, index) => (\n <DataTableRow\n key={entry.id}\n table={table}\n entry={entry}\n columns={columns}\n hasActions={hasActions}\n focused={focused}\n index={virtual ? rows.start + index : undefined}\n height={rows.rowHeight}\n />\n ))}\n </TableBody>\n {rows.after > 0 && (\n <tbody className=\"oui-data-table__spacer\" aria-hidden>\n <tr style={{ height: rows.after }}>\n <td colSpan={span} />\n </tr>\n </tbody>\n )}\n {sizers.length > 0 && (\n <tbody className=\"oui-data-table__sizer\" aria-hidden inert>\n {sizers.map((entry) => (\n <SizerRow key={entry.id} table={table} entry={entry} columns={columns} hasActions={hasActions} />\n ))}\n </tbody>\n )}\n </Table>\n\n {error ? (\n <EmptyState\n role=\"alert\"\n title={text.errorTitle}\n description={error}\n actions={\n table.onRetry ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={table.onRetry}>\n {text.retry}\n </Button>\n ) : undefined\n }\n />\n ) : (\n !table.rows.length &&\n !loading &&\n (empty ?? (\n <EmptyState\n title={noMatch ? text.noMatchTitle : text.emptyTitle}\n description={\n !noMatch ? text.emptyDescription : table.activeFilterCount ? text.noFilterMatchDescription : text.noMatchDescription\n }\n actions={\n table.filtered ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={table.reset}>\n {table.activeFilterCount ? text.clearFilters : text.clearSearch}\n </Button>\n ) : undefined\n }\n />\n ))\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTableContent.js","names":["React","cx","NARROW_SCREEN","useMediaQuery","Button","Checkbox","EmptyState","Skeleton","Table","TableBody","TableCell","TableHead","TableHeader","TableRow","TableProps","useDataTableContext","DataTableRow","SizerRow","isTextEditor","pickSizerRows","useColumnLock","usePageHeight","useVirtualRows","ROW_ESTIMATE","compact","normal","comfortable","DataTableVirtualOptions","rowHeight","overscan","DataTableContentProps","Pick","layout","maxHeight","virtualized","onEndReached","stickyFirstColumn","empty","ReactNode","tableProps","Omit","DataTableContent","t0","$","_c","density","t1","striped","stickyHeader","t2","t3","t4","undefined","table","labels","text","loading","error","narrow","columns","visibleColumns","filter","_temp","anchor","setAnchor","useState","reported","useRef","virtual","t5","t6","height","scrolls","stable","hasActions","Boolean","rowActions","editable","deletable","placeholders","pending","Math","min","paginated","pageSize","noMatch","mode","filtered","totalCount","focused","find","id","t7","pageRows","shown","span","length","Number","selectable","columnKey","map","_temp2","join","lock","measuring","t8","t9","t10","enabled","count","estimate","viewport","key","rows","t11","end","start","slice","rendered","sizers","allRows","holdsPage","pageHeight","shortPage","page","t12","wrapper","current","scrollHeight","scrollTop","clientHeight","reportEnd","t13","t14","search","t15","sort","t16","direction","t17","filterValues","JSON","stringify","t18","view","t19","closest","parentElement","scrollTo","top","t20","useEffect","t21","wrapper_0","t22","style","width","minWidth","t23","wrapperProps","t24","t25","className","t26","t27","t28","t29","minHeight","t30","event","onScroll","currentTarget","t31","t32","widths","_temp3","t33","t34","selectAll","allSelected","someSelected","checked","toggleAll","t35","column_0","column","align","numeric","nowrap","isSortable","toggleSort","header","t36","actions","t37","before","t38","Array","from","_","index_0","index","column_1","position","t39","entry","index_1","t40","t41","after","t42","activeFilterCount","onRetry","reset","errorTitle","retry","noMatchTitle","emptyTitle","emptyDescription","noFilterMatchDescription","noMatchDescription","clearFilters","clearSearch","entry_0","c","priority","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTableContent.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { NARROW_SCREEN, useMediaQuery } from '../../utils/media';\nimport { Button } from '../button/Button';\nimport { Checkbox } from '../choice/Choice';\nimport { EmptyState } from '../empty-state/EmptyState';\nimport { Skeleton } from '../skeleton/Skeleton';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, type TableProps } from '../table/Table';\nimport { useDataTableContext } from './context';\nimport { DataTableRow, SizerRow, isTextEditor } from './DataTableRow';\nimport { pickSizerRows, useColumnLock, usePageHeight, useVirtualRows } from './layout';\n\n// Row heights of the three densities, assumed until the first row is measured.\nconst ROW_ESTIMATE = { compact: 31, normal: 35, comfortable: 46 };\n\nexport interface DataTableVirtualOptions {\n /** Height of every row in pixels. Left out, the rows are measured. */\n rowHeight?: number;\n /** Rows rendered beyond each edge of the view (default 8). */\n overscan?: number;\n}\n\nexport interface DataTableContentProps extends Pick<TableProps, 'density' | 'striped' | 'stickyHeader'> {\n /**\n * `stable` (default) measures the columns once and holds their widths, keeps a\n * short last page as tall as a full one, and keeps a row's height while it is\n * edited: nothing moves while the table is used. `auto` leaves the layout to\n * the browser, which fits the columns to the rows on screen.\n */\n layout?: 'stable' | 'auto';\n /** Scrolls the rows inside this height and keeps the header in view. */\n maxHeight?: number | string;\n /**\n * Renders only the rows in view, for thousands of rows without pagination.\n * Rows are one line high: columns fit their longest value, so mark those with\n * long text `truncate`. Scrolls inside `maxHeight` (default `32rem`).\n */\n virtualized?: boolean | DataTableVirtualOptions;\n /**\n * Called when the rows are scrolled near their end, once per row count: load\n * and append the next rows. Needs `maxHeight` or `virtualized`.\n */\n onEndReached?: () => void;\n /**\n * Keeps the first column (and the selection checkboxes) in place while the table scrolls sideways,\n * so each row stays identifiable on narrow screens.\n */\n stickyFirstColumn?: boolean;\n /** Replaces the default empty state. */\n empty?: React.ReactNode;\n /** Props for the underlying `Table` (className, wrapperProps, aria-*). */\n tableProps?: Omit<TableProps, 'children'>;\n}\n\n/** The table itself, with its loading, empty and error states. */\nexport function DataTableContent({\n density = 'normal',\n striped,\n stickyHeader,\n layout = 'stable',\n maxHeight,\n virtualized = false,\n onEndReached,\n stickyFirstColumn = false,\n empty,\n tableProps,\n}: DataTableContentProps) {\n const table = useDataTableContext();\n const { labels: text, loading, error } = table;\n // Phones show only the columns that matter most.\n const narrow = useMediaQuery(NARROW_SCREEN);\n const columns = narrow ? table.visibleColumns.filter((column) => column.priority !== 'low') : table.visibleColumns;\n // Found by the layout hooks through `closest('table')`.\n const [anchor, setAnchor] = React.useState<HTMLElement | null>(null);\n const reported = React.useRef(-1);\n\n const virtual = virtualized !== false;\n const { rowHeight, overscan = 8 } = typeof virtualized === 'object' ? virtualized : {};\n const height = maxHeight ?? (virtual ? '32rem' : undefined);\n const scrolls = height !== undefined;\n const stable = layout === 'stable' || virtual;\n\n const hasActions = Boolean(table.rowActions) || table.editable || table.deletable;\n const placeholders = table.pending ? Math.min(table.paginated ? table.pageSize : 5, 10) : 0;\n const noMatch = table.mode === 'server' ? table.filtered : table.totalCount > 0;\n const focused = columns.find(isTextEditor)?.id;\n const shown = error ? [] : table.pageRows;\n const span = columns.length + Number(table.selectable) + Number(hasActions);\n\n const columnKey = [density, table.selectable, hasActions, ...columns.map((c) => `${c.id}:${c.width ?? ''}:${c.minWidth ?? ''}`)].join('|');\n const { lock, measuring } = useColumnLock(anchor, stable, columnKey, shown.length > 0);\n const rows = useVirtualRows(anchor, {\n enabled: virtual,\n count: shown.length,\n rowHeight,\n overscan,\n estimate: ROW_ESTIMATE[density],\n viewport: typeof maxHeight === 'number' ? maxHeight : 512,\n key: density,\n });\n const rendered = virtual ? shown.slice(rows.start, rows.end) : shown;\n const sizers = measuring && table.allRows.length > rendered.length ? pickSizerRows(table.allRows, columns) : [];\n\n const holdsPage = stable && table.paginated && !scrolls;\n const pageHeight = usePageHeight(anchor, holdsPage, shown.length === table.pageSize, `${density}|${table.pageSize}`);\n const shortPage = table.page > 1 && shown.length > 0 && shown.length < table.pageSize;\n\n const reportEnd = (wrapper: HTMLElement) => {\n if (!onEndReached || !scrolls || loading || !shown.length || reported.current === shown.length) return;\n if (wrapper.scrollHeight - wrapper.scrollTop - wrapper.clientHeight > 4 * ROW_ESTIMATE[density]) return;\n reported.current = shown.length;\n onEndReached();\n };\n\n // New rows start at the top: the scroll position belonged to the previous ones.\n const view = [table.page, table.search, table.sort?.id, table.sort?.direction, JSON.stringify(table.filterValues)].join('|');\n React.useEffect(() => {\n if (scrolls) anchor?.closest('table')?.parentElement?.scrollTo({ top: 0 });\n }, [anchor, scrolls, view]);\n\n // Rows that do not fill the view cannot be scrolled to their end: ask for more right away.\n React.useEffect(() => {\n const wrapper = anchor?.closest('table')?.parentElement;\n if (wrapper) reportEnd(wrapper);\n });\n\n return (\n <>\n <Table\n density={density}\n striped={striped}\n stickyHeader={stickyHeader ?? scrolls}\n aria-busy={loading || undefined}\n aria-rowcount={virtual ? shown.length + 1 : undefined}\n {...tableProps}\n data-layout={stable ? 'stable' : undefined}\n data-locked={lock ? '' : undefined}\n data-virtualized={virtual ? '' : undefined}\n data-sticky-column={stickyFirstColumn || undefined}\n style={lock ? { width: lock.table, minWidth: '100%', ...tableProps?.style } : tableProps?.style}\n wrapperProps={{\n ...tableProps?.wrapperProps,\n className: cx(scrolls && 'oui-data-table__scroll', tableProps?.wrapperProps?.className),\n style: {\n maxHeight: height,\n minHeight: holdsPage && shortPage ? pageHeight : undefined,\n ...tableProps?.wrapperProps?.style,\n },\n onScroll: (event) => {\n tableProps?.wrapperProps?.onScroll?.(event);\n rows.onScroll(event);\n reportEnd(event.currentTarget);\n },\n }}\n >\n <colgroup ref={setAnchor}>{lock?.widths.map((width, index) => <col key={index} style={{ width }} />)}</colgroup>\n <TableHeader>\n <TableRow aria-rowindex={virtual ? 1 : undefined}>\n {table.selectable && (\n <TableHead className=\"oui-data-table__check\">\n <Checkbox\n size=\"sm\"\n aria-label={text.selectAll}\n checked={table.allSelected}\n indeterminate={table.someSelected}\n disabled={!table.rows.length}\n onCheckedChange={(checked) => table.toggleAll(checked)}\n />\n </TableHead>\n )}\n {columns.map((column) => (\n <TableHead\n key={column.id}\n align={column.align ?? (column.numeric ? 'end' : 'start')}\n style={\n !lock && (column.width !== undefined || column.minWidth !== undefined)\n ? { width: column.width, minWidth: column.minWidth }\n : undefined\n }\n data-nowrap={column.nowrap || undefined}\n sort={table.isSortable(column) ? (table.sort?.id === column.id ? table.sort.direction : false) : undefined}\n onSort={() => table.toggleSort(column.id)}\n >\n {column.header}\n </TableHead>\n ))}\n {hasActions && (\n <TableHead className=\"oui-data-table__row-actions\">\n <span className=\"oui-visually-hidden\">{text.actions}</span>\n </TableHead>\n )}\n </TableRow>\n </TableHeader>\n {rows.before > 0 && (\n <tbody className=\"oui-data-table__spacer\" aria-hidden>\n <tr style={{ height: rows.before }}>\n <td colSpan={span} />\n </tr>\n </tbody>\n )}\n <TableBody>\n {Array.from({ length: placeholders }, (_, index) => (\n <TableRow key={index} aria-hidden>\n {table.selectable && <TableCell className=\"oui-data-table__check\" />}\n {columns.map((column, position) => (\n <TableCell key={column.id} align={column.align} numeric={column.numeric}>\n <Skeleton className=\"oui-data-table__skeleton\" width={`${45 + ((index * 3 + position * 5) % 7) * 8}%`} />\n </TableCell>\n ))}\n {hasActions && <TableCell className=\"oui-data-table__row-actions\" />}\n </TableRow>\n ))}\n {rendered.map((entry, index) => (\n <DataTableRow\n key={entry.id}\n table={table}\n entry={entry}\n columns={columns}\n hasActions={hasActions}\n focused={focused}\n index={virtual ? rows.start + index : undefined}\n height={rows.rowHeight}\n />\n ))}\n </TableBody>\n {rows.after > 0 && (\n <tbody className=\"oui-data-table__spacer\" aria-hidden>\n <tr style={{ height: rows.after }}>\n <td colSpan={span} />\n </tr>\n </tbody>\n )}\n {sizers.length > 0 && (\n <tbody className=\"oui-data-table__sizer\" aria-hidden inert>\n {sizers.map((entry) => (\n <SizerRow key={entry.id} table={table} entry={entry} columns={columns} hasActions={hasActions} />\n ))}\n </tbody>\n )}\n </Table>\n\n {error ? (\n <EmptyState\n role=\"alert\"\n title={text.errorTitle}\n description={error}\n actions={\n table.onRetry ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={table.onRetry}>\n {text.retry}\n </Button>\n ) : undefined\n }\n />\n ) : (\n !table.rows.length &&\n !loading &&\n (empty ?? (\n <EmptyState\n title={noMatch ? text.noMatchTitle : text.emptyTitle}\n description={\n !noMatch ? text.emptyDescription : table.activeFilterCount ? text.noFilterMatchDescription : text.noMatchDescription\n }\n actions={\n table.filtered ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={table.reset}>\n {table.activeFilterCount ? text.clearFilters : text.clearSearch}\n </Button>\n ) : undefined\n }\n />\n ))\n )}\n </>\n );\n}\n"],"mappings":"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"}
@@ -13,6 +13,11 @@ export declare function DataTableFilter({ id, size, className }: DataTableFilter
13
13
  export interface DataTableFiltersProps extends React.HTMLAttributes<HTMLDivElement> {
14
14
  /** Control height of every filter. */
15
15
  size?: DataTableControlSize;
16
+ /**
17
+ * One filter per row at full width, chip rows and date ranges under their name: the layout of the
18
+ * filter sheet on phones. Leaves out the clear button, which the sheet keeps in its footer.
19
+ */
20
+ stacked?: boolean;
16
21
  }
17
22
  /** Every filter of the table, with a clear button while any is active. Children are added after the filters. */
18
- export declare function DataTableFilters({ size, className, children, ...props }: DataTableFiltersProps): React.JSX.Element | null;
23
+ export declare function DataTableFilters({ size, stacked, className, children, ...props }: DataTableFiltersProps): React.JSX.Element | null;
@@ -238,86 +238,106 @@ function _temp(option_0) {
238
238
  }
239
239
  /** Every filter of the table, with a clear button while any is active. Children are added after the filters. */
240
240
  function DataTableFilters(t0) {
241
- const $ = c(23);
241
+ const $ = c(28);
242
242
  let children;
243
243
  let className;
244
244
  let props;
245
245
  let t1;
246
+ let t2;
246
247
  if ($[0] !== t0) {
247
- ({size: t1, className, children, ...props} = t0);
248
+ ({size: t1, stacked: t2, className, children, ...props} = t0);
248
249
  $[0] = t0;
249
250
  $[1] = children;
250
251
  $[2] = className;
251
252
  $[3] = props;
252
253
  $[4] = t1;
254
+ $[5] = t2;
253
255
  } else {
254
256
  children = $[1];
255
257
  className = $[2];
256
258
  props = $[3];
257
259
  t1 = $[4];
260
+ t2 = $[5];
258
261
  }
259
262
  const size = t1 === void 0 ? "md" : t1;
263
+ const stacked = t2 === void 0 ? false : t2;
260
264
  const table = useDataTableContext();
261
265
  if (!table.filters.length && !children) return null;
262
- const t2 = table.labels.filters;
263
- let t3;
264
- if ($[5] !== className) {
265
- t3 = cx("oui-data-table__filters", className);
266
- $[5] = className;
267
- $[6] = t3;
268
- } else t3 = $[6];
266
+ const t3 = table.labels.filters;
269
267
  let t4;
270
- if ($[7] !== size || $[8] !== table.filters) {
271
- let t5;
272
- if ($[10] !== size) {
273
- t5 = (filter) => /* @__PURE__ */ jsx(DataTableFilter, {
268
+ if ($[6] !== className) {
269
+ t4 = cx("oui-data-table__filters", className);
270
+ $[6] = className;
271
+ $[7] = t4;
272
+ } else t4 = $[7];
273
+ const t5 = stacked || void 0;
274
+ let t6;
275
+ if ($[8] !== size || $[9] !== stacked || $[10] !== table.filters) {
276
+ let t7;
277
+ if ($[12] !== size || $[13] !== stacked) {
278
+ t7 = (filter) => stacked && (filter.type === "chips" || filter.type === "dateRange") ? /* @__PURE__ */ jsxs("div", {
279
+ className: "oui-data-table__filter-field",
280
+ children: [/* @__PURE__ */ jsx("span", {
281
+ className: "oui-data-table__filter-heading",
282
+ "aria-hidden": true,
283
+ children: filter.label
284
+ }), /* @__PURE__ */ jsx(DataTableFilter, {
285
+ id: filter.id,
286
+ size
287
+ })]
288
+ }, filter.id) : /* @__PURE__ */ jsx(DataTableFilter, {
274
289
  id: filter.id,
275
290
  size
276
291
  }, filter.id);
277
- $[10] = size;
278
- $[11] = t5;
279
- } else t5 = $[11];
280
- t4 = table.filters.map(t5);
281
- $[7] = size;
282
- $[8] = table.filters;
283
- $[9] = t4;
284
- } else t4 = $[9];
285
- let t5;
286
- if ($[12] !== table.activeFilterCount || $[13] !== table.clearFilters || $[14] !== table.labels.clearFilters) {
287
- t5 = table.activeFilterCount > 0 && /* @__PURE__ */ jsxs(Button, {
292
+ $[12] = size;
293
+ $[13] = stacked;
294
+ $[14] = t7;
295
+ } else t7 = $[14];
296
+ t6 = table.filters.map(t7);
297
+ $[8] = size;
298
+ $[9] = stacked;
299
+ $[10] = table.filters;
300
+ $[11] = t6;
301
+ } else t6 = $[11];
302
+ let t7;
303
+ if ($[15] !== stacked || $[16] !== table.activeFilterCount || $[17] !== table.clearFilters || $[18] !== table.labels.clearFilters) {
304
+ t7 = !stacked && table.activeFilterCount > 0 && /* @__PURE__ */ jsxs(Button, {
288
305
  size: "sm",
289
306
  variant: "ghost",
290
307
  shape: "rounded",
291
308
  onClick: table.clearFilters,
292
309
  children: [/* @__PURE__ */ jsx(XIcon, {}), table.labels.clearFilters]
293
310
  });
294
- $[12] = table.activeFilterCount;
295
- $[13] = table.clearFilters;
296
- $[14] = table.labels.clearFilters;
297
- $[15] = t5;
298
- } else t5 = $[15];
299
- let t6;
300
- if ($[16] !== children || $[17] !== props || $[18] !== t3 || $[19] !== t4 || $[20] !== t5 || $[21] !== table.labels.filters) {
301
- t6 = /* @__PURE__ */ jsxs("div", {
311
+ $[15] = stacked;
312
+ $[16] = table.activeFilterCount;
313
+ $[17] = table.clearFilters;
314
+ $[18] = table.labels.clearFilters;
315
+ $[19] = t7;
316
+ } else t7 = $[19];
317
+ let t8;
318
+ if ($[20] !== children || $[21] !== props || $[22] !== t4 || $[23] !== t5 || $[24] !== t6 || $[25] !== t7 || $[26] !== table.labels.filters) {
319
+ t8 = /* @__PURE__ */ jsxs("div", {
302
320
  role: "group",
303
- "aria-label": t2,
304
- className: t3,
321
+ "aria-label": t3,
322
+ className: t4,
323
+ "data-stacked": t5,
305
324
  ...props,
306
325
  children: [
307
- t4,
326
+ t6,
308
327
  children,
309
- t5
328
+ t7
310
329
  ]
311
330
  });
312
- $[16] = children;
313
- $[17] = props;
314
- $[18] = t3;
315
- $[19] = t4;
316
- $[20] = t5;
317
- $[21] = table.labels.filters;
318
- $[22] = t6;
319
- } else t6 = $[22];
320
- return t6;
331
+ $[20] = children;
332
+ $[21] = props;
333
+ $[22] = t4;
334
+ $[23] = t5;
335
+ $[24] = t6;
336
+ $[25] = t7;
337
+ $[26] = table.labels.filters;
338
+ $[27] = t8;
339
+ } else t8 = $[27];
340
+ return t8;
321
341
  }
322
342
  //#endregion
323
343
  export { DataTableFilter, DataTableFilters };
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableFilters.js","names":["React","cx","ChevronDownIcon","XIcon","Button","formatDate","DateRange","DateRangePicker","Select","Toggle","ToggleGroup","useDataTableContext","DataTableControlSize","DataTableFilterProps","id","size","className","DataTableFilter","t0","$","_c","t1","undefined","table","t2","filters","T0","T1","t3","t4","t5","t6","t7","t8","t9","Symbol","for","bb0","t10","candidate","filter","find","value","filterValues","t11","classes","type","t12","pressed","setFilterValue","label","t13","t14","t15","next","length","options","map","option","counts","range","next_0","presets","min","max","locale","start","end","Root","labels","filterAll","next_1","Content","_temp","option_0","DataTableFiltersProps","HTMLAttributes","HTMLDivElement","DataTableFilters","children","props","activeFilterCount","clearFilters","_c"],"sources":["../../../src/components/data-table/DataTableFilters.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { ChevronDownIcon, XIcon } from '../../icons';\nimport { Button } from '../button/Button';\nimport { formatDate, type DateRange } from '../calendar/date-utils';\nimport { DateRangePicker } from '../date-picker/DateRangePicker';\nimport { Select } from '../select/Select';\nimport { Toggle, ToggleGroup } from '../toggle/Toggle';\nimport { useDataTableContext } from './context';\n\nexport type DataTableControlSize = 'sm' | 'md';\n\nexport interface DataTableFilterProps {\n /** Id of the filter: the column id, or the `id` given in `filters`. */\n id: string;\n /** Control height. */\n size?: DataTableControlSize;\n /** Class name for the filter control. */\n className?: string;\n}\n\n/** The control of one filter: a dropdown, a toggle chip, a row of chips or a date range picker. */\nexport function DataTableFilter({ id, size = 'md', className }: DataTableFilterProps) {\n const table = useDataTableContext();\n const filter = table.filters.find((candidate) => candidate.id === id);\n if (!filter) return null;\n const value = table.filterValues[id];\n const classes = cx('oui-data-table__filter', className);\n\n if (filter.type === 'toggle') {\n return (\n <Toggle\n size={size}\n className={classes}\n pressed={value !== undefined}\n onPressedChange={(pressed) => table.setFilterValue(id, pressed || undefined)}\n >\n {filter.label}\n </Toggle>\n );\n }\n\n if (filter.type === 'chips') {\n return (\n <ToggleGroup\n multiple\n size={size}\n variant=\"outline\"\n aria-label={filter.label}\n className={cx('oui-data-table__chips', className)}\n value={(value as string[] | undefined) ?? []}\n onValueChange={(next) => table.setFilterValue(id, next.length ? (next as string[]) : undefined)}\n >\n {filter.options.map((option) => (\n <Toggle key={option.value} value={option.value} size={size} className=\"oui-data-table__filter\">\n {option.label}\n {filter.counts && <span className=\"oui-data-table__filter-count\">{filter.counts[option.value] ?? 0}</span>}\n </Toggle>\n ))}\n </ToggleGroup>\n );\n }\n\n if (filter.type === 'dateRange') {\n const range = (value as DateRange | undefined) ?? null;\n return (\n <DateRangePicker\n size={size}\n className={classes}\n placeholder={filter.label}\n value={range}\n onValueChange={(next) => table.setFilterValue(id, next ?? undefined)}\n presets={filter.presets}\n min={filter.min}\n max={filter.max}\n locale={table.locale}\n triggerProps={{\n 'aria-label': range ? `${filter.label}: ${formatDate(range.start)} – ${formatDate(range.end)}` : filter.label,\n }}\n />\n );\n }\n\n return (\n <Select.Root\n items={[{ value: null, label: table.labels.filterAll }, ...filter.options]}\n value={(value as string | undefined) ?? null}\n onValueChange={(next) => table.setFilterValue(id, next ?? undefined)}\n >\n <Select.Trigger size={size} className={classes} data-active={value !== undefined ? '' : undefined}>\n <span className=\"oui-data-table__filter-label\">{filter.label}</span>\n <Select.Value />\n <span className=\"oui-select__icon\">\n <ChevronDownIcon />\n </span>\n </Select.Trigger>\n <Select.Content>\n <Select.Item value={null}>{table.labels.filterAll}</Select.Item>\n {filter.options.map((option) => (\n <Select.Item key={option.value} value={option.value}>\n {option.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n}\n\nexport interface DataTableFiltersProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Control height of every filter. */\n size?: DataTableControlSize;\n}\n\n/** Every filter of the table, with a clear button while any is active. Children are added after the filters. */\nexport function DataTableFilters({ size = 'md', className, children, ...props }: DataTableFiltersProps) {\n const table = useDataTableContext();\n if (!table.filters.length && !children) return null;\n return (\n <div role=\"group\" aria-label={table.labels.filters} className={cx('oui-data-table__filters', className)} {...props}>\n {table.filters.map((filter) => (\n <DataTableFilter key={filter.id} id={filter.id} size={size} />\n ))}\n {children}\n {table.activeFilterCount > 0 && (\n <Button size=\"sm\" variant=\"ghost\" shape=\"rounded\" onClick={table.clearFilters}>\n <XIcon />\n {table.labels.clearFilters}\n </Button>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTableFilters.js","names":["React","cx","ChevronDownIcon","XIcon","Button","formatDate","DateRange","DateRangePicker","Select","Toggle","ToggleGroup","useDataTableContext","DataTableControlSize","DataTableFilterProps","id","size","className","DataTableFilter","t0","$","_c","t1","undefined","table","t2","filters","T0","T1","t3","t4","t5","t6","t7","t8","t9","Symbol","for","bb0","t10","candidate","filter","find","value","filterValues","t11","classes","type","t12","pressed","setFilterValue","label","t13","t14","t15","next","length","options","map","option","counts","range","next_0","presets","min","max","locale","start","end","Root","labels","filterAll","next_1","Content","_temp","option_0","DataTableFiltersProps","HTMLAttributes","HTMLDivElement","stacked","DataTableFilters","children","props","activeFilterCount","clearFilters","_c"],"sources":["../../../src/components/data-table/DataTableFilters.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { ChevronDownIcon, XIcon } from '../../icons';\nimport { Button } from '../button/Button';\nimport { formatDate, type DateRange } from '../calendar/date-utils';\nimport { DateRangePicker } from '../date-picker/DateRangePicker';\nimport { Select } from '../select/Select';\nimport { Toggle, ToggleGroup } from '../toggle/Toggle';\nimport { useDataTableContext } from './context';\n\nexport type DataTableControlSize = 'sm' | 'md';\n\nexport interface DataTableFilterProps {\n /** Id of the filter: the column id, or the `id` given in `filters`. */\n id: string;\n /** Control height. */\n size?: DataTableControlSize;\n /** Class name for the filter control. */\n className?: string;\n}\n\n/** The control of one filter: a dropdown, a toggle chip, a row of chips or a date range picker. */\nexport function DataTableFilter({ id, size = 'md', className }: DataTableFilterProps) {\n const table = useDataTableContext();\n const filter = table.filters.find((candidate) => candidate.id === id);\n if (!filter) return null;\n const value = table.filterValues[id];\n const classes = cx('oui-data-table__filter', className);\n\n if (filter.type === 'toggle') {\n return (\n <Toggle\n size={size}\n className={classes}\n pressed={value !== undefined}\n onPressedChange={(pressed) => table.setFilterValue(id, pressed || undefined)}\n >\n {filter.label}\n </Toggle>\n );\n }\n\n if (filter.type === 'chips') {\n return (\n <ToggleGroup\n multiple\n size={size}\n variant=\"outline\"\n aria-label={filter.label}\n className={cx('oui-data-table__chips', className)}\n value={(value as string[] | undefined) ?? []}\n onValueChange={(next) => table.setFilterValue(id, next.length ? (next as string[]) : undefined)}\n >\n {filter.options.map((option) => (\n <Toggle key={option.value} value={option.value} size={size} className=\"oui-data-table__filter\">\n {option.label}\n {filter.counts && <span className=\"oui-data-table__filter-count\">{filter.counts[option.value] ?? 0}</span>}\n </Toggle>\n ))}\n </ToggleGroup>\n );\n }\n\n if (filter.type === 'dateRange') {\n const range = (value as DateRange | undefined) ?? null;\n return (\n <DateRangePicker\n size={size}\n className={classes}\n placeholder={filter.label}\n value={range}\n onValueChange={(next) => table.setFilterValue(id, next ?? undefined)}\n presets={filter.presets}\n min={filter.min}\n max={filter.max}\n locale={table.locale}\n triggerProps={{\n 'aria-label': range ? `${filter.label}: ${formatDate(range.start)} – ${formatDate(range.end)}` : filter.label,\n }}\n />\n );\n }\n\n return (\n <Select.Root\n items={[{ value: null, label: table.labels.filterAll }, ...filter.options]}\n value={(value as string | undefined) ?? null}\n onValueChange={(next) => table.setFilterValue(id, next ?? undefined)}\n >\n <Select.Trigger size={size} className={classes} data-active={value !== undefined ? '' : undefined}>\n <span className=\"oui-data-table__filter-label\">{filter.label}</span>\n <Select.Value />\n <span className=\"oui-select__icon\">\n <ChevronDownIcon />\n </span>\n </Select.Trigger>\n <Select.Content>\n <Select.Item value={null}>{table.labels.filterAll}</Select.Item>\n {filter.options.map((option) => (\n <Select.Item key={option.value} value={option.value}>\n {option.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n}\n\nexport interface DataTableFiltersProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Control height of every filter. */\n size?: DataTableControlSize;\n /**\n * One filter per row at full width, chip rows and date ranges under their name: the layout of the\n * filter sheet on phones. Leaves out the clear button, which the sheet keeps in its footer.\n */\n stacked?: boolean;\n}\n\n/** Every filter of the table, with a clear button while any is active. Children are added after the filters. */\nexport function DataTableFilters({ size = 'md', stacked = false, className, children, ...props }: DataTableFiltersProps) {\n const table = useDataTableContext();\n if (!table.filters.length && !children) return null;\n return (\n <div\n role=\"group\"\n aria-label={table.labels.filters}\n className={cx('oui-data-table__filters', className)}\n data-stacked={stacked || undefined}\n {...props}\n >\n {table.filters.map((filter) =>\n // Stacked, controls that do not show their name keep it as a heading above them.\n stacked && (filter.type === 'chips' || filter.type === 'dateRange') ? (\n <div key={filter.id} className=\"oui-data-table__filter-field\">\n <span className=\"oui-data-table__filter-heading\" aria-hidden>\n {filter.label}\n </span>\n <DataTableFilter id={filter.id} size={size} />\n </div>\n ) : (\n <DataTableFilter key={filter.id} id={filter.id} size={size} />\n ),\n )}\n {children}\n {!stacked && table.activeFilterCount > 0 && (\n <Button size=\"sm\" variant=\"ghost\" shape=\"rounded\" onClick={table.clearFilters}>\n <XIcon />\n {table.labels.clearFilters}\n </Button>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -408,6 +408,7 @@ function Row(t0) {
408
408
  title: title ? String(value) : void 0,
409
409
  "data-mono": column.mono || void 0,
410
410
  "data-muted": column.muted || void 0,
411
+ "data-nowrap": column.nowrap || void 0,
411
412
  "data-truncate": column.truncate && !edit || void 0,
412
413
  "data-editor": edit ? "" : void 0,
413
414
  children: edit ? /* @__PURE__ */ jsx(Editor, {
@@ -507,6 +508,7 @@ function SizerRow(t0) {
507
508
  align: column.align,
508
509
  numeric: column.numeric,
509
510
  "data-mono": column.mono || void 0,
511
+ "data-nowrap": column.nowrap || void 0,
510
512
  "data-truncate": column.truncate || void 0,
511
513
  children: !column.truncate && /* @__PURE__ */ jsx("div", {
512
514
  className: "oui-data-table__sizer-content",
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableRow.js","names":["React","CheckIcon","PencilIcon","TrashIcon","XIcon","IconButton","IconButtonProps","Checkbox","Input","Select","TableCell","TableRow","Tooltip","getColumnValue","DataTableColumn","DataTableColumnEdit","DataTableEntry","DataTableInstance","DataTableRowAction","INTERACTIVE","isEmpty","value","undefined","labelOf","column","T","label","header","id","ResolvedEdit","Omit","field","editOf","edit","config","type","isTextEditor","render","isAction","item","isValidElement","cellContent","row","ReactNode","cell","String","ActionButtonProps","icon","danger","ActionButton","t0","$","_c","props","t1","t2","t3","EditorProps","table","autoFocus","Editor","Symbol","for","bb0","editValue","next","setEditValue","setValue","disabled","saving","t4","Boolean","t5","options","t6","inputProps","RowActionsProps","entry","onEdit","button","HTMLElement","RowActions","text","labels","editing","editingId","T0","actions","rowActions","slots","editable","deletable","minWidth","save","saveEdit","delete","deleteRow","cancel","cancelEdit","Array","isArray","map","_temp","event","currentTarget","startEdit","t7","index","onClick","DataTableRowProps","columns","hasActions","focused","height","Row","virtual","editHeight","setEditHeight","useState","onRowClick","rowProps","extra","held","style","isSelected","rowTone","t8","tabIndex","t9","rowLabel","t10","ctrlKey","metaKey","target","closest","t11","event_0","onKeyDown","key","contains","Node","tagName","t12","selectable","selectRow","checked","toggleRow","t13","t14","className","cellClassName","title","truncate","align","numeric","mono","muted","getBoundingClientRect","t15","DataTableRow","memo","SizerRow","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTableRow.tsx"],"sourcesContent":["import * as React from 'react';\nimport { CheckIcon, PencilIcon, TrashIcon, XIcon } from '../../icons';\nimport { IconButton, type IconButtonProps } from '../button/Button';\nimport { Checkbox } from '../choice/Choice';\nimport { Input } from '../input/Input';\nimport { Select } from '../select/Select';\nimport { TableCell, TableRow } from '../table/Table';\nimport { Tooltip } from '../tooltip/Tooltip';\nimport { getColumnValue } from './useDataTable';\nimport type { DataTableColumn, DataTableColumnEdit, DataTableEntry, DataTableInstance, DataTableRowAction } from './types';\n\nconst INTERACTIVE = 'a, button, input, select, textarea, label, [role=\"checkbox\"], [role=\"button\"], [role=\"combobox\"]';\n\nfunction isEmpty(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction labelOf<T>(column: DataTableColumn<T>) {\n return column.label ?? (typeof column.header === 'string' ? column.header : column.id);\n}\n\ntype ResolvedEdit<T> = Omit<DataTableColumnEdit<T>, 'field'> & { field: string };\n\nfunction editOf<T>(column: DataTableColumn<T>): ResolvedEdit<T> | null {\n if (!column.edit) return null;\n const config = typeof column.edit === 'string' ? { type: column.edit } : column.edit;\n return { ...config, field: config.field ?? column.id };\n}\n\n/** Whether the column's editor is the built-in text input, which takes the focus when editing starts. */\nexport function isTextEditor<T>(column: DataTableColumn<T>) {\n const edit = editOf(column);\n return edit !== null && !edit.render && (edit.type ?? 'text') === 'text';\n}\n\nfunction isAction(item: unknown): item is DataTableRowAction {\n return typeof item === 'object' && item !== null && !React.isValidElement(item) && 'label' in item && 'icon' in item;\n}\n\n/** What a cell shows outside editing: the column's `cell`, or its value as text. */\nexport function cellContent<T>(column: DataTableColumn<T>, row: T): React.ReactNode {\n if (column.cell) return column.cell(row);\n const value = getColumnValue(column, row);\n if (React.isValidElement(value)) return value;\n return isEmpty(value) ? '—' : String(value);\n}\n\ninterface ActionButtonProps extends Omit<IconButtonProps, 'aria-label' | 'children'> {\n label: string;\n icon: React.ReactNode;\n danger?: boolean;\n}\n\nfunction ActionButton({ label, icon, danger, ...props }: ActionButtonProps) {\n return (\n <Tooltip content={label}>\n <IconButton size=\"sm\" className=\"oui-data-table__action\" aria-label={label} data-danger={danger ? '' : undefined} {...props}>\n {icon}\n </IconButton>\n </Tooltip>\n );\n}\n\ninterface EditorProps<T> {\n table: DataTableInstance<T>;\n column: DataTableColumn<T>;\n edit: ResolvedEdit<T>;\n row: T;\n autoFocus: boolean;\n}\n\nfunction Editor<T>({ table, column, edit, row, autoFocus }: EditorProps<T>) {\n const value = table.editValue(row, edit.field);\n const setValue = (next: unknown) => table.setEditValue(edit.field, next);\n const disabled = table.saving;\n const label = labelOf(column);\n\n if (edit.render) return edit.render({ row, value, setValue, disabled });\n if (edit.type === 'checkbox') {\n return <Checkbox size=\"sm\" aria-label={label} checked={Boolean(value)} disabled={disabled} onCheckedChange={setValue} />;\n }\n if (edit.type === 'select') {\n return (\n <Select\n size=\"sm\"\n items={edit.options ?? []}\n value={isEmpty(value) ? null : String(value)}\n onValueChange={setValue}\n disabled={disabled}\n triggerProps={{ 'aria-label': label }}\n />\n );\n }\n return (\n <Input\n size=\"sm\"\n aria-label={label}\n autoFocus={autoFocus}\n disabled={disabled}\n {...edit.inputProps}\n value={isEmpty(value) ? '' : String(value)}\n onValueChange={setValue}\n />\n );\n}\n\ninterface RowActionsProps<T> {\n table: DataTableInstance<T>;\n entry: DataTableEntry<T>;\n /** Called with the edit button before editing starts. */\n onEdit?: (button: HTMLElement) => void;\n}\n\n/** Trailing cell of a row: its own actions, then edit and delete; save and cancel while it is edited. */\nexport function RowActions<T>({ table, entry: { row, id }, onEdit }: RowActionsProps<T>) {\n const text = table.labels;\n const editing = table.editingId === id;\n const actions = table.rowActions?.(row);\n // Room for the buttons of the edited state from the start, so entering it does not widen the column.\n const slots = table.editable ? (table.deletable ? 3 : 2) : 0;\n return (\n <TableCell className=\"oui-data-table__row-actions\">\n <div\n className=\"oui-data-table__row-actions-list\"\n style={slots ? { minWidth: `calc(${slots} * var(--oui-control-height-sm) + ${(slots - 1) * 0.125}rem)` } : undefined}\n >\n {editing ? (\n <>\n <ActionButton label={text.save} icon={<CheckIcon />} loading={table.saving} onClick={table.saveEdit} />\n {table.deletable && (\n <ActionButton label={text.delete} icon={<TrashIcon />} danger disabled={table.saving} onClick={() => table.deleteRow(row)} />\n )}\n <ActionButton label={text.cancel} icon={<XIcon />} disabled={table.saving} onClick={table.cancelEdit} />\n </>\n ) : (\n <>\n {(Array.isArray(actions) ? actions : [actions]).map((item, index) =>\n isAction(item) ? (\n <ActionButton\n key={item.label}\n label={item.label}\n icon={item.icon}\n danger={item.danger}\n disabled={item.disabled}\n onClick={item.onClick}\n />\n ) : (\n <React.Fragment key={index}>{item}</React.Fragment>\n ),\n )}\n {table.editable && (\n <ActionButton\n label={text.edit}\n icon={<PencilIcon />}\n disabled={table.saving}\n onClick={(event) => {\n onEdit?.(event.currentTarget);\n table.startEdit(id);\n }}\n />\n )}\n {table.deletable && !table.editable && (\n <ActionButton label={text.delete} icon={<TrashIcon />} danger onClick={() => table.deleteRow(row)} />\n )}\n </>\n )}\n </div>\n </TableCell>\n );\n}\n\nexport interface DataTableRowProps<T> {\n table: DataTableInstance<T>;\n entry: DataTableEntry<T>;\n columns: DataTableColumn<T>[];\n hasActions: boolean;\n /** Id of the column whose editor takes the focus when editing starts. */\n focused?: string;\n /** Virtualized tables: position among all rows, and the height every row shares. */\n index?: number;\n height?: number;\n}\n\nfunction Row<T>({ table, entry, columns, hasActions, focused, index, height }: DataTableRowProps<T>) {\n const { row, id } = entry;\n const editing = table.editingId === id;\n const virtual = index !== undefined;\n // Height the row had when its editing started: the editors fit inside it, so the rows below stay put.\n const [editHeight, setEditHeight] = React.useState<number>();\n const onRowClick = editing ? undefined : table.onRowClick;\n const extra = table.rowProps?.(row);\n const held = height ?? (editing ? editHeight : undefined);\n\n return (\n <TableRow\n {...extra}\n style={held !== undefined ? { height: held, ...extra?.style } : extra?.style}\n aria-rowindex={virtual ? index + 2 : undefined}\n data-selected={table.isSelected(id) || undefined}\n data-clickable={onRowClick ? '' : undefined}\n data-editing={editing ? '' : undefined}\n data-tone={table.rowTone?.(row) ?? undefined}\n tabIndex={onRowClick ? 0 : extra?.tabIndex}\n aria-label={onRowClick ? table.rowLabel?.(row) : extra?.['aria-label']}\n onClick={(event) => {\n extra?.onClick?.(event);\n if (!onRowClick || event.ctrlKey || event.metaKey) return;\n if ((event.target as HTMLElement).closest(INTERACTIVE)) return;\n onRowClick(row);\n }}\n onKeyDown={(event) => {\n extra?.onKeyDown?.(event);\n if (onRowClick && event.target === event.currentTarget && event.key === 'Enter') onRowClick(row);\n // Popups of the editors are portalled out of the row: their keys are not the row's.\n if (!editing || !event.currentTarget.contains(event.target as Node)) return;\n if (event.key === 'Escape') table.cancelEdit();\n if (event.key === 'Enter' && (event.target as HTMLElement).tagName === 'INPUT') table.saveEdit();\n }}\n >\n {table.selectable && (\n <TableCell className=\"oui-data-table__check\">\n <Checkbox\n size=\"sm\"\n aria-label={table.labels.selectRow(table.rowLabel?.(row) ?? id)}\n checked={table.isSelected(id)}\n onCheckedChange={(checked) => table.toggleRow(id, checked)}\n />\n </TableCell>\n )}\n {columns.map((column) => {\n const edit = editing ? editOf(column) : null;\n const className = typeof column.cellClassName === 'function' ? column.cellClassName(row) : column.cellClassName;\n const value = getColumnValue(column, row);\n // Cut text can still be read in full by pointing at it.\n const title = (column.truncate || virtual) && !edit && (typeof value === 'string' || typeof value === 'number');\n return (\n <TableCell\n key={column.id}\n align={column.align}\n numeric={column.numeric}\n className={className}\n title={title ? String(value) : undefined}\n data-mono={column.mono || undefined}\n data-muted={column.muted || undefined}\n data-truncate={(column.truncate && !edit) || undefined}\n data-editor={edit ? '' : undefined}\n >\n {edit ? (\n <Editor table={table} column={column} edit={edit} row={row} autoFocus={column.id === focused} />\n ) : (\n cellContent(column, row)\n )}\n </TableCell>\n );\n })}\n {hasActions && (\n <RowActions\n table={table}\n entry={entry}\n onEdit={(button) => setEditHeight(button.closest('tr')?.getBoundingClientRect().height)}\n />\n )}\n </TableRow>\n );\n}\n\n// Memoized by hand: scrolling a virtualized table renders its content on every\n// step, and the rows that stay in view have nothing new to show.\nexport const DataTableRow = React.memo(Row) as typeof Row;\n\n/**\n * A row that only gives its columns their width: what the cells would show, at\n * no height. Rendered while the column widths are measured, never painted.\n */\nexport function SizerRow<T>({ table, entry, columns, hasActions }: DataTableRowProps<T>) {\n return (\n <TableRow>\n {table.selectable && <TableCell className=\"oui-data-table__check\" />}\n {columns.map((column) => (\n <TableCell\n key={column.id}\n align={column.align}\n numeric={column.numeric}\n data-mono={column.mono || undefined}\n data-truncate={column.truncate || undefined}\n >\n {!column.truncate && <div className=\"oui-data-table__sizer-content\">{cellContent(column, entry.row)}</div>}\n </TableCell>\n ))}\n {hasActions && <RowActions table={table} entry={entry} />}\n </TableRow>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTableRow.js","names":["React","CheckIcon","PencilIcon","TrashIcon","XIcon","IconButton","IconButtonProps","Checkbox","Input","Select","TableCell","TableRow","Tooltip","getColumnValue","DataTableColumn","DataTableColumnEdit","DataTableEntry","DataTableInstance","DataTableRowAction","INTERACTIVE","isEmpty","value","undefined","labelOf","column","T","label","header","id","ResolvedEdit","Omit","field","editOf","edit","config","type","isTextEditor","render","isAction","item","isValidElement","cellContent","row","ReactNode","cell","String","ActionButtonProps","icon","danger","ActionButton","t0","$","_c","props","t1","t2","t3","EditorProps","table","autoFocus","Editor","Symbol","for","bb0","editValue","next","setEditValue","setValue","disabled","saving","t4","Boolean","t5","options","t6","inputProps","RowActionsProps","entry","onEdit","button","HTMLElement","RowActions","text","labels","editing","editingId","T0","actions","rowActions","slots","editable","deletable","minWidth","save","saveEdit","delete","deleteRow","cancel","cancelEdit","Array","isArray","map","_temp","event","currentTarget","startEdit","t7","index","onClick","DataTableRowProps","columns","hasActions","focused","height","Row","virtual","editHeight","setEditHeight","useState","onRowClick","rowProps","extra","held","style","isSelected","rowTone","t8","tabIndex","t9","rowLabel","t10","ctrlKey","metaKey","target","closest","t11","event_0","onKeyDown","key","contains","Node","tagName","t12","selectable","selectRow","checked","toggleRow","t13","t14","className","cellClassName","title","truncate","align","numeric","mono","muted","nowrap","getBoundingClientRect","t15","DataTableRow","memo","SizerRow","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTableRow.tsx"],"sourcesContent":["import * as React from 'react';\nimport { CheckIcon, PencilIcon, TrashIcon, XIcon } from '../../icons';\nimport { IconButton, type IconButtonProps } from '../button/Button';\nimport { Checkbox } from '../choice/Choice';\nimport { Input } from '../input/Input';\nimport { Select } from '../select/Select';\nimport { TableCell, TableRow } from '../table/Table';\nimport { Tooltip } from '../tooltip/Tooltip';\nimport { getColumnValue } from './useDataTable';\nimport type { DataTableColumn, DataTableColumnEdit, DataTableEntry, DataTableInstance, DataTableRowAction } from './types';\n\nconst INTERACTIVE = 'a, button, input, select, textarea, label, [role=\"checkbox\"], [role=\"button\"], [role=\"combobox\"]';\n\nfunction isEmpty(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction labelOf<T>(column: DataTableColumn<T>) {\n return column.label ?? (typeof column.header === 'string' ? column.header : column.id);\n}\n\ntype ResolvedEdit<T> = Omit<DataTableColumnEdit<T>, 'field'> & { field: string };\n\nfunction editOf<T>(column: DataTableColumn<T>): ResolvedEdit<T> | null {\n if (!column.edit) return null;\n const config = typeof column.edit === 'string' ? { type: column.edit } : column.edit;\n return { ...config, field: config.field ?? column.id };\n}\n\n/** Whether the column's editor is the built-in text input, which takes the focus when editing starts. */\nexport function isTextEditor<T>(column: DataTableColumn<T>) {\n const edit = editOf(column);\n return edit !== null && !edit.render && (edit.type ?? 'text') === 'text';\n}\n\nfunction isAction(item: unknown): item is DataTableRowAction {\n return typeof item === 'object' && item !== null && !React.isValidElement(item) && 'label' in item && 'icon' in item;\n}\n\n/** What a cell shows outside editing: the column's `cell`, or its value as text. */\nexport function cellContent<T>(column: DataTableColumn<T>, row: T): React.ReactNode {\n if (column.cell) return column.cell(row);\n const value = getColumnValue(column, row);\n if (React.isValidElement(value)) return value;\n return isEmpty(value) ? '—' : String(value);\n}\n\ninterface ActionButtonProps extends Omit<IconButtonProps, 'aria-label' | 'children'> {\n label: string;\n icon: React.ReactNode;\n danger?: boolean;\n}\n\nfunction ActionButton({ label, icon, danger, ...props }: ActionButtonProps) {\n return (\n <Tooltip content={label}>\n <IconButton size=\"sm\" className=\"oui-data-table__action\" aria-label={label} data-danger={danger ? '' : undefined} {...props}>\n {icon}\n </IconButton>\n </Tooltip>\n );\n}\n\ninterface EditorProps<T> {\n table: DataTableInstance<T>;\n column: DataTableColumn<T>;\n edit: ResolvedEdit<T>;\n row: T;\n autoFocus: boolean;\n}\n\nfunction Editor<T>({ table, column, edit, row, autoFocus }: EditorProps<T>) {\n const value = table.editValue(row, edit.field);\n const setValue = (next: unknown) => table.setEditValue(edit.field, next);\n const disabled = table.saving;\n const label = labelOf(column);\n\n if (edit.render) return edit.render({ row, value, setValue, disabled });\n if (edit.type === 'checkbox') {\n return <Checkbox size=\"sm\" aria-label={label} checked={Boolean(value)} disabled={disabled} onCheckedChange={setValue} />;\n }\n if (edit.type === 'select') {\n return (\n <Select\n size=\"sm\"\n items={edit.options ?? []}\n value={isEmpty(value) ? null : String(value)}\n onValueChange={setValue}\n disabled={disabled}\n triggerProps={{ 'aria-label': label }}\n />\n );\n }\n return (\n <Input\n size=\"sm\"\n aria-label={label}\n autoFocus={autoFocus}\n disabled={disabled}\n {...edit.inputProps}\n value={isEmpty(value) ? '' : String(value)}\n onValueChange={setValue}\n />\n );\n}\n\ninterface RowActionsProps<T> {\n table: DataTableInstance<T>;\n entry: DataTableEntry<T>;\n /** Called with the edit button before editing starts. */\n onEdit?: (button: HTMLElement) => void;\n}\n\n/** Trailing cell of a row: its own actions, then edit and delete; save and cancel while it is edited. */\nexport function RowActions<T>({ table, entry: { row, id }, onEdit }: RowActionsProps<T>) {\n const text = table.labels;\n const editing = table.editingId === id;\n const actions = table.rowActions?.(row);\n // Room for the buttons of the edited state from the start, so entering it does not widen the column.\n const slots = table.editable ? (table.deletable ? 3 : 2) : 0;\n return (\n <TableCell className=\"oui-data-table__row-actions\">\n <div\n className=\"oui-data-table__row-actions-list\"\n style={slots ? { minWidth: `calc(${slots} * var(--oui-control-height-sm) + ${(slots - 1) * 0.125}rem)` } : undefined}\n >\n {editing ? (\n <>\n <ActionButton label={text.save} icon={<CheckIcon />} loading={table.saving} onClick={table.saveEdit} />\n {table.deletable && (\n <ActionButton label={text.delete} icon={<TrashIcon />} danger disabled={table.saving} onClick={() => table.deleteRow(row)} />\n )}\n <ActionButton label={text.cancel} icon={<XIcon />} disabled={table.saving} onClick={table.cancelEdit} />\n </>\n ) : (\n <>\n {(Array.isArray(actions) ? actions : [actions]).map((item, index) =>\n isAction(item) ? (\n <ActionButton\n key={item.label}\n label={item.label}\n icon={item.icon}\n danger={item.danger}\n disabled={item.disabled}\n onClick={item.onClick}\n />\n ) : (\n <React.Fragment key={index}>{item}</React.Fragment>\n ),\n )}\n {table.editable && (\n <ActionButton\n label={text.edit}\n icon={<PencilIcon />}\n disabled={table.saving}\n onClick={(event) => {\n onEdit?.(event.currentTarget);\n table.startEdit(id);\n }}\n />\n )}\n {table.deletable && !table.editable && (\n <ActionButton label={text.delete} icon={<TrashIcon />} danger onClick={() => table.deleteRow(row)} />\n )}\n </>\n )}\n </div>\n </TableCell>\n );\n}\n\nexport interface DataTableRowProps<T> {\n table: DataTableInstance<T>;\n entry: DataTableEntry<T>;\n columns: DataTableColumn<T>[];\n hasActions: boolean;\n /** Id of the column whose editor takes the focus when editing starts. */\n focused?: string;\n /** Virtualized tables: position among all rows, and the height every row shares. */\n index?: number;\n height?: number;\n}\n\nfunction Row<T>({ table, entry, columns, hasActions, focused, index, height }: DataTableRowProps<T>) {\n const { row, id } = entry;\n const editing = table.editingId === id;\n const virtual = index !== undefined;\n // Height the row had when its editing started: the editors fit inside it, so the rows below stay put.\n const [editHeight, setEditHeight] = React.useState<number>();\n const onRowClick = editing ? undefined : table.onRowClick;\n const extra = table.rowProps?.(row);\n const held = height ?? (editing ? editHeight : undefined);\n\n return (\n <TableRow\n {...extra}\n style={held !== undefined ? { height: held, ...extra?.style } : extra?.style}\n aria-rowindex={virtual ? index + 2 : undefined}\n data-selected={table.isSelected(id) || undefined}\n data-clickable={onRowClick ? '' : undefined}\n data-editing={editing ? '' : undefined}\n data-tone={table.rowTone?.(row) ?? undefined}\n tabIndex={onRowClick ? 0 : extra?.tabIndex}\n aria-label={onRowClick ? table.rowLabel?.(row) : extra?.['aria-label']}\n onClick={(event) => {\n extra?.onClick?.(event);\n if (!onRowClick || event.ctrlKey || event.metaKey) return;\n if ((event.target as HTMLElement).closest(INTERACTIVE)) return;\n onRowClick(row);\n }}\n onKeyDown={(event) => {\n extra?.onKeyDown?.(event);\n if (onRowClick && event.target === event.currentTarget && event.key === 'Enter') onRowClick(row);\n // Popups of the editors are portalled out of the row: their keys are not the row's.\n if (!editing || !event.currentTarget.contains(event.target as Node)) return;\n if (event.key === 'Escape') table.cancelEdit();\n if (event.key === 'Enter' && (event.target as HTMLElement).tagName === 'INPUT') table.saveEdit();\n }}\n >\n {table.selectable && (\n <TableCell className=\"oui-data-table__check\">\n <Checkbox\n size=\"sm\"\n aria-label={table.labels.selectRow(table.rowLabel?.(row) ?? id)}\n checked={table.isSelected(id)}\n onCheckedChange={(checked) => table.toggleRow(id, checked)}\n />\n </TableCell>\n )}\n {columns.map((column) => {\n const edit = editing ? editOf(column) : null;\n const className = typeof column.cellClassName === 'function' ? column.cellClassName(row) : column.cellClassName;\n const value = getColumnValue(column, row);\n // Cut text can still be read in full by pointing at it.\n const title = (column.truncate || virtual) && !edit && (typeof value === 'string' || typeof value === 'number');\n return (\n <TableCell\n key={column.id}\n align={column.align}\n numeric={column.numeric}\n className={className}\n title={title ? String(value) : undefined}\n data-mono={column.mono || undefined}\n data-muted={column.muted || undefined}\n data-nowrap={column.nowrap || undefined}\n data-truncate={(column.truncate && !edit) || undefined}\n data-editor={edit ? '' : undefined}\n >\n {edit ? (\n <Editor table={table} column={column} edit={edit} row={row} autoFocus={column.id === focused} />\n ) : (\n cellContent(column, row)\n )}\n </TableCell>\n );\n })}\n {hasActions && (\n <RowActions\n table={table}\n entry={entry}\n onEdit={(button) => setEditHeight(button.closest('tr')?.getBoundingClientRect().height)}\n />\n )}\n </TableRow>\n );\n}\n\n// Memoized by hand: scrolling a virtualized table renders its content on every\n// step, and the rows that stay in view have nothing new to show.\nexport const DataTableRow = React.memo(Row) as typeof Row;\n\n/**\n * A row that only gives its columns their width: what the cells would show, at\n * no height. Rendered while the column widths are measured, never painted.\n */\nexport function SizerRow<T>({ table, entry, columns, hasActions }: DataTableRowProps<T>) {\n return (\n <TableRow>\n {table.selectable && <TableCell className=\"oui-data-table__check\" />}\n {columns.map((column) => (\n <TableCell\n key={column.id}\n align={column.align}\n numeric={column.numeric}\n data-mono={column.mono || undefined}\n data-nowrap={column.nowrap || undefined}\n data-truncate={column.truncate || undefined}\n >\n {!column.truncate && <div className=\"oui-data-table__sizer-content\">{cellContent(column, entry.row)}</div>}\n </TableCell>\n ))}\n {hasActions && <RowActions table={table} entry={entry} />}\n </TableRow>\n );\n}\n"],"mappings":"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"}
@@ -86,6 +86,8 @@ export interface DataTableEditorContext<T> {
86
86
  /** True while the row is being saved. */
87
87
  disabled: boolean;
88
88
  }
89
+ /** How much a `DataTable` column matters: `low` columns are hidden on phones (below 640px). */
90
+ export type DataTableColumnPriority = 'normal' | 'low';
89
91
  export interface DataTableColumnEdit<T> {
90
92
  /** Built-in editor (default `text`). */
91
93
  type?: 'text' | 'checkbox' | 'select';
@@ -135,6 +137,13 @@ export interface DataTableColumn<T> {
135
137
  mono?: boolean;
136
138
  /** Quieter text colour, for secondary values. */
137
139
  muted?: boolean;
140
+ /**
141
+ * `low` hides the column below 640px, where the table has its phone layout; it still takes part in
142
+ * search, filters, sorting and export.
143
+ */
144
+ priority?: DataTableColumnPriority;
145
+ /** Keeps the value on one line (plates, codes, dates): the column widens to fit instead of breaking it. */
146
+ nowrap?: boolean;
138
147
  /** Cuts long text with an ellipsis instead of wrapping it. The column takes its `width`, not the text's. */
139
148
  truncate?: boolean;
140
149
  /** Preferred width. The table measures its columns once and then holds them, so this is a starting point. */
@@ -180,8 +189,12 @@ export interface DataTableLabels extends PaginationLabels {
180
189
  loading: string;
181
190
  errorTitle: React.ReactNode;
182
191
  retry: string;
183
- /** Accessible name of the filter group. */
192
+ /** Accessible name of the filter group; on phones also the filter button and sheet title. */
184
193
  filters: string;
194
+ /** Button that closes the filter sheet on phones, with the row count. */
195
+ showResults: (count: number) => React.ReactNode;
196
+ /** Close button of the filter sheet on phones. */
197
+ close: string;
185
198
  /** The "no filter" option of a select filter. */
186
199
  filterAll: string;
187
200
  clearFilters: string;
@@ -19,6 +19,8 @@ var defaultLabels = {
19
19
  errorTitle: "Could not load records",
20
20
  retry: "Try again",
21
21
  filters: "Filters",
22
+ showResults: (count) => `Show ${count} ${count === 1 ? "record" : "records"}`,
23
+ close: "Close",
22
24
  filterAll: "All",
23
25
  clearFilters: "Clear filters",
24
26
  actions: "Actions",