@jakubmazanec/ui 0.2.1-unstable.e0d45346 → 0.3.0-next.33f02dbb

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.
@@ -7,14 +7,14 @@ export declare const useContainerTheme: {
7
7
  readonly variants: {
8
8
  readonly spacing: ["extra-small", "small", "medium", "large"];
9
9
  readonly direction: ["row", "column"];
10
- readonly justify: ["normal", "center", "spaced"];
10
+ readonly justify: ["normal", "center", "spaced", "start", "end"];
11
11
  readonly align: ["normal", "center"];
12
12
  };
13
13
  };
14
14
  } & ((themeProps: {
15
15
  readonly spacing: "small" | "medium" | "large" | "extra-small";
16
16
  readonly direction: "row" | "column";
17
- readonly justify: "center" | "normal" | "spaced";
17
+ readonly justify: "center" | "end" | "start" | "normal" | "spaced";
18
18
  readonly align: "center" | "normal";
19
19
  }) => (baseClassName?: import("../theme/internals.js").ClassName, overrideClassName?: import("../theme/internals.js").ClassName) => string);
20
20
  declare const TEXT_ELEMENT = "div";
@@ -9,7 +9,7 @@ export const useContainerTheme = createComponentTheme("Container", {
9
9
  variants: {
10
10
  spacing: ["extra-small", "small", "medium", "large"],
11
11
  direction: ["row", "column"],
12
- justify: ["normal", "center", "spaced"],
12
+ justify: ["normal", "center", "spaced", "start", "end"],
13
13
  align: ["normal", "center"]
14
14
  }
15
15
  });
@@ -50,7 +50,9 @@ export const containerTheme = {
50
50
  justify: {
51
51
  normal: "",
52
52
  center: "justify-center",
53
- spaced: "justify-between"
53
+ spaced: "justify-between",
54
+ start: "justify-start",
55
+ end: "justify-end"
54
56
  },
55
57
  align: {
56
58
  normal: "",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/Container.ts"],
4
- "sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {type ComponentRef} from './ComponentRef.js';\n\nexport const useContainerTheme = createComponentTheme('Container', {\n variants: {\n spacing: ['extra-small', 'small', 'medium', 'large'],\n direction: ['row', 'column'],\n justify: ['normal', 'center', 'spaced'],\n align: ['normal', 'center'],\n },\n});\n\nconst TEXT_ELEMENT = 'div';\n\nexport type ContainerProps<T extends ElementType> = ComponentProps<typeof useContainerTheme> &\n ComponentPropsWithoutRef<T> &\n ComponentRef<T> &\n PropsWithChildren & {\n as?: T | undefined;\n className?: string;\n };\n\nexport function Container<T extends ElementType = typeof TEXT_ELEMENT>({\n spacing = 'medium',\n direction = 'row',\n justify = 'normal',\n align = 'normal',\n as: Component = TEXT_ELEMENT as T,\n className,\n ref,\n children,\n ...rest\n}: ContainerProps<T>) {\n let theme = useContainerTheme({spacing, direction, justify, align});\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'container',\n ...rest,\n };\n\n return createElement(Component, props, children);\n}\n\nexport const containerTheme: ComponentTheme<typeof useContainerTheme> = {\n className: 'flex',\n variants: {\n spacing: {\n 'extra-small': 'gap-1',\n small: 'gap-2',\n medium: 'gap-4',\n large: 'gap-6',\n },\n direction: {\n row: '',\n column: 'flex-col',\n },\n justify: {\n normal: '',\n center: 'justify-center',\n spaced: 'justify-between',\n },\n align: {\n normal: '',\n center: 'items-center',\n },\n },\n};\n"],
5
- "mappings": ";AAAA;AAAA,EAEE;AAAA,OAGK;AAEP;AAAA,EAGE;AAAA,OACK;AAGA,aAAM,oBAAoB,qBAAqB,aAAa;AAAA,EACjE,UAAU;AAAA,IACR,SAAS,CAAC,eAAe,SAAS,UAAU,OAAO;AAAA,IACnD,WAAW,CAAC,OAAO,QAAQ;AAAA,IAC3B,SAAS,CAAC,UAAU,UAAU,QAAQ;AAAA,IACtC,OAAO,CAAC,UAAU,QAAQ;AAAA,EAC5B;AACF,CAAC;AAED,MAAM,eAAe;AAUd,gBAAS,UAAuD;AAAA,EACrE,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,IAAI,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,MAAI,QAAQ,kBAAkB,EAAC,SAAS,WAAW,SAAS,MAAK,CAAC;AAClE,MAAI,QAAQ;AAAA,IACV;AAAA,IACA,WAAW,MAAM,MAAM,SAAS;AAAA,IAChC,kBAAkB;AAAA,IAClB,GAAG;AAAA,EACL;AAEA,SAAO,cAAc,WAAW,OAAO,QAAQ;AACjD;AAEO,aAAM,iBAA2D;AAAA,EACtE,WAAW;AAAA,EACX,UAAU;AAAA,IACR,SAAS;AAAA,MACP,eAAe;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IACA,WAAW;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {type ComponentRef} from './ComponentRef.js';\n\nexport const useContainerTheme = createComponentTheme('Container', {\n variants: {\n spacing: ['extra-small', 'small', 'medium', 'large'],\n direction: ['row', 'column'],\n justify: ['normal', 'center', 'spaced', 'start', 'end'],\n align: ['normal', 'center'],\n },\n});\n\nconst TEXT_ELEMENT = 'div';\n\nexport type ContainerProps<T extends ElementType> = ComponentProps<typeof useContainerTheme> &\n ComponentPropsWithoutRef<T> &\n ComponentRef<T> &\n PropsWithChildren & {\n as?: T | undefined;\n className?: string;\n };\n\nexport function Container<T extends ElementType = typeof TEXT_ELEMENT>({\n spacing = 'medium',\n direction = 'row',\n justify = 'normal',\n align = 'normal',\n as: Component = TEXT_ELEMENT as T,\n className,\n ref,\n children,\n ...rest\n}: ContainerProps<T>) {\n let theme = useContainerTheme({spacing, direction, justify, align});\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'container',\n ...rest,\n };\n\n return createElement(Component, props, children);\n}\n\nexport const containerTheme: ComponentTheme<typeof useContainerTheme> = {\n className: 'flex',\n variants: {\n spacing: {\n 'extra-small': 'gap-1',\n small: 'gap-2',\n medium: 'gap-4',\n large: 'gap-6',\n },\n direction: {\n row: '',\n column: 'flex-col',\n },\n justify: {\n normal: '',\n center: 'justify-center',\n spaced: 'justify-between',\n start: 'justify-start',\n end: 'justify-end',\n },\n align: {\n normal: '',\n center: 'items-center',\n },\n },\n};\n"],
5
+ "mappings": ";AAAA;AAAA,EAEE;AAAA,OAGK;AAEP;AAAA,EAGE;AAAA,OACK;AAGA,aAAM,oBAAoB,qBAAqB,aAAa;AAAA,EACjE,UAAU;AAAA,IACR,SAAS,CAAC,eAAe,SAAS,UAAU,OAAO;AAAA,IACnD,WAAW,CAAC,OAAO,QAAQ;AAAA,IAC3B,SAAS,CAAC,UAAU,UAAU,UAAU,SAAS,KAAK;AAAA,IACtD,OAAO,CAAC,UAAU,QAAQ;AAAA,EAC5B;AACF,CAAC;AAED,MAAM,eAAe;AAUd,gBAAS,UAAuD;AAAA,EACrE,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,IAAI,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,MAAI,QAAQ,kBAAkB,EAAC,SAAS,WAAW,SAAS,MAAK,CAAC;AAClE,MAAI,QAAQ;AAAA,IACV;AAAA,IACA,WAAW,MAAM,MAAM,SAAS;AAAA,IAChC,kBAAkB;AAAA,IAClB,GAAG;AAAA,EACL;AAEA,SAAO,cAAc,WAAW,OAAO,QAAQ;AACjD;AAEO,aAAM,iBAA2D;AAAA,EACtE,WAAW;AAAA,EACX,UAAU;AAAA,IACR,SAAS;AAAA,MACP,eAAe;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IACA,WAAW;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK;AAAA,IACP;AAAA,IACA,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -24,6 +24,6 @@ export function TableCell({
24
24
  return createElement(Component, props, children);
25
25
  }
26
26
  export const tableCellTheme = {
27
- className: "p-2 text-sm font-sans tabular-nums text-right truncate"
27
+ className: "px-1 py-2 text-sm font-sans tabular-nums text-right truncate"
28
28
  };
29
29
  //# sourceMappingURL=TableCell.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/components/TableCell.ts"],
4
- "sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {type ComponentRef} from './ComponentRef.js';\n\nexport const useTableCellTheme = createComponentTheme('TableCell');\n\nconst TABLE_CELL_ELEMENT = 'td';\n\nexport type TableCellProps<T extends ElementType> = ComponentProps<typeof useTableCellTheme> &\n ComponentPropsWithoutRef<T> &\n ComponentRef<T> &\n PropsWithChildren & {\n as?: T | undefined;\n className?: string;\n };\n\nexport function TableCell<T extends ElementType = typeof TABLE_CELL_ELEMENT>({\n as: Component = TABLE_CELL_ELEMENT as T,\n className,\n ref,\n children,\n ...rest\n}: TableCellProps<T>) {\n let theme = useTableCellTheme();\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'table-cell',\n ...rest,\n };\n\n return createElement(Component, props, children);\n}\n\nexport const tableCellTheme: ComponentTheme<typeof useTableCellTheme> = {\n className: 'p-2 text-sm font-sans tabular-nums text-right truncate',\n};\n"],
4
+ "sourcesContent": ["import {\n type ComponentPropsWithoutRef,\n createElement,\n type ElementType,\n type PropsWithChildren,\n} from 'react';\n\nimport {\n type ComponentProps,\n type ComponentTheme,\n createComponentTheme,\n} from '../theme/internals.js';\nimport {type ComponentRef} from './ComponentRef.js';\n\nexport const useTableCellTheme = createComponentTheme('TableCell');\n\nconst TABLE_CELL_ELEMENT = 'td';\n\nexport type TableCellProps<T extends ElementType> = ComponentProps<typeof useTableCellTheme> &\n ComponentPropsWithoutRef<T> &\n ComponentRef<T> &\n PropsWithChildren & {\n as?: T | undefined;\n className?: string;\n };\n\nexport function TableCell<T extends ElementType = typeof TABLE_CELL_ELEMENT>({\n as: Component = TABLE_CELL_ELEMENT as T,\n className,\n ref,\n children,\n ...rest\n}: TableCellProps<T>) {\n let theme = useTableCellTheme();\n let props = {\n ref,\n className: theme(null, className),\n 'data-component': 'table-cell',\n ...rest,\n };\n\n return createElement(Component, props, children);\n}\n\nexport const tableCellTheme: ComponentTheme<typeof useTableCellTheme> = {\n className: 'px-1 py-2 text-sm font-sans tabular-nums text-right truncate',\n};\n"],
5
5
  "mappings": ";AAAA;AAAA,EAEE;AAAA,OAGK;AAEP;AAAA,EAGE;AAAA,OACK;AAGA,aAAM,oBAAoB,qBAAqB,WAAW;AAEjE,MAAM,qBAAqB;AAUpB,gBAAS,UAA6D;AAAA,EAC3E,IAAI,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,MAAI,QAAQ,kBAAkB;AAC9B,MAAI,QAAQ;AAAA,IACV;AAAA,IACA,WAAW,MAAM,MAAM,SAAS;AAAA,IAChC,kBAAkB;AAAA,IAClB,GAAG;AAAA,EACL;AAEA,SAAO,cAAc,WAAW,OAAO,QAAQ;AACjD;AAEO,aAAM,iBAA2D;AAAA,EACtE,WAAW;AACb;",
6
6
  "names": []
7
7
  }
@@ -16,24 +16,32 @@ export type DataTableProps<D, C> = {
16
16
  data: D[];
17
17
  columns: C;
18
18
  clientPagination?: boolean | undefined;
19
+ hidePagination?: boolean | undefined;
19
20
  pagination?: DataTablePagination | undefined;
20
21
  onPaginationChange?: ((pagination: Pick<DataTablePagination, 'page'> | Pick<DataTablePagination, 'pageSize'>) => void) | undefined;
21
22
  columnVisibility?: DataTableColumnVisibility;
23
+ hideColumnVisibility?: boolean | undefined;
22
24
  onColumnVisibilityChange?: ((columnVisibility: DataTableColumnVisibility) => void) | undefined;
23
25
  columnOrder?: DataTableColumnOrder;
26
+ hideColumnOrder?: boolean | undefined;
24
27
  onColumnOrderChange?: ((columnOrder: DataTableColumnOrder) => void) | undefined;
25
28
  columnPinning?: DataTableColumnPinning;
29
+ hideColumnPinning?: boolean | undefined;
26
30
  onColumnPinningChange?: ((columnPinning: DataTableColumnPinning) => void) | undefined;
31
+ hideColumnResizing?: boolean | undefined;
27
32
  clientSorting?: boolean | undefined;
28
33
  sorting?: DataTableSorting | undefined;
34
+ hideSorting?: boolean | undefined;
29
35
  onSortingChange?: ((sorting: DataTableSorting) => void) | undefined;
30
36
  clientFilters?: boolean | undefined;
37
+ hideFilters?: boolean | undefined;
31
38
  filters?: DataTableFilters | undefined;
32
39
  onFiltersChange?: ((filters: DataTableFilters) => void) | undefined;
33
40
  clientFaceting?: boolean | undefined;
34
41
  faceting?: DataTableFaceting | undefined;
35
42
  clientSearch?: boolean | undefined;
43
+ hideSearch?: boolean | undefined;
36
44
  search?: DataTableSearch | undefined;
37
45
  onSearchChange?: ((search: DataTableSearch) => void) | undefined;
38
46
  };
39
- export declare function DataTable<D extends RowData, C extends Array<ColumnDef<D, any>>>({ data, columns, clientPagination, pagination: controlledPagination, onPaginationChange, clientSorting, sorting: controlledSorting, onSortingChange, columnVisibility: controlledColumnVisibility, onColumnVisibilityChange, columnOrder: controlledColumnOrder, onColumnOrderChange, columnPinning: controlledColumnPinning, onColumnPinningChange, clientFilters, filters: controlledFilters, onFiltersChange, clientFaceting, faceting, clientSearch, search: controlledSearch, onSearchChange, }: DataTableProps<D, C>): import("react/jsx-runtime").JSX.Element;
47
+ export declare function DataTable<D extends RowData, C extends Array<ColumnDef<D, any>>>({ data, columns, clientPagination, hidePagination, pagination: controlledPagination, onPaginationChange, clientSorting, sorting: controlledSorting, hideSorting, onSortingChange, columnVisibility: controlledColumnVisibility, hideColumnVisibility, onColumnVisibilityChange, columnOrder: controlledColumnOrder, hideColumnOrder, onColumnOrderChange, columnPinning: controlledColumnPinning, hideColumnPinning, onColumnPinningChange, hideColumnResizing, clientFilters, hideFilters, filters: controlledFilters, onFiltersChange, clientFaceting, faceting, clientSearch, hideSearch, search: controlledSearch, onSearchChange, }: DataTableProps<D, C>): import("react/jsx-runtime").JSX.Element;
@@ -44,23 +44,31 @@ export function DataTable({
44
44
  data,
45
45
  columns,
46
46
  clientPagination = false,
47
+ hidePagination = false,
47
48
  pagination: controlledPagination,
48
49
  onPaginationChange,
49
50
  clientSorting = false,
50
51
  sorting: controlledSorting,
52
+ hideSorting = false,
51
53
  onSortingChange,
52
54
  columnVisibility: controlledColumnVisibility,
55
+ hideColumnVisibility = false,
53
56
  onColumnVisibilityChange,
54
57
  columnOrder: controlledColumnOrder,
58
+ hideColumnOrder = false,
55
59
  onColumnOrderChange,
56
60
  columnPinning: controlledColumnPinning,
61
+ hideColumnPinning = false,
57
62
  onColumnPinningChange,
63
+ hideColumnResizing = false,
58
64
  clientFilters = false,
65
+ hideFilters = false,
59
66
  filters: controlledFilters,
60
67
  onFiltersChange,
61
68
  clientFaceting = false,
62
69
  faceting,
63
70
  clientSearch = false,
71
+ hideSearch = false,
64
72
  search: controlledSearch,
65
73
  onSearchChange
66
74
  }) {
@@ -211,7 +219,7 @@ export function DataTable({
211
219
  sensors,
212
220
  onDragEnd: handleDragEnd,
213
221
  children: [
214
- /* @__PURE__ */ jsx(
222
+ hideSearch ? null : /* @__PURE__ */ jsx(
215
223
  DataTableSearchComponent,
216
224
  {
217
225
  clientSearch,
@@ -220,7 +228,7 @@ export function DataTable({
220
228
  onSearch: onSearchChange
221
229
  }
222
230
  ),
223
- /* @__PURE__ */ jsxs(
231
+ /* @__PURE__ */ jsx("div", { className: "w-full overflow-y-visible overflow-x-scroll [scrollbar-width:thin]", children: /* @__PURE__ */ jsxs(
224
232
  Table,
225
233
  {
226
234
  style: {
@@ -237,6 +245,12 @@ export function DataTable({
237
245
  faceting,
238
246
  filters: controlledFilters,
239
247
  header,
248
+ hideColumnOrder,
249
+ hideColumnPinning,
250
+ hideColumnResizing,
251
+ hideColumnVisibility,
252
+ hideFilters,
253
+ hideSorting,
240
254
  sorting: controlledSorting,
241
255
  table,
242
256
  onFiltering: onFiltersChange,
@@ -244,21 +258,24 @@ export function DataTable({
244
258
  },
245
259
  header.id
246
260
  )) }) }, headerGroup.id)) }),
247
- /* @__PURE__ */ jsx(TableBody, { children: table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(
248
- TableCell,
249
- {
250
- className: getCommonPinningClasses(cell.column),
251
- style: { ...getCommonPinningStyles(cell.column) },
252
- title: String(cell.getValue()),
253
- children: flexRender(cell.column.columnDef.cell, cell.getContext())
254
- },
255
- cell.id
256
- )) }, row.id)) }),
261
+ /* @__PURE__ */ jsx(TableBody, { children: table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(TableRow, { children: row.getVisibleCells().map((cell) => {
262
+ let value = cell.getValue();
263
+ return /* @__PURE__ */ jsx(
264
+ TableCell,
265
+ {
266
+ className: getCommonPinningClasses(cell.column),
267
+ style: { ...getCommonPinningStyles(cell.column) },
268
+ title: value === null || value === void 0 ? void 0 : String(value),
269
+ children: flexRender(cell.column.columnDef.cell, cell.getContext())
270
+ },
271
+ cell.id
272
+ );
273
+ }) }, row.id)) }),
257
274
  /* @__PURE__ */ jsx(TableFoot, { children: table.getFooterGroups().map((footerGroup) => /* @__PURE__ */ jsx(TableRow, { children: footerGroup.headers.map((header) => /* @__PURE__ */ jsx(TableHeader, { children: header.isPlaceholder ? null : flexRender(header.column.columnDef.footer, header.getContext()) }, header.id)) }, footerGroup.id)) })
258
275
  ]
259
276
  }
260
- ),
261
- /* @__PURE__ */ jsx(
277
+ ) }),
278
+ hidePagination ? null : /* @__PURE__ */ jsx(
262
279
  DataTablePaginationComponent,
263
280
  {
264
281
  clientPagination,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../source/components/data-table/DataTable.tsx"],
4
- "sourcesContent": ["import {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n MouseSensor,\n TouchSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {restrictToHorizontalAxis} from '@dnd-kit/modifiers';\nimport {arrayMove, horizontalListSortingStrategy, SortableContext} from '@dnd-kit/sortable';\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n type ColumnOrderState,\n type ColumnPinningState,\n flexRender,\n getCoreRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowData,\n type SortingState,\n type Updater,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table';\nimport {useCallback, useId, useState} from 'react';\n\nimport {Table} from '../Table.js';\nimport {TableBody} from '../TableBody.js';\nimport {TableCell} from '../TableCell.js';\nimport {TableFoot} from '../TableFoot.js';\nimport {TableHead} from '../TableHead.js';\nimport {TableHeader} from '../TableHeader.js';\nimport {TableRow} from '../TableRow.js';\nimport {type DataTableColumnOrder} from './DataTableColumnOrder.js';\nimport {type DataTableColumnPinning} from './DataTableColumnPinning.js';\nimport {type DataTableColumnVisibility} from './DataTableColumnVisibility.js';\nimport {type DataTableFaceting} from './DataTableFaceting.js';\nimport {type DataTableFilters} from './DataTableFilters.js';\nimport {type DataTablePagination} from './DataTablePagination.js';\nimport {type DataTableSearch} from './DataTableSearch.js';\nimport {type DataTableSorting} from './DataTableSorting.js';\nimport {\n DataTableHeader,\n DataTablePagination as DataTablePaginationComponent,\n DataTableSearch as DataTableSearchComponent,\n DEFAULT_PAGE_SIZE,\n fromPinningState,\n fuzzyFilter,\n getCommonPinningClasses,\n getCommonPinningStyles,\n} from './internals.js';\n\ndeclare module '@tanstack/react-table' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- false positive\n interface ColumnMeta<TData extends RowData, TValue> {\n filterVariant?: 'range' | 'select' | 'text';\n }\n}\n\nexport type DataTableProps<D, C> = {\n data: D[];\n columns: C;\n clientPagination?: boolean | undefined;\n pagination?: DataTablePagination | undefined;\n onPaginationChange?:\n | ((\n pagination: Pick<DataTablePagination, 'page'> | Pick<DataTablePagination, 'pageSize'>,\n ) => void)\n | undefined;\n columnVisibility?: DataTableColumnVisibility;\n onColumnVisibilityChange?: ((columnVisibility: DataTableColumnVisibility) => void) | undefined;\n columnOrder?: DataTableColumnOrder;\n onColumnOrderChange?: ((columnOrder: DataTableColumnOrder) => void) | undefined;\n columnPinning?: DataTableColumnPinning;\n onColumnPinningChange?: ((columnPinning: DataTableColumnPinning) => void) | undefined;\n clientSorting?: boolean | undefined;\n sorting?: DataTableSorting | undefined;\n onSortingChange?: ((sorting: DataTableSorting) => void) | undefined;\n clientFilters?: boolean | undefined;\n filters?: DataTableFilters | undefined;\n onFiltersChange?: ((filters: DataTableFilters) => void) | undefined;\n clientFaceting?: boolean | undefined;\n faceting?: DataTableFaceting | undefined;\n clientSearch?: boolean | undefined;\n search?: DataTableSearch | undefined;\n onSearchChange?: ((search: DataTableSearch) => void) | undefined;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed so the type parameters are useful\nexport function DataTable<D extends RowData, C extends Array<ColumnDef<D, any>>>({\n data,\n columns,\n clientPagination = false,\n pagination: controlledPagination,\n onPaginationChange,\n clientSorting = false,\n sorting: controlledSorting,\n onSortingChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n columnPinning: controlledColumnPinning,\n onColumnPinningChange,\n clientFilters = false,\n filters: controlledFilters,\n onFiltersChange,\n clientFaceting = false,\n faceting,\n clientSearch = false,\n search: controlledSearch,\n onSearchChange,\n}: DataTableProps<D, C>) {\n let [pagination, setPagination] = useState<PaginationState>(\n controlledPagination ?\n {\n pageIndex: Math.max(0, controlledPagination.page - 1),\n pageSize: controlledPagination.pageSize,\n }\n : {\n pageIndex: 0,\n pageSize: DEFAULT_PAGE_SIZE,\n },\n );\n let [columnVisibility, setColumnVisibility] = useState(controlledColumnVisibility ?? {});\n let [columnOrder, setColumnOrder] = useState<string[]>(\n controlledColumnOrder ?\n [\n ...controlledColumnOrder,\n ...columns\n .map((column, index) => {\n if (column.id) {\n return column.id;\n }\n\n if ('accessorKey' in column) {\n return String(column.accessorKey);\n }\n\n if (typeof column.header === 'string') {\n return String(column.header);\n }\n\n return String(index);\n })\n .filter((value) => !controlledColumnOrder.includes(value)),\n ]\n : columns.map((column, index) => {\n if (column.id) {\n return column.id;\n }\n\n if ('accessorKey' in column) {\n return String(column.accessorKey);\n }\n\n if (typeof column.header === 'string') {\n return String(column.header);\n }\n\n return String(index);\n }),\n );\n let [columnPinning, setColumnPinning] = useState<ColumnPinningState>(\n controlledColumnPinning ?\n {\n left: Object.entries(controlledColumnPinning)\n .filter(([, pinning]) => pinning === 'left')\n .map(([column]) => column),\n right: Object.entries(controlledColumnPinning)\n .filter(([, pinning]) => pinning === 'right')\n .map(([column]) => column),\n }\n : {left: [], right: []},\n );\n let [sorting, setSorting] = useState<SortingState>([]);\n let [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n let [search, setSearch] = useState('');\n\n let handleColumnVisibilityChange = useCallback(\n (columnVisibilityState: Updater<VisibilityState>) => {\n setColumnVisibility(columnVisibilityState);\n\n if (typeof columnVisibilityState === 'function') {\n onColumnVisibilityChange?.(columnVisibilityState(columnVisibility));\n } else {\n onColumnVisibilityChange?.(columnVisibilityState);\n }\n },\n [columnVisibility, onColumnVisibilityChange],\n );\n let handleColumnOrderChange = useCallback(\n (columnOrderState: Updater<ColumnOrderState>) => {\n setColumnOrder(columnOrderState);\n\n if (typeof columnOrderState === 'function') {\n onColumnOrderChange?.(columnOrderState(columnOrder));\n } else {\n onColumnOrderChange?.(columnOrderState);\n }\n },\n [columnOrder, onColumnOrderChange],\n );\n let handleColumnPinningChange = useCallback(\n (columnPinningState: Updater<ColumnPinningState>) => {\n setColumnPinning(columnPinningState);\n\n if (typeof columnPinningState === 'function') {\n onColumnPinningChange?.(fromPinningState(columnPinningState(columnPinning)));\n } else {\n onColumnPinningChange?.(fromPinningState(columnPinningState));\n }\n },\n [columnPinning, onColumnPinningChange],\n );\n\n let table = useReactTable<D>({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: clientPagination ? getPaginationRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: clientFaceting ? getFacetedRowModel() : undefined,\n getFacetedUniqueValues: clientFaceting ? getFacetedUniqueValues() : undefined,\n getFacetedMinMaxValues: clientFaceting ? getFacetedMinMaxValues() : undefined,\n state: {\n pagination: clientPagination ? pagination : undefined,\n columnVisibility,\n columnOrder,\n columnPinning,\n sorting: clientSorting ? sorting : undefined,\n columnFilters: clientFilters ? columnFilters : undefined,\n globalFilter: clientSearch ? search : undefined,\n },\n onPaginationChange: clientPagination ? setPagination : undefined,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onSortingChange: clientSorting ? setSorting : undefined,\n onColumnFiltersChange: clientFilters ? setColumnFilters : undefined,\n onGlobalFilterChange: clientSearch ? setSearch : undefined,\n columnResizeMode: 'onChange',\n globalFilterFn: fuzzyFilter,\n });\n\n let handleDragEnd = useCallback(\n ({active, over}: DragEndEvent) => {\n if (over && active.id !== over.id) {\n table.setColumnOrder((previousColumnOrder) => {\n let oldIndex = previousColumnOrder.indexOf(active.id as string);\n let newIndex = previousColumnOrder.indexOf(over.id as string);\n\n return arrayMove(previousColumnOrder, oldIndex, newIndex);\n });\n }\n },\n [table],\n );\n\n let sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(TouchSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {}),\n );\n\n let id = useId();\n\n let page =\n clientPagination ?\n table.getState().pagination.pageIndex + 1\n : (controlledPagination?.page ?? 1);\n let pageSize =\n clientPagination ?\n table.getState().pagination.pageSize\n : (controlledPagination?.pageSize ?? DEFAULT_PAGE_SIZE);\n let pageCount = clientPagination ? table.getPageCount() : (controlledPagination?.pageCount ?? 1);\n\n return (\n <DndContext\n collisionDetection={closestCenter}\n id={id}\n modifiers={[restrictToHorizontalAxis]}\n sensors={sensors}\n onDragEnd={handleDragEnd}\n >\n <DataTableSearchComponent\n clientSearch={clientSearch}\n search={controlledSearch}\n table={table}\n onSearch={onSearchChange}\n />\n <Table\n style={{\n width: table.getCenterTotalSize(),\n tableLayout: 'fixed',\n }}\n >\n <TableHead>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n <SortableContext items={columnOrder} strategy={horizontalListSortingStrategy}>\n {headerGroup.headers.map((header) => (\n <DataTableHeader\n key={header.id}\n clientFaceting={clientFaceting}\n clientFilters={clientFilters}\n clientSorting={clientSorting}\n faceting={faceting}\n filters={controlledFilters}\n header={header}\n sorting={controlledSorting}\n table={table}\n onFiltering={onFiltersChange}\n onSorting={onSortingChange}\n />\n ))}\n </SortableContext>\n </TableRow>\n ))}\n </TableHead>\n <TableBody>\n {table.getRowModel().rows.map((row) => (\n <TableRow key={row.id}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className={getCommonPinningClasses(cell.column)}\n style={{...getCommonPinningStyles(cell.column)}}\n title={String(cell.getValue())}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n <TableFoot>\n {table.getFooterGroups().map((footerGroup) => (\n <TableRow key={footerGroup.id}>\n {footerGroup.headers.map((header) => (\n <TableHeader key={header.id}>\n {header.isPlaceholder ? null : (\n flexRender(header.column.columnDef.footer, header.getContext())\n )}\n </TableHeader>\n ))}\n </TableRow>\n ))}\n </TableFoot>\n </Table>\n <DataTablePaginationComponent\n clientPagination={clientPagination}\n page={page}\n pageCount={pageCount}\n pageSize={pageSize}\n table={table}\n onPagination={onPaginationChange}\n />\n </DndContext>\n );\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n MouseSensor,\n TouchSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {restrictToHorizontalAxis} from '@dnd-kit/modifiers';\nimport {arrayMove, horizontalListSortingStrategy, SortableContext} from '@dnd-kit/sortable';\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n type ColumnOrderState,\n type ColumnPinningState,\n flexRender,\n getCoreRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowData,\n type SortingState,\n type Updater,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table';\nimport {useCallback, useId, useState} from 'react';\n\nimport {Table} from '../Table.js';\nimport {TableBody} from '../TableBody.js';\nimport {TableCell} from '../TableCell.js';\nimport {TableFoot} from '../TableFoot.js';\nimport {TableHead} from '../TableHead.js';\nimport {TableHeader} from '../TableHeader.js';\nimport {TableRow} from '../TableRow.js';\nimport {type DataTableColumnOrder} from './DataTableColumnOrder.js';\nimport {type DataTableColumnPinning} from './DataTableColumnPinning.js';\nimport {type DataTableColumnVisibility} from './DataTableColumnVisibility.js';\nimport {type DataTableFaceting} from './DataTableFaceting.js';\nimport {type DataTableFilters} from './DataTableFilters.js';\nimport {type DataTablePagination} from './DataTablePagination.js';\nimport {type DataTableSearch} from './DataTableSearch.js';\nimport {type DataTableSorting} from './DataTableSorting.js';\nimport {\n DataTableHeader,\n DataTablePagination as DataTablePaginationComponent,\n DataTableSearch as DataTableSearchComponent,\n DEFAULT_PAGE_SIZE,\n fromPinningState,\n fuzzyFilter,\n getCommonPinningClasses,\n getCommonPinningStyles,\n} from './internals.js';\n\ndeclare module '@tanstack/react-table' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- false positive\n interface ColumnMeta<TData extends RowData, TValue> {\n filterVariant?: 'range' | 'select' | 'text';\n }\n}\n\nexport type DataTableProps<D, C> = {\n data: D[];\n columns: C;\n clientPagination?: boolean | undefined;\n hidePagination?: boolean | undefined;\n pagination?: DataTablePagination | undefined;\n onPaginationChange?:\n | ((\n pagination: Pick<DataTablePagination, 'page'> | Pick<DataTablePagination, 'pageSize'>,\n ) => void)\n | undefined;\n columnVisibility?: DataTableColumnVisibility;\n hideColumnVisibility?: boolean | undefined;\n onColumnVisibilityChange?: ((columnVisibility: DataTableColumnVisibility) => void) | undefined;\n columnOrder?: DataTableColumnOrder;\n hideColumnOrder?: boolean | undefined;\n onColumnOrderChange?: ((columnOrder: DataTableColumnOrder) => void) | undefined;\n columnPinning?: DataTableColumnPinning;\n hideColumnPinning?: boolean | undefined;\n onColumnPinningChange?: ((columnPinning: DataTableColumnPinning) => void) | undefined;\n hideColumnResizing?: boolean | undefined;\n clientSorting?: boolean | undefined;\n sorting?: DataTableSorting | undefined;\n hideSorting?: boolean | undefined;\n onSortingChange?: ((sorting: DataTableSorting) => void) | undefined;\n clientFilters?: boolean | undefined;\n hideFilters?: boolean | undefined;\n filters?: DataTableFilters | undefined;\n onFiltersChange?: ((filters: DataTableFilters) => void) | undefined;\n clientFaceting?: boolean | undefined;\n faceting?: DataTableFaceting | undefined;\n clientSearch?: boolean | undefined;\n hideSearch?: boolean | undefined;\n search?: DataTableSearch | undefined;\n onSearchChange?: ((search: DataTableSearch) => void) | undefined;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed so the type parameters are useful\nexport function DataTable<D extends RowData, C extends Array<ColumnDef<D, any>>>({\n data,\n columns,\n clientPagination = false,\n hidePagination = false,\n pagination: controlledPagination,\n onPaginationChange,\n clientSorting = false,\n sorting: controlledSorting,\n hideSorting = false,\n onSortingChange,\n columnVisibility: controlledColumnVisibility,\n hideColumnVisibility = false,\n onColumnVisibilityChange,\n columnOrder: controlledColumnOrder,\n hideColumnOrder = false,\n onColumnOrderChange,\n columnPinning: controlledColumnPinning,\n hideColumnPinning = false,\n onColumnPinningChange,\n hideColumnResizing = false,\n clientFilters = false,\n hideFilters = false,\n filters: controlledFilters,\n onFiltersChange,\n clientFaceting = false,\n faceting,\n clientSearch = false,\n hideSearch = false,\n search: controlledSearch,\n onSearchChange,\n}: DataTableProps<D, C>) {\n let [pagination, setPagination] = useState<PaginationState>(\n controlledPagination ?\n {\n pageIndex: Math.max(0, controlledPagination.page - 1),\n pageSize: controlledPagination.pageSize,\n }\n : {\n pageIndex: 0,\n pageSize: DEFAULT_PAGE_SIZE,\n },\n );\n let [columnVisibility, setColumnVisibility] = useState(controlledColumnVisibility ?? {});\n let [columnOrder, setColumnOrder] = useState<string[]>(\n controlledColumnOrder ?\n [\n ...controlledColumnOrder,\n ...columns\n .map((column, index) => {\n if (column.id) {\n return column.id;\n }\n\n if ('accessorKey' in column) {\n return String(column.accessorKey);\n }\n\n if (typeof column.header === 'string') {\n return String(column.header);\n }\n\n return String(index);\n })\n .filter((value) => !controlledColumnOrder.includes(value)),\n ]\n : columns.map((column, index) => {\n if (column.id) {\n return column.id;\n }\n\n if ('accessorKey' in column) {\n return String(column.accessorKey);\n }\n\n if (typeof column.header === 'string') {\n return String(column.header);\n }\n\n return String(index);\n }),\n );\n let [columnPinning, setColumnPinning] = useState<ColumnPinningState>(\n controlledColumnPinning ?\n {\n left: Object.entries(controlledColumnPinning)\n .filter(([, pinning]) => pinning === 'left')\n .map(([column]) => column),\n right: Object.entries(controlledColumnPinning)\n .filter(([, pinning]) => pinning === 'right')\n .map(([column]) => column),\n }\n : {left: [], right: []},\n );\n let [sorting, setSorting] = useState<SortingState>([]);\n let [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n let [search, setSearch] = useState('');\n\n let handleColumnVisibilityChange = useCallback(\n (columnVisibilityState: Updater<VisibilityState>) => {\n setColumnVisibility(columnVisibilityState);\n\n if (typeof columnVisibilityState === 'function') {\n onColumnVisibilityChange?.(columnVisibilityState(columnVisibility));\n } else {\n onColumnVisibilityChange?.(columnVisibilityState);\n }\n },\n [columnVisibility, onColumnVisibilityChange],\n );\n let handleColumnOrderChange = useCallback(\n (columnOrderState: Updater<ColumnOrderState>) => {\n setColumnOrder(columnOrderState);\n\n if (typeof columnOrderState === 'function') {\n onColumnOrderChange?.(columnOrderState(columnOrder));\n } else {\n onColumnOrderChange?.(columnOrderState);\n }\n },\n [columnOrder, onColumnOrderChange],\n );\n let handleColumnPinningChange = useCallback(\n (columnPinningState: Updater<ColumnPinningState>) => {\n setColumnPinning(columnPinningState);\n\n if (typeof columnPinningState === 'function') {\n onColumnPinningChange?.(fromPinningState(columnPinningState(columnPinning)));\n } else {\n onColumnPinningChange?.(fromPinningState(columnPinningState));\n }\n },\n [columnPinning, onColumnPinningChange],\n );\n\n let table = useReactTable<D>({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: clientPagination ? getPaginationRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: clientFaceting ? getFacetedRowModel() : undefined,\n getFacetedUniqueValues: clientFaceting ? getFacetedUniqueValues() : undefined,\n getFacetedMinMaxValues: clientFaceting ? getFacetedMinMaxValues() : undefined,\n state: {\n pagination: clientPagination ? pagination : undefined,\n columnVisibility,\n columnOrder,\n columnPinning,\n sorting: clientSorting ? sorting : undefined,\n columnFilters: clientFilters ? columnFilters : undefined,\n globalFilter: clientSearch ? search : undefined,\n },\n onPaginationChange: clientPagination ? setPagination : undefined,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onSortingChange: clientSorting ? setSorting : undefined,\n onColumnFiltersChange: clientFilters ? setColumnFilters : undefined,\n onGlobalFilterChange: clientSearch ? setSearch : undefined,\n columnResizeMode: 'onChange',\n globalFilterFn: fuzzyFilter,\n });\n\n let handleDragEnd = useCallback(\n ({active, over}: DragEndEvent) => {\n if (over && active.id !== over.id) {\n table.setColumnOrder((previousColumnOrder) => {\n let oldIndex = previousColumnOrder.indexOf(active.id as string);\n let newIndex = previousColumnOrder.indexOf(over.id as string);\n\n return arrayMove(previousColumnOrder, oldIndex, newIndex);\n });\n }\n },\n [table],\n );\n\n let sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(TouchSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {}),\n );\n\n let id = useId();\n\n let page =\n clientPagination ?\n table.getState().pagination.pageIndex + 1\n : (controlledPagination?.page ?? 1);\n let pageSize =\n clientPagination ?\n table.getState().pagination.pageSize\n : (controlledPagination?.pageSize ?? DEFAULT_PAGE_SIZE);\n let pageCount = clientPagination ? table.getPageCount() : (controlledPagination?.pageCount ?? 1);\n\n return (\n <DndContext\n collisionDetection={closestCenter}\n id={id}\n modifiers={[restrictToHorizontalAxis]}\n sensors={sensors}\n onDragEnd={handleDragEnd}\n >\n {hideSearch ? null : (\n <DataTableSearchComponent\n clientSearch={clientSearch}\n search={controlledSearch}\n table={table}\n onSearch={onSearchChange}\n />\n )}\n <div className=\"w-full overflow-y-visible overflow-x-scroll [scrollbar-width:thin]\">\n <Table\n style={{\n width: table.getCenterTotalSize(),\n tableLayout: 'fixed',\n }}\n >\n <TableHead>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n <SortableContext items={columnOrder} strategy={horizontalListSortingStrategy}>\n {headerGroup.headers.map((header) => (\n <DataTableHeader\n key={header.id}\n clientFaceting={clientFaceting}\n clientFilters={clientFilters}\n clientSorting={clientSorting}\n faceting={faceting}\n filters={controlledFilters}\n header={header}\n hideColumnOrder={hideColumnOrder}\n hideColumnPinning={hideColumnPinning}\n hideColumnResizing={hideColumnResizing}\n hideColumnVisibility={hideColumnVisibility}\n hideFilters={hideFilters}\n hideSorting={hideSorting}\n sorting={controlledSorting}\n table={table}\n onFiltering={onFiltersChange}\n onSorting={onSortingChange}\n />\n ))}\n </SortableContext>\n </TableRow>\n ))}\n </TableHead>\n <TableBody>\n {table.getRowModel().rows.map((row) => (\n <TableRow key={row.id}>\n {row.getVisibleCells().map((cell) => {\n let value = cell.getValue();\n\n return (\n <TableCell\n key={cell.id}\n className={getCommonPinningClasses(cell.column)}\n style={{...getCommonPinningStyles(cell.column)}}\n title={value === null || value === undefined ? undefined : String(value)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n );\n })}\n </TableRow>\n ))}\n </TableBody>\n <TableFoot>\n {table.getFooterGroups().map((footerGroup) => (\n <TableRow key={footerGroup.id}>\n {footerGroup.headers.map((header) => (\n <TableHeader key={header.id}>\n {header.isPlaceholder ? null : (\n flexRender(header.column.columnDef.footer, header.getContext())\n )}\n </TableHeader>\n ))}\n </TableRow>\n ))}\n </TableFoot>\n </Table>\n </div>\n {hidePagination ? null : (\n <DataTablePaginationComponent\n clientPagination={clientPagination}\n page={page}\n pageCount={pageCount}\n pageSize={pageSize}\n table={table}\n onPagination={onPaginationChange}\n />\n )}\n </DndContext>\n );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -4,12 +4,18 @@ export type DataTableHeaderProps = {
4
4
  table: Table<any>;
5
5
  header: Header<any, any>;
6
6
  clientSorting: DataTableProps<any, any>['clientSorting'];
7
+ hideSorting: DataTableProps<any, any>['hideSorting'];
7
8
  sorting: DataTableProps<any, any>['sorting'];
8
9
  onSorting: DataTableProps<any, any>['onSortingChange'];
9
10
  clientFilters: DataTableProps<any, any>['clientFilters'];
11
+ hideFilters: DataTableProps<any, any>['hideFilters'];
10
12
  filters: DataTableProps<any, any>['filters'];
11
13
  onFiltering: DataTableProps<any, any>['onFiltersChange'];
12
14
  clientFaceting: DataTableProps<any, any>['clientFaceting'];
13
15
  faceting: DataTableProps<any, any>['faceting'];
16
+ hideColumnVisibility: DataTableProps<any, any>['hideColumnVisibility'];
17
+ hideColumnOrder: DataTableProps<any, any>['hideColumnOrder'];
18
+ hideColumnPinning: DataTableProps<any, any>['hideColumnPinning'];
19
+ hideColumnResizing: DataTableProps<any, any>['hideColumnResizing'];
14
20
  };
15
- export declare function DataTableHeader({ table, header, clientSorting, sorting: controlledSorting, onSorting, clientFilters, filters: controlledFilters, onFiltering, clientFaceting, faceting, }: DataTableHeaderProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function DataTableHeader({ table, header, clientSorting, hideSorting, sorting: controlledSorting, onSorting, clientFilters, hideFilters, filters: controlledFilters, onFiltering, clientFaceting, faceting, hideColumnVisibility, hideColumnOrder, hideColumnPinning, hideColumnResizing, }: DataTableHeaderProps): import("react/jsx-runtime").JSX.Element;
@@ -22,13 +22,19 @@ export function DataTableHeader({
22
22
  table,
23
23
  header,
24
24
  clientSorting,
25
+ hideSorting = false,
25
26
  sorting: controlledSorting,
26
27
  onSorting,
27
28
  clientFilters,
29
+ hideFilters = false,
28
30
  filters: controlledFilters,
29
31
  onFiltering,
30
32
  clientFaceting,
31
- faceting
33
+ faceting,
34
+ hideColumnVisibility = false,
35
+ hideColumnOrder = false,
36
+ hideColumnPinning = false,
37
+ hideColumnResizing = false
32
38
  }) {
33
39
  let { attributes, isDragging, listeners, setNodeRef, transform } = useSortable({
34
40
  id: header.column.id
@@ -100,6 +106,9 @@ export function DataTableHeader({
100
106
  let handleUnpinClick = useCallback(() => {
101
107
  header.column.pin(false);
102
108
  }, [header.column]);
109
+ let resolvedHideFilters = hideFilters || !header.column.getCanFilter();
110
+ let resolvedHideSorting = hideSorting || !header.column.getCanSort();
111
+ let resolvedHideColumnPinning = hideColumnPinning || !header.column.getCanPin();
103
112
  return /* @__PURE__ */ jsxs(
104
113
  TableHeader,
105
114
  {
@@ -108,77 +117,90 @@ export function DataTableHeader({
108
117
  colSpan: header.colSpan,
109
118
  style,
110
119
  children: [
111
- /* @__PURE__ */ jsx("span", { className: "relative mr-6 block overflow-hidden", children: /* @__PURE__ */ jsxs(Container, { align: "center", justify: "spaced", spacing: "extra-small", children: [
112
- header.column.getCanSort() ? /* @__PURE__ */ jsxs(
113
- Button,
114
- {
115
- className: "mr-auto inline-flex cursor-move",
116
- size: "small",
117
- title,
118
- variant: "text",
119
- onClick: handleSortClick,
120
- ...attributes,
121
- ...listeners,
122
- children: [
123
- sortElement,
124
- contentElement
125
- ]
126
- }
127
- ) : null,
128
- /* @__PURE__ */ jsxs(Popover, { children: [
129
- /* @__PURE__ */ jsx(PopoverButton, { children: /* @__PURE__ */ jsx(Button, { "aria-label": "Settings", size: "small", variant: "text", children: /* @__PURE__ */ jsx(Icon, { name: "Cog6Tooth", size: "small" }) }) }),
130
- /* @__PURE__ */ jsx(PopoverPanel, { anchor: "right start", children: /* @__PURE__ */ jsxs(Container, { direction: "column", spacing: "large", children: [
131
- header.column.getCanPin() ? /* @__PURE__ */ jsxs(Container, { direction: "row", spacing: "small", children: [
132
- /* @__PURE__ */ jsx(Text, { children: "Pin column" }),
133
- /* @__PURE__ */ jsx(Field, { children: /* @__PURE__ */ jsxs(Container, { spacing: "small", children: [
134
- header.column.getIsPinned() === "left" ? null : /* @__PURE__ */ jsx(
135
- Button,
136
- {
137
- "aria-label": "Pin to left",
138
- variant: "outline",
139
- onClick: handlePinLeftClick,
140
- children: /* @__PURE__ */ jsx(Icon, { name: "ArrowLeftEndOnRectangle", size: "large" })
141
- }
142
- ),
143
- header.column.getIsPinned() ? /* @__PURE__ */ jsx(Button, { "aria-label": "Unpin", variant: "outline", onClick: handleUnpinClick, children: /* @__PURE__ */ jsx(Icon, { name: "XMark", size: "large" }) }) : null,
144
- header.column.getIsPinned() === "right" ? null : /* @__PURE__ */ jsx(
145
- Button,
146
- {
147
- "aria-label": "Pin to right",
148
- variant: "outline",
149
- onClick: handlePinRightClick,
150
- children: /* @__PURE__ */ jsx(Icon, { name: "ArrowRightEndOnRectangle", size: "large" })
151
- }
152
- )
120
+ /* @__PURE__ */ jsx(
121
+ "span",
122
+ {
123
+ className: hideColumnResizing ? "relative block overflow-hidden" : "relative mr-6 block overflow-hidden",
124
+ children: /* @__PURE__ */ jsxs(Container, { align: "center", justify: "end", spacing: "extra-small", children: [
125
+ resolvedHideSorting && hideColumnOrder ? contentElement : /* @__PURE__ */ jsxs(
126
+ Button,
127
+ {
128
+ className: hideColumnOrder ? "inline-flex" : "inline-flex cursor-move",
129
+ size: "small",
130
+ title,
131
+ variant: "text",
132
+ onClick: resolvedHideSorting ? void 0 : handleSortClick,
133
+ ...hideColumnOrder ? {} : attributes,
134
+ ...hideColumnOrder ? {} : listeners,
135
+ children: [
136
+ resolvedHideSorting ? null : sortElement,
137
+ contentElement
138
+ ]
139
+ }
140
+ ),
141
+ resolvedHideColumnPinning && resolvedHideFilters && hideColumnVisibility ? null : /* @__PURE__ */ jsxs(Popover, { children: [
142
+ /* @__PURE__ */ jsx(PopoverButton, { children: /* @__PURE__ */ jsx(Button, { "aria-label": "Settings", size: "small", variant: "text", children: /* @__PURE__ */ jsx(Icon, { name: "Cog6Tooth", size: "small" }) }) }),
143
+ /* @__PURE__ */ jsx(PopoverPanel, { anchor: "right start", children: /* @__PURE__ */ jsxs(Container, { direction: "column", spacing: "large", children: [
144
+ resolvedHideColumnPinning ? null : /* @__PURE__ */ jsxs(Container, { direction: "row", spacing: "small", children: [
145
+ /* @__PURE__ */ jsx(Text, { children: "Pin column" }),
146
+ /* @__PURE__ */ jsx(Field, { children: /* @__PURE__ */ jsxs(Container, { spacing: "small", children: [
147
+ header.column.getIsPinned() === "left" ? null : /* @__PURE__ */ jsx(
148
+ Button,
149
+ {
150
+ "aria-label": "Pin to left",
151
+ variant: "outline",
152
+ onClick: handlePinLeftClick,
153
+ children: /* @__PURE__ */ jsx(Icon, { name: "ArrowLeftEndOnRectangle", size: "large" })
154
+ }
155
+ ),
156
+ header.column.getIsPinned() ? /* @__PURE__ */ jsx(Button, { "aria-label": "Unpin", variant: "outline", onClick: handleUnpinClick, children: /* @__PURE__ */ jsx(Icon, { name: "XMark", size: "large" }) }) : null,
157
+ header.column.getIsPinned() === "right" ? null : /* @__PURE__ */ jsx(
158
+ Button,
159
+ {
160
+ "aria-label": "Pin to right",
161
+ variant: "outline",
162
+ onClick: handlePinRightClick,
163
+ children: /* @__PURE__ */ jsx(Icon, { name: "ArrowRightEndOnRectangle", size: "large" })
164
+ }
165
+ )
166
+ ] }) })
167
+ ] }),
168
+ resolvedHideFilters ? null : /* @__PURE__ */ jsxs(Container, { direction: "column", spacing: "small", children: [
169
+ /* @__PURE__ */ jsx(Text, { children: "Filter" }),
170
+ /* @__PURE__ */ jsx(Field, { children: /* @__PURE__ */ jsx(
171
+ DataTableHeaderFilter,
172
+ {
173
+ clientFaceting,
174
+ clientFilters,
175
+ column: header.column,
176
+ faceting,
177
+ filters: controlledFilters,
178
+ table,
179
+ onFiltering
180
+ }
181
+ ) })
182
+ ] }),
183
+ hideColumnVisibility ? null : /* @__PURE__ */ jsxs(Container, { direction: "column", spacing: "small", children: [
184
+ /* @__PURE__ */ jsx(Text, { children: "Visible columns" }),
185
+ table.getAllLeafColumns().map((column) => /* @__PURE__ */ jsx(
186
+ DataTableHeaderColumnCheckbox,
187
+ {
188
+ column,
189
+ table
190
+ },
191
+ column.id
192
+ ))
193
+ ] })
153
194
  ] }) })
154
- ] }) : null,
155
- header.column.getCanFilter() ? /* @__PURE__ */ jsxs(Container, { direction: "column", spacing: "small", children: [
156
- /* @__PURE__ */ jsx(Text, { children: "Filter" }),
157
- /* @__PURE__ */ jsx(Field, { children: /* @__PURE__ */ jsx(
158
- DataTableHeaderFilter,
159
- {
160
- clientFaceting,
161
- clientFilters,
162
- column: header.column,
163
- faceting,
164
- filters: controlledFilters,
165
- table,
166
- onFiltering
167
- }
168
- ) })
169
- ] }) : null,
170
- /* @__PURE__ */ jsxs(Container, { direction: "column", spacing: "small", children: [
171
- /* @__PURE__ */ jsx(Text, { children: "Visible columns" }),
172
- table.getAllLeafColumns().map((column) => /* @__PURE__ */ jsx(DataTableHeaderColumnCheckbox, { column, table }, column.id))
173
195
  ] })
174
- ] }) })
175
- ] })
176
- ] }) }),
177
- /* @__PURE__ */ jsx(
196
+ ] })
197
+ }
198
+ ),
199
+ hideColumnResizing ? null : /* @__PURE__ */ jsx(
178
200
  Button,
179
201
  {
180
202
  "aria-label": "Resize",
181
- className: "absolute right-1 top-2.5 cursor-col-resize",
203
+ className: "absolute right-1 top-1/2 -mt-2.5 cursor-col-resize",
182
204
  size: "small",
183
205
  variant: "invisible",
184
206
  onDoubleClick: handleWidthReset,