@trsys-tech/matrix-library 1.0.0-canary.7 → 1.0.0-canary.9

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.
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  declare const badgeVariants: TVReturnType<{
5
5
  variant: {
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  declare const buttonVariants: TVReturnType<{
5
5
  variant: {
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { VariantProps, TVReturnType } from 'tailwind-variants';
3
- import { TVConfig } from 'tailwind-variants/dist/config';
3
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
4
4
  declare const chipVariants: TVReturnType<{
5
5
  variant: {
6
6
  primary: string;
@@ -4,7 +4,13 @@ import { GridApi, Theme, ThemeDefaultParams } from 'ag-grid-community';
4
4
  import { ButtonProps } from '../button/Button';
5
5
  import { IconButtonProps } from '../icon-botton/IconButton';
6
6
  import { PopoverContentProps, PopoverProps, PopoverTriggerProps } from '../popover/Popover';
7
+ /**
8
+ * Default ag-Grid theme used by DataGrid.
9
+ */
7
10
  declare const dataGridDefaultTheme: Theme< ThemeDefaultParams>;
11
+ /**
12
+ * Shared DataGrid state exposed through context.
13
+ */
8
14
  type DataGridContext = {
9
15
  api: GridApi | null;
10
16
  setApi: (value: GridApi) => void;
@@ -21,45 +27,169 @@ type DataGridContext = {
21
27
  setPinnedRowIds: (value: Set<string>) => void;
22
28
  };
23
29
  declare const DataGridContext: React.Context<DataGridContext | null>;
30
+ /**
31
+ * Returns the current DataGrid context.
32
+ */
24
33
  declare const useDataGrid: () => DataGridContext;
34
+ /**
35
+ * Props for the root DataGrid provider.
36
+ */
25
37
  type DataGridProps = {
38
+ /** Content rendered inside the provider. */
26
39
  children: React.ReactNode;
27
40
  };
41
+ /**
42
+ * DataGrid provider.
43
+ * Provides shared state for the grid shell, content, and toolbar actions.
44
+ * @param {DataGridProps} props - DataGrid props.
45
+ * @param {React.ReactNode} children - Content rendered inside the provider.
46
+ * @returns {React.ReactElement}
47
+ */
28
48
  declare const DataGrid: React.FC<DataGridProps>;
49
+ /**
50
+ * Props for the Ag Grid content wrapper.
51
+ */
29
52
  type DataGridContentProps = Omit<AgGridReactProps, "theme"> & {
53
+ /** Optional theme override forwarded to ag-Grid. */
30
54
  theme?: Theme;
31
55
  };
56
+ /**
57
+ * DataGridContent component.
58
+ * Connects ag-Grid to the shared DataGrid context and keeps pinned rows separate from the main row set.
59
+ * @param {DataGridContentProps} props - Ag Grid props.
60
+ * @param {Theme} [theme] - Optional ag-Grid theme override.
61
+ * @param {GridReadyEvent} [onGridReady] - Called when the grid becomes ready.
62
+ * @param {any[] | null | undefined} [rowData] - Row data rendered by the grid.
63
+ * @param {string} [quickFilterText] - Quick filter text synced from the search action.
64
+ * @param {React.CSSProperties} [containerStyle] - Inline styles applied to the grid container.
65
+ * @param {Function} [getRowId] - Resolves the row id used to keep pinned rows stable.
66
+ * @param {React.ForwardedRef<AgGridReact>} ref - Grid ref.
67
+ * @returns {React.ReactElement}
68
+ */
32
69
  declare const DataGridContent: React.ForwardRefExoticComponent<Omit<AgGridReactProps<any>, "theme"> & {
70
+ /** Optional theme override forwarded to ag-Grid. */
33
71
  theme?: Theme;
34
72
  } & React.RefAttributes<AgGridReact<any>>>;
73
+ /**
74
+ * Props for the DataGrid action bar container.
75
+ */
35
76
  type DatagridActionBarProps = HTMLAttributes<HTMLDivElement> & {};
77
+ /**
78
+ * DataGrid action bar.
79
+ * Marks the grid as having a toolbar so the grid can adjust border radius and height.
80
+ * @param {DatagridActionBarProps} props - Action bar props.
81
+ * @param {React.ReactNode} children - Action bar content.
82
+ * @param {string} className - Additional classes applied to the action bar.
83
+ * @returns {React.ReactElement}
84
+ */
36
85
  declare const DataGridActionBar: React.FC<DatagridActionBarProps>;
86
+ /**
87
+ * Props for SearchAction.
88
+ */
37
89
  type SearchActionProps = HTMLAttributes<HTMLDivElement> & {
90
+ /** Opens the search input immediately on mount. */
38
91
  defaultOpen?: boolean;
92
+ /** Focuses the input the first time it opens. */
93
+ defaultOpenAutoFocus?: boolean;
39
94
  };
95
+ /**
96
+ * Search action.
97
+ * Toggles the quick filter input and manages its open/close focus behavior.
98
+ * @param {SearchActionProps} props - Search action props.
99
+ * @param {boolean} [defaultOpen] - Opens the search input immediately on mount.
100
+ * @param {boolean} [defaultOpenAutoFocus] - Focuses the input the first time it opens.
101
+ * @param {React.ReactNode} children - Optional wrapper content.
102
+ * @param {string} className - Additional wrapper classes.
103
+ * @returns {React.ReactElement}
104
+ */
40
105
  declare const SearchAction: React.FC<SearchActionProps>;
106
+ /**
107
+ * Props for FreezeAction.
108
+ */
41
109
  type FreezeActionProps = ButtonProps & {
110
+ /** Label shown when rows can be frozen. */
42
111
  freezeText?: string;
112
+ /** Label shown when rows are already frozen. */
43
113
  unFreezeText?: string;
44
114
  };
115
+ /**
116
+ * Freeze action.
117
+ * Pins the current selection when rows are selected, or clears pinned rows when the grid is already frozen.
118
+ * @param {FreezeActionProps} props - Freeze action props.
119
+ * @param {boolean} [disabled] - Disables the action button.
120
+ * @param {React.MouseEventHandler<HTMLButtonElement>} [onClick] - Called after the freeze toggle runs.
121
+ * @returns {React.ReactElement}
122
+ */
45
123
  declare const FreezeAction: React.FC<FreezeActionProps>;
124
+ /**
125
+ * Props for PrintAction.
126
+ */
46
127
  type PrintActionProps = IconButtonProps & {};
128
+ /**
129
+ * Print action.
130
+ * Switches the grid to print layout, captures the rendered markup, and opens the browser print flow.
131
+ * @param {PrintActionProps} props - Print action props.
132
+ * @param {React.ReactNode} [children] - Custom icon content rendered in the button.
133
+ * @param {string} [className] - Additional button classes.
134
+ * @param {React.MouseEventHandler<HTMLButtonElement>} [onClick] - Called after printing is triggered.
135
+ * @returns {React.ReactElement}
136
+ */
47
137
  declare const PrintAction: React.FC<PrintActionProps>;
138
+ /**
139
+ * Props for RefreshAction.
140
+ */
48
141
  type RefreshActionProps = Omit<IconButtonProps, "onClick"> & {
142
+ /** Callback invoked when the refresh action is clicked. */
49
143
  onRefresh: () => void;
50
144
  };
145
+ /**
146
+ * Refresh action.
147
+ * Calls the provided refresh callback and reflects the loading state in the toolbar button.
148
+ * @param {RefreshActionProps} props - Refresh action props.
149
+ * @param {() => void} onRefresh - Called when the button is clicked.
150
+ * @param {boolean} [loading] - Shows the loading spinner and disables the button.
151
+ * @param {React.ReactNode} [children] - Custom icon content rendered in the button.
152
+ * @param {string} [className] - Additional button classes.
153
+ * @returns {React.ReactElement}
154
+ */
51
155
  declare const RefreshAction: React.FC<RefreshActionProps>;
156
+ /**
157
+ * Props for DeleteAction.
158
+ */
52
159
  type DeleteActionProps = Omit<ButtonProps, "onClick"> & {
160
+ /** Callback invoked when the delete action is clicked. */
53
161
  onDelete: () => void;
54
162
  };
163
+ /**
164
+ * Delete action.
165
+ * Renders a danger button with the delete icon and delegates the click to the provided handler.
166
+ * @param {DeleteActionProps} props - Delete action props.
167
+ * @param {() => void} onDelete - Called when the button is clicked.
168
+ * @param {React.ReactNode} [children] - Button label or custom content.
169
+ * @returns {React.ReactElement}
170
+ */
55
171
  declare const DeleteAction: React.FC<DeleteActionProps>;
172
+ /**
173
+ * Props for ExtraActions.
174
+ */
56
175
  type ExtraActionsProps = PopoverContentProps & {
176
+ /** Menu items rendered inside the popover. */
57
177
  children: React.ReactNode;
178
+ /** Props forwarded to the popover trigger and popover root. */
58
179
  slotProps?: {
59
180
  triggerProps?: PopoverTriggerProps;
60
181
  popoverProps?: PopoverProps;
61
182
  };
62
183
  };
184
+ /**
185
+ * Extra actions menu.
186
+ * Wraps overflow actions in a popover anchored to the vertical ellipsis trigger.
187
+ * @param {ExtraActionsProps} props - Extra actions props.
188
+ * @param {React.ReactNode} children - Menu items rendered inside the popover.
189
+ * @param {{ triggerProps?: PopoverTriggerProps; popoverProps?: PopoverProps; }} [slotProps] - Props forwarded to the trigger and popover root.
190
+ * @param {string} [className] - Additional popover content classes.
191
+ * @returns {React.ReactElement}
192
+ */
63
193
  declare const ExtraActions: React.FC<ExtraActionsProps>;
64
194
  export { DataGrid, DataGridContent, DataGridActionBar, SearchAction, FreezeAction, PrintAction, RefreshAction, ExtraActions, DeleteAction, type DataGridProps, type DataGridContentProps, type DatagridActionBarProps, type SearchActionProps, type FreezeActionProps, type RefreshActionProps, type ExtraActionsProps, type DeleteActionProps, useDataGrid, dataGridDefaultTheme, };
65
195
  //# sourceMappingURL=DataGrid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../../src/components/data-grid/DataGrid.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../../src/components/data-grid/DataGrid.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  declare const textFieldVariants: TVReturnType<{
5
5
  size: {
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { VariantProps, TVReturnType } from 'tailwind-variants';
3
- import { TVConfig } from 'tailwind-variants/dist/config';
3
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
4
4
  declare const iconButtonVariants: TVReturnType<{
5
5
  variant: {
6
6
  table: string;
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  declare const Label: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref"> & VariantProps< TVReturnType<{} | {} | {}, undefined, "mtx-text-xs mtx-font-medium peer-disabled:mtx-cursor-not-allowed peer-disabled:mtx-opacity-70", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "mtx-text-xs mtx-font-medium peer-disabled:mtx-cursor-not-allowed peer-disabled:mtx-opacity-70", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>> & React.RefAttributes<HTMLLabelElement>>;
5
5
  type LabelProps = React.ComponentProps<typeof Label>;
@@ -1 +1 @@
1
- {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../../src/components/label/Label.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAM1D,QAAA,MAAM,KAAK,yrBAEV,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../../src/components/label/Label.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAM1D,QAAA,MAAM,KAAK,+rBAEV,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  /**
5
5
  * Variants for the multi-select component to handle different styles.
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  import * as ProgressPrimitive from "@radix-ui/react-progress";
5
5
  declare const progressVariants: TVReturnType<{
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { VariantProps, TVReturnType } from 'tailwind-variants';
3
- import { TVConfig } from 'tailwind-variants/dist/config';
3
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
4
4
  declare const ratingVariants: TVReturnType<{
5
5
  variant: {
6
6
  default: string;
@@ -1,6 +1,6 @@
1
1
  import { DialogProps as SheetProps, DialogTriggerProps as SheetTriggerProps, DialogCloseProps as SheetCloseProps, DialogPortalProps as SheetPortalProps, DialogOverlayProps as SheetOverlayProps, DialogDescriptionProps as SheetDescriptionProps, DialogTitleProps as SheetTitleProps } from '@radix-ui/react-dialog';
2
2
  import { VariantProps, TVReturnType } from 'tailwind-variants';
3
- import { TVConfig } from 'tailwind-variants/dist/config';
3
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
4
4
  import * as React from "react";
5
5
  import * as SheetPrimitive from "@radix-ui/react-dialog";
6
6
  declare const Sheet: React.FC<SheetPrimitive.DialogProps>;
@@ -1,7 +1,7 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
2
  import { TooltipContent } from '../tooltip/Tooltip';
3
3
  import { SeparatorProps } from '@radix-ui/react-separator';
4
- import { TVConfig } from 'tailwind-variants/dist/config';
4
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
5
5
  import * as React from "react";
6
6
  type SidebarContext = {
7
7
  state: "expanded" | "collapsed";
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  import * as SwitchPrimitives from "@radix-ui/react-switch";
5
5
  declare const switchVariants: TVReturnType<{
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  declare const textFieldVariants: TVReturnType<{
5
5
  size: {
@@ -1,5 +1,5 @@
1
1
  import { VariantProps, TVReturnType } from 'tailwind-variants';
2
- import { TVConfig } from 'tailwind-variants/dist/config';
2
+ import { TVConfig } from 'tailwind-variants/dist/config.js';
3
3
  import * as React from "react";
4
4
  import * as ToastPrimitives from "@radix-ui/react-toast";
5
5
  declare const ToastProvider: React.FC<ToastPrimitives.ToastProviderProps>;
@@ -1,12 +1,12 @@
1
1
  import { jsx as o, jsxs as z } from "react/jsx-runtime";
2
- import t, { forwardRef as H, useMemo as G } from "react";
2
+ import t, { forwardRef as H, useMemo as A } from "react";
3
3
  import { AgGridReact as L } from "ag-grid-react";
4
4
  import { themeQuartz as M, ModuleRegistry as B, AllCommunityModule as Q } from "ag-grid-community";
5
- import { Trashcan as O, ElipsisVertical as q, Snowflake as $, Print as j, Refresh as _, CircleXmark as U, Magnifier as N } from "@trsys-tech/matrix-icons";
6
- import { cn as g } from "./utils.es.js";
5
+ import { Trashcan as O, ElipsisVertical as q, Snowflake as $, Print as j, Refresh as _, CircleXmark as U, Magnifier as G } from "@trsys-tech/matrix-icons";
6
+ import { cn as C } from "./utils.es.js";
7
7
  import { printHtml as V } from "./printhtml.es.js";
8
8
  import { TextField as W } from "./textfield.es.js";
9
- import { Button as y } from "./button.es.js";
9
+ import { Button as N } from "./button.es.js";
10
10
  import { IconButton as D } from "./iconbutton.es.js";
11
11
  import { Popover as X, PopoverTrigger as J, PopoverContent as K } from "./popover.es.js";
12
12
  B.registerModules([Q]);
@@ -20,203 +20,215 @@ const Y = M.withParams({
20
20
  accentColor: "oklch(var(--mtx-primary-300))",
21
21
  foregroundColor: "oklch(var(--mtx-text-500))",
22
22
  cellTextColor: "oklch(var(--mtx-text-500))"
23
- }), p = t.createContext(null), mt = () => {
24
- const r = t.useContext(p);
25
- if (!r)
23
+ }), w = t.createContext(null), mt = () => {
24
+ const i = t.useContext(w);
25
+ if (!i)
26
26
  throw new Error("useDataGrid should be used within <DataGrid>");
27
- return r;
28
- }, ut = ({ children: r }) => {
29
- const s = t.useId(), [i, n] = t.useState(null), [a, c] = t.useState([]), [d, m] = t.useState(0), [u, l] = t.useState(/* @__PURE__ */ new Set()), [e, x] = t.useState(""), [h, f] = t.useState(!1);
27
+ return i;
28
+ }, ut = ({ children: i }) => {
29
+ const s = t.useId(), [a, r] = t.useState(null), [n, c] = t.useState([]), [l, m] = t.useState(0), [x, d] = t.useState(/* @__PURE__ */ new Set()), [e, u] = t.useState(""), [h, p] = t.useState(!1);
30
30
  return /* @__PURE__ */ o(
31
- p.Provider,
31
+ w.Provider,
32
32
  {
33
33
  value: {
34
- api: i,
35
- setApi: n,
36
- rowData: a,
34
+ api: a,
35
+ setApi: r,
36
+ rowData: n,
37
37
  setRowData: c,
38
38
  gridId: s,
39
39
  quickFilterText: e,
40
- setQuickFilterText: x,
40
+ setQuickFilterText: u,
41
41
  actionbarExists: h,
42
- setActionbarExists: f,
43
- actionbarHeight: d,
42
+ setActionbarExists: p,
43
+ actionbarHeight: l,
44
44
  setActionbarHeight: m,
45
- pinnedRowIds: u,
46
- setPinnedRowIds: l
45
+ pinnedRowIds: x,
46
+ setPinnedRowIds: d
47
47
  },
48
- children: r
48
+ children: i
49
49
  }
50
50
  );
51
51
  }, Z = H(
52
- ({ theme: r, onGridReady: s, quickFilterText: i, rowData: n, containerStyle: a, getRowId: c, ...d }, m) => {
53
- const u = t.useContext(p);
54
- if (!u)
52
+ ({ theme: i, onGridReady: s, quickFilterText: a, rowData: r, containerStyle: n, getRowId: c, ...l }, m) => {
53
+ const x = t.useContext(w);
54
+ if (!x)
55
55
  throw new Error("DataGridContent should be used within <DataGrid>");
56
- const { rowData: l, setRowData: e, actionbarExists: x, setApi: h, setQuickFilterText: f, quickFilterText: R, gridId: E, actionbarHeight: C, pinnedRowIds: w } = u, b = G(() => Y.withParams({
56
+ const { rowData: d, setRowData: e, actionbarExists: u, setApi: h, setQuickFilterText: p, quickFilterText: R, gridId: b, actionbarHeight: f, pinnedRowIds: g } = x, S = A(() => Y.withParams({
57
57
  headerHeight: 40,
58
- wrapperBorderRadius: x ? "0px 0px 8px 8px" : "8px"
59
- }), [x]), P = (v) => {
58
+ wrapperBorderRadius: u ? "0px 0px 8px 8px" : "8px"
59
+ }), [u]), P = (v) => {
60
60
  h(v.api), s?.(v);
61
61
  };
62
62
  t.useEffect(() => {
63
- e(n);
64
- }, [n, e]), t.useEffect(() => {
65
- i !== void 0 && f(i ?? "");
66
- }, [i, f]);
67
- const { finalRowData: F, finalPinnedTopRowData: I } = G(() => {
68
- if (!l || w.size === 0)
69
- return { finalRowData: l, finalPinnedTopRowData: [] };
70
- const v = [], A = [];
71
- return l.forEach((S) => {
72
- const k = c ? c({ data: S, level: 0 }) : S.id, T = k != null ? String(k) : void 0;
73
- T !== void 0 && w.has(T) ? v.push(S) : A.push(S);
74
- }), { finalRowData: A, finalPinnedTopRowData: v };
75
- }, [l, w, c]);
63
+ e(r);
64
+ }, [r, e]), t.useEffect(() => {
65
+ a !== void 0 && p(a ?? "");
66
+ }, [a, p]);
67
+ const { finalRowData: F, finalPinnedTopRowData: I } = A(() => {
68
+ if (!d || g.size === 0)
69
+ return { finalRowData: d, finalPinnedTopRowData: [] };
70
+ const v = [], k = [];
71
+ return d.forEach((E) => {
72
+ const y = c ? c({ data: E, level: 0 }) : E.id, T = y != null ? String(y) : void 0;
73
+ T !== void 0 && g.has(T) ? v.push(E) : k.push(E);
74
+ }), { finalRowData: k, finalPinnedTopRowData: v };
75
+ }, [d, g, c]);
76
76
  return /* @__PURE__ */ o(
77
77
  L,
78
78
  {
79
- gridId: E,
80
- theme: r ?? b,
79
+ gridId: b,
80
+ theme: i ?? S,
81
81
  rowData: F,
82
82
  pinnedTopRowData: I,
83
83
  quickFilterText: R,
84
84
  onGridReady: P,
85
- containerStyle: { height: `calc(100% - ${C}px)`, ...a },
85
+ containerStyle: { height: `calc(100% - ${f}px)`, ...n },
86
86
  getRowId: c,
87
- ...d,
87
+ ...l,
88
88
  ref: m
89
89
  }
90
90
  );
91
91
  }
92
92
  );
93
93
  Z.displayName = "DataGridContent";
94
- const xt = ({ className: r, ...s }) => {
95
- const i = t.useContext(p);
96
- if (!i)
94
+ const xt = ({ className: i, ...s }) => {
95
+ const a = t.useContext(w);
96
+ if (!a)
97
97
  throw new Error("DataGridActionBar should be used within <DataGrid>");
98
- const n = t.useRef(null), { setActionbarExists: a, setActionbarHeight: c } = i, { children: d } = s;
99
- return t.useEffect(() => (a(!0), () => a(!1)), [a]), t.useEffect(() => {
100
- n.current && c(n.current.clientHeight);
98
+ const r = t.useRef(null), { setActionbarExists: n, setActionbarHeight: c } = a, { children: l } = s;
99
+ return t.useEffect(() => (n(!0), () => n(!1)), [n]), t.useEffect(() => {
100
+ r.current && c(r.current.clientHeight);
101
101
  }, [c]), /* @__PURE__ */ o(
102
102
  "div",
103
103
  {
104
- className: g(
104
+ className: C(
105
105
  "mtx-relative mtx-flex mtx-items-center mtx-p-2 mtx-h-12 mtx-w-full mtx-bg-gray-0 mtx-border mtx-border-gray-200 mtx-border-b-0 -mtx-mb-[1px] mtx-z-10 mtx-rounded-t-[8px]",
106
- r
106
+ i
107
107
  ),
108
- ref: n,
109
- children: d
108
+ ref: r,
109
+ children: l
110
110
  }
111
111
  );
112
- }, ht = ({ defaultOpen: r = !1, className: s, ...i }) => {
113
- const n = t.useContext(p);
112
+ }, ht = ({
113
+ defaultOpen: i = !1,
114
+ defaultOpenAutoFocus: s = !0,
115
+ className: a,
116
+ ...r
117
+ }) => {
118
+ const n = t.useContext(w);
114
119
  if (!n)
115
120
  throw new Error("SearchAction should be used within <DataGrid>");
116
- const { quickFilterText: a, setQuickFilterText: c } = n, [d, m] = t.useState(r), [u, l] = t.useState(!1), e = t.useRef(null), x = () => {
117
- n.setQuickFilterText(""), e.current && e.current.focus();
118
- }, h = () => {
119
- m(!0);
121
+ const { quickFilterText: c, setQuickFilterText: l } = n, [m, x] = t.useState(i), [d, e] = t.useState(!1), u = t.useRef(null), h = t.useRef(!0), p = () => {
122
+ n.setQuickFilterText(""), u.current && u.current.focus();
123
+ }, R = () => {
124
+ x(!0);
120
125
  };
121
126
  t.useEffect(() => {
122
- d && e?.current && e.current.focus();
123
- }, [d]);
124
- const f = () => {
125
- l(!0), n.setQuickFilterText(""), setTimeout(() => {
126
- m(!1), l(!1);
127
+ m && u?.current && (s || !h.current) && u.current.focus(), h.current = !1;
128
+ }, [m, s]);
129
+ const b = () => {
130
+ e(!0), n.setQuickFilterText(""), setTimeout(() => {
131
+ x(!1), e(!1);
127
132
  }, 200);
128
133
  };
129
- return /* @__PURE__ */ o("div", { className: g("mtx-max-w-60", s), ...i, children: d || u ? /* @__PURE__ */ o(
134
+ return /* @__PURE__ */ o("div", { className: C("mtx-max-w-60", a), ...r, children: m || d ? /* @__PURE__ */ o(
130
135
  W,
131
136
  {
132
- ref: e,
133
- className: g(
137
+ ref: u,
138
+ className: C(
134
139
  "mtx-relative mtx-h-7.5",
135
- d && !u ? "mtx-animate-input-open" : "",
136
- u && "mtx-animate-input-close"
140
+ m && !d ? "mtx-animate-input-open" : "",
141
+ d && "mtx-animate-input-close"
137
142
  ),
138
- onChange: (R) => c(R.target.value),
139
- value: a,
140
- startAdornment: /* @__PURE__ */ o(D, { variant: "toolbar", className: "mtx-p-0.5 mtx-h-6 mtx-w-6 mtx-border-none mtx-mx-1", onClick: f, children: /* @__PURE__ */ o(N, { className: "mtx-w-5 mtx-h-5" }) }),
141
- endAdornment: a && /* @__PURE__ */ o(D, { variant: "toolbar", className: "mtx-p-0.5 mtx-w-6 mtx-h-6 mtx-border-none mtx-mx-1", onClick: x, children: /* @__PURE__ */ o(U, { className: "mtx-w-5 mtx-h-5" }) })
143
+ onChange: (f) => l(f.target.value),
144
+ value: c,
145
+ startAdornment: /* @__PURE__ */ o(D, { variant: "toolbar", type: "button", className: "mtx-p-0.5 mtx-h-6 mtx-w-6 mtx-border-none mtx-mx-1", onClick: b, children: /* @__PURE__ */ o(G, { className: "mtx-w-5 mtx-h-5" }) }),
146
+ endAdornment: c && /* @__PURE__ */ o(D, { variant: "toolbar", type: "button", className: "mtx-p-0.5 mtx-w-6 mtx-h-6 mtx-border-none mtx-mx-1", onClick: p, children: /* @__PURE__ */ o(U, { className: "mtx-w-5 mtx-h-5" }) })
142
147
  }
143
- ) : /* @__PURE__ */ o(D, { variant: "toolbar", className: "mtx-p-0.5 mtx-w-6 mtx-h-6 mtx-m-1", onClick: h, children: /* @__PURE__ */ o(N, { className: "mtx-w-5 mtx-h-5" }) }) });
144
- }, ft = ({ freezeText: r, unFreezeText: s, onClick: i, disabled: n, ...a }) => {
145
- const c = t.useContext(p);
148
+ ) : /* @__PURE__ */ o(D, { variant: "toolbar", type: "button", className: "mtx-p-0.5 mtx-w-6 mtx-h-6 mtx-m-1", onClick: R, children: /* @__PURE__ */ o(G, { className: "mtx-w-5 mtx-h-5" }) }) });
149
+ }, pt = ({
150
+ freezeText: i,
151
+ unFreezeText: s,
152
+ onClick: a,
153
+ disabled: r,
154
+ ...n
155
+ }) => {
156
+ const c = t.useContext(w);
146
157
  if (!c)
147
158
  throw new Error("FreezeAction should be used within <DataGrid>");
148
- const [d, m] = t.useState(0), [u, l] = t.useState(0), { api: e, pinnedRowIds: x, setPinnedRowIds: h } = c, f = () => {
159
+ const [l, m] = t.useState(0), [x, d] = t.useState(0), { api: e, pinnedRowIds: u, setPinnedRowIds: h } = c, p = () => {
149
160
  if (!e) return;
150
- const C = e.getSelectedNodes();
151
- if (C.length > 0) {
152
- const w = new Set(x);
153
- C.forEach((b) => {
154
- b.id !== void 0 && w.add(b.id);
155
- }), h(w), e.deselectAll();
161
+ const f = e.getSelectedNodes();
162
+ if (f.length > 0) {
163
+ const g = new Set(u);
164
+ f.forEach((S) => {
165
+ S.id !== void 0 && g.add(S.id);
166
+ }), h(g), e.deselectAll();
156
167
  }
157
168
  }, R = () => {
158
169
  h(/* @__PURE__ */ new Set());
159
- }, E = (C) => {
160
- e && (e.getPinnedTopRowCount() > 0 ? R() : f()), i?.(C);
170
+ }, b = (f) => {
171
+ e && (e.getPinnedTopRowCount() > 0 ? R() : p()), a?.(f);
161
172
  };
162
173
  return t.useEffect(() => (e?.addEventListener("pinnedRowDataChanged", () => {
163
174
  m(e.getPinnedTopRowCount());
164
175
  }), e?.addEventListener("selectionChanged", () => {
165
- l(e.getSelectedNodes().length);
176
+ d(e.getSelectedNodes().length);
166
177
  }), () => {
167
178
  e?.isDestroyed() || (e?.removeEventListener("pinnedRowDataChanged", () => {
168
179
  m(e.getPinnedTopRowCount());
169
180
  }), e?.removeEventListener("selectionChanged", () => {
170
- l(e.getSelectedNodes().length);
181
+ d(e.getSelectedNodes().length);
171
182
  }));
172
183
  }), [e]), /* @__PURE__ */ o(
173
- y,
184
+ N,
174
185
  {
175
186
  variant: "text",
176
- onClick: E,
187
+ onClick: b,
177
188
  startIcon: /* @__PURE__ */ o($, { className: "mtx-w-4.5 mtx-h-4.5" }),
178
- disabled: !d && !u || n,
189
+ disabled: !l && !x || r,
179
190
  type: "button",
180
- ...a,
181
- children: d ? s ?? "Unfreeze" : r ?? "Freeze"
191
+ ...n,
192
+ children: l ? s ?? "Unfreeze" : i ?? "Freeze"
182
193
  }
183
194
  );
184
- }, pt = ({ children: r, className: s, onClick: i, ...n }) => {
185
- const a = t.useContext(p);
186
- if (!a)
195
+ }, ft = ({ children: i, className: s, onClick: a, ...r }) => {
196
+ const n = t.useContext(w);
197
+ if (!n)
187
198
  throw new Error("PrintAction should be used within <DataGrid>");
188
- const c = (d) => {
189
- a.api && (a.api.setGridOption("domLayout", "print"), setTimeout(() => {
190
- const m = document.querySelector("[grid-id='" + a.gridId + "']"), l = `<html>
199
+ const c = (l) => {
200
+ n.api && (n.api.setGridOption("domLayout", "print"), setTimeout(() => {
201
+ const m = document.querySelector("[grid-id='" + n.gridId + "']"), d = `<html>
191
202
  ${document.head.innerHTML}
192
203
  ${m.outerHTML}
193
204
  </html>`;
194
- V(l), a?.api?.setGridOption("domLayout", void 0);
195
- })), i?.(d);
205
+ V(d), n?.api?.setGridOption("domLayout", void 0);
206
+ })), a?.(l);
196
207
  };
197
- return /* @__PURE__ */ o(D, { variant: "toolbar", className: g("mtx-p-0.5 mtx-w-6 mtx-h-6", s), onClick: c, ...n, children: r ?? /* @__PURE__ */ o(j, { className: "mtx-w-5 mtx-h-5" }) });
198
- }, wt = ({ className: r, onRefresh: s, children: i, loading: n, ...a }) => {
199
- if (!t.useContext(p))
208
+ return /* @__PURE__ */ o(D, { variant: "toolbar", type: "button", className: C("mtx-p-0.5 mtx-w-6 mtx-h-6", s), onClick: c, ...r, children: i ?? /* @__PURE__ */ o(j, { className: "mtx-w-5 mtx-h-5" }) });
209
+ }, wt = ({ className: i, onRefresh: s, children: a, loading: r, ...n }) => {
210
+ if (!t.useContext(w))
200
211
  throw new Error("RefreshAction should be used within <DataGrid>");
201
- const d = () => {
212
+ const l = () => {
202
213
  s();
203
214
  };
204
215
  return /* @__PURE__ */ o(
205
216
  D,
206
217
  {
207
- className: g("mtx-p-0.5 mtx-w-6 mtx-h-6", n && "disabled:mtx-bg-transparent", r),
218
+ className: C("mtx-p-0.5 mtx-w-6 mtx-h-6", r && "disabled:mtx-bg-transparent", i),
208
219
  variant: "toolbar",
209
- onClick: d,
210
- disabled: n,
211
- ...a,
212
- children: i ?? /* @__PURE__ */ o(_, { className: g("mtx-w-4.5 mtx-h-4.5", n && "mtx-animate-spin") })
220
+ type: "button",
221
+ onClick: l,
222
+ disabled: r,
223
+ ...n,
224
+ children: a ?? /* @__PURE__ */ o(_, { className: C("mtx-w-4.5 mtx-h-4.5", r && "mtx-animate-spin") })
213
225
  }
214
226
  );
215
- }, gt = ({ onDelete: r, children: s, ...i }) => /* @__PURE__ */ o(y, { variant: "danger", onClick: () => {
216
- r();
217
- }, startIcon: /* @__PURE__ */ o(O, { className: "mtx-w-4.5 mtx-h-4.5" }), ...i, children: s }), Ct = ({ children: r, slotProps: s, className: i, ...n }) => /* @__PURE__ */ z(X, { ...s?.popoverProps ?? {}, children: [
227
+ }, gt = ({ onDelete: i, children: s, ...a }) => /* @__PURE__ */ o(N, { variant: "danger", type: "button", onClick: () => {
228
+ i();
229
+ }, startIcon: /* @__PURE__ */ o(O, { className: "mtx-w-4.5 mtx-h-4.5" }), ...a, children: s }), Ct = ({ children: i, slotProps: s, className: a, ...r }) => /* @__PURE__ */ z(X, { ...s?.popoverProps ?? {}, children: [
218
230
  /* @__PURE__ */ o(J, { ...s?.triggerProps ?? {}, children: /* @__PURE__ */ o(q, { className: "mtx-w-4.5 mtx-h-4.5 mtx-text-primary" }) }),
219
- /* @__PURE__ */ o(K, { align: "end", className: g("mtx-w-40", i), ...n, children: r })
231
+ /* @__PURE__ */ o(K, { align: "end", className: C("mtx-w-40", a), ...r, children: i })
220
232
  ] });
221
233
  export {
222
234
  ut as DataGrid,
@@ -224,8 +236,8 @@ export {
224
236
  Z as DataGridContent,
225
237
  gt as DeleteAction,
226
238
  Ct as ExtraActions,
227
- ft as FreezeAction,
228
- pt as PrintAction,
239
+ pt as FreezeAction,
240
+ ft as PrintAction,
229
241
  wt as RefreshAction,
230
242
  ht as SearchAction,
231
243
  Y as dataGridDefaultTheme,
@@ -1 +1 @@
1
- {"version":3,"file":"datagrid.es.js","sources":["../src/components/data-grid/DataGrid.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, { forwardRef, HTMLAttributes, useMemo } from \"react\";\r\nimport { AgGridReact, AgGridReactProps } from \"ag-grid-react\";\r\nimport { GridApi, GridReadyEvent, themeQuartz, AllCommunityModule, ModuleRegistry, Theme } from \"ag-grid-community\";\r\nimport { CircleXmark, ElipsisVertical, Magnifier, Print, Refresh, Snowflake, Trashcan } from \"@trsys-tech/matrix-icons\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { printHtml } from \"../../lib/printHtml\";\r\nimport { TextField } from \"../text-field/TextField\";\r\nimport { Button, ButtonProps } from \"../button/Button\";\r\nimport { IconButton, IconButtonProps } from \"../icon-botton/IconButton\";\r\nimport { Popover, PopoverContent, PopoverContentProps, PopoverProps, PopoverTrigger, PopoverTriggerProps } from \"../popover/Popover\";\r\n\r\n// Register all Community features\r\n// Todo: Register only the required features\r\nModuleRegistry.registerModules([AllCommunityModule]);\r\n\r\nconst dataGridDefaultTheme = themeQuartz.withParams({\r\n fontFamily: \"DMSans\",\r\n fontSize: \"12px\",\r\n headerFontSize: \"12px\",\r\n headerFontWeight: 700,\r\n headerBackgroundColor: \"oklch(var(--mtx-primary-50))\",\r\n backgroundColor: \"oklch(var(--mtx-gray-0))\",\r\n accentColor: \"oklch(var(--mtx-primary-300))\",\r\n foregroundColor: \"oklch(var(--mtx-text-500))\",\r\n cellTextColor: \"oklch(var(--mtx-text-500))\",\r\n});\r\n\r\ntype DataGridContext = {\r\n api: GridApi | null;\r\n setApi: (value: GridApi) => void;\r\n rowData: any[] | null | undefined;\r\n setRowData: (value: any[] | null | undefined) => void;\r\n gridId: string;\r\n quickFilterText: string;\r\n setQuickFilterText: (value: string) => void;\r\n actionbarExists: boolean;\r\n setActionbarExists: (value: boolean) => void;\r\n actionbarHeight: number;\r\n setActionbarHeight: (value: number) => void;\r\n pinnedRowIds: Set<string>;\r\n setPinnedRowIds: (value: Set<string>) => void;\r\n};\r\n\r\nconst DataGridContext = React.createContext<DataGridContext | null>(null);\r\n\r\nconst useDataGrid = () => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useDataGrid should be used within <DataGrid>\");\r\n }\r\n\r\n return context;\r\n};\r\n\r\ntype DataGridProps = {\r\n children: React.ReactNode;\r\n};\r\n\r\nconst DataGrid: React.FC<DataGridProps> = ({ children }) => {\r\n const gridId = React.useId();\r\n const [api, setApi] = React.useState<GridApi | null>(null);\r\n const [rowData, setRowData] = React.useState<any[] | null | undefined>([]);\r\n const [actionbarHeight, setActionbarHeight] = React.useState(0);\r\n const [pinnedRowIds, setPinnedRowIds] = React.useState<Set<string>>(new Set());\r\n\r\n const [quickFilterText, setQuickFilterText] = React.useState(\"\");\r\n const [actionbarExists, setActionbarExists] = React.useState(false);\r\n return (\r\n <DataGridContext.Provider\r\n value={{\r\n api,\r\n setApi,\r\n rowData,\r\n setRowData,\r\n gridId,\r\n quickFilterText,\r\n setQuickFilterText,\r\n actionbarExists,\r\n setActionbarExists,\r\n actionbarHeight,\r\n setActionbarHeight,\r\n pinnedRowIds,\r\n setPinnedRowIds,\r\n }}\r\n >\r\n {children}\r\n </DataGridContext.Provider>\r\n );\r\n};\r\n\r\ntype DataGridContentProps = Omit<AgGridReactProps, \"theme\"> & {\r\n theme?: Theme;\r\n};\r\n\r\nconst DataGridContent = forwardRef<AgGridReact, DataGridContentProps>(\r\n ({ theme: propTheme, onGridReady, quickFilterText: quickFilterTextProps, rowData: rowDataProps, containerStyle, getRowId, ...props }, ref) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"DataGridContent should be used within <DataGrid>\");\r\n }\r\n const { rowData, setRowData, actionbarExists, setApi, setQuickFilterText, quickFilterText, gridId, actionbarHeight, pinnedRowIds } = context;\r\n\r\n const theme = useMemo(() => {\r\n return dataGridDefaultTheme.withParams({\r\n headerHeight: 40,\r\n wrapperBorderRadius: actionbarExists ? \"0px 0px 8px 8px\" : \"8px\",\r\n });\r\n }, [actionbarExists]);\r\n\r\n const handleGridReady = (e: GridReadyEvent) => {\r\n setApi(e.api);\r\n onGridReady?.(e);\r\n };\r\n\r\n React.useEffect(() => {\r\n setRowData(rowDataProps);\r\n }, [rowDataProps, setRowData]);\r\n\r\n React.useEffect(() => {\r\n if (quickFilterTextProps !== undefined) {\r\n setQuickFilterText(quickFilterTextProps ?? \"\");\r\n }\r\n }, [quickFilterTextProps, setQuickFilterText]);\r\n\r\n const { finalRowData, finalPinnedTopRowData } = useMemo(() => {\r\n if (!rowData || pinnedRowIds.size === 0) {\r\n return { finalRowData: rowData, finalPinnedTopRowData: [] };\r\n }\r\n\r\n const pinned: any[] = [];\r\n const unpinned: any[] = [];\r\n\r\n rowData.forEach(data => {\r\n const id = getRowId ? getRowId({ data, level: 0 } as any) : (data as any).id;\r\n const stringId = id !== undefined && id !== null ? String(id) : undefined;\r\n\r\n if (stringId !== undefined && pinnedRowIds.has(stringId)) {\r\n pinned.push(data);\r\n } else {\r\n unpinned.push(data);\r\n }\r\n });\r\n\r\n return { finalRowData: unpinned, finalPinnedTopRowData: pinned };\r\n }, [rowData, pinnedRowIds, getRowId]);\r\n\r\n return (\r\n <AgGridReact\r\n gridId={gridId}\r\n theme={propTheme ?? theme}\r\n rowData={finalRowData}\r\n pinnedTopRowData={finalPinnedTopRowData}\r\n quickFilterText={quickFilterText}\r\n onGridReady={handleGridReady}\r\n containerStyle={{ height: `calc(100% - ${actionbarHeight}px)`, ...containerStyle }}\r\n getRowId={getRowId}\r\n {...props}\r\n ref={ref}\r\n />\r\n );\r\n },\r\n);\r\n\r\nDataGridContent.displayName = \"DataGridContent\";\r\n\r\ntype DatagridActionBarProps = HTMLAttributes<HTMLDivElement> & {};\r\n\r\nconst DataGridActionBar: React.FC<DatagridActionBarProps> = ({ className, ...props }) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"DataGridActionBar should be used within <DataGrid>\");\r\n }\r\n const ref = React.useRef<HTMLDivElement | null>(null);\r\n const { setActionbarExists, setActionbarHeight } = context;\r\n const { children } = props;\r\n\r\n React.useEffect(() => {\r\n setActionbarExists(true);\r\n return () => setActionbarExists(false);\r\n }, [setActionbarExists]);\r\n\r\n React.useEffect(() => {\r\n if (ref.current) {\r\n setActionbarHeight(ref.current.clientHeight);\r\n }\r\n }, [setActionbarHeight]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"mtx-relative mtx-flex mtx-items-center mtx-p-2 mtx-h-12 mtx-w-full mtx-bg-gray-0 mtx-border mtx-border-gray-200 mtx-border-b-0 -mtx-mb-[1px] mtx-z-10 mtx-rounded-t-[8px]\",\r\n className,\r\n )}\r\n ref={ref}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\ntype SearchActionProps = HTMLAttributes<HTMLDivElement> & {\r\n defaultOpen?: boolean;\r\n};\r\n\r\nconst SearchAction: React.FC<SearchActionProps> = ({ defaultOpen = false, className, ...props }) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"SearchAction should be used within <DataGrid>\");\r\n }\r\n\r\n const { quickFilterText, setQuickFilterText } = context;\r\n\r\n const [isSearchInputOpen, setIsSearchInputOpen] = React.useState(defaultOpen);\r\n const [isClosing, setIsClosing] = React.useState(false);\r\n const inputRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const handleClear = () => {\r\n context.setQuickFilterText(\"\");\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n };\r\n\r\n const handleOpen = () => {\r\n setIsSearchInputOpen(true);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (isSearchInputOpen && inputRef?.current) {\r\n inputRef.current.focus();\r\n }\r\n }, [isSearchInputOpen]);\r\n\r\n const handleClose = () => {\r\n setIsClosing(true);\r\n context.setQuickFilterText(\"\");\r\n setTimeout(() => {\r\n setIsSearchInputOpen(false);\r\n setIsClosing(false);\r\n }, 200);\r\n };\r\n\r\n return (\r\n <div className={cn(\"mtx-max-w-60\", className)} {...props}>\r\n {isSearchInputOpen || isClosing ? (\r\n <TextField\r\n ref={inputRef}\r\n className={cn(\r\n \"mtx-relative mtx-h-7.5\",\r\n isSearchInputOpen && !isClosing ? \"mtx-animate-input-open\" : \"\",\r\n isClosing && \"mtx-animate-input-close\",\r\n )}\r\n onChange={e => setQuickFilterText(e.target.value)}\r\n value={quickFilterText}\r\n startAdornment={\r\n <IconButton variant=\"toolbar\" className=\"mtx-p-0.5 mtx-h-6 mtx-w-6 mtx-border-none mtx-mx-1\" onClick={handleClose}>\r\n <Magnifier className=\"mtx-w-5 mtx-h-5\" />\r\n </IconButton>\r\n }\r\n endAdornment={\r\n quickFilterText && (\r\n <IconButton variant=\"toolbar\" className=\"mtx-p-0.5 mtx-w-6 mtx-h-6 mtx-border-none mtx-mx-1\" onClick={handleClear}>\r\n <CircleXmark className=\"mtx-w-5 mtx-h-5\" />\r\n </IconButton>\r\n )\r\n }\r\n />\r\n ) : (\r\n <IconButton variant=\"toolbar\" className=\"mtx-p-0.5 mtx-w-6 mtx-h-6 mtx-m-1\" onClick={handleOpen}>\r\n <Magnifier className=\"mtx-w-5 mtx-h-5\" />\r\n </IconButton>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\ntype FreezeActionProps = ButtonProps & {\r\n freezeText?: string;\r\n unFreezeText?: string;\r\n};\r\n\r\nconst FreezeAction: React.FC<FreezeActionProps> = ({ freezeText, unFreezeText, onClick, disabled, ...props }) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"FreezeAction should be used within <DataGrid>\");\r\n }\r\n\r\n const [pinnedRowCount, setPinnedRowCount] = React.useState(0);\r\n const [selectedRowsCount, setSelectedRowsCount] = React.useState(0);\r\n\r\n const { api, pinnedRowIds, setPinnedRowIds } = context;\r\n\r\n const freezeRows = () => {\r\n if (!api) return;\r\n\r\n // Get currently selected rows\r\n const selectedRows = api.getSelectedNodes();\r\n\r\n if (selectedRows.length > 0) {\r\n const newPinnedIds = new Set(pinnedRowIds);\r\n selectedRows.forEach(row => {\r\n if (row.id !== undefined) {\r\n newPinnedIds.add(row.id);\r\n }\r\n });\r\n setPinnedRowIds(newPinnedIds);\r\n api.deselectAll();\r\n }\r\n };\r\n\r\n const unfreezeRows = () => {\r\n setPinnedRowIds(new Set());\r\n };\r\n\r\n const handleFreezing = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (api) {\r\n const pinnedRowsCount = api.getPinnedTopRowCount();\r\n if (pinnedRowsCount > 0) {\r\n unfreezeRows();\r\n } else {\r\n freezeRows();\r\n }\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n React.useEffect(() => {\r\n api?.addEventListener(\"pinnedRowDataChanged\", () => {\r\n setPinnedRowCount(api.getPinnedTopRowCount());\r\n });\r\n\r\n api?.addEventListener(\"selectionChanged\", () => {\r\n setSelectedRowsCount(api.getSelectedNodes().length);\r\n });\r\n\r\n return () => {\r\n if (api?.isDestroyed()) return;\r\n api?.removeEventListener(\"pinnedRowDataChanged\", () => {\r\n setPinnedRowCount(api.getPinnedTopRowCount());\r\n });\r\n\r\n api?.removeEventListener(\"selectionChanged\", () => {\r\n setSelectedRowsCount(api.getSelectedNodes().length);\r\n });\r\n };\r\n }, [api]);\r\n\r\n return (\r\n <Button\r\n variant=\"text\"\r\n onClick={handleFreezing}\r\n startIcon={<Snowflake className=\"mtx-w-4.5 mtx-h-4.5\" />}\r\n disabled={(!pinnedRowCount && !selectedRowsCount) || disabled}\r\n type=\"button\"\r\n {...props}\r\n >\r\n {pinnedRowCount ? (unFreezeText ?? \"Unfreeze\") : (freezeText ?? \"Freeze\")}\r\n </Button>\r\n );\r\n};\r\n\r\ntype PrintActionProps = IconButtonProps & {};\r\n\r\nconst PrintAction: React.FC<PrintActionProps> = ({ children, className, onClick, ...props }) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"PrintAction should be used within <DataGrid>\");\r\n }\r\n\r\n const handlePrint = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (context.api) {\r\n context.api.setGridOption(\"domLayout\", \"print\");\r\n\r\n setTimeout(() => {\r\n const element = document.querySelector(\"[grid-id='\" + context.gridId + \"']\") as HTMLElement;\r\n const header = document.head;\r\n const html = `<html>\r\n ${header.innerHTML}\r\n ${element.outerHTML}\r\n </html>`;\r\n printHtml(html);\r\n context?.api?.setGridOption(\"domLayout\", undefined);\r\n });\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n return (\r\n <IconButton variant=\"toolbar\" className={cn(\"mtx-p-0.5 mtx-w-6 mtx-h-6\", className)} onClick={handlePrint} {...props}>\r\n {children ?? <Print className=\"mtx-w-5 mtx-h-5\" />}\r\n </IconButton>\r\n );\r\n};\r\n\r\ntype RefreshActionProps = Omit<IconButtonProps, \"onClick\"> & {\r\n onRefresh: () => void;\r\n};\r\n\r\nconst RefreshAction: React.FC<RefreshActionProps> = ({ className, onRefresh, children, loading, ...props }) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"RefreshAction should be used within <DataGrid>\");\r\n }\r\n\r\n const handleRefresh = () => {\r\n onRefresh();\r\n };\r\n\r\n return (\r\n <IconButton\r\n className={cn(\"mtx-p-0.5 mtx-w-6 mtx-h-6\", loading && \"disabled:mtx-bg-transparent\", className)}\r\n variant=\"toolbar\"\r\n onClick={handleRefresh}\r\n disabled={loading}\r\n {...props}\r\n >\r\n {children ?? <Refresh className={cn(\"mtx-w-4.5 mtx-h-4.5\", loading && \"mtx-animate-spin\")} />}\r\n </IconButton>\r\n );\r\n};\r\n\r\ntype DeleteActionProps = Omit<ButtonProps, \"onClick\"> & {\r\n onDelete: () => void;\r\n};\r\n\r\nconst DeleteAction: React.FC<DeleteActionProps> = ({ onDelete, children, ...props }) => {\r\n const handleDelete = () => {\r\n onDelete();\r\n };\r\n\r\n return (\r\n <Button variant=\"danger\" onClick={handleDelete} startIcon={<Trashcan className=\"mtx-w-4.5 mtx-h-4.5\" />} {...props}>\r\n {children}\r\n </Button>\r\n );\r\n};\r\n\r\ntype ExtraActionsProps = PopoverContentProps & {\r\n children: React.ReactNode;\r\n slotProps?: {\r\n triggerProps?: PopoverTriggerProps;\r\n popoverProps?: PopoverProps;\r\n };\r\n};\r\n\r\nconst ExtraActions: React.FC<ExtraActionsProps> = ({ children, slotProps, className, ...props }) => {\r\n return (\r\n <Popover {...(slotProps?.popoverProps ?? {})}>\r\n <PopoverTrigger {...(slotProps?.triggerProps ?? {})}>\r\n <ElipsisVertical className=\"mtx-w-4.5 mtx-h-4.5 mtx-text-primary\" />\r\n </PopoverTrigger>\r\n <PopoverContent align=\"end\" className={cn(\"mtx-w-40\", className)} {...props}>\r\n {children}\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n};\r\n\r\nexport {\r\n DataGrid,\r\n DataGridContent,\r\n DataGridActionBar,\r\n SearchAction,\r\n FreezeAction,\r\n PrintAction,\r\n RefreshAction,\r\n ExtraActions,\r\n DeleteAction,\r\n type DataGridProps,\r\n type DataGridContentProps,\r\n type DatagridActionBarProps,\r\n type SearchActionProps,\r\n type FreezeActionProps,\r\n type RefreshActionProps,\r\n type ExtraActionsProps,\r\n type DeleteActionProps,\r\n useDataGrid,\r\n dataGridDefaultTheme,\r\n};\r\n"],"names":["ModuleRegistry","AllCommunityModule","dataGridDefaultTheme","themeQuartz","DataGridContext","React","useDataGrid","context","DataGrid","children","gridId","api","setApi","rowData","setRowData","actionbarHeight","setActionbarHeight","pinnedRowIds","setPinnedRowIds","quickFilterText","setQuickFilterText","actionbarExists","setActionbarExists","jsx","DataGridContent","forwardRef","propTheme","onGridReady","quickFilterTextProps","rowDataProps","containerStyle","getRowId","props","ref","theme","useMemo","handleGridReady","e","finalRowData","finalPinnedTopRowData","pinned","unpinned","data","id","stringId","AgGridReact","DataGridActionBar","className","cn","SearchAction","defaultOpen","isSearchInputOpen","setIsSearchInputOpen","isClosing","setIsClosing","inputRef","handleClear","handleOpen","handleClose","TextField","IconButton","Magnifier","CircleXmark","FreezeAction","freezeText","unFreezeText","onClick","disabled","pinnedRowCount","setPinnedRowCount","selectedRowsCount","setSelectedRowsCount","freezeRows","selectedRows","newPinnedIds","row","unfreezeRows","handleFreezing","Button","Snowflake","PrintAction","handlePrint","element","html","printHtml","Print","RefreshAction","onRefresh","loading","handleRefresh","Refresh","DeleteAction","onDelete","Trashcan","ExtraActions","slotProps","Popover","PopoverTrigger","ElipsisVertical","PopoverContent"],"mappings":";;;;;;;;;;;AAgBAA,EAAe,gBAAgB,CAACC,CAAkB,CAAC;AAEnD,MAAMC,IAAuBC,EAAY,WAAW;AAAA,EAClD,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AACjB,CAAC,GAkBKC,IAAkBC,EAAM,cAAsC,IAAI,GAElEC,KAAc,MAAM;AACxB,QAAMC,IAAUF,EAAM,WAAWD,CAAe;AAEhD,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,8CAA8C;AAGhE,SAAOA;AACT,GAMMC,KAAoC,CAAC,EAAE,UAAAC,QAAe;AAC1D,QAAMC,IAASL,EAAM,MAAA,GACf,CAACM,GAAKC,CAAM,IAAIP,EAAM,SAAyB,IAAI,GACnD,CAACQ,GAASC,CAAU,IAAIT,EAAM,SAAmC,CAAA,CAAE,GACnE,CAACU,GAAiBC,CAAkB,IAAIX,EAAM,SAAS,CAAC,GACxD,CAACY,GAAcC,CAAe,IAAIb,EAAM,SAAsB,oBAAI,KAAK,GAEvE,CAACc,GAAiBC,CAAkB,IAAIf,EAAM,SAAS,EAAE,GACzD,CAACgB,GAAiBC,CAAkB,IAAIjB,EAAM,SAAS,EAAK;AAClE,SACE,gBAAAkB;AAAA,IAACnB,EAAgB;AAAA,IAAhB;AAAA,MACC,OAAO;AAAA,QACL,KAAAO;AAAA,QACA,QAAAC;AAAA,QACA,SAAAC;AAAA,QACA,YAAAC;AAAA,QACA,QAAAJ;AAAA,QACA,iBAAAS;AAAA,QACA,oBAAAC;AAAA,QACA,iBAAAC;AAAA,QACA,oBAAAC;AAAA,QACA,iBAAAP;AAAA,QACA,oBAAAC;AAAA,QACA,cAAAC;AAAA,QACA,iBAAAC;AAAA,MAAA;AAAA,MAGD,UAAAT;AAAA,IAAA;AAAA,EAAA;AAGP,GAMMe,IAAkBC;AAAA,EACtB,CAAC,EAAE,OAAOC,GAAW,aAAAC,GAAa,iBAAiBC,GAAsB,SAASC,GAAc,gBAAAC,GAAgB,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAAQ;AAC5I,UAAM1B,IAAUF,EAAM,WAAWD,CAAe;AAEhD,QAAI,CAACG;AACH,YAAM,IAAI,MAAM,kDAAkD;AAEpE,UAAM,EAAE,SAAAM,GAAS,YAAAC,GAAY,iBAAAO,GAAiB,QAAAT,GAAQ,oBAAAQ,GAAoB,iBAAAD,GAAiB,QAAAT,GAAQ,iBAAAK,GAAiB,cAAAE,EAAA,IAAiBV,GAE/H2B,IAAQC,EAAQ,MACbjC,EAAqB,WAAW;AAAA,MACrC,cAAc;AAAA,MACd,qBAAqBmB,IAAkB,oBAAoB;AAAA,IAAA,CAC5D,GACA,CAACA,CAAe,CAAC,GAEde,IAAkB,CAACC,MAAsB;AAC7C,MAAAzB,EAAOyB,EAAE,GAAG,GACZV,IAAcU,CAAC;AAAA,IACjB;AAEAhC,IAAAA,EAAM,UAAU,MAAM;AACpB,MAAAS,EAAWe,CAAY;AAAA,IACzB,GAAG,CAACA,GAAcf,CAAU,CAAC,GAE7BT,EAAM,UAAU,MAAM;AACpB,MAAIuB,MAAyB,UAC3BR,EAAmBQ,KAAwB,EAAE;AAAA,IAEjD,GAAG,CAACA,GAAsBR,CAAkB,CAAC;AAE7C,UAAM,EAAE,cAAAkB,GAAc,uBAAAC,EAAA,IAA0BJ,EAAQ,MAAM;AAC5D,UAAI,CAACtB,KAAWI,EAAa,SAAS;AACpC,eAAO,EAAE,cAAcJ,GAAS,uBAAuB,CAAA,EAAC;AAG1D,YAAM2B,IAAgB,CAAA,GAChBC,IAAkB,CAAA;AAExB,aAAA5B,EAAQ,QAAQ,CAAA6B,MAAQ;AACtB,cAAMC,IAAKZ,IAAWA,EAAS,EAAE,MAAAW,GAAM,OAAO,EAAA,CAAU,IAAKA,EAAa,IACpEE,IAA+BD,KAAO,OAAO,OAAOA,CAAE,IAAI;AAEhE,QAAIC,MAAa,UAAa3B,EAAa,IAAI2B,CAAQ,IACrDJ,EAAO,KAAKE,CAAI,IAEhBD,EAAS,KAAKC,CAAI;AAAA,MAEtB,CAAC,GAEM,EAAE,cAAcD,GAAU,uBAAuBD,EAAA;AAAA,IAC1D,GAAG,CAAC3B,GAASI,GAAcc,CAAQ,CAAC;AAEpC,WACE,gBAAAR;AAAA,MAACsB;AAAA,MAAA;AAAA,QACC,QAAAnC;AAAA,QACA,OAAOgB,KAAaQ;AAAA,QACpB,SAASI;AAAA,QACT,kBAAkBC;AAAA,QAClB,iBAAApB;AAAA,QACA,aAAaiB;AAAA,QACb,gBAAgB,EAAE,QAAQ,eAAerB,CAAe,OAAO,GAAGe,EAAA;AAAA,QAClE,UAAAC;AAAA,QACC,GAAGC;AAAA,QACJ,KAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEAT,EAAgB,cAAc;AAI9B,MAAMsB,KAAsD,CAAC,EAAE,WAAAC,GAAW,GAAGf,QAAY;AACvF,QAAMzB,IAAUF,EAAM,WAAWD,CAAe;AAEhD,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,oDAAoD;AAEtE,QAAM0B,IAAM5B,EAAM,OAA8B,IAAI,GAC9C,EAAE,oBAAAiB,GAAoB,oBAAAN,EAAA,IAAuBT,GAC7C,EAAE,UAAAE,MAAauB;AAErB3B,SAAAA,EAAM,UAAU,OACdiB,EAAmB,EAAI,GAChB,MAAMA,EAAmB,EAAK,IACpC,CAACA,CAAkB,CAAC,GAEvBjB,EAAM,UAAU,MAAM;AACpB,IAAI4B,EAAI,WACNjB,EAAmBiB,EAAI,QAAQ,YAAY;AAAA,EAE/C,GAAG,CAACjB,CAAkB,CAAC,GAGrB,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWyB;AAAA,QACT;AAAA,QACAD;AAAA,MAAA;AAAA,MAEF,KAAAd;AAAA,MAEC,UAAAxB;AAAA,IAAA;AAAA,EAAA;AAGP,GAMMwC,KAA4C,CAAC,EAAE,aAAAC,IAAc,IAAO,WAAAH,GAAW,GAAGf,QAAY;AAClG,QAAMzB,IAAUF,EAAM,WAAWD,CAAe;AAEhD,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,+CAA+C;AAGjE,QAAM,EAAE,iBAAAY,GAAiB,oBAAAC,EAAA,IAAuBb,GAE1C,CAAC4C,GAAmBC,CAAoB,IAAI/C,EAAM,SAAS6C,CAAW,GACtE,CAACG,GAAWC,CAAY,IAAIjD,EAAM,SAAS,EAAK,GAChDkD,IAAWlD,EAAM,OAAgC,IAAI,GAErDmD,IAAc,MAAM;AACxB,IAAAjD,EAAQ,mBAAmB,EAAE,GACzBgD,EAAS,WACXA,EAAS,QAAQ,MAAA;AAAA,EAErB,GAEME,IAAa,MAAM;AACvB,IAAAL,EAAqB,EAAI;AAAA,EAC3B;AAEA/C,EAAAA,EAAM,UAAU,MAAM;AACpB,IAAI8C,KAAqBI,GAAU,WACjCA,EAAS,QAAQ,MAAA;AAAA,EAErB,GAAG,CAACJ,CAAiB,CAAC;AAEtB,QAAMO,IAAc,MAAM;AACxB,IAAAJ,EAAa,EAAI,GACjB/C,EAAQ,mBAAmB,EAAE,GAC7B,WAAW,MAAM;AACf,MAAA6C,EAAqB,EAAK,GAC1BE,EAAa,EAAK;AAAA,IACpB,GAAG,GAAG;AAAA,EACR;AAEA,SACE,gBAAA/B,EAAC,OAAA,EAAI,WAAWyB,EAAG,gBAAgBD,CAAS,GAAI,GAAGf,GAChD,UAAAmB,KAAqBE,IACpB,gBAAA9B;AAAA,IAACoC;AAAA,IAAA;AAAA,MACC,KAAKJ;AAAA,MACL,WAAWP;AAAA,QACT;AAAA,QACAG,KAAqB,CAACE,IAAY,2BAA2B;AAAA,QAC7DA,KAAa;AAAA,MAAA;AAAA,MAEf,UAAU,CAAAhB,MAAKjB,EAAmBiB,EAAE,OAAO,KAAK;AAAA,MAChD,OAAOlB;AAAA,MACP,gBACE,gBAAAI,EAACqC,GAAA,EAAW,SAAQ,WAAU,WAAU,sDAAqD,SAASF,GACpG,UAAA,gBAAAnC,EAACsC,GAAA,EAAU,WAAU,mBAAkB,GACzC;AAAA,MAEF,cACE1C,KACE,gBAAAI,EAACqC,GAAA,EAAW,SAAQ,WAAU,WAAU,sDAAqD,SAASJ,GACpG,UAAA,gBAAAjC,EAACuC,GAAA,EAAY,WAAU,mBAAkB,EAAA,CAC3C;AAAA,IAAA;AAAA,EAAA,IAKN,gBAAAvC,EAACqC,GAAA,EAAW,SAAQ,WAAU,WAAU,qCAAoC,SAASH,GACnF,UAAA,gBAAAlC,EAACsC,GAAA,EAAU,WAAU,kBAAA,CAAkB,GACzC,GAEJ;AAEJ,GAOME,KAA4C,CAAC,EAAE,YAAAC,GAAY,cAAAC,GAAc,SAAAC,GAAS,UAAAC,GAAU,GAAGnC,QAAY;AAC/G,QAAMzB,IAAUF,EAAM,WAAWD,CAAe;AAEhD,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,+CAA+C;AAGjE,QAAM,CAAC6D,GAAgBC,CAAiB,IAAIhE,EAAM,SAAS,CAAC,GACtD,CAACiE,GAAmBC,CAAoB,IAAIlE,EAAM,SAAS,CAAC,GAE5D,EAAE,KAAAM,GAAK,cAAAM,GAAc,iBAAAC,EAAA,IAAoBX,GAEzCiE,IAAa,MAAM;AACvB,QAAI,CAAC7D,EAAK;AAGV,UAAM8D,IAAe9D,EAAI,iBAAA;AAEzB,QAAI8D,EAAa,SAAS,GAAG;AAC3B,YAAMC,IAAe,IAAI,IAAIzD,CAAY;AACzC,MAAAwD,EAAa,QAAQ,CAAAE,MAAO;AAC1B,QAAIA,EAAI,OAAO,UACbD,EAAa,IAAIC,EAAI,EAAE;AAAA,MAE3B,CAAC,GACDzD,EAAgBwD,CAAY,GAC5B/D,EAAI,YAAA;AAAA,IACN;AAAA,EACF,GAEMiE,IAAe,MAAM;AACzB,IAAA1D,EAAgB,oBAAI,KAAK;AAAA,EAC3B,GAEM2D,IAAiB,CAACxC,MAA2C;AACjE,IAAI1B,MACsBA,EAAI,qBAAA,IACN,IACpBiE,EAAA,IAEAJ,EAAA,IAGJN,IAAU7B,CAAC;AAAA,EACb;AAEAhC,SAAAA,EAAM,UAAU,OACdM,GAAK,iBAAiB,wBAAwB,MAAM;AAClD,IAAA0D,EAAkB1D,EAAI,sBAAsB;AAAA,EAC9C,CAAC,GAEDA,GAAK,iBAAiB,oBAAoB,MAAM;AAC9C,IAAA4D,EAAqB5D,EAAI,iBAAA,EAAmB,MAAM;AAAA,EACpD,CAAC,GAEM,MAAM;AACX,IAAIA,GAAK,kBACTA,GAAK,oBAAoB,wBAAwB,MAAM;AACrD,MAAA0D,EAAkB1D,EAAI,sBAAsB;AAAA,IAC9C,CAAC,GAEDA,GAAK,oBAAoB,oBAAoB,MAAM;AACjD,MAAA4D,EAAqB5D,EAAI,iBAAA,EAAmB,MAAM;AAAA,IACpD,CAAC;AAAA,EACH,IACC,CAACA,CAAG,CAAC,GAGN,gBAAAY;AAAA,IAACuD;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,SAASD;AAAA,MACT,WAAW,gBAAAtD,EAACwD,GAAA,EAAU,WAAU,sBAAA,CAAsB;AAAA,MACtD,UAAW,CAACX,KAAkB,CAACE,KAAsBH;AAAA,MACrD,MAAK;AAAA,MACJ,GAAGnC;AAAA,MAEH,UAAAoC,IAAkBH,KAAgB,aAAeD,KAAc;AAAA,IAAA;AAAA,EAAA;AAGtE,GAIMgB,KAA0C,CAAC,EAAE,UAAAvE,GAAU,WAAAsC,GAAW,SAAAmB,GAAS,GAAGlC,QAAY;AAC9F,QAAMzB,IAAUF,EAAM,WAAWD,CAAe;AAEhD,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,8CAA8C;AAGhE,QAAM0E,IAAc,CAAC5C,MAA2C;AAC9D,IAAI9B,EAAQ,QACVA,EAAQ,IAAI,cAAc,aAAa,OAAO,GAE9C,WAAW,MAAM;AACf,YAAM2E,IAAU,SAAS,cAAc,eAAe3E,EAAQ,SAAS,IAAI,GAErE4E,IAAO;AAAA,UADE,SAAS,KAEf,SAAS;AAAA,UAChBD,EAAQ,SAAS;AAAA;AAEnB,MAAAE,EAAUD,CAAI,GACd5E,GAAS,KAAK,cAAc,aAAa,MAAS;AAAA,IACpD,CAAC,IAEH2D,IAAU7B,CAAC;AAAA,EACb;AAEA,2BACGuB,GAAA,EAAW,SAAQ,WAAU,WAAWZ,EAAG,6BAA6BD,CAAS,GAAG,SAASkC,GAAc,GAAGjD,GAC5G,UAAAvB,uBAAa4E,GAAA,EAAM,WAAU,mBAAkB,GAClD;AAEJ,GAMMC,KAA8C,CAAC,EAAE,WAAAvC,GAAW,WAAAwC,GAAW,UAAA9E,GAAU,SAAA+E,GAAS,GAAGxD,QAAY;AAG7G,MAAI,CAFY3B,EAAM,WAAWD,CAAe;AAG9C,UAAM,IAAI,MAAM,gDAAgD;AAGlE,QAAMqF,IAAgB,MAAM;AAC1B,IAAAF,EAAA;AAAA,EACF;AAEA,SACE,gBAAAhE;AAAA,IAACqC;AAAA,IAAA;AAAA,MACC,WAAWZ,EAAG,6BAA6BwC,KAAW,+BAA+BzC,CAAS;AAAA,MAC9F,SAAQ;AAAA,MACR,SAAS0C;AAAA,MACT,UAAUD;AAAA,MACT,GAAGxD;AAAA,MAEH,UAAAvB,uBAAaiF,GAAA,EAAQ,WAAW1C,EAAG,uBAAuBwC,KAAW,kBAAkB,EAAA,CAAG;AAAA,IAAA;AAAA,EAAA;AAGjG,GAMMG,KAA4C,CAAC,EAAE,UAAAC,GAAU,UAAAnF,GAAU,GAAGuB,QAMxE,gBAAAT,EAACuD,GAAA,EAAO,SAAQ,UAAS,SALN,MAAM;AACzB,EAAAc,EAAA;AACF,GAGkD,WAAW,gBAAArE,EAACsE,GAAA,EAAS,WAAU,sBAAA,CAAsB,GAAK,GAAG7D,GAC1G,UAAAvB,GACH,GAYEqF,KAA4C,CAAC,EAAE,UAAArF,GAAU,WAAAsF,GAAW,WAAAhD,GAAW,GAAGf,0BAEnFgE,GAAA,EAAS,GAAID,GAAW,gBAAgB,CAAA,GACvC,UAAA;AAAA,EAAA,gBAAAxE,EAAC0E,GAAA,EAAgB,GAAIF,GAAW,gBAAgB,CAAA,GAC9C,UAAA,gBAAAxE,EAAC2E,GAAA,EAAgB,WAAU,uCAAA,CAAuC,EAAA,CACpE;AAAA,EACA,gBAAA3E,EAAC4E,GAAA,EAAe,OAAM,OAAM,WAAWnD,EAAG,YAAYD,CAAS,GAAI,GAAGf,GACnE,UAAAvB,EAAA,CACH;AAAA,GACF;"}
1
+ {"version":3,"file":"datagrid.es.js","sources":["../src/components/data-grid/DataGrid.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, { forwardRef, HTMLAttributes, useMemo } from \"react\";\r\nimport { AgGridReact, AgGridReactProps } from \"ag-grid-react\";\r\nimport { GridApi, GridReadyEvent, themeQuartz, AllCommunityModule, ModuleRegistry, Theme } from \"ag-grid-community\";\r\nimport { CircleXmark, ElipsisVertical, Magnifier, Print, Refresh, Snowflake, Trashcan } from \"@trsys-tech/matrix-icons\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { printHtml } from \"../../lib/printHtml\";\r\nimport { TextField } from \"../text-field/TextField\";\r\nimport { Button, ButtonProps } from \"../button/Button\";\r\nimport { IconButton, IconButtonProps } from \"../icon-botton/IconButton\";\r\nimport { Popover, PopoverContent, PopoverContentProps, PopoverProps, PopoverTrigger, PopoverTriggerProps } from \"../popover/Popover\";\r\n\r\n// Register all Community features\r\n// Todo: Register only the required features\r\nModuleRegistry.registerModules([AllCommunityModule]);\r\n\r\n/**\r\n * Default ag-Grid theme used by DataGrid.\r\n */\r\nconst dataGridDefaultTheme = themeQuartz.withParams({\r\n fontFamily: \"DMSans\",\r\n fontSize: \"12px\",\r\n headerFontSize: \"12px\",\r\n headerFontWeight: 700,\r\n headerBackgroundColor: \"oklch(var(--mtx-primary-50))\",\r\n backgroundColor: \"oklch(var(--mtx-gray-0))\",\r\n accentColor: \"oklch(var(--mtx-primary-300))\",\r\n foregroundColor: \"oklch(var(--mtx-text-500))\",\r\n cellTextColor: \"oklch(var(--mtx-text-500))\",\r\n});\r\n\r\n/**\r\n * Shared DataGrid state exposed through context.\r\n */\r\ntype DataGridContext = {\r\n api: GridApi | null;\r\n setApi: (value: GridApi) => void;\r\n rowData: any[] | null | undefined;\r\n setRowData: (value: any[] | null | undefined) => void;\r\n gridId: string;\r\n quickFilterText: string;\r\n setQuickFilterText: (value: string) => void;\r\n actionbarExists: boolean;\r\n setActionbarExists: (value: boolean) => void;\r\n actionbarHeight: number;\r\n setActionbarHeight: (value: number) => void;\r\n pinnedRowIds: Set<string>;\r\n setPinnedRowIds: (value: Set<string>) => void;\r\n};\r\n\r\nconst DataGridContext = React.createContext<DataGridContext | null>(null);\r\n\r\n/**\r\n * Returns the current DataGrid context.\r\n */\r\nconst useDataGrid = () => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useDataGrid should be used within <DataGrid>\");\r\n }\r\n\r\n return context;\r\n};\r\n\r\n/**\r\n * Props for the root DataGrid provider.\r\n */\r\ntype DataGridProps = {\r\n /** Content rendered inside the provider. */\r\n children: React.ReactNode;\r\n};\r\n\r\n/**\r\n * DataGrid provider.\r\n * Provides shared state for the grid shell, content, and toolbar actions.\r\n * @param {DataGridProps} props - DataGrid props.\r\n * @param {React.ReactNode} children - Content rendered inside the provider.\r\n * @returns {React.ReactElement}\r\n */\r\nconst DataGrid: React.FC<DataGridProps> = ({ children }) => {\r\n const gridId = React.useId();\r\n const [api, setApi] = React.useState<GridApi | null>(null);\r\n const [rowData, setRowData] = React.useState<any[] | null | undefined>([]);\r\n const [actionbarHeight, setActionbarHeight] = React.useState(0);\r\n const [pinnedRowIds, setPinnedRowIds] = React.useState<Set<string>>(new Set());\r\n\r\n const [quickFilterText, setQuickFilterText] = React.useState(\"\");\r\n const [actionbarExists, setActionbarExists] = React.useState(false);\r\n return (\r\n <DataGridContext.Provider\r\n value={{\r\n api,\r\n setApi,\r\n rowData,\r\n setRowData,\r\n gridId,\r\n quickFilterText,\r\n setQuickFilterText,\r\n actionbarExists,\r\n setActionbarExists,\r\n actionbarHeight,\r\n setActionbarHeight,\r\n pinnedRowIds,\r\n setPinnedRowIds,\r\n }}\r\n >\r\n {children}\r\n </DataGridContext.Provider>\r\n );\r\n};\r\n\r\n/**\r\n * Props for the Ag Grid content wrapper.\r\n */\r\ntype DataGridContentProps = Omit<AgGridReactProps, \"theme\"> & {\r\n /** Optional theme override forwarded to ag-Grid. */\r\n theme?: Theme;\r\n};\r\n\r\n/**\r\n * DataGridContent component.\r\n * Connects ag-Grid to the shared DataGrid context and keeps pinned rows separate from the main row set.\r\n * @param {DataGridContentProps} props - Ag Grid props.\r\n * @param {Theme} [theme] - Optional ag-Grid theme override.\r\n * @param {GridReadyEvent} [onGridReady] - Called when the grid becomes ready.\r\n * @param {any[] | null | undefined} [rowData] - Row data rendered by the grid.\r\n * @param {string} [quickFilterText] - Quick filter text synced from the search action.\r\n * @param {React.CSSProperties} [containerStyle] - Inline styles applied to the grid container.\r\n * @param {Function} [getRowId] - Resolves the row id used to keep pinned rows stable.\r\n * @param {React.ForwardedRef<AgGridReact>} ref - Grid ref.\r\n * @returns {React.ReactElement}\r\n */\r\nconst DataGridContent = forwardRef<AgGridReact, DataGridContentProps>(\r\n ({ theme: propTheme, onGridReady, quickFilterText: quickFilterTextProps, rowData: rowDataProps, containerStyle, getRowId, ...props }, ref) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"DataGridContent should be used within <DataGrid>\");\r\n }\r\n const { rowData, setRowData, actionbarExists, setApi, setQuickFilterText, quickFilterText, gridId, actionbarHeight, pinnedRowIds } = context;\r\n\r\n const theme = useMemo(() => {\r\n return dataGridDefaultTheme.withParams({\r\n headerHeight: 40,\r\n wrapperBorderRadius: actionbarExists ? \"0px 0px 8px 8px\" : \"8px\",\r\n });\r\n }, [actionbarExists]);\r\n\r\n const handleGridReady = (e: GridReadyEvent) => {\r\n setApi(e.api);\r\n onGridReady?.(e);\r\n };\r\n\r\n React.useEffect(() => {\r\n setRowData(rowDataProps);\r\n }, [rowDataProps, setRowData]);\r\n\r\n React.useEffect(() => {\r\n if (quickFilterTextProps !== undefined) {\r\n setQuickFilterText(quickFilterTextProps ?? \"\");\r\n }\r\n }, [quickFilterTextProps, setQuickFilterText]);\r\n\r\n const { finalRowData, finalPinnedTopRowData } = useMemo(() => {\r\n if (!rowData || pinnedRowIds.size === 0) {\r\n return { finalRowData: rowData, finalPinnedTopRowData: [] };\r\n }\r\n\r\n const pinned: any[] = [];\r\n const unpinned: any[] = [];\r\n\r\n rowData.forEach(data => {\r\n const id = getRowId ? getRowId({ data, level: 0 } as any) : (data as any).id;\r\n const stringId = id !== undefined && id !== null ? String(id) : undefined;\r\n\r\n if (stringId !== undefined && pinnedRowIds.has(stringId)) {\r\n pinned.push(data);\r\n } else {\r\n unpinned.push(data);\r\n }\r\n });\r\n\r\n return { finalRowData: unpinned, finalPinnedTopRowData: pinned };\r\n }, [rowData, pinnedRowIds, getRowId]);\r\n\r\n return (\r\n <AgGridReact\r\n gridId={gridId}\r\n theme={propTheme ?? theme}\r\n rowData={finalRowData}\r\n pinnedTopRowData={finalPinnedTopRowData}\r\n quickFilterText={quickFilterText}\r\n onGridReady={handleGridReady}\r\n containerStyle={{ height: `calc(100% - ${actionbarHeight}px)`, ...containerStyle }}\r\n getRowId={getRowId}\r\n {...props}\r\n ref={ref}\r\n />\r\n );\r\n },\r\n);\r\n\r\nDataGridContent.displayName = \"DataGridContent\";\r\n\r\n/**\r\n * Props for the DataGrid action bar container.\r\n */\r\ntype DatagridActionBarProps = HTMLAttributes<HTMLDivElement> & {};\r\n\r\n/**\r\n * DataGrid action bar.\r\n * Marks the grid as having a toolbar so the grid can adjust border radius and height.\r\n * @param {DatagridActionBarProps} props - Action bar props.\r\n * @param {React.ReactNode} children - Action bar content.\r\n * @param {string} className - Additional classes applied to the action bar.\r\n * @returns {React.ReactElement}\r\n */\r\nconst DataGridActionBar: React.FC<DatagridActionBarProps> = ({ className, ...props }) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"DataGridActionBar should be used within <DataGrid>\");\r\n }\r\n const ref = React.useRef<HTMLDivElement | null>(null);\r\n const { setActionbarExists, setActionbarHeight } = context;\r\n const { children } = props;\r\n\r\n React.useEffect(() => {\r\n setActionbarExists(true);\r\n return () => setActionbarExists(false);\r\n }, [setActionbarExists]);\r\n\r\n React.useEffect(() => {\r\n if (ref.current) {\r\n setActionbarHeight(ref.current.clientHeight);\r\n }\r\n }, [setActionbarHeight]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"mtx-relative mtx-flex mtx-items-center mtx-p-2 mtx-h-12 mtx-w-full mtx-bg-gray-0 mtx-border mtx-border-gray-200 mtx-border-b-0 -mtx-mb-[1px] mtx-z-10 mtx-rounded-t-[8px]\",\r\n className,\r\n )}\r\n ref={ref}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Props for SearchAction.\r\n */\r\ntype SearchActionProps = HTMLAttributes<HTMLDivElement> & {\r\n /** Opens the search input immediately on mount. */\r\n defaultOpen?: boolean;\r\n /** Focuses the input the first time it opens. */\r\n defaultOpenAutoFocus?: boolean;\r\n};\r\n\r\n/**\r\n * Search action.\r\n * Toggles the quick filter input and manages its open/close focus behavior.\r\n * @param {SearchActionProps} props - Search action props.\r\n * @param {boolean} [defaultOpen] - Opens the search input immediately on mount.\r\n * @param {boolean} [defaultOpenAutoFocus] - Focuses the input the first time it opens.\r\n * @param {React.ReactNode} children - Optional wrapper content.\r\n * @param {string} className - Additional wrapper classes.\r\n * @returns {React.ReactElement}\r\n */\r\nconst SearchAction: React.FC<SearchActionProps> = ({\r\n defaultOpen = false,\r\n defaultOpenAutoFocus = true,\r\n className,\r\n ...props\r\n}: SearchActionProps): React.ReactElement => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"SearchAction should be used within <DataGrid>\");\r\n }\r\n\r\n const { quickFilterText, setQuickFilterText } = context;\r\n\r\n const [isSearchInputOpen, setIsSearchInputOpen] = React.useState(defaultOpen);\r\n const [isClosing, setIsClosing] = React.useState(false);\r\n const inputRef = React.useRef<HTMLInputElement | null>(null);\r\n const isFirstRender = React.useRef(true);\r\n\r\n const handleClear = () => {\r\n context.setQuickFilterText(\"\");\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n };\r\n\r\n const handleOpen = () => {\r\n setIsSearchInputOpen(true);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (isSearchInputOpen && inputRef?.current && (defaultOpenAutoFocus || !isFirstRender.current)) {\r\n inputRef.current.focus();\r\n }\r\n isFirstRender.current = false;\r\n }, [isSearchInputOpen, defaultOpenAutoFocus]);\r\n\r\n const handleClose = () => {\r\n setIsClosing(true);\r\n context.setQuickFilterText(\"\");\r\n setTimeout(() => {\r\n setIsSearchInputOpen(false);\r\n setIsClosing(false);\r\n }, 200);\r\n };\r\n\r\n return (\r\n <div className={cn(\"mtx-max-w-60\", className)} {...props}>\r\n {isSearchInputOpen || isClosing ? (\r\n <TextField\r\n ref={inputRef}\r\n className={cn(\r\n \"mtx-relative mtx-h-7.5\",\r\n isSearchInputOpen && !isClosing ? \"mtx-animate-input-open\" : \"\",\r\n isClosing && \"mtx-animate-input-close\",\r\n )}\r\n onChange={e => setQuickFilterText(e.target.value)}\r\n value={quickFilterText}\r\n startAdornment={\r\n <IconButton variant=\"toolbar\" type=\"button\" className=\"mtx-p-0.5 mtx-h-6 mtx-w-6 mtx-border-none mtx-mx-1\" onClick={handleClose}>\r\n <Magnifier className=\"mtx-w-5 mtx-h-5\" />\r\n </IconButton>\r\n }\r\n endAdornment={\r\n quickFilterText && (\r\n <IconButton variant=\"toolbar\" type=\"button\" className=\"mtx-p-0.5 mtx-w-6 mtx-h-6 mtx-border-none mtx-mx-1\" onClick={handleClear}>\r\n <CircleXmark className=\"mtx-w-5 mtx-h-5\" />\r\n </IconButton>\r\n )\r\n }\r\n />\r\n ) : (\r\n <IconButton variant=\"toolbar\" type=\"button\" className=\"mtx-p-0.5 mtx-w-6 mtx-h-6 mtx-m-1\" onClick={handleOpen}>\r\n <Magnifier className=\"mtx-w-5 mtx-h-5\" />\r\n </IconButton>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Props for FreezeAction.\r\n */\r\ntype FreezeActionProps = ButtonProps & {\r\n /** Label shown when rows can be frozen. */\r\n freezeText?: string;\r\n /** Label shown when rows are already frozen. */\r\n unFreezeText?: string;\r\n};\r\n\r\n/**\r\n * Freeze action.\r\n * Pins the current selection when rows are selected, or clears pinned rows when the grid is already frozen.\r\n * @param {FreezeActionProps} props - Freeze action props.\r\n * @param {boolean} [disabled] - Disables the action button.\r\n * @param {React.MouseEventHandler<HTMLButtonElement>} [onClick] - Called after the freeze toggle runs.\r\n * @returns {React.ReactElement}\r\n */\r\nconst FreezeAction: React.FC<FreezeActionProps> = ({\r\n freezeText,\r\n unFreezeText,\r\n onClick,\r\n disabled,\r\n ...props\r\n}: FreezeActionProps): React.ReactElement => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"FreezeAction should be used within <DataGrid>\");\r\n }\r\n\r\n const [pinnedRowCount, setPinnedRowCount] = React.useState(0);\r\n const [selectedRowsCount, setSelectedRowsCount] = React.useState(0);\r\n\r\n const { api, pinnedRowIds, setPinnedRowIds } = context;\r\n\r\n const freezeRows = () => {\r\n if (!api) return;\r\n\r\n // Get currently selected rows\r\n const selectedRows = api.getSelectedNodes();\r\n\r\n if (selectedRows.length > 0) {\r\n const newPinnedIds = new Set(pinnedRowIds);\r\n selectedRows.forEach(row => {\r\n if (row.id !== undefined) {\r\n newPinnedIds.add(row.id);\r\n }\r\n });\r\n setPinnedRowIds(newPinnedIds);\r\n api.deselectAll();\r\n }\r\n };\r\n\r\n const unfreezeRows = () => {\r\n setPinnedRowIds(new Set());\r\n };\r\n\r\n const handleFreezing = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (api) {\r\n const pinnedRowsCount = api.getPinnedTopRowCount();\r\n if (pinnedRowsCount > 0) {\r\n unfreezeRows();\r\n } else {\r\n freezeRows();\r\n }\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n React.useEffect(() => {\r\n api?.addEventListener(\"pinnedRowDataChanged\", () => {\r\n setPinnedRowCount(api.getPinnedTopRowCount());\r\n });\r\n\r\n api?.addEventListener(\"selectionChanged\", () => {\r\n setSelectedRowsCount(api.getSelectedNodes().length);\r\n });\r\n\r\n return () => {\r\n if (api?.isDestroyed()) return;\r\n api?.removeEventListener(\"pinnedRowDataChanged\", () => {\r\n setPinnedRowCount(api.getPinnedTopRowCount());\r\n });\r\n\r\n api?.removeEventListener(\"selectionChanged\", () => {\r\n setSelectedRowsCount(api.getSelectedNodes().length);\r\n });\r\n };\r\n }, [api]);\r\n\r\n return (\r\n <Button\r\n variant=\"text\"\r\n onClick={handleFreezing}\r\n startIcon={<Snowflake className=\"mtx-w-4.5 mtx-h-4.5\" />}\r\n disabled={(!pinnedRowCount && !selectedRowsCount) || disabled}\r\n type=\"button\"\r\n {...props}\r\n >\r\n {pinnedRowCount ? (unFreezeText ?? \"Unfreeze\") : (freezeText ?? \"Freeze\")}\r\n </Button>\r\n );\r\n};\r\n\r\n/**\r\n * Props for PrintAction.\r\n */\r\ntype PrintActionProps = IconButtonProps & {};\r\n\r\n/**\r\n * Print action.\r\n * Switches the grid to print layout, captures the rendered markup, and opens the browser print flow.\r\n * @param {PrintActionProps} props - Print action props.\r\n * @param {React.ReactNode} [children] - Custom icon content rendered in the button.\r\n * @param {string} [className] - Additional button classes.\r\n * @param {React.MouseEventHandler<HTMLButtonElement>} [onClick] - Called after printing is triggered.\r\n * @returns {React.ReactElement}\r\n */\r\nconst PrintAction: React.FC<PrintActionProps> = ({ children, className, onClick, ...props }) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"PrintAction should be used within <DataGrid>\");\r\n }\r\n\r\n const handlePrint = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (context.api) {\r\n context.api.setGridOption(\"domLayout\", \"print\");\r\n\r\n setTimeout(() => {\r\n const element = document.querySelector(\"[grid-id='\" + context.gridId + \"']\") as HTMLElement;\r\n const header = document.head;\r\n const html = `<html>\r\n ${header.innerHTML}\r\n ${element.outerHTML}\r\n </html>`;\r\n printHtml(html);\r\n context?.api?.setGridOption(\"domLayout\", undefined);\r\n });\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n return (\r\n <IconButton variant=\"toolbar\" type=\"button\" className={cn(\"mtx-p-0.5 mtx-w-6 mtx-h-6\", className)} onClick={handlePrint} {...props}>\r\n {children ?? <Print className=\"mtx-w-5 mtx-h-5\" />}\r\n </IconButton>\r\n );\r\n};\r\n\r\n/**\r\n * Props for RefreshAction.\r\n */\r\ntype RefreshActionProps = Omit<IconButtonProps, \"onClick\"> & {\r\n /** Callback invoked when the refresh action is clicked. */\r\n onRefresh: () => void;\r\n};\r\n\r\n/**\r\n * Refresh action.\r\n * Calls the provided refresh callback and reflects the loading state in the toolbar button.\r\n * @param {RefreshActionProps} props - Refresh action props.\r\n * @param {() => void} onRefresh - Called when the button is clicked.\r\n * @param {boolean} [loading] - Shows the loading spinner and disables the button.\r\n * @param {React.ReactNode} [children] - Custom icon content rendered in the button.\r\n * @param {string} [className] - Additional button classes.\r\n * @returns {React.ReactElement}\r\n */\r\nconst RefreshAction: React.FC<RefreshActionProps> = ({ className, onRefresh, children, loading, ...props }) => {\r\n const context = React.useContext(DataGridContext);\r\n\r\n if (!context) {\r\n throw new Error(\"RefreshAction should be used within <DataGrid>\");\r\n }\r\n\r\n const handleRefresh = () => {\r\n onRefresh();\r\n };\r\n\r\n return (\r\n <IconButton\r\n className={cn(\"mtx-p-0.5 mtx-w-6 mtx-h-6\", loading && \"disabled:mtx-bg-transparent\", className)}\r\n variant=\"toolbar\"\r\n type=\"button\"\r\n onClick={handleRefresh}\r\n disabled={loading}\r\n {...props}\r\n >\r\n {children ?? <Refresh className={cn(\"mtx-w-4.5 mtx-h-4.5\", loading && \"mtx-animate-spin\")} />}\r\n </IconButton>\r\n );\r\n};\r\n\r\n/**\r\n * Props for DeleteAction.\r\n */\r\ntype DeleteActionProps = Omit<ButtonProps, \"onClick\"> & {\r\n /** Callback invoked when the delete action is clicked. */\r\n onDelete: () => void;\r\n};\r\n\r\n/**\r\n * Delete action.\r\n * Renders a danger button with the delete icon and delegates the click to the provided handler.\r\n * @param {DeleteActionProps} props - Delete action props.\r\n * @param {() => void} onDelete - Called when the button is clicked.\r\n * @param {React.ReactNode} [children] - Button label or custom content.\r\n * @returns {React.ReactElement}\r\n */\r\nconst DeleteAction: React.FC<DeleteActionProps> = ({ onDelete, children, ...props }) => {\r\n const handleDelete = () => {\r\n onDelete();\r\n };\r\n\r\n return (\r\n <Button variant=\"danger\" type=\"button\" onClick={handleDelete} startIcon={<Trashcan className=\"mtx-w-4.5 mtx-h-4.5\" />} {...props}>\r\n {children}\r\n </Button>\r\n );\r\n};\r\n\r\n/**\r\n * Props for ExtraActions.\r\n */\r\ntype ExtraActionsProps = PopoverContentProps & {\r\n /** Menu items rendered inside the popover. */\r\n children: React.ReactNode;\r\n /** Props forwarded to the popover trigger and popover root. */\r\n slotProps?: {\r\n triggerProps?: PopoverTriggerProps;\r\n popoverProps?: PopoverProps;\r\n };\r\n};\r\n\r\n/**\r\n * Extra actions menu.\r\n * Wraps overflow actions in a popover anchored to the vertical ellipsis trigger.\r\n * @param {ExtraActionsProps} props - Extra actions props.\r\n * @param {React.ReactNode} children - Menu items rendered inside the popover.\r\n * @param {{ triggerProps?: PopoverTriggerProps; popoverProps?: PopoverProps; }} [slotProps] - Props forwarded to the trigger and popover root.\r\n * @param {string} [className] - Additional popover content classes.\r\n * @returns {React.ReactElement}\r\n */\r\nconst ExtraActions: React.FC<ExtraActionsProps> = ({ children, slotProps, className, ...props }) => {\r\n return (\r\n <Popover {...(slotProps?.popoverProps ?? {})}>\r\n <PopoverTrigger {...(slotProps?.triggerProps ?? {})}>\r\n <ElipsisVertical className=\"mtx-w-4.5 mtx-h-4.5 mtx-text-primary\" />\r\n </PopoverTrigger>\r\n <PopoverContent align=\"end\" className={cn(\"mtx-w-40\", className)} {...props}>\r\n {children}\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n};\r\n\r\nexport {\r\n DataGrid,\r\n DataGridContent,\r\n DataGridActionBar,\r\n SearchAction,\r\n FreezeAction,\r\n PrintAction,\r\n RefreshAction,\r\n ExtraActions,\r\n DeleteAction,\r\n type DataGridProps,\r\n type DataGridContentProps,\r\n type DatagridActionBarProps,\r\n type SearchActionProps,\r\n type FreezeActionProps,\r\n type RefreshActionProps,\r\n type ExtraActionsProps,\r\n type DeleteActionProps,\r\n useDataGrid,\r\n dataGridDefaultTheme,\r\n};\r\n"],"names":["ModuleRegistry","AllCommunityModule","dataGridDefaultTheme","themeQuartz","DataGridContext","React","useDataGrid","context","DataGrid","children","gridId","api","setApi","rowData","setRowData","actionbarHeight","setActionbarHeight","pinnedRowIds","setPinnedRowIds","quickFilterText","setQuickFilterText","actionbarExists","setActionbarExists","jsx","DataGridContent","forwardRef","propTheme","onGridReady","quickFilterTextProps","rowDataProps","containerStyle","getRowId","props","ref","theme","useMemo","handleGridReady","e","finalRowData","finalPinnedTopRowData","pinned","unpinned","data","id","stringId","AgGridReact","DataGridActionBar","className","cn","SearchAction","defaultOpen","defaultOpenAutoFocus","isSearchInputOpen","setIsSearchInputOpen","isClosing","setIsClosing","inputRef","isFirstRender","handleClear","handleOpen","handleClose","TextField","IconButton","Magnifier","CircleXmark","FreezeAction","freezeText","unFreezeText","onClick","disabled","pinnedRowCount","setPinnedRowCount","selectedRowsCount","setSelectedRowsCount","freezeRows","selectedRows","newPinnedIds","row","unfreezeRows","handleFreezing","Button","Snowflake","PrintAction","handlePrint","element","html","printHtml","Print","RefreshAction","onRefresh","loading","handleRefresh","Refresh","DeleteAction","onDelete","Trashcan","ExtraActions","slotProps","Popover","PopoverTrigger","ElipsisVertical","PopoverContent"],"mappings":"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"}
package/dist/drawer.es.js CHANGED
@@ -38,7 +38,7 @@ const y = "DrawerContent", I = p.forwardRef(({ children: o, title: t, __scopeDra
38
38
  e === "right" ? "mtx-justify-start rtl:mtx-justify-end" : "mtx-justify-end rtl:mtx-justify-start"
39
39
  ),
40
40
  children: [
41
- /* @__PURE__ */ r(R, { onClick: l, className: "mtx-w-5 mtx-h-5 mtx-p-0", children: /* @__PURE__ */ r(C, { className: a("mtx-w-5 mtx-h-5", e === "right" ? "rtl:-mtx-scale-100" : "-mtx-scale-100 rtl:mtx-scale-100") }) }),
41
+ /* @__PURE__ */ r(R, { type: "button", onClick: l, className: "mtx-w-5 mtx-h-5 mtx-p-0", children: /* @__PURE__ */ r(C, { className: a("mtx-w-5 mtx-h-5", e === "right" ? "rtl:-mtx-scale-100" : "-mtx-scale-100 rtl:mtx-scale-100") }) }),
42
42
  typeof t == "string" || typeof t == "number" ? /* @__PURE__ */ r("h2", { className: "mtx-text-lg mtx-font-bold mtx-text-text", children: t }) : t
43
43
  ]
44
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"drawer.es.js","sources":["../src/components/drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { ChevronsRight } from \"@trsys-tech/matrix-icons\";\r\nimport { createContextScope, Scope } from \"@radix-ui/react-context\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Modal } from \"../modal/Modal\";\r\nimport { IconButton } from \"../icon-botton/IconButton\";\r\nimport { useIsMobile } from \"../../lib/hooks/use-mobile\";\r\n\r\ntype ScopedProps<P> = P & { __scopeDrawer?: Scope };\r\n\r\nconst DRAWER_NAME = \"Drawer\";\r\n\r\nconst [createDrawerContext] = createContextScope(DRAWER_NAME);\r\n\r\ninterface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n open: boolean;\r\n onClose?: () => void;\r\n anchor?: \"left\" | \"right\";\r\n width?: number;\r\n children?: React.ReactNode;\r\n asChild?: boolean;\r\n mobileBreakpoint?: number;\r\n}\r\n\r\ntype DrawerContextValue = {\r\n open: boolean;\r\n onClose?: () => void;\r\n anchor: \"left\" | \"right\";\r\n width: number;\r\n isMobile: boolean;\r\n};\r\n\r\nconst [DrawerProvider, useDrawerProvider] = createDrawerContext<DrawerContextValue>(DRAWER_NAME);\r\n\r\n/**\r\n * Drawer component\r\n * This is the wrapper component for Drawer content and main components\r\n * @param {React.HTMLAttributes<HTMLDivElement>} props\r\n * @param {boolean} open - Drawer open state\r\n * @param {() => void} onClose - Drawer close handler\r\n * @param {\"left\" | \"right\"} anchor - Drawer anchor position\r\n * @param {number} width - Drawer width\r\n * @param {React.ReactNode} children - Drawer children\r\n * @param {boolean} asChild - Render as child component\r\n * @returns {React.ReactElement}\r\n */\r\nconst Drawer = React.forwardRef<React.ElementRef<\"div\">, ScopedProps<DrawerProps>>((props, ref) => {\r\n const { asChild, anchor = \"right\", children, open, width = 240, className, onClose, __scopeDrawer, ...restProps } = props;\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n const isMobile = useIsMobile();\r\n\r\n return (\r\n <Comp ref={ref} className={cn(\"mtx-flex\", className)} {...restProps}>\r\n <DrawerProvider anchor={anchor} onClose={onClose} open={open} width={width} isMobile={isMobile} scope={__scopeDrawer}>\r\n {children}\r\n </DrawerProvider>\r\n </Comp>\r\n );\r\n});\r\n\r\nDrawer.displayName = DRAWER_NAME;\r\n\r\ninterface DrawerMainProps extends React.HTMLAttributes<HTMLDivElement> {\r\n asChild: boolean;\r\n}\r\n\r\nconst DRAWER_MAIN_NAME = \"DrawerMain\";\r\n\r\n/**\r\n * DrawerMain component\r\n * This is the main container for the tree that should be shown always\r\n * @param {React.HTMLAttributes<HTMLDivElement>} props\r\n * @param {boolean} asChild - Render as child component\r\n * @property {React.ReactNode} children - DrawerMain children\r\n * @property {string} className - DrawerMain class name\r\n * @property {React.CSSProperties} style - DrawerMain style\r\n * @property {ScopedProps<DrawerMainProps>} __scopeDrawer - DrawerMain scope\r\n * @property {React.Ref<HTMLDivElement>} ref - DrawerMain ref\r\n * @property {React.HTMLAttributes<HTMLDivElement>} props - DrawerMain props\r\n * @returns {React.ReactElement}\r\n */\r\nconst DrawerMain = React.forwardRef<HTMLDivElement, ScopedProps<DrawerMainProps>>(\r\n ({ asChild, children, className, style, __scopeDrawer, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n const { anchor, open, width, isMobile } = useDrawerProvider(DRAWER_MAIN_NAME, __scopeDrawer);\r\n\r\n const marginStyle = React.useMemo(() => {\r\n if (isMobile) {\r\n return {};\r\n }\r\n if (anchor === \"left\") {\r\n return { marginInlineStart: open ? width : 0 };\r\n } else {\r\n return { marginInlineEnd: open ? width : 0 };\r\n }\r\n }, [anchor, open, width, isMobile]);\r\n\r\n return (\r\n <Comp ref={ref} className={cn(\"mtx-flex-grow mtx-overflow-hidden\", className)} style={{ ...style, ...marginStyle }} {...props}>\r\n {children}\r\n </Comp>\r\n );\r\n },\r\n);\r\n\r\nDrawerMain.displayName = DRAWER_MAIN_NAME;\r\n\r\ntype DrawerContentProps = {\r\n children?: React.ReactNode;\r\n title: React.ReactNode;\r\n};\r\n\r\nconst DRAWER_CONTENT_NAME = \"DrawerContent\";\r\n\r\n/**\r\n * DrawerContent component\r\n * This is the content container for the tree that should be shown when the drawer is open\r\n * @param {React.HTMLAttributes<HTMLDivElement>} props\r\n * @param {React.ReactNode} children - DrawerContent children\r\n * @param {React.ReactNode} title - DrawerContent title\r\n * @property {ScopedProps<DrawerContentProps>} __scopeDrawer - DrawerContent scope\r\n * @property {React.Ref<HTMLDivElement>} ref - DrawerContent ref\r\n * @property {React.HTMLAttributes<HTMLDivElement>} props - DrawerContent props\r\n * @returns {React.ReactElement}\r\n */\r\nconst DrawerContent = React.forwardRef<HTMLDivElement, ScopedProps<DrawerContentProps>>(({ children, title, __scopeDrawer }, ref) => {\r\n const { anchor, open, width, onClose, isMobile } = useDrawerProvider(DRAWER_CONTENT_NAME, __scopeDrawer);\r\n\r\n return (\r\n <>\r\n {isMobile ? (\r\n <Modal title={title} open={open} onOpenChange={onClose} ref={ref} fullScreen>\r\n {children}\r\n </Modal>\r\n ) : (\r\n <div className={cn(\"mtx-hidden md:mtx-block mtx-overflow-hidden\")} style={{ width }} ref={ref}>\r\n <div\r\n className={cn(\r\n \"mtx-overflow-y-auto mtx-flex mtx-flex-col mtx-h-full mtx-top-0 mtx-z-[120] mtx-bg-background mtx-transition-all mtx-border-gray-200\",\r\n open\r\n ? \"\"\r\n : anchor === \"left\"\r\n ? \"-mtx-translate-x-full rtl:mtx-translate-x-full mtx-invisible\"\r\n : \"mtx-translate-x-full rtl:-mtx-translate-x-full mtx-invisible\",\r\n anchor === \"left\" ? \"mtx-border-r\" : \"mtx-border-l\",\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"mtx-h-9 mtx-flex mtx-items-center mtx-gap-2 mtx-p-2 mtx-bg-background mtx-w-full mtx-sticky mtx-top-0 mtx-border-b mtx-border-gray-200\",\r\n anchor === \"right\" ? \"mtx-justify-start rtl:mtx-justify-end\" : \"mtx-justify-end rtl:mtx-justify-start\",\r\n )}\r\n >\r\n <IconButton onClick={onClose} className=\"mtx-w-5 mtx-h-5 mtx-p-0\">\r\n <ChevronsRight className={cn(\"mtx-w-5 mtx-h-5\", anchor === \"right\" ? \"rtl:-mtx-scale-100\" : \"-mtx-scale-100 rtl:mtx-scale-100\")} />\r\n </IconButton>\r\n {typeof title === \"string\" || typeof title === \"number\" ? <h2 className=\"mtx-text-lg mtx-font-bold mtx-text-text\">{title}</h2> : title}\r\n </div>\r\n {children}\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n});\r\n\r\nDrawerContent.displayName = DRAWER_CONTENT_NAME;\r\n\r\nconst Root = Drawer;\r\nconst Main = DrawerMain;\r\nconst Content = DrawerContent;\r\n\r\nexport { Drawer, DrawerMain, DrawerContent, Root, Main, Content };\r\nexport type { DrawerContentProps, DrawerMainProps, DrawerProps };\r\n"],"names":["DRAWER_NAME","createDrawerContext","createContextScope","DrawerProvider","useDrawerProvider","Drawer","React","props","ref","asChild","anchor","children","open","width","className","onClose","__scopeDrawer","restProps","Comp","Slot","isMobile","useIsMobile","jsx","cn","DRAWER_MAIN_NAME","DrawerMain","style","marginStyle","DRAWER_CONTENT_NAME","DrawerContent","title","Fragment","Modal","jsxs","IconButton","ChevronsRight"],"mappings":"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"}
1
+ {"version":3,"file":"drawer.es.js","sources":["../src/components/drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { ChevronsRight } from \"@trsys-tech/matrix-icons\";\r\nimport { createContextScope, Scope } from \"@radix-ui/react-context\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Modal } from \"../modal/Modal\";\r\nimport { IconButton } from \"../icon-botton/IconButton\";\r\nimport { useIsMobile } from \"../../lib/hooks/use-mobile\";\r\n\r\ntype ScopedProps<P> = P & { __scopeDrawer?: Scope };\r\n\r\nconst DRAWER_NAME = \"Drawer\";\r\n\r\nconst [createDrawerContext] = createContextScope(DRAWER_NAME);\r\n\r\ninterface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n open: boolean;\r\n onClose?: () => void;\r\n anchor?: \"left\" | \"right\";\r\n width?: number;\r\n children?: React.ReactNode;\r\n asChild?: boolean;\r\n mobileBreakpoint?: number;\r\n}\r\n\r\ntype DrawerContextValue = {\r\n open: boolean;\r\n onClose?: () => void;\r\n anchor: \"left\" | \"right\";\r\n width: number;\r\n isMobile: boolean;\r\n};\r\n\r\nconst [DrawerProvider, useDrawerProvider] = createDrawerContext<DrawerContextValue>(DRAWER_NAME);\r\n\r\n/**\r\n * Drawer component\r\n * This is the wrapper component for Drawer content and main components\r\n * @param {React.HTMLAttributes<HTMLDivElement>} props\r\n * @param {boolean} open - Drawer open state\r\n * @param {() => void} onClose - Drawer close handler\r\n * @param {\"left\" | \"right\"} anchor - Drawer anchor position\r\n * @param {number} width - Drawer width\r\n * @param {React.ReactNode} children - Drawer children\r\n * @param {boolean} asChild - Render as child component\r\n * @returns {React.ReactElement}\r\n */\r\nconst Drawer = React.forwardRef<React.ElementRef<\"div\">, ScopedProps<DrawerProps>>((props, ref) => {\r\n const { asChild, anchor = \"right\", children, open, width = 240, className, onClose, __scopeDrawer, ...restProps } = props;\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n const isMobile = useIsMobile();\r\n\r\n return (\r\n <Comp ref={ref} className={cn(\"mtx-flex\", className)} {...restProps}>\r\n <DrawerProvider anchor={anchor} onClose={onClose} open={open} width={width} isMobile={isMobile} scope={__scopeDrawer}>\r\n {children}\r\n </DrawerProvider>\r\n </Comp>\r\n );\r\n});\r\n\r\nDrawer.displayName = DRAWER_NAME;\r\n\r\ninterface DrawerMainProps extends React.HTMLAttributes<HTMLDivElement> {\r\n asChild: boolean;\r\n}\r\n\r\nconst DRAWER_MAIN_NAME = \"DrawerMain\";\r\n\r\n/**\r\n * DrawerMain component\r\n * This is the main container for the tree that should be shown always\r\n * @param {React.HTMLAttributes<HTMLDivElement>} props\r\n * @param {boolean} asChild - Render as child component\r\n * @property {React.ReactNode} children - DrawerMain children\r\n * @property {string} className - DrawerMain class name\r\n * @property {React.CSSProperties} style - DrawerMain style\r\n * @property {ScopedProps<DrawerMainProps>} __scopeDrawer - DrawerMain scope\r\n * @property {React.Ref<HTMLDivElement>} ref - DrawerMain ref\r\n * @property {React.HTMLAttributes<HTMLDivElement>} props - DrawerMain props\r\n * @returns {React.ReactElement}\r\n */\r\nconst DrawerMain = React.forwardRef<HTMLDivElement, ScopedProps<DrawerMainProps>>(\r\n ({ asChild, children, className, style, __scopeDrawer, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n const { anchor, open, width, isMobile } = useDrawerProvider(DRAWER_MAIN_NAME, __scopeDrawer);\r\n\r\n const marginStyle = React.useMemo(() => {\r\n if (isMobile) {\r\n return {};\r\n }\r\n if (anchor === \"left\") {\r\n return { marginInlineStart: open ? width : 0 };\r\n } else {\r\n return { marginInlineEnd: open ? width : 0 };\r\n }\r\n }, [anchor, open, width, isMobile]);\r\n\r\n return (\r\n <Comp ref={ref} className={cn(\"mtx-flex-grow mtx-overflow-hidden\", className)} style={{ ...style, ...marginStyle }} {...props}>\r\n {children}\r\n </Comp>\r\n );\r\n },\r\n);\r\n\r\nDrawerMain.displayName = DRAWER_MAIN_NAME;\r\n\r\ntype DrawerContentProps = {\r\n children?: React.ReactNode;\r\n title: React.ReactNode;\r\n};\r\n\r\nconst DRAWER_CONTENT_NAME = \"DrawerContent\";\r\n\r\n/**\r\n * DrawerContent component\r\n * This is the content container for the tree that should be shown when the drawer is open\r\n * @param {React.HTMLAttributes<HTMLDivElement>} props\r\n * @param {React.ReactNode} children - DrawerContent children\r\n * @param {React.ReactNode} title - DrawerContent title\r\n * @property {ScopedProps<DrawerContentProps>} __scopeDrawer - DrawerContent scope\r\n * @property {React.Ref<HTMLDivElement>} ref - DrawerContent ref\r\n * @property {React.HTMLAttributes<HTMLDivElement>} props - DrawerContent props\r\n * @returns {React.ReactElement}\r\n */\r\nconst DrawerContent = React.forwardRef<HTMLDivElement, ScopedProps<DrawerContentProps>>(({ children, title, __scopeDrawer }, ref) => {\r\n const { anchor, open, width, onClose, isMobile } = useDrawerProvider(DRAWER_CONTENT_NAME, __scopeDrawer);\r\n\r\n return (\r\n <>\r\n {isMobile ? (\r\n <Modal title={title} open={open} onOpenChange={onClose} ref={ref} fullScreen>\r\n {children}\r\n </Modal>\r\n ) : (\r\n <div className={cn(\"mtx-hidden md:mtx-block mtx-overflow-hidden\")} style={{ width }} ref={ref}>\r\n <div\r\n className={cn(\r\n \"mtx-overflow-y-auto mtx-flex mtx-flex-col mtx-h-full mtx-top-0 mtx-z-[120] mtx-bg-background mtx-transition-all mtx-border-gray-200\",\r\n open\r\n ? \"\"\r\n : anchor === \"left\"\r\n ? \"-mtx-translate-x-full rtl:mtx-translate-x-full mtx-invisible\"\r\n : \"mtx-translate-x-full rtl:-mtx-translate-x-full mtx-invisible\",\r\n anchor === \"left\" ? \"mtx-border-r\" : \"mtx-border-l\",\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"mtx-h-9 mtx-flex mtx-items-center mtx-gap-2 mtx-p-2 mtx-bg-background mtx-w-full mtx-sticky mtx-top-0 mtx-border-b mtx-border-gray-200\",\r\n anchor === \"right\" ? \"mtx-justify-start rtl:mtx-justify-end\" : \"mtx-justify-end rtl:mtx-justify-start\",\r\n )}\r\n >\r\n <IconButton type=\"button\" onClick={onClose} className=\"mtx-w-5 mtx-h-5 mtx-p-0\">\r\n <ChevronsRight className={cn(\"mtx-w-5 mtx-h-5\", anchor === \"right\" ? \"rtl:-mtx-scale-100\" : \"-mtx-scale-100 rtl:mtx-scale-100\")} />\r\n </IconButton>\r\n {typeof title === \"string\" || typeof title === \"number\" ? <h2 className=\"mtx-text-lg mtx-font-bold mtx-text-text\">{title}</h2> : title}\r\n </div>\r\n {children}\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n});\r\n\r\nDrawerContent.displayName = DRAWER_CONTENT_NAME;\r\n\r\nconst Root = Drawer;\r\nconst Main = DrawerMain;\r\nconst Content = DrawerContent;\r\n\r\nexport { Drawer, DrawerMain, DrawerContent, Root, Main, Content };\r\nexport type { DrawerContentProps, DrawerMainProps, DrawerProps };\r\n"],"names":["DRAWER_NAME","createDrawerContext","createContextScope","DrawerProvider","useDrawerProvider","Drawer","React","props","ref","asChild","anchor","children","open","width","className","onClose","__scopeDrawer","restProps","Comp","Slot","isMobile","useIsMobile","jsx","cn","DRAWER_MAIN_NAME","DrawerMain","style","marginStyle","DRAWER_CONTENT_NAME","DrawerContent","title","Fragment","Modal","jsxs","IconButton","ChevronsRight"],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@trsys-tech/matrix-library",
3
3
  "description": "MatrixUI Library",
4
4
  "private": false,
5
- "version": "1.0.0-canary.7",
5
+ "version": "1.0.0-canary.9",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.es.js",