@raystack/apsara 0.50.1 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/components/callout/callout.cjs +2 -21
  2. package/dist/components/callout/callout.cjs.map +1 -1
  3. package/dist/components/callout/callout.d.ts +7 -8
  4. package/dist/components/callout/callout.d.ts.map +1 -1
  5. package/dist/components/callout/callout.js +3 -3
  6. package/dist/components/callout/callout.js.map +1 -1
  7. package/dist/components/data-table/data-table.cjs +1 -1
  8. package/dist/components/data-table/data-table.cjs.map +1 -1
  9. package/dist/components/data-table/data-table.js +2 -2
  10. package/dist/components/data-table/data-table.js.map +1 -1
  11. package/dist/components/data-table/data-table.types.cjs +4 -6
  12. package/dist/components/data-table/data-table.types.cjs.map +1 -1
  13. package/dist/components/data-table/data-table.types.d.ts +19 -13
  14. package/dist/components/data-table/data-table.types.d.ts.map +1 -1
  15. package/dist/components/data-table/data-table.types.js +5 -6
  16. package/dist/components/data-table/data-table.types.js.map +1 -1
  17. package/dist/components/data-table/index.d.ts +2 -1
  18. package/dist/components/data-table/index.d.ts.map +1 -1
  19. package/dist/components/data-table/utils/__tests__/filter-operations.test.d.ts +2 -0
  20. package/dist/components/data-table/utils/__tests__/filter-operations.test.d.ts.map +1 -0
  21. package/dist/components/data-table/utils/__tests__/index.test.d.ts +2 -0
  22. package/dist/components/data-table/utils/__tests__/index.test.d.ts.map +1 -0
  23. package/dist/components/data-table/utils/filter-operations.cjs +74 -32
  24. package/dist/components/data-table/utils/filter-operations.cjs.map +1 -1
  25. package/dist/components/data-table/utils/filter-operations.d.ts +11 -10
  26. package/dist/components/data-table/utils/filter-operations.d.ts.map +1 -1
  27. package/dist/components/data-table/utils/filter-operations.js +69 -27
  28. package/dist/components/data-table/utils/filter-operations.js.map +1 -1
  29. package/dist/components/data-table/utils/index.cjs +88 -24
  30. package/dist/components/data-table/utils/index.cjs.map +1 -1
  31. package/dist/components/data-table/utils/index.d.ts +8 -7
  32. package/dist/components/data-table/utils/index.d.ts.map +1 -1
  33. package/dist/components/data-table/utils/index.js +87 -24
  34. package/dist/components/data-table/utils/index.js.map +1 -1
  35. package/dist/components/list/list.cjs +13 -14
  36. package/dist/components/list/list.cjs.map +1 -1
  37. package/dist/components/list/list.d.ts +10 -11
  38. package/dist/components/list/list.d.ts.map +1 -1
  39. package/dist/components/list/list.js +13 -14
  40. package/dist/components/list/list.js.map +1 -1
  41. package/dist/components/radio/radio.cjs +0 -1
  42. package/dist/components/radio/radio.cjs.map +1 -1
  43. package/dist/components/radio/radio.d.ts +0 -1
  44. package/dist/components/radio/radio.d.ts.map +1 -1
  45. package/dist/components/radio/radio.js +0 -1
  46. package/dist/components/radio/radio.js.map +1 -1
  47. package/dist/components/tabs/tabs.cjs +2 -3
  48. package/dist/components/tabs/tabs.cjs.map +1 -1
  49. package/dist/components/tabs/tabs.d.ts +1 -2
  50. package/dist/components/tabs/tabs.d.ts.map +1 -1
  51. package/dist/components/tabs/tabs.js +2 -3
  52. package/dist/components/tabs/tabs.js.map +1 -1
  53. package/dist/index.cjs +2 -2
  54. package/dist/index.js +1 -1
  55. package/dist/types/filters.cjs +5 -1
  56. package/dist/types/filters.cjs.map +1 -1
  57. package/dist/types/filters.d.ts +4 -1
  58. package/dist/types/filters.d.ts.map +1 -1
  59. package/dist/types/filters.js +5 -2
  60. package/dist/types/filters.js.map +1 -1
  61. package/dist/vitest.setup.d.ts +2 -0
  62. package/dist/vitest.setup.d.ts.map +1 -0
  63. package/package.json +19 -19
  64. package/dist/jest.config.d.ts +0 -21
  65. package/dist/jest.config.d.ts.map +0 -1
  66. package/dist/jest.setup.d.ts +0 -2
  67. package/dist/jest.setup.d.ts.map +0 -1
@@ -7,25 +7,6 @@ var index = require('../../node_modules/.pnpm/class-variance-authority@0.7.1/nod
7
7
  var React = require('react');
8
8
  var callout_module = require('./callout.module.css.cjs');
9
9
 
10
- function _interopNamespaceDefault(e) {
11
- var n = Object.create(null);
12
- if (e) {
13
- Object.keys(e).forEach(function (k) {
14
- if (k !== 'default') {
15
- var d = Object.getOwnPropertyDescriptor(e, k);
16
- Object.defineProperty(n, k, d.get ? d : {
17
- enumerable: true,
18
- get: function () { return e[k]; }
19
- });
20
- }
21
- });
22
- }
23
- n.default = e;
24
- return Object.freeze(n);
25
- }
26
-
27
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
28
-
29
10
  const callout = index.cva(callout_module.default.callout, {
30
11
  variants: {
31
12
  type: {
@@ -48,7 +29,7 @@ const callout = index.cva(callout_module.default.callout, {
48
29
  type: 'grey'
49
30
  }
50
31
  });
51
- const Callout = React__namespace.forwardRef(({ className, type = 'grey', outline, highContrast, children, action, dismissible, onDismiss, width, style, icon, ...props }, ref) => {
32
+ const Callout = React.forwardRef(({ className, type = 'grey', outline, highContrast, children, action, dismissible, onDismiss, width, style, icon = jsxRuntime.jsx(reactIcons_esm.InfoCircledIcon, {}), ...props }, ref) => {
52
33
  const combinedStyle = {
53
34
  ...style,
54
35
  ...(width && { width: typeof width === 'number' ? `${width}px` : width })
@@ -63,7 +44,7 @@ const Callout = React__namespace.forwardRef(({ className, type = 'grey', outline
63
44
  return 'status';
64
45
  }
65
46
  };
66
- return (jsxRuntime.jsx("div", { ref: ref, className: `${callout({ type, outline, highContrast })} ${className || ''}`, style: combinedStyle, role: getRole(), "aria-live": type === 'alert' ? 'assertive' : 'polite', ...props, children: jsxRuntime.jsxs("div", { className: callout_module.default.container, children: [jsxRuntime.jsxs("div", { className: callout_module.default.messageContainer, children: [icon !== undefined ? (jsxRuntime.jsx("div", { className: callout_module.default.icon, "aria-hidden": 'true', children: icon })) : (jsxRuntime.jsx(reactIcons_esm.InfoCircledIcon, { className: callout_module.default.icon, "aria-hidden": 'true' })), jsxRuntime.jsx("div", { className: callout_module.default.message, children: children })] }), jsxRuntime.jsxs("div", { className: callout_module.default.actionsContainer, children: [action && jsxRuntime.jsx("div", { className: callout_module.default.action, children: action }), dismissible && (jsxRuntime.jsx("button", { className: callout_module.default.dismiss, onClick: onDismiss, "aria-label": 'Dismiss message', type: 'button', children: jsxRuntime.jsx("svg", { width: '12', height: '12', viewBox: '0 0 12 12', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-hidden": 'true', role: 'presentation', children: jsxRuntime.jsx("path", { fillRule: 'evenodd', clipRule: 'evenodd', d: 'M9.5066 3.3066C9.73115 3.08205 9.73115 2.71798 9.5066 2.49343C9.28205 2.26887 8.91798 2.26887 8.69343 2.49343L6.00001 5.18684L3.3066 2.49343C3.08205 2.26887 2.71798 2.26887 2.49343 2.49343C2.26887 2.71798 2.26887 3.08205 2.49343 3.3066L5.18684 6.00001L2.49343 8.69343C2.26887 8.91798 2.26887 9.28205 2.49343 9.5066C2.71798 9.73115 3.08205 9.73115 3.3066 9.5066L6.00001 6.81318L8.69343 9.5066C8.91798 9.73115 9.28205 9.73115 9.5066 9.5066C9.73115 9.28205 9.73115 8.91798 9.5066 8.69343L6.81318 6.00001L9.5066 3.3066Z', fill: 'currentColor' }) }) }))] })] }) }));
47
+ return (jsxRuntime.jsx("div", { ref: ref, className: `${callout({ type, outline, highContrast })} ${className || ''}`, style: combinedStyle, role: getRole(), "aria-live": type === 'alert' ? 'assertive' : 'polite', ...props, children: jsxRuntime.jsxs("div", { className: callout_module.default.container, children: [jsxRuntime.jsxs("div", { className: callout_module.default.messageContainer, children: [icon && (jsxRuntime.jsx("div", { className: callout_module.default.icon, "aria-hidden": 'true', children: icon })), jsxRuntime.jsx("div", { className: callout_module.default.message, children: children })] }), jsxRuntime.jsxs("div", { className: callout_module.default.actionsContainer, children: [action && jsxRuntime.jsx("div", { className: callout_module.default.action, children: action }), dismissible && (jsxRuntime.jsx("button", { className: callout_module.default.dismiss, onClick: onDismiss, "aria-label": 'Dismiss message', type: 'button', children: jsxRuntime.jsx("svg", { width: '12', height: '12', viewBox: '0 0 12 12', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-hidden": 'true', role: 'presentation', children: jsxRuntime.jsx("path", { fillRule: 'evenodd', clipRule: 'evenodd', d: 'M9.5066 3.3066C9.73115 3.08205 9.73115 2.71798 9.5066 2.49343C9.28205 2.26887 8.91798 2.26887 8.69343 2.49343L6.00001 5.18684L3.3066 2.49343C3.08205 2.26887 2.71798 2.26887 2.49343 2.49343C2.26887 2.71798 2.26887 3.08205 2.49343 3.3066L5.18684 6.00001L2.49343 8.69343C2.26887 8.91798 2.26887 9.28205 2.49343 9.5066C2.71798 9.73115 3.08205 9.73115 3.3066 9.5066L6.00001 6.81318L8.69343 9.5066C8.91798 9.73115 9.28205 9.73115 9.5066 9.5066C9.73115 9.28205 9.73115 8.91798 9.5066 8.69343L6.81318 6.00001L9.5066 3.3066Z', fill: 'currentColor' }) }) }))] })] }) }));
67
48
  });
68
49
  Callout.displayName = 'Callout';
69
50
 
@@ -1 +1 @@
1
- {"version":3,"file":"callout.cjs","sources":["../../../components/callout/callout.tsx"],"sourcesContent":["'use client';\n\nimport { InfoCircledIcon } from '@radix-ui/react-icons';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport { type ComponentPropsWithoutRef } from 'react';\nimport * as React from 'react';\n\nimport styles from './callout.module.css';\n\nconst callout = cva(styles.callout, {\n variants: {\n type: {\n grey: styles['callout-grey'],\n success: styles['callout-success'],\n alert: styles['callout-alert'],\n gradient: styles['callout-gradient'],\n accent: styles['callout-accent'],\n attention: styles['callout-attention'],\n normal: styles['callout-normal']\n },\n outline: {\n true: styles['callout-outline']\n },\n highContrast: {\n true: styles['callout-high-contrast']\n }\n },\n defaultVariants: {\n type: 'grey'\n }\n});\n\nexport interface CalloutProps\n extends ComponentPropsWithoutRef<'div'>,\n VariantProps<typeof callout> {\n children: React.ReactNode;\n action?: React.ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n width?: string | number;\n style?: React.CSSProperties;\n icon?: React.ReactNode;\n}\n\nexport const Callout = React.forwardRef<HTMLDivElement, CalloutProps>(\n (\n {\n className,\n type = 'grey',\n outline,\n highContrast,\n children,\n action,\n dismissible,\n onDismiss,\n width,\n style,\n icon,\n ...props\n },\n ref\n ) => {\n const combinedStyle = {\n ...style,\n ...(width && { width: typeof width === 'number' ? `${width}px` : width })\n };\n\n const getRole = () => {\n switch (type) {\n case 'alert':\n return 'alert';\n case 'success':\n return 'status';\n default:\n return 'status';\n }\n };\n\n return (\n <div\n ref={ref}\n className={`${callout({ type, outline, highContrast })} ${className || ''}`}\n style={combinedStyle}\n role={getRole()}\n aria-live={type === 'alert' ? 'assertive' : 'polite'}\n {...props}\n >\n <div className={styles.container}>\n <div className={styles.messageContainer}>\n {icon !== undefined ? (\n <div className={styles.icon} aria-hidden='true'>\n {icon}\n </div>\n ) : (\n <InfoCircledIcon className={styles.icon} aria-hidden='true' />\n )}\n <div className={styles.message}>{children}</div>\n </div>\n\n <div className={styles.actionsContainer}>\n {action && <div className={styles.action}>{action}</div>}\n {dismissible && (\n <button\n className={styles.dismiss}\n onClick={onDismiss}\n aria-label='Dismiss message'\n type='button'\n >\n <svg\n width='12'\n height='12'\n viewBox='0 0 12 12'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n aria-hidden='true'\n role='presentation'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.5066 3.3066C9.73115 3.08205 9.73115 2.71798 9.5066 2.49343C9.28205 2.26887 8.91798 2.26887 8.69343 2.49343L6.00001 5.18684L3.3066 2.49343C3.08205 2.26887 2.71798 2.26887 2.49343 2.49343C2.26887 2.71798 2.26887 3.08205 2.49343 3.3066L5.18684 6.00001L2.49343 8.69343C2.26887 8.91798 2.26887 9.28205 2.49343 9.5066C2.71798 9.73115 3.08205 9.73115 3.3066 9.5066L6.00001 6.81318L8.69343 9.5066C8.91798 9.73115 9.28205 9.73115 9.5066 9.5066C9.73115 9.28205 9.73115 8.91798 9.5066 8.69343L6.81318 6.00001L9.5066 3.3066Z'\n fill='currentColor'\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nCallout.displayName = 'Callout';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;AACE;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACD;AACE;AACD;AACD;AACE;AACD;AACF;AACD;AACE;AACD;AACF;AAcY;AAkBT;AACE;;;;;AAME;AACE;AACF;AACE;AACF;AACE;;AAEN;;AAsDF;AAGF;;"}
1
+ {"version":3,"file":"callout.cjs","sources":["../../../components/callout/callout.tsx"],"sourcesContent":["'use client';\n\nimport { InfoCircledIcon } from '@radix-ui/react-icons';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport {\n CSSProperties,\n type HTMLAttributes,\n ReactNode,\n forwardRef\n} from 'react';\n\nimport styles from './callout.module.css';\n\nconst callout = cva(styles.callout, {\n variants: {\n type: {\n grey: styles['callout-grey'],\n success: styles['callout-success'],\n alert: styles['callout-alert'],\n gradient: styles['callout-gradient'],\n accent: styles['callout-accent'],\n attention: styles['callout-attention'],\n normal: styles['callout-normal']\n },\n outline: {\n true: styles['callout-outline']\n },\n highContrast: {\n true: styles['callout-high-contrast']\n }\n },\n defaultVariants: {\n type: 'grey'\n }\n});\n\nexport interface CalloutProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof callout> {\n children: ReactNode;\n action?: ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n width?: string | number;\n style?: CSSProperties;\n icon?: ReactNode;\n}\n\nexport const Callout = forwardRef<HTMLDivElement, CalloutProps>(\n (\n {\n className,\n type = 'grey',\n outline,\n highContrast,\n children,\n action,\n dismissible,\n onDismiss,\n width,\n style,\n icon = <InfoCircledIcon />,\n ...props\n },\n ref\n ) => {\n const combinedStyle = {\n ...style,\n ...(width && { width: typeof width === 'number' ? `${width}px` : width })\n };\n\n const getRole = () => {\n switch (type) {\n case 'alert':\n return 'alert';\n case 'success':\n return 'status';\n default:\n return 'status';\n }\n };\n\n return (\n <div\n ref={ref}\n className={`${callout({ type, outline, highContrast })} ${className || ''}`}\n style={combinedStyle}\n role={getRole()}\n aria-live={type === 'alert' ? 'assertive' : 'polite'}\n {...props}\n >\n <div className={styles.container}>\n <div className={styles.messageContainer}>\n {icon && (\n <div className={styles.icon} aria-hidden='true'>\n {icon}\n </div>\n )}\n <div className={styles.message}>{children}</div>\n </div>\n\n <div className={styles.actionsContainer}>\n {action && <div className={styles.action}>{action}</div>}\n {dismissible && (\n <button\n className={styles.dismiss}\n onClick={onDismiss}\n aria-label='Dismiss message'\n type='button'\n >\n <svg\n width='12'\n height='12'\n viewBox='0 0 12 12'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n aria-hidden='true'\n role='presentation'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.5066 3.3066C9.73115 3.08205 9.73115 2.71798 9.5066 2.49343C9.28205 2.26887 8.91798 2.26887 8.69343 2.49343L6.00001 5.18684L3.3066 2.49343C3.08205 2.26887 2.71798 2.26887 2.49343 2.49343C2.26887 2.71798 2.26887 3.08205 2.49343 3.3066L5.18684 6.00001L2.49343 8.69343C2.26887 8.91798 2.26887 9.28205 2.49343 9.5066C2.71798 9.73115 3.08205 9.73115 3.3066 9.5066L6.00001 6.81318L8.69343 9.5066C8.91798 9.73115 9.28205 9.73115 9.5066 9.5066C9.73115 9.28205 9.73115 8.91798 9.5066 8.69343L6.81318 6.00001L9.5066 3.3066Z'\n fill='currentColor'\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nCallout.displayName = 'Callout';\n"],"names":[],"mappings":";;;;;;;;;AAaA;AACE;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACD;AACE;AACD;AACD;AACE;AACD;AACF;AACD;AACE;AACD;AACF;AAcY;AAkBT;AACE;;;;;AAME;AACE;AACF;AACE;AACF;AACE;;AAEN;AAEA;AAkDF;AAGF;;"}
@@ -1,20 +1,19 @@
1
1
  import { type VariantProps } from 'class-variance-authority';
2
- import { type ComponentPropsWithoutRef } from 'react';
3
- import * as React from 'react';
2
+ import { CSSProperties, type HTMLAttributes, ReactNode } from 'react';
4
3
  declare const callout: (props?: ({
5
4
  type?: "alert" | "accent" | "attention" | "success" | "normal" | "gradient" | "grey" | null | undefined;
6
5
  outline?: boolean | null | undefined;
7
6
  highContrast?: boolean | null | undefined;
8
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
- export interface CalloutProps extends ComponentPropsWithoutRef<'div'>, VariantProps<typeof callout> {
10
- children: React.ReactNode;
11
- action?: React.ReactNode;
8
+ export interface CalloutProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof callout> {
9
+ children: ReactNode;
10
+ action?: ReactNode;
12
11
  dismissible?: boolean;
13
12
  onDismiss?: () => void;
14
13
  width?: string | number;
15
- style?: React.CSSProperties;
16
- icon?: React.ReactNode;
14
+ style?: CSSProperties;
15
+ icon?: ReactNode;
17
16
  }
18
- export declare const Callout: React.ForwardRefExoticComponent<CalloutProps & React.RefAttributes<HTMLDivElement>>;
17
+ export declare const Callout: import("react").ForwardRefExoticComponent<CalloutProps & import("react").RefAttributes<HTMLDivElement>>;
19
18
  export {};
20
19
  //# sourceMappingURL=callout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"callout.d.ts","sourceRoot":"","sources":["../../../components/callout/callout.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAO,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,OAAO;;;;8EAqBX,CAAC;AAEH,MAAM,WAAW,YACf,SAAQ,wBAAwB,CAAC,KAAK,CAAC,EACrC,YAAY,CAAC,OAAO,OAAO,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,eAAO,MAAM,OAAO,qFAuFnB,CAAC"}
1
+ {"version":3,"file":"callout.d.ts","sourceRoot":"","sources":["../../../components/callout/callout.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAO,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,aAAa,EACb,KAAK,cAAc,EACnB,SAAS,EAEV,MAAM,OAAO,CAAC;AAIf,QAAA,MAAM,OAAO;;;;8EAqBX,CAAC;AAEH,MAAM,WAAW,YACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,YAAY,CAAC,OAAO,OAAO,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,yGAqFnB,CAAC"}
@@ -2,7 +2,7 @@
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { InfoCircledIcon } from '../../node_modules/.pnpm/@radix-ui_react-icons@1.3.2_react@19.1.1/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
4
4
  import { cva } from '../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js';
5
- import * as React from 'react';
5
+ import { forwardRef } from 'react';
6
6
  import styles from './callout.module.css.js';
7
7
 
8
8
  const callout = cva(styles.callout, {
@@ -27,7 +27,7 @@ const callout = cva(styles.callout, {
27
27
  type: 'grey'
28
28
  }
29
29
  });
30
- const Callout = React.forwardRef(({ className, type = 'grey', outline, highContrast, children, action, dismissible, onDismiss, width, style, icon, ...props }, ref) => {
30
+ const Callout = forwardRef(({ className, type = 'grey', outline, highContrast, children, action, dismissible, onDismiss, width, style, icon = jsx(InfoCircledIcon, {}), ...props }, ref) => {
31
31
  const combinedStyle = {
32
32
  ...style,
33
33
  ...(width && { width: typeof width === 'number' ? `${width}px` : width })
@@ -42,7 +42,7 @@ const Callout = React.forwardRef(({ className, type = 'grey', outline, highContr
42
42
  return 'status';
43
43
  }
44
44
  };
45
- return (jsx("div", { ref: ref, className: `${callout({ type, outline, highContrast })} ${className || ''}`, style: combinedStyle, role: getRole(), "aria-live": type === 'alert' ? 'assertive' : 'polite', ...props, children: jsxs("div", { className: styles.container, children: [jsxs("div", { className: styles.messageContainer, children: [icon !== undefined ? (jsx("div", { className: styles.icon, "aria-hidden": 'true', children: icon })) : (jsx(InfoCircledIcon, { className: styles.icon, "aria-hidden": 'true' })), jsx("div", { className: styles.message, children: children })] }), jsxs("div", { className: styles.actionsContainer, children: [action && jsx("div", { className: styles.action, children: action }), dismissible && (jsx("button", { className: styles.dismiss, onClick: onDismiss, "aria-label": 'Dismiss message', type: 'button', children: jsx("svg", { width: '12', height: '12', viewBox: '0 0 12 12', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-hidden": 'true', role: 'presentation', children: jsx("path", { fillRule: 'evenodd', clipRule: 'evenodd', d: 'M9.5066 3.3066C9.73115 3.08205 9.73115 2.71798 9.5066 2.49343C9.28205 2.26887 8.91798 2.26887 8.69343 2.49343L6.00001 5.18684L3.3066 2.49343C3.08205 2.26887 2.71798 2.26887 2.49343 2.49343C2.26887 2.71798 2.26887 3.08205 2.49343 3.3066L5.18684 6.00001L2.49343 8.69343C2.26887 8.91798 2.26887 9.28205 2.49343 9.5066C2.71798 9.73115 3.08205 9.73115 3.3066 9.5066L6.00001 6.81318L8.69343 9.5066C8.91798 9.73115 9.28205 9.73115 9.5066 9.5066C9.73115 9.28205 9.73115 8.91798 9.5066 8.69343L6.81318 6.00001L9.5066 3.3066Z', fill: 'currentColor' }) }) }))] })] }) }));
45
+ return (jsx("div", { ref: ref, className: `${callout({ type, outline, highContrast })} ${className || ''}`, style: combinedStyle, role: getRole(), "aria-live": type === 'alert' ? 'assertive' : 'polite', ...props, children: jsxs("div", { className: styles.container, children: [jsxs("div", { className: styles.messageContainer, children: [icon && (jsx("div", { className: styles.icon, "aria-hidden": 'true', children: icon })), jsx("div", { className: styles.message, children: children })] }), jsxs("div", { className: styles.actionsContainer, children: [action && jsx("div", { className: styles.action, children: action }), dismissible && (jsx("button", { className: styles.dismiss, onClick: onDismiss, "aria-label": 'Dismiss message', type: 'button', children: jsx("svg", { width: '12', height: '12', viewBox: '0 0 12 12', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-hidden": 'true', role: 'presentation', children: jsx("path", { fillRule: 'evenodd', clipRule: 'evenodd', d: 'M9.5066 3.3066C9.73115 3.08205 9.73115 2.71798 9.5066 2.49343C9.28205 2.26887 8.91798 2.26887 8.69343 2.49343L6.00001 5.18684L3.3066 2.49343C3.08205 2.26887 2.71798 2.26887 2.49343 2.49343C2.26887 2.71798 2.26887 3.08205 2.49343 3.3066L5.18684 6.00001L2.49343 8.69343C2.26887 8.91798 2.26887 9.28205 2.49343 9.5066C2.71798 9.73115 3.08205 9.73115 3.3066 9.5066L6.00001 6.81318L8.69343 9.5066C8.91798 9.73115 9.28205 9.73115 9.5066 9.5066C9.73115 9.28205 9.73115 8.91798 9.5066 8.69343L6.81318 6.00001L9.5066 3.3066Z', fill: 'currentColor' }) }) }))] })] }) }));
46
46
  });
47
47
  Callout.displayName = 'Callout';
48
48
 
@@ -1 +1 @@
1
- {"version":3,"file":"callout.js","sources":["../../../components/callout/callout.tsx"],"sourcesContent":["'use client';\n\nimport { InfoCircledIcon } from '@radix-ui/react-icons';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport { type ComponentPropsWithoutRef } from 'react';\nimport * as React from 'react';\n\nimport styles from './callout.module.css';\n\nconst callout = cva(styles.callout, {\n variants: {\n type: {\n grey: styles['callout-grey'],\n success: styles['callout-success'],\n alert: styles['callout-alert'],\n gradient: styles['callout-gradient'],\n accent: styles['callout-accent'],\n attention: styles['callout-attention'],\n normal: styles['callout-normal']\n },\n outline: {\n true: styles['callout-outline']\n },\n highContrast: {\n true: styles['callout-high-contrast']\n }\n },\n defaultVariants: {\n type: 'grey'\n }\n});\n\nexport interface CalloutProps\n extends ComponentPropsWithoutRef<'div'>,\n VariantProps<typeof callout> {\n children: React.ReactNode;\n action?: React.ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n width?: string | number;\n style?: React.CSSProperties;\n icon?: React.ReactNode;\n}\n\nexport const Callout = React.forwardRef<HTMLDivElement, CalloutProps>(\n (\n {\n className,\n type = 'grey',\n outline,\n highContrast,\n children,\n action,\n dismissible,\n onDismiss,\n width,\n style,\n icon,\n ...props\n },\n ref\n ) => {\n const combinedStyle = {\n ...style,\n ...(width && { width: typeof width === 'number' ? `${width}px` : width })\n };\n\n const getRole = () => {\n switch (type) {\n case 'alert':\n return 'alert';\n case 'success':\n return 'status';\n default:\n return 'status';\n }\n };\n\n return (\n <div\n ref={ref}\n className={`${callout({ type, outline, highContrast })} ${className || ''}`}\n style={combinedStyle}\n role={getRole()}\n aria-live={type === 'alert' ? 'assertive' : 'polite'}\n {...props}\n >\n <div className={styles.container}>\n <div className={styles.messageContainer}>\n {icon !== undefined ? (\n <div className={styles.icon} aria-hidden='true'>\n {icon}\n </div>\n ) : (\n <InfoCircledIcon className={styles.icon} aria-hidden='true' />\n )}\n <div className={styles.message}>{children}</div>\n </div>\n\n <div className={styles.actionsContainer}>\n {action && <div className={styles.action}>{action}</div>}\n {dismissible && (\n <button\n className={styles.dismiss}\n onClick={onDismiss}\n aria-label='Dismiss message'\n type='button'\n >\n <svg\n width='12'\n height='12'\n viewBox='0 0 12 12'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n aria-hidden='true'\n role='presentation'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.5066 3.3066C9.73115 3.08205 9.73115 2.71798 9.5066 2.49343C9.28205 2.26887 8.91798 2.26887 8.69343 2.49343L6.00001 5.18684L3.3066 2.49343C3.08205 2.26887 2.71798 2.26887 2.49343 2.49343C2.26887 2.71798 2.26887 3.08205 2.49343 3.3066L5.18684 6.00001L2.49343 8.69343C2.26887 8.91798 2.26887 9.28205 2.49343 9.5066C2.71798 9.73115 3.08205 9.73115 3.3066 9.5066L6.00001 6.81318L8.69343 9.5066C8.91798 9.73115 9.28205 9.73115 9.5066 9.5066C9.73115 9.28205 9.73115 8.91798 9.5066 8.69343L6.81318 6.00001L9.5066 3.3066Z'\n fill='currentColor'\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nCallout.displayName = 'Callout';\n"],"names":[],"mappings":";;;;;;;AASA;AACE;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACD;AACE;AACD;AACD;AACE;AACD;AACF;AACD;AACE;AACD;AACF;AAcY;AAkBT;AACE;;;;;AAME;AACE;AACF;AACE;AACF;AACE;;AAEN;;AAsDF;AAGF;;"}
1
+ {"version":3,"file":"callout.js","sources":["../../../components/callout/callout.tsx"],"sourcesContent":["'use client';\n\nimport { InfoCircledIcon } from '@radix-ui/react-icons';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport {\n CSSProperties,\n type HTMLAttributes,\n ReactNode,\n forwardRef\n} from 'react';\n\nimport styles from './callout.module.css';\n\nconst callout = cva(styles.callout, {\n variants: {\n type: {\n grey: styles['callout-grey'],\n success: styles['callout-success'],\n alert: styles['callout-alert'],\n gradient: styles['callout-gradient'],\n accent: styles['callout-accent'],\n attention: styles['callout-attention'],\n normal: styles['callout-normal']\n },\n outline: {\n true: styles['callout-outline']\n },\n highContrast: {\n true: styles['callout-high-contrast']\n }\n },\n defaultVariants: {\n type: 'grey'\n }\n});\n\nexport interface CalloutProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof callout> {\n children: ReactNode;\n action?: ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n width?: string | number;\n style?: CSSProperties;\n icon?: ReactNode;\n}\n\nexport const Callout = forwardRef<HTMLDivElement, CalloutProps>(\n (\n {\n className,\n type = 'grey',\n outline,\n highContrast,\n children,\n action,\n dismissible,\n onDismiss,\n width,\n style,\n icon = <InfoCircledIcon />,\n ...props\n },\n ref\n ) => {\n const combinedStyle = {\n ...style,\n ...(width && { width: typeof width === 'number' ? `${width}px` : width })\n };\n\n const getRole = () => {\n switch (type) {\n case 'alert':\n return 'alert';\n case 'success':\n return 'status';\n default:\n return 'status';\n }\n };\n\n return (\n <div\n ref={ref}\n className={`${callout({ type, outline, highContrast })} ${className || ''}`}\n style={combinedStyle}\n role={getRole()}\n aria-live={type === 'alert' ? 'assertive' : 'polite'}\n {...props}\n >\n <div className={styles.container}>\n <div className={styles.messageContainer}>\n {icon && (\n <div className={styles.icon} aria-hidden='true'>\n {icon}\n </div>\n )}\n <div className={styles.message}>{children}</div>\n </div>\n\n <div className={styles.actionsContainer}>\n {action && <div className={styles.action}>{action}</div>}\n {dismissible && (\n <button\n className={styles.dismiss}\n onClick={onDismiss}\n aria-label='Dismiss message'\n type='button'\n >\n <svg\n width='12'\n height='12'\n viewBox='0 0 12 12'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n aria-hidden='true'\n role='presentation'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.5066 3.3066C9.73115 3.08205 9.73115 2.71798 9.5066 2.49343C9.28205 2.26887 8.91798 2.26887 8.69343 2.49343L6.00001 5.18684L3.3066 2.49343C3.08205 2.26887 2.71798 2.26887 2.49343 2.49343C2.26887 2.71798 2.26887 3.08205 2.49343 3.3066L5.18684 6.00001L2.49343 8.69343C2.26887 8.91798 2.26887 9.28205 2.49343 9.5066C2.71798 9.73115 3.08205 9.73115 3.3066 9.5066L6.00001 6.81318L8.69343 9.5066C8.91798 9.73115 9.28205 9.73115 9.5066 9.5066C9.73115 9.28205 9.73115 8.91798 9.5066 8.69343L6.81318 6.00001L9.5066 3.3066Z'\n fill='currentColor'\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nCallout.displayName = 'Callout';\n"],"names":[],"mappings":";;;;;;;AAaA;AACE;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AACD;AACE;AACD;AACD;AACE;AACD;AACF;AACD;AACE;AACD;AACF;AAcY;AAkBT;AACE;;;;;AAME;AACE;AACF;AACE;AACF;AACE;;AAEN;AAEA;AAkDF;AAGF;;"}
@@ -31,7 +31,7 @@ function DataTableRoot({ data = [], columns, query, mode = 'client', isLoading =
31
31
  onTableQueryChange &&
32
32
  index.hasQueryChanged(oldQueryRef.current, tableQuery) &&
33
33
  mode === 'server') {
34
- onTableQueryChange(index.sanitizeTableQuery(tableQuery));
34
+ onTableQueryChange(index.transformToDataTableQuery(tableQuery));
35
35
  oldQueryRef.current = tableQuery;
36
36
  }
37
37
  }, [tableQuery, onTableQueryChange]);
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.cjs","sources":["../../../components/data-table/data-table.tsx"],"sourcesContent":["'use client';\n\nimport {\n VisibilityState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Content } from './components/content';\nimport { TableSearch } from './components/search';\nimport { Toolbar } from './components/toolbar';\nimport { TableContext } from './context';\nimport {\n DataTableProps,\n DataTableQuery,\n GroupedData,\n TableContextType,\n TableQueryUpdateFn,\n defaultGroupOption\n} from './data-table.types';\nimport {\n getColumnsWithFilterFn,\n getDefaultTableQuery,\n getInitialColumnVisibility,\n groupData,\n hasQueryChanged,\n queryToTableState,\n sanitizeTableQuery\n} from './utils';\n\nfunction DataTableRoot<TData, TValue>({\n data = [],\n columns,\n query,\n mode = 'client',\n isLoading = false,\n loadingRowCount = 3,\n defaultSort,\n children,\n onTableQueryChange,\n onLoadMore,\n onRowClick\n}: React.PropsWithChildren<DataTableProps<TData, TValue>>) {\n const defaultTableQuery = getDefaultTableQuery(defaultSort, query);\n const initialColumnVisibility = getInitialColumnVisibility(columns);\n\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n initialColumnVisibility\n );\n const [tableQuery, setTableQuery] =\n useState<DataTableQuery>(defaultTableQuery);\n\n const oldQueryRef = useRef<DataTableQuery | null>(null);\n\n const reactTableState = useMemo(\n () => queryToTableState(tableQuery),\n [tableQuery]\n );\n\n const onDisplaySettingsReset = useCallback(() => {\n setTableQuery(prev => ({ ...prev, ...defaultTableQuery }));\n setColumnVisibility(initialColumnVisibility);\n }, [defaultTableQuery, initialColumnVisibility]);\n\n const group_by = tableQuery.group_by?.[0];\n\n const columnsWithFilters = useMemo(\n () => getColumnsWithFilterFn<TData, TValue>(columns, tableQuery.filters),\n [columns, tableQuery.filters]\n );\n\n const groupedData = useMemo(\n () => groupData(data, group_by, columns),\n [data, group_by, columns]\n );\n\n useEffect(() => {\n if (\n tableQuery &&\n onTableQueryChange &&\n hasQueryChanged(oldQueryRef.current, tableQuery) &&\n mode === 'server'\n ) {\n onTableQueryChange(sanitizeTableQuery(tableQuery));\n oldQueryRef.current = tableQuery;\n }\n }, [tableQuery, onTableQueryChange]);\n\n const table = useReactTable({\n data: groupedData as unknown as TData[],\n columns: columnsWithFilters,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getSubRows: row => (row as unknown as GroupedData<TData>)?.subRows || [],\n getSortedRowModel: mode === 'server' ? undefined : getSortedRowModel(),\n getFilteredRowModel: mode === 'server' ? undefined : getFilteredRowModel(),\n manualSorting: mode === 'server',\n manualFiltering: mode === 'server',\n onColumnVisibilityChange: setColumnVisibility,\n globalFilterFn: mode === 'server' ? undefined : 'auto',\n initialState: {\n columnVisibility: initialColumnVisibility\n },\n filterFromLeafRows: true,\n state: {\n ...reactTableState,\n columnVisibility: columnVisibility,\n expanded:\n group_by && group_by !== defaultGroupOption.id ? true : undefined\n }\n });\n\n function updateTableQuery(fn: TableQueryUpdateFn) {\n setTableQuery(prev => fn(prev));\n }\n\n const loadMoreData = useCallback(() => {\n if (mode === 'server' && onLoadMore) {\n onLoadMore();\n }\n }, [mode, onLoadMore]);\n\n const searchQuery = query?.search;\n useEffect(() => {\n if (searchQuery) {\n updateTableQuery(prev => ({\n ...prev,\n search: searchQuery\n }));\n }\n }, [searchQuery]);\n\n const contextValue: TableContextType<TData, TValue> = useMemo(() => {\n return {\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n };\n }, [\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n {children}\n </TableContext.Provider>\n );\n}\n\nexport const DataTable = Object.assign(DataTableRoot, {\n Content: Content,\n Toolbar: Toolbar,\n Search: TableSearch\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAiCA;;AAcE;;;AAQA;AAEA;AAKA;AACE;;AAEF;;;;;AAeE;;AAGE;;AAGA;AACA;;AAEJ;;AAGE;AACA;;;;AAIA;AACA;;;AAGA;;AAEA;AACE;AACD;AACD;AACA;AACE;AACA;AACA;AAED;AACF;;;;AAMD;AACE;AACE;;AAEJ;AAEA;;;AAGI;AACE;AACA;AACD;;AAEL;AAEA;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAYC;AAED;AAKF;;AAGE;AACA;AACA;AACD;;"}
1
+ {"version":3,"file":"data-table.cjs","sources":["../../../components/data-table/data-table.tsx"],"sourcesContent":["'use client';\n\nimport {\n VisibilityState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Content } from './components/content';\nimport { TableSearch } from './components/search';\nimport { Toolbar } from './components/toolbar';\nimport { TableContext } from './context';\nimport {\n DataTableProps,\n GroupedData,\n InternalQuery,\n TableContextType,\n TableQueryUpdateFn,\n defaultGroupOption\n} from './data-table.types';\nimport {\n getColumnsWithFilterFn,\n getDefaultTableQuery,\n getInitialColumnVisibility,\n groupData,\n hasQueryChanged,\n queryToTableState,\n transformToDataTableQuery\n} from './utils';\n\nfunction DataTableRoot<TData, TValue>({\n data = [],\n columns,\n query,\n mode = 'client',\n isLoading = false,\n loadingRowCount = 3,\n defaultSort,\n children,\n onTableQueryChange,\n onLoadMore,\n onRowClick\n}: React.PropsWithChildren<DataTableProps<TData, TValue>>) {\n const defaultTableQuery = getDefaultTableQuery(defaultSort, query);\n const initialColumnVisibility = getInitialColumnVisibility(columns);\n\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n initialColumnVisibility\n );\n const [tableQuery, setTableQuery] =\n useState<InternalQuery>(defaultTableQuery);\n\n const oldQueryRef = useRef<InternalQuery | null>(null);\n\n const reactTableState = useMemo(\n () => queryToTableState(tableQuery),\n [tableQuery]\n );\n\n const onDisplaySettingsReset = useCallback(() => {\n setTableQuery(prev => ({ ...prev, ...defaultTableQuery }));\n setColumnVisibility(initialColumnVisibility);\n }, [defaultTableQuery, initialColumnVisibility]);\n\n const group_by = tableQuery.group_by?.[0];\n\n const columnsWithFilters = useMemo(\n () => getColumnsWithFilterFn<TData, TValue>(columns, tableQuery.filters),\n [columns, tableQuery.filters]\n );\n\n const groupedData = useMemo(\n () => groupData(data, group_by, columns),\n [data, group_by, columns]\n );\n\n useEffect(() => {\n if (\n tableQuery &&\n onTableQueryChange &&\n hasQueryChanged(oldQueryRef.current, tableQuery) &&\n mode === 'server'\n ) {\n onTableQueryChange(transformToDataTableQuery(tableQuery));\n oldQueryRef.current = tableQuery;\n }\n }, [tableQuery, onTableQueryChange]);\n\n const table = useReactTable({\n data: groupedData as unknown as TData[],\n columns: columnsWithFilters,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getSubRows: row => (row as unknown as GroupedData<TData>)?.subRows || [],\n getSortedRowModel: mode === 'server' ? undefined : getSortedRowModel(),\n getFilteredRowModel: mode === 'server' ? undefined : getFilteredRowModel(),\n manualSorting: mode === 'server',\n manualFiltering: mode === 'server',\n onColumnVisibilityChange: setColumnVisibility,\n globalFilterFn: mode === 'server' ? undefined : 'auto',\n initialState: {\n columnVisibility: initialColumnVisibility\n },\n filterFromLeafRows: true,\n state: {\n ...reactTableState,\n columnVisibility: columnVisibility,\n expanded:\n group_by && group_by !== defaultGroupOption.id ? true : undefined\n }\n });\n\n function updateTableQuery(fn: TableQueryUpdateFn) {\n setTableQuery(prev => fn(prev));\n }\n\n const loadMoreData = useCallback(() => {\n if (mode === 'server' && onLoadMore) {\n onLoadMore();\n }\n }, [mode, onLoadMore]);\n\n const searchQuery = query?.search;\n useEffect(() => {\n if (searchQuery) {\n updateTableQuery(prev => ({\n ...prev,\n search: searchQuery\n }));\n }\n }, [searchQuery]);\n\n const contextValue: TableContextType<TData, TValue> = useMemo(() => {\n return {\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n };\n }, [\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n {children}\n </TableContext.Provider>\n );\n}\n\nexport const DataTable = Object.assign(DataTableRoot, {\n Content: Content,\n Toolbar: Toolbar,\n Search: TableSearch\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAiCA;;AAcE;;;AAQA;AAEA;AAKA;AACE;;AAEF;;;;;AAeE;;AAGE;;AAGA;AACA;;AAEJ;;AAGE;AACA;;;;AAIA;AACA;;;AAGA;;AAEA;AACE;AACD;AACD;AACA;AACE;AACA;AACA;AAED;AACF;;;;AAMD;AACE;AACE;;AAEJ;AAEA;;;AAGI;AACE;AACA;AACD;;AAEL;AAEA;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAYC;AAED;AAKF;;AAGE;AACA;AACA;AACD;;"}
@@ -7,7 +7,7 @@ import { TableSearch } from './components/search.js';
7
7
  import { Toolbar } from './components/toolbar.js';
8
8
  import { TableContext } from './context.js';
9
9
  import { defaultGroupOption } from './data-table.types.js';
10
- import { getDefaultTableQuery, getInitialColumnVisibility, queryToTableState, getColumnsWithFilterFn, groupData, hasQueryChanged, sanitizeTableQuery } from './utils/index.js';
10
+ import { getDefaultTableQuery, getInitialColumnVisibility, queryToTableState, getColumnsWithFilterFn, groupData, hasQueryChanged, transformToDataTableQuery } from './utils/index.js';
11
11
  import { getCoreRowModel, getExpandedRowModel, getSortedRowModel, getFilteredRowModel } from '../../node_modules/.pnpm/@tanstack_table-core@8.9.2/node_modules/@tanstack/table-core/build/lib/index.js';
12
12
 
13
13
  function DataTableRoot({ data = [], columns, query, mode = 'client', isLoading = false, loadingRowCount = 3, defaultSort, children, onTableQueryChange, onLoadMore, onRowClick }) {
@@ -29,7 +29,7 @@ function DataTableRoot({ data = [], columns, query, mode = 'client', isLoading =
29
29
  onTableQueryChange &&
30
30
  hasQueryChanged(oldQueryRef.current, tableQuery) &&
31
31
  mode === 'server') {
32
- onTableQueryChange(sanitizeTableQuery(tableQuery));
32
+ onTableQueryChange(transformToDataTableQuery(tableQuery));
33
33
  oldQueryRef.current = tableQuery;
34
34
  }
35
35
  }, [tableQuery, onTableQueryChange]);
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.js","sources":["../../../components/data-table/data-table.tsx"],"sourcesContent":["'use client';\n\nimport {\n VisibilityState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Content } from './components/content';\nimport { TableSearch } from './components/search';\nimport { Toolbar } from './components/toolbar';\nimport { TableContext } from './context';\nimport {\n DataTableProps,\n DataTableQuery,\n GroupedData,\n TableContextType,\n TableQueryUpdateFn,\n defaultGroupOption\n} from './data-table.types';\nimport {\n getColumnsWithFilterFn,\n getDefaultTableQuery,\n getInitialColumnVisibility,\n groupData,\n hasQueryChanged,\n queryToTableState,\n sanitizeTableQuery\n} from './utils';\n\nfunction DataTableRoot<TData, TValue>({\n data = [],\n columns,\n query,\n mode = 'client',\n isLoading = false,\n loadingRowCount = 3,\n defaultSort,\n children,\n onTableQueryChange,\n onLoadMore,\n onRowClick\n}: React.PropsWithChildren<DataTableProps<TData, TValue>>) {\n const defaultTableQuery = getDefaultTableQuery(defaultSort, query);\n const initialColumnVisibility = getInitialColumnVisibility(columns);\n\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n initialColumnVisibility\n );\n const [tableQuery, setTableQuery] =\n useState<DataTableQuery>(defaultTableQuery);\n\n const oldQueryRef = useRef<DataTableQuery | null>(null);\n\n const reactTableState = useMemo(\n () => queryToTableState(tableQuery),\n [tableQuery]\n );\n\n const onDisplaySettingsReset = useCallback(() => {\n setTableQuery(prev => ({ ...prev, ...defaultTableQuery }));\n setColumnVisibility(initialColumnVisibility);\n }, [defaultTableQuery, initialColumnVisibility]);\n\n const group_by = tableQuery.group_by?.[0];\n\n const columnsWithFilters = useMemo(\n () => getColumnsWithFilterFn<TData, TValue>(columns, tableQuery.filters),\n [columns, tableQuery.filters]\n );\n\n const groupedData = useMemo(\n () => groupData(data, group_by, columns),\n [data, group_by, columns]\n );\n\n useEffect(() => {\n if (\n tableQuery &&\n onTableQueryChange &&\n hasQueryChanged(oldQueryRef.current, tableQuery) &&\n mode === 'server'\n ) {\n onTableQueryChange(sanitizeTableQuery(tableQuery));\n oldQueryRef.current = tableQuery;\n }\n }, [tableQuery, onTableQueryChange]);\n\n const table = useReactTable({\n data: groupedData as unknown as TData[],\n columns: columnsWithFilters,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getSubRows: row => (row as unknown as GroupedData<TData>)?.subRows || [],\n getSortedRowModel: mode === 'server' ? undefined : getSortedRowModel(),\n getFilteredRowModel: mode === 'server' ? undefined : getFilteredRowModel(),\n manualSorting: mode === 'server',\n manualFiltering: mode === 'server',\n onColumnVisibilityChange: setColumnVisibility,\n globalFilterFn: mode === 'server' ? undefined : 'auto',\n initialState: {\n columnVisibility: initialColumnVisibility\n },\n filterFromLeafRows: true,\n state: {\n ...reactTableState,\n columnVisibility: columnVisibility,\n expanded:\n group_by && group_by !== defaultGroupOption.id ? true : undefined\n }\n });\n\n function updateTableQuery(fn: TableQueryUpdateFn) {\n setTableQuery(prev => fn(prev));\n }\n\n const loadMoreData = useCallback(() => {\n if (mode === 'server' && onLoadMore) {\n onLoadMore();\n }\n }, [mode, onLoadMore]);\n\n const searchQuery = query?.search;\n useEffect(() => {\n if (searchQuery) {\n updateTableQuery(prev => ({\n ...prev,\n search: searchQuery\n }));\n }\n }, [searchQuery]);\n\n const contextValue: TableContextType<TData, TValue> = useMemo(() => {\n return {\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n };\n }, [\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n {children}\n </TableContext.Provider>\n );\n}\n\nexport const DataTable = Object.assign(DataTableRoot, {\n Content: Content,\n Toolbar: Toolbar,\n Search: TableSearch\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAiCA;;AAcE;;;AAQA;AAEA;AAKA;AACE;;AAEF;;;;;AAeE;;AAGE;;AAGA;AACA;;AAEJ;;AAGE;AACA;;;;AAIA;AACA;;;AAGA;;AAEA;AACE;AACD;AACD;AACA;AACE;AACA;AACA;AAED;AACF;;;;AAMD;AACE;AACE;;AAEJ;AAEA;;;AAGI;AACE;AACA;AACD;;AAEL;AAEA;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAYC;AAED;AAKF;;AAGE;AACA;AACA;AACD;;"}
1
+ {"version":3,"file":"data-table.js","sources":["../../../components/data-table/data-table.tsx"],"sourcesContent":["'use client';\n\nimport {\n VisibilityState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Content } from './components/content';\nimport { TableSearch } from './components/search';\nimport { Toolbar } from './components/toolbar';\nimport { TableContext } from './context';\nimport {\n DataTableProps,\n GroupedData,\n InternalQuery,\n TableContextType,\n TableQueryUpdateFn,\n defaultGroupOption\n} from './data-table.types';\nimport {\n getColumnsWithFilterFn,\n getDefaultTableQuery,\n getInitialColumnVisibility,\n groupData,\n hasQueryChanged,\n queryToTableState,\n transformToDataTableQuery\n} from './utils';\n\nfunction DataTableRoot<TData, TValue>({\n data = [],\n columns,\n query,\n mode = 'client',\n isLoading = false,\n loadingRowCount = 3,\n defaultSort,\n children,\n onTableQueryChange,\n onLoadMore,\n onRowClick\n}: React.PropsWithChildren<DataTableProps<TData, TValue>>) {\n const defaultTableQuery = getDefaultTableQuery(defaultSort, query);\n const initialColumnVisibility = getInitialColumnVisibility(columns);\n\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n initialColumnVisibility\n );\n const [tableQuery, setTableQuery] =\n useState<InternalQuery>(defaultTableQuery);\n\n const oldQueryRef = useRef<InternalQuery | null>(null);\n\n const reactTableState = useMemo(\n () => queryToTableState(tableQuery),\n [tableQuery]\n );\n\n const onDisplaySettingsReset = useCallback(() => {\n setTableQuery(prev => ({ ...prev, ...defaultTableQuery }));\n setColumnVisibility(initialColumnVisibility);\n }, [defaultTableQuery, initialColumnVisibility]);\n\n const group_by = tableQuery.group_by?.[0];\n\n const columnsWithFilters = useMemo(\n () => getColumnsWithFilterFn<TData, TValue>(columns, tableQuery.filters),\n [columns, tableQuery.filters]\n );\n\n const groupedData = useMemo(\n () => groupData(data, group_by, columns),\n [data, group_by, columns]\n );\n\n useEffect(() => {\n if (\n tableQuery &&\n onTableQueryChange &&\n hasQueryChanged(oldQueryRef.current, tableQuery) &&\n mode === 'server'\n ) {\n onTableQueryChange(transformToDataTableQuery(tableQuery));\n oldQueryRef.current = tableQuery;\n }\n }, [tableQuery, onTableQueryChange]);\n\n const table = useReactTable({\n data: groupedData as unknown as TData[],\n columns: columnsWithFilters,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getSubRows: row => (row as unknown as GroupedData<TData>)?.subRows || [],\n getSortedRowModel: mode === 'server' ? undefined : getSortedRowModel(),\n getFilteredRowModel: mode === 'server' ? undefined : getFilteredRowModel(),\n manualSorting: mode === 'server',\n manualFiltering: mode === 'server',\n onColumnVisibilityChange: setColumnVisibility,\n globalFilterFn: mode === 'server' ? undefined : 'auto',\n initialState: {\n columnVisibility: initialColumnVisibility\n },\n filterFromLeafRows: true,\n state: {\n ...reactTableState,\n columnVisibility: columnVisibility,\n expanded:\n group_by && group_by !== defaultGroupOption.id ? true : undefined\n }\n });\n\n function updateTableQuery(fn: TableQueryUpdateFn) {\n setTableQuery(prev => fn(prev));\n }\n\n const loadMoreData = useCallback(() => {\n if (mode === 'server' && onLoadMore) {\n onLoadMore();\n }\n }, [mode, onLoadMore]);\n\n const searchQuery = query?.search;\n useEffect(() => {\n if (searchQuery) {\n updateTableQuery(prev => ({\n ...prev,\n search: searchQuery\n }));\n }\n }, [searchQuery]);\n\n const contextValue: TableContextType<TData, TValue> = useMemo(() => {\n return {\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n };\n }, [\n table,\n columns,\n mode,\n isLoading,\n loadMoreData,\n tableQuery,\n updateTableQuery,\n onDisplaySettingsReset,\n defaultSort,\n loadingRowCount,\n onRowClick\n ]);\n\n return (\n <TableContext.Provider value={contextValue}>\n {children}\n </TableContext.Provider>\n );\n}\n\nexport const DataTable = Object.assign(DataTableRoot, {\n Content: Content,\n Toolbar: Toolbar,\n Search: TableSearch\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAiCA;;AAcE;;;AAQA;AAEA;AAKA;AACE;;AAEF;;;;;AAeE;;AAGE;;AAGA;AACA;;AAEJ;;AAGE;AACA;;;;AAIA;AACA;;;AAGA;;AAEA;AACE;AACD;AACD;AACA;AACE;AACA;AACA;AAED;AACF;;;;AAMD;AACE;AACE;;AAEJ;AAEA;;;AAGI;AACE;AACA;AACD;;AAEL;AAEA;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;AAYC;AAED;AAKF;;AAGE;AACA;AACA;AACD;;"}
@@ -1,16 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  const SortOrders = {
4
- ASC: "asc",
5
- DESC: "desc",
4
+ ASC: 'asc',
5
+ DESC: 'desc'
6
6
  };
7
7
  const defaultGroupOption = {
8
- id: "--",
9
- label: "No grouping",
8
+ id: '--',
9
+ label: 'No grouping'
10
10
  };
11
- const EmptyFilterValue = "--empty--";
12
11
 
13
- exports.EmptyFilterValue = EmptyFilterValue;
14
12
  exports.SortOrders = SortOrders;
15
13
  exports.defaultGroupOption = defaultGroupOption;
16
14
  //# sourceMappingURL=data-table.types.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.types.cjs","sources":["../../../components/data-table/data-table.types.tsx"],"sourcesContent":["import type { Column, ColumnDef, Table } from \"@tanstack/table-core\";\nimport type {\n FilterOperatorTypes,\n FilterSelectOption,\n FilterTypes,\n FilterValueType,\n} from \"~/types/filters\";\n\nexport type DataTableMode = \"client\" | \"server\";\n\nexport const SortOrders = {\n ASC: \"asc\",\n DESC: \"desc\",\n} as const;\n\nexport interface RQLFilterValues {\n value: any;\n // Only one of these value fields should be present at a time\n boolValue?: boolean;\n stringValue?: string;\n numberValue?: number;\n}\nexport interface RQLFilter extends RQLFilterValues {\n _type?: FilterTypes;\n _dataType?: FilterValueType;\n name: string;\n operator: FilterOperatorTypes;\n}\n\ntype SortOrdersKeys = keyof typeof SortOrders;\nexport type SortOrdersValues = typeof SortOrders[SortOrdersKeys];\n\nexport interface DataTableSort {\n name: string;\n order: SortOrdersValues;\n}\n\nexport interface DataTableQuery {\n filters?: RQLFilter[];\n sort?: DataTableSort[];\n group_by?: string[];\n offset?: number;\n limit?: number;\n search?: string;\n}\n\nexport type DataTableColumn<TData, TValue> = Omit<\n Column<TData, TValue>,\n \"columnDef\"\n> & {\n columnDef: DataTableColumnDef<TData, TValue>;\n};\n\nexport type DataTableColumnDef<TData, TValue> = ColumnDef<TData, TValue> & {\n accessorKey: string;\n header: string;\n filterType?: FilterTypes;\n dataType?: FilterValueType;\n enableColumnFilter?: boolean;\n enableSorting?: boolean;\n enableHiding?: boolean;\n defaultHidden?: boolean;\n filterOptions?: FilterSelectOption[];\n classNames?: {\n cell?: string;\n header?: string;\n };\n styles?: {\n cell?: React.CSSProperties;\n header?: React.CSSProperties;\n };\n enableGrouping?: boolean;\n showGroupCount?: boolean;\n groupCountMap?: Record<string, number>;\n groupLabelsMap?: Record<string, string>;\n // TODO: implement these\n icon?: React.ReactNode;\n};\n\nexport interface DataTableProps<TData, TValue> {\n columns: DataTableColumnDef<TData, TValue>[];\n data: TData[];\n query?: DataTableQuery;\n mode?: DataTableMode;\n isLoading?: boolean;\n loadingRowCount?: number;\n tableQuery?: DataTableQuery;\n onTableQueryChange?: (query: DataTableQuery) => void;\n defaultSort: DataTableSort;\n onLoadMore?: () => Promise<void>;\n onRowClick?: (row: TData) => void;\n}\n\nexport type DataTableContentProps = {\n emptyState?: React.ReactNode;\n classNames?: {\n root?: string;\n table?: string;\n header?: string;\n body?: string;\n row?: string;\n };\n};\n\nexport type TableQueryUpdateFn = (query: DataTableQuery) => DataTableQuery;\n\nexport type TableContextType<TData, TValue> = {\n table: Table<TData>;\n columns: DataTableColumnDef<TData, TValue>[];\n isLoading?: boolean;\n loadMoreData: () => void;\n mode: DataTableMode;\n defaultSort: DataTableSort;\n tableQuery?: DataTableQuery;\n loadingRowCount?: number;\n onDisplaySettingsReset: () => void;\n updateTableQuery: (fn: TableQueryUpdateFn) => void;\n onRowClick?: (row: TData) => void;\n};\n\nexport interface ColumnData {\n label: string;\n id: string;\n isVisible?: boolean;\n}\n\ninterface SubRows<T> {}\n\nexport interface GroupedData<T> extends SubRows<T> {\n label: string;\n group_key: string;\n subRows: T[];\n count?: number;\n showGroupCount?: boolean;\n}\n\nexport const defaultGroupOption = {\n id: \"--\",\n label: \"No grouping\",\n};\n\nexport const EmptyFilterValue = \"--empty--\";\n"],"names":[],"mappings":";;AAUa,MAAA,UAAU,GAAG;AACxB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;EACH;AA2HE,MAAA,kBAAkB,GAAG;AAChC,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,KAAK,EAAE,aAAa;EACpB;AAEK,MAAM,gBAAgB,GAAG;;;;;;"}
1
+ {"version":3,"file":"data-table.types.cjs","sources":["../../../components/data-table/data-table.types.tsx"],"sourcesContent":["import type { Column, ColumnDef, Table } from '@tanstack/table-core';\nimport type {\n DataTableFilterOperatorTypes,\n FilterOperatorTypes,\n FilterSelectOption,\n FilterTypes,\n FilterValueType\n} from '~/types/filters';\n\nexport type DataTableMode = 'client' | 'server';\n\nexport const SortOrders = {\n ASC: 'asc',\n DESC: 'desc'\n} as const;\n\nexport interface DataTableFilterValues {\n value: any;\n // Only one of these value fields should be present at a time\n boolValue?: boolean;\n stringValue?: string;\n numberValue?: number;\n}\n// Internal filter with UI operators and metadata\nexport interface InternalFilter extends DataTableFilterValues {\n _type?: FilterTypes;\n _dataType?: FilterValueType;\n name: string;\n operator: FilterOperatorTypes;\n}\n\n// Data table filter for backend API (no internal fields)\nexport interface DataTableFilter extends DataTableFilterValues {\n name: string;\n operator: DataTableFilterOperatorTypes;\n}\n\ntype SortOrdersKeys = keyof typeof SortOrders;\nexport type SortOrdersValues = (typeof SortOrders)[SortOrdersKeys];\n\nexport interface DataTableSort {\n name: string;\n order: SortOrdersValues;\n}\n\n// Internal query with UI operators and metadata\nexport interface InternalQuery {\n filters?: InternalFilter[];\n sort?: DataTableSort[];\n group_by?: string[];\n offset?: number;\n limit?: number;\n search?: string;\n}\n\n// Data table query for backend API (clean, no internal fields)\nexport interface DataTableQuery extends Omit<InternalQuery, 'filters'> {\n filters?: DataTableFilter[];\n}\n\nexport type DataTableColumn<TData, TValue> = Omit<\n Column<TData, TValue>,\n 'columnDef'\n> & {\n columnDef: DataTableColumnDef<TData, TValue>;\n};\n\nexport type DataTableColumnDef<TData, TValue> = ColumnDef<TData, TValue> & {\n accessorKey: string;\n header: string;\n filterType?: FilterTypes;\n dataType?: FilterValueType;\n enableColumnFilter?: boolean;\n enableSorting?: boolean;\n enableHiding?: boolean;\n defaultHidden?: boolean;\n filterOptions?: FilterSelectOption[];\n classNames?: {\n cell?: string;\n header?: string;\n };\n styles?: {\n cell?: React.CSSProperties;\n header?: React.CSSProperties;\n };\n enableGrouping?: boolean;\n showGroupCount?: boolean;\n groupCountMap?: Record<string, number>;\n groupLabelsMap?: Record<string, string>;\n // TODO: implement these\n icon?: React.ReactNode;\n};\n\nexport interface DataTableProps<TData, TValue> {\n columns: DataTableColumnDef<TData, TValue>[];\n data: TData[];\n query?: DataTableQuery; // Initial query (will be transformed to internal format)\n mode?: DataTableMode;\n isLoading?: boolean;\n loadingRowCount?: number;\n tableQuery?: DataTableQuery;\n onTableQueryChange?: (query: DataTableQuery) => void;\n defaultSort: DataTableSort;\n onLoadMore?: () => Promise<void>;\n onRowClick?: (row: TData) => void;\n}\n\nexport type DataTableContentProps = {\n emptyState?: React.ReactNode;\n classNames?: {\n root?: string;\n table?: string;\n header?: string;\n body?: string;\n row?: string;\n };\n};\n\nexport type TableQueryUpdateFn = (query: InternalQuery) => InternalQuery;\n\nexport type TableContextType<TData, TValue> = {\n table: Table<TData>;\n columns: DataTableColumnDef<TData, TValue>[];\n isLoading?: boolean;\n loadMoreData: () => void;\n mode: DataTableMode;\n defaultSort: DataTableSort;\n tableQuery?: InternalQuery;\n loadingRowCount?: number;\n onDisplaySettingsReset: () => void;\n updateTableQuery: (fn: TableQueryUpdateFn) => void;\n onRowClick?: (row: TData) => void;\n};\n\nexport interface ColumnData {\n label: string;\n id: string;\n isVisible?: boolean;\n}\n\ninterface SubRows<_T> {}\n\nexport interface GroupedData<T> extends SubRows<T> {\n label: string;\n group_key: string;\n subRows: T[];\n count?: number;\n showGroupCount?: boolean;\n}\n\nexport const defaultGroupOption = {\n id: '--',\n label: 'No grouping'\n};\n"],"names":[],"mappings":";;AAWa,MAAA,UAAU,GAAG;AACxB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;EACH;AAwIE,MAAA,kBAAkB,GAAG;AAChC,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,KAAK,EAAE,aAAa;;;;;;"}
@@ -1,37 +1,44 @@
1
- import type { Column, ColumnDef, Table } from "@tanstack/table-core";
2
- import type { FilterOperatorTypes, FilterSelectOption, FilterTypes, FilterValueType } from "~/types/filters";
3
- export type DataTableMode = "client" | "server";
1
+ import type { Column, ColumnDef, Table } from '@tanstack/table-core';
2
+ import type { DataTableFilterOperatorTypes, FilterOperatorTypes, FilterSelectOption, FilterTypes, FilterValueType } from '~/types/filters';
3
+ export type DataTableMode = 'client' | 'server';
4
4
  export declare const SortOrders: {
5
5
  readonly ASC: "asc";
6
6
  readonly DESC: "desc";
7
7
  };
8
- export interface RQLFilterValues {
8
+ export interface DataTableFilterValues {
9
9
  value: any;
10
10
  boolValue?: boolean;
11
11
  stringValue?: string;
12
12
  numberValue?: number;
13
13
  }
14
- export interface RQLFilter extends RQLFilterValues {
14
+ export interface InternalFilter extends DataTableFilterValues {
15
15
  _type?: FilterTypes;
16
16
  _dataType?: FilterValueType;
17
17
  name: string;
18
18
  operator: FilterOperatorTypes;
19
19
  }
20
+ export interface DataTableFilter extends DataTableFilterValues {
21
+ name: string;
22
+ operator: DataTableFilterOperatorTypes;
23
+ }
20
24
  type SortOrdersKeys = keyof typeof SortOrders;
21
- export type SortOrdersValues = typeof SortOrders[SortOrdersKeys];
25
+ export type SortOrdersValues = (typeof SortOrders)[SortOrdersKeys];
22
26
  export interface DataTableSort {
23
27
  name: string;
24
28
  order: SortOrdersValues;
25
29
  }
26
- export interface DataTableQuery {
27
- filters?: RQLFilter[];
30
+ export interface InternalQuery {
31
+ filters?: InternalFilter[];
28
32
  sort?: DataTableSort[];
29
33
  group_by?: string[];
30
34
  offset?: number;
31
35
  limit?: number;
32
36
  search?: string;
33
37
  }
34
- export type DataTableColumn<TData, TValue> = Omit<Column<TData, TValue>, "columnDef"> & {
38
+ export interface DataTableQuery extends Omit<InternalQuery, 'filters'> {
39
+ filters?: DataTableFilter[];
40
+ }
41
+ export type DataTableColumn<TData, TValue> = Omit<Column<TData, TValue>, 'columnDef'> & {
35
42
  columnDef: DataTableColumnDef<TData, TValue>;
36
43
  };
37
44
  export type DataTableColumnDef<TData, TValue> = ColumnDef<TData, TValue> & {
@@ -81,7 +88,7 @@ export type DataTableContentProps = {
81
88
  row?: string;
82
89
  };
83
90
  };
84
- export type TableQueryUpdateFn = (query: DataTableQuery) => DataTableQuery;
91
+ export type TableQueryUpdateFn = (query: InternalQuery) => InternalQuery;
85
92
  export type TableContextType<TData, TValue> = {
86
93
  table: Table<TData>;
87
94
  columns: DataTableColumnDef<TData, TValue>[];
@@ -89,7 +96,7 @@ export type TableContextType<TData, TValue> = {
89
96
  loadMoreData: () => void;
90
97
  mode: DataTableMode;
91
98
  defaultSort: DataTableSort;
92
- tableQuery?: DataTableQuery;
99
+ tableQuery?: InternalQuery;
93
100
  loadingRowCount?: number;
94
101
  onDisplaySettingsReset: () => void;
95
102
  updateTableQuery: (fn: TableQueryUpdateFn) => void;
@@ -100,7 +107,7 @@ export interface ColumnData {
100
107
  id: string;
101
108
  isVisible?: boolean;
102
109
  }
103
- interface SubRows<T> {
110
+ interface SubRows<_T> {
104
111
  }
105
112
  export interface GroupedData<T> extends SubRows<T> {
106
113
  label: string;
@@ -113,6 +120,5 @@ export declare const defaultGroupOption: {
113
120
  id: string;
114
121
  label: string;
115
122
  };
116
- export declare const EmptyFilterValue = "--empty--";
117
123
  export {};
118
124
  //# sourceMappingURL=data-table.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.types.d.ts","sourceRoot":"","sources":["../../../components/data-table/data-table.types.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-table.types.d.ts","sourceRoot":"","sources":["../../../components/data-table/data-table.types.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  const SortOrders = {
2
- ASC: "asc",
3
- DESC: "desc",
2
+ ASC: 'asc',
3
+ DESC: 'desc'
4
4
  };
5
5
  const defaultGroupOption = {
6
- id: "--",
7
- label: "No grouping",
6
+ id: '--',
7
+ label: 'No grouping'
8
8
  };
9
- const EmptyFilterValue = "--empty--";
10
9
 
11
- export { EmptyFilterValue, SortOrders, defaultGroupOption };
10
+ export { SortOrders, defaultGroupOption };
12
11
  //# sourceMappingURL=data-table.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.types.js","sources":["../../../components/data-table/data-table.types.tsx"],"sourcesContent":["import type { Column, ColumnDef, Table } from \"@tanstack/table-core\";\nimport type {\n FilterOperatorTypes,\n FilterSelectOption,\n FilterTypes,\n FilterValueType,\n} from \"~/types/filters\";\n\nexport type DataTableMode = \"client\" | \"server\";\n\nexport const SortOrders = {\n ASC: \"asc\",\n DESC: \"desc\",\n} as const;\n\nexport interface RQLFilterValues {\n value: any;\n // Only one of these value fields should be present at a time\n boolValue?: boolean;\n stringValue?: string;\n numberValue?: number;\n}\nexport interface RQLFilter extends RQLFilterValues {\n _type?: FilterTypes;\n _dataType?: FilterValueType;\n name: string;\n operator: FilterOperatorTypes;\n}\n\ntype SortOrdersKeys = keyof typeof SortOrders;\nexport type SortOrdersValues = typeof SortOrders[SortOrdersKeys];\n\nexport interface DataTableSort {\n name: string;\n order: SortOrdersValues;\n}\n\nexport interface DataTableQuery {\n filters?: RQLFilter[];\n sort?: DataTableSort[];\n group_by?: string[];\n offset?: number;\n limit?: number;\n search?: string;\n}\n\nexport type DataTableColumn<TData, TValue> = Omit<\n Column<TData, TValue>,\n \"columnDef\"\n> & {\n columnDef: DataTableColumnDef<TData, TValue>;\n};\n\nexport type DataTableColumnDef<TData, TValue> = ColumnDef<TData, TValue> & {\n accessorKey: string;\n header: string;\n filterType?: FilterTypes;\n dataType?: FilterValueType;\n enableColumnFilter?: boolean;\n enableSorting?: boolean;\n enableHiding?: boolean;\n defaultHidden?: boolean;\n filterOptions?: FilterSelectOption[];\n classNames?: {\n cell?: string;\n header?: string;\n };\n styles?: {\n cell?: React.CSSProperties;\n header?: React.CSSProperties;\n };\n enableGrouping?: boolean;\n showGroupCount?: boolean;\n groupCountMap?: Record<string, number>;\n groupLabelsMap?: Record<string, string>;\n // TODO: implement these\n icon?: React.ReactNode;\n};\n\nexport interface DataTableProps<TData, TValue> {\n columns: DataTableColumnDef<TData, TValue>[];\n data: TData[];\n query?: DataTableQuery;\n mode?: DataTableMode;\n isLoading?: boolean;\n loadingRowCount?: number;\n tableQuery?: DataTableQuery;\n onTableQueryChange?: (query: DataTableQuery) => void;\n defaultSort: DataTableSort;\n onLoadMore?: () => Promise<void>;\n onRowClick?: (row: TData) => void;\n}\n\nexport type DataTableContentProps = {\n emptyState?: React.ReactNode;\n classNames?: {\n root?: string;\n table?: string;\n header?: string;\n body?: string;\n row?: string;\n };\n};\n\nexport type TableQueryUpdateFn = (query: DataTableQuery) => DataTableQuery;\n\nexport type TableContextType<TData, TValue> = {\n table: Table<TData>;\n columns: DataTableColumnDef<TData, TValue>[];\n isLoading?: boolean;\n loadMoreData: () => void;\n mode: DataTableMode;\n defaultSort: DataTableSort;\n tableQuery?: DataTableQuery;\n loadingRowCount?: number;\n onDisplaySettingsReset: () => void;\n updateTableQuery: (fn: TableQueryUpdateFn) => void;\n onRowClick?: (row: TData) => void;\n};\n\nexport interface ColumnData {\n label: string;\n id: string;\n isVisible?: boolean;\n}\n\ninterface SubRows<T> {}\n\nexport interface GroupedData<T> extends SubRows<T> {\n label: string;\n group_key: string;\n subRows: T[];\n count?: number;\n showGroupCount?: boolean;\n}\n\nexport const defaultGroupOption = {\n id: \"--\",\n label: \"No grouping\",\n};\n\nexport const EmptyFilterValue = \"--empty--\";\n"],"names":[],"mappings":"AAUa,MAAA,UAAU,GAAG;AACxB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;EACH;AA2HE,MAAA,kBAAkB,GAAG;AAChC,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,KAAK,EAAE,aAAa;EACpB;AAEK,MAAM,gBAAgB,GAAG;;;;"}
1
+ {"version":3,"file":"data-table.types.js","sources":["../../../components/data-table/data-table.types.tsx"],"sourcesContent":["import type { Column, ColumnDef, Table } from '@tanstack/table-core';\nimport type {\n DataTableFilterOperatorTypes,\n FilterOperatorTypes,\n FilterSelectOption,\n FilterTypes,\n FilterValueType\n} from '~/types/filters';\n\nexport type DataTableMode = 'client' | 'server';\n\nexport const SortOrders = {\n ASC: 'asc',\n DESC: 'desc'\n} as const;\n\nexport interface DataTableFilterValues {\n value: any;\n // Only one of these value fields should be present at a time\n boolValue?: boolean;\n stringValue?: string;\n numberValue?: number;\n}\n// Internal filter with UI operators and metadata\nexport interface InternalFilter extends DataTableFilterValues {\n _type?: FilterTypes;\n _dataType?: FilterValueType;\n name: string;\n operator: FilterOperatorTypes;\n}\n\n// Data table filter for backend API (no internal fields)\nexport interface DataTableFilter extends DataTableFilterValues {\n name: string;\n operator: DataTableFilterOperatorTypes;\n}\n\ntype SortOrdersKeys = keyof typeof SortOrders;\nexport type SortOrdersValues = (typeof SortOrders)[SortOrdersKeys];\n\nexport interface DataTableSort {\n name: string;\n order: SortOrdersValues;\n}\n\n// Internal query with UI operators and metadata\nexport interface InternalQuery {\n filters?: InternalFilter[];\n sort?: DataTableSort[];\n group_by?: string[];\n offset?: number;\n limit?: number;\n search?: string;\n}\n\n// Data table query for backend API (clean, no internal fields)\nexport interface DataTableQuery extends Omit<InternalQuery, 'filters'> {\n filters?: DataTableFilter[];\n}\n\nexport type DataTableColumn<TData, TValue> = Omit<\n Column<TData, TValue>,\n 'columnDef'\n> & {\n columnDef: DataTableColumnDef<TData, TValue>;\n};\n\nexport type DataTableColumnDef<TData, TValue> = ColumnDef<TData, TValue> & {\n accessorKey: string;\n header: string;\n filterType?: FilterTypes;\n dataType?: FilterValueType;\n enableColumnFilter?: boolean;\n enableSorting?: boolean;\n enableHiding?: boolean;\n defaultHidden?: boolean;\n filterOptions?: FilterSelectOption[];\n classNames?: {\n cell?: string;\n header?: string;\n };\n styles?: {\n cell?: React.CSSProperties;\n header?: React.CSSProperties;\n };\n enableGrouping?: boolean;\n showGroupCount?: boolean;\n groupCountMap?: Record<string, number>;\n groupLabelsMap?: Record<string, string>;\n // TODO: implement these\n icon?: React.ReactNode;\n};\n\nexport interface DataTableProps<TData, TValue> {\n columns: DataTableColumnDef<TData, TValue>[];\n data: TData[];\n query?: DataTableQuery; // Initial query (will be transformed to internal format)\n mode?: DataTableMode;\n isLoading?: boolean;\n loadingRowCount?: number;\n tableQuery?: DataTableQuery;\n onTableQueryChange?: (query: DataTableQuery) => void;\n defaultSort: DataTableSort;\n onLoadMore?: () => Promise<void>;\n onRowClick?: (row: TData) => void;\n}\n\nexport type DataTableContentProps = {\n emptyState?: React.ReactNode;\n classNames?: {\n root?: string;\n table?: string;\n header?: string;\n body?: string;\n row?: string;\n };\n};\n\nexport type TableQueryUpdateFn = (query: InternalQuery) => InternalQuery;\n\nexport type TableContextType<TData, TValue> = {\n table: Table<TData>;\n columns: DataTableColumnDef<TData, TValue>[];\n isLoading?: boolean;\n loadMoreData: () => void;\n mode: DataTableMode;\n defaultSort: DataTableSort;\n tableQuery?: InternalQuery;\n loadingRowCount?: number;\n onDisplaySettingsReset: () => void;\n updateTableQuery: (fn: TableQueryUpdateFn) => void;\n onRowClick?: (row: TData) => void;\n};\n\nexport interface ColumnData {\n label: string;\n id: string;\n isVisible?: boolean;\n}\n\ninterface SubRows<_T> {}\n\nexport interface GroupedData<T> extends SubRows<T> {\n label: string;\n group_key: string;\n subRows: T[];\n count?: number;\n showGroupCount?: boolean;\n}\n\nexport const defaultGroupOption = {\n id: '--',\n label: 'No grouping'\n};\n"],"names":[],"mappings":"AAWa,MAAA,UAAU,GAAG;AACxB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;EACH;AAwIE,MAAA,kBAAkB,GAAG;AAChC,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,KAAK,EAAE,aAAa;;;;;"}
@@ -1,4 +1,5 @@
1
1
  export { DataTable } from "./data-table";
2
- export { DataTableColumnDef, DataTableQuery, DataTableSort, EmptyFilterValue, } from "./data-table.types";
2
+ export { DataTableColumnDef, InternalQuery, DataTableQuery, DataTableSort, InternalFilter, DataTableFilter, } from "./data-table.types";
3
+ export { EmptyFilterValue } from "~/types/filters";
3
4
  export { useDataTable } from "./hooks/useDataTable";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=filter-operations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-operations.test.d.ts","sourceRoot":"","sources":["../../../../../components/data-table/utils/__tests__/filter-operations.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../../components/data-table/utils/__tests__/index.test.tsx"],"names":[],"mappings":""}