@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.
- package/dist/components/callout/callout.cjs +2 -21
- package/dist/components/callout/callout.cjs.map +1 -1
- package/dist/components/callout/callout.d.ts +7 -8
- package/dist/components/callout/callout.d.ts.map +1 -1
- package/dist/components/callout/callout.js +3 -3
- package/dist/components/callout/callout.js.map +1 -1
- package/dist/components/data-table/data-table.cjs +1 -1
- package/dist/components/data-table/data-table.cjs.map +1 -1
- package/dist/components/data-table/data-table.js +2 -2
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/data-table/data-table.types.cjs +4 -6
- package/dist/components/data-table/data-table.types.cjs.map +1 -1
- package/dist/components/data-table/data-table.types.d.ts +19 -13
- package/dist/components/data-table/data-table.types.d.ts.map +1 -1
- package/dist/components/data-table/data-table.types.js +5 -6
- package/dist/components/data-table/data-table.types.js.map +1 -1
- package/dist/components/data-table/index.d.ts +2 -1
- package/dist/components/data-table/index.d.ts.map +1 -1
- package/dist/components/data-table/utils/__tests__/filter-operations.test.d.ts +2 -0
- package/dist/components/data-table/utils/__tests__/filter-operations.test.d.ts.map +1 -0
- package/dist/components/data-table/utils/__tests__/index.test.d.ts +2 -0
- package/dist/components/data-table/utils/__tests__/index.test.d.ts.map +1 -0
- package/dist/components/data-table/utils/filter-operations.cjs +74 -32
- package/dist/components/data-table/utils/filter-operations.cjs.map +1 -1
- package/dist/components/data-table/utils/filter-operations.d.ts +11 -10
- package/dist/components/data-table/utils/filter-operations.d.ts.map +1 -1
- package/dist/components/data-table/utils/filter-operations.js +69 -27
- package/dist/components/data-table/utils/filter-operations.js.map +1 -1
- package/dist/components/data-table/utils/index.cjs +88 -24
- package/dist/components/data-table/utils/index.cjs.map +1 -1
- package/dist/components/data-table/utils/index.d.ts +8 -7
- package/dist/components/data-table/utils/index.d.ts.map +1 -1
- package/dist/components/data-table/utils/index.js +87 -24
- package/dist/components/data-table/utils/index.js.map +1 -1
- package/dist/components/list/list.cjs +13 -14
- package/dist/components/list/list.cjs.map +1 -1
- package/dist/components/list/list.d.ts +10 -11
- package/dist/components/list/list.d.ts.map +1 -1
- package/dist/components/list/list.js +13 -14
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/radio/radio.cjs +0 -1
- package/dist/components/radio/radio.cjs.map +1 -1
- package/dist/components/radio/radio.d.ts +0 -1
- package/dist/components/radio/radio.d.ts.map +1 -1
- package/dist/components/radio/radio.js +0 -1
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/tabs/tabs.cjs +2 -3
- package/dist/components/tabs/tabs.cjs.map +1 -1
- package/dist/components/tabs/tabs.d.ts +1 -2
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tabs/tabs.js +2 -3
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/types/filters.cjs +5 -1
- package/dist/types/filters.cjs.map +1 -1
- package/dist/types/filters.d.ts +4 -1
- package/dist/types/filters.d.ts.map +1 -1
- package/dist/types/filters.js +5 -2
- package/dist/types/filters.js.map +1 -1
- package/dist/vitest.setup.d.ts +2 -0
- package/dist/vitest.setup.d.ts.map +1 -0
- package/package.json +19 -19
- package/dist/jest.config.d.ts +0 -21
- package/dist/jest.config.d.ts.map +0 -1
- package/dist/jest.setup.d.ts +0 -2
- 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 =
|
|
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
|
|
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 {
|
|
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
|
|
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
|
|
10
|
-
children:
|
|
11
|
-
action?:
|
|
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?:
|
|
16
|
-
icon?:
|
|
14
|
+
style?: CSSProperties;
|
|
15
|
+
icon?: ReactNode;
|
|
17
16
|
}
|
|
18
|
-
export declare const Callout:
|
|
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,
|
|
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
|
|
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 =
|
|
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
|
|
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 {
|
|
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.
|
|
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
|
|
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,
|
|
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(
|
|
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
|
|
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:
|
|
5
|
-
DESC:
|
|
4
|
+
ASC: 'asc',
|
|
5
|
+
DESC: 'desc'
|
|
6
6
|
};
|
|
7
7
|
const defaultGroupOption = {
|
|
8
|
-
id:
|
|
9
|
-
label:
|
|
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
|
|
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
|
|
2
|
-
import type { FilterOperatorTypes, FilterSelectOption, FilterTypes, FilterValueType } from
|
|
3
|
-
export type DataTableMode =
|
|
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
|
|
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
|
|
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
|
|
27
|
-
filters?:
|
|
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
|
|
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:
|
|
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?:
|
|
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<
|
|
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":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,MAAM,WAAW,
|
|
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:
|
|
3
|
-
DESC:
|
|
2
|
+
ASC: 'asc',
|
|
3
|
+
DESC: 'desc'
|
|
4
4
|
};
|
|
5
5
|
const defaultGroupOption = {
|
|
6
|
-
id:
|
|
7
|
-
label:
|
|
6
|
+
id: '--',
|
|
7
|
+
label: 'No grouping'
|
|
8
8
|
};
|
|
9
|
-
const EmptyFilterValue = "--empty--";
|
|
10
9
|
|
|
11
|
-
export {
|
|
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
|
|
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,
|
|
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,
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../../components/data-table/utils/__tests__/index.test.tsx"],"names":[],"mappings":""}
|