impact-nova 2.4.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/components/data/data-table/data-table-column-list.js +16 -16
  2. package/dist/components/data/data-table/data-table-sheet-layout.d.ts +26 -0
  3. package/dist/components/data/data-table/data-table-sheet-layout.js +71 -0
  4. package/dist/components/data/data-table/data-table-sheet.d.ts +2 -0
  5. package/dist/components/data/data-table/index.d.ts +1 -0
  6. package/dist/components/data/data-table/index.js +40 -34
  7. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +2 -3
  8. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +2 -3
  9. package/dist/components/data/nested-list/hooks/useNestedListHandlers.d.ts +3 -2
  10. package/dist/components/data/nested-list/hooks/useNestedListHandlers.js +129 -130
  11. package/dist/components/data/nested-list/hooks/useNestedListState.d.ts +2 -3
  12. package/dist/components/data/nested-list/hooks/useNestedListState.js +118 -117
  13. package/dist/components/data/nested-list/nested-list.js +219 -221
  14. package/dist/components/feedback/tooltip/tab-tooltip-render.js +2 -3
  15. package/dist/components/flows/accordion-nested-list/accordion-nested-list.js +80 -65
  16. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  17. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  18. package/dist/components/forms/date-picker/month-picker.js +136 -109
  19. package/dist/components/forms/select/components/SelectTriggerValue.js +2 -3
  20. package/dist/components/forms/select/components/Submenu.js +2 -3
  21. package/dist/impact-nova.css +1 -1
  22. package/dist/index.js +170 -164
  23. package/dist/llms/rules/ag-grid.js +1 -1
  24. package/dist/llms/rules/installation.js +1 -1
  25. package/dist/llms/rules/real-world-patterns.js +1 -1
  26. package/dist/llms/rules/requirements.js +1 -1
  27. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { jsxs as _, jsx as l } from "react/jsx-runtime";
1
+ import { jsxs as _, jsx as n } from "react/jsx-runtime";
2
2
  import { useRef as y, useState as F, useMemo as O, useCallback as i } from "react";
3
3
  import { useDataTable as E } from "./data-table-context.js";
4
4
  import { useDataTableSheet as z } from "./data-table-sheet-context.js";
@@ -7,16 +7,16 @@ import { SelectionMode as R } from "../nested-list/nested-list.types.js";
7
7
  import { useImpactNovaI18n as k } from "../../../i18n/use-impact-nova-i18n.js";
8
8
  import { countNestedListLeaves as M, buildCollapsedStateForAllGroups as j } from "../nested-list/nested-list-tree-utils.js";
9
9
  import { PinSwitch as G } from "./pin-switch.js";
10
- import { ColumnIndicator as d } from "./column-indicator.js";
10
+ import { ColumnIndicator as m } from "./column-indicator.js";
11
11
  import { IndicatorLegend as H } from "./indicator-legend.js";
12
12
  import { useDataTableColumnListSync as U } from "./use-data-table-column-list-sync.js";
13
- const W = 100, le = ({
13
+ const W = 100, ne = ({
14
14
  enableApplyDiscard: o = !1,
15
- showSearch: m = !0,
15
+ showSearch: d = !0,
16
16
  showSelectAll: p = !0,
17
17
  showCollapse: f = !0
18
18
  }) => {
19
- const { gridApi: h } = E(), { open: C } = z(), { t: r } = k(), b = y({}), [n, S] = F({}), {
19
+ const { gridApi: h } = E(), { open: C } = z(), { t: r } = k(), b = y({}), [l, S] = F({}), {
20
20
  items: a,
21
21
  isReady: L,
22
22
  externalSyncKey: g,
@@ -29,7 +29,7 @@ const W = 100, le = ({
29
29
  frozenColumnsLabel: r("dataTable.frozenColumns"),
30
30
  scrollableColumnsLabel: r("dataTable.scrollableColumns"),
31
31
  isSyncActive: C
32
- }), I = O(() => Object.keys(n).length > 0 || a.length === 0 || M(a) <= W ? n : j(a), [n, a]), x = i(
32
+ }), x = O(() => Object.keys(l).length > 0 || a.length === 0 || M(a) <= W ? l : j(a), [l, a]), I = i(
33
33
  (e) => {
34
34
  c(e, o);
35
35
  },
@@ -39,15 +39,15 @@ const W = 100, le = ({
39
39
  if (!s.isLeaf) return null;
40
40
  const t = e.data;
41
41
  return !t?.hasSortApplied && !t?.hasFilterApplied ? null : /* @__PURE__ */ _("span", { className: "inline-flex items-center gap-1 shrink-0", children: [
42
- t?.hasSortApplied && /* @__PURE__ */ l(d, { type: "sort" }),
43
- t?.hasFilterApplied && /* @__PURE__ */ l(d, { type: "filter" })
42
+ t?.hasSortApplied && /* @__PURE__ */ n(m, { type: "sort" }),
43
+ t?.hasFilterApplied && /* @__PURE__ */ n(m, { type: "filter" })
44
44
  ] });
45
45
  },
46
46
  []
47
47
  ), v = i(
48
48
  (e, s) => {
49
49
  const t = e.data;
50
- return e.category === "structure" ? e.id !== "root-frozen" ? null : /* @__PURE__ */ l(H, {}) : !s.isLeaf || !(t?.pinned === "left" || t?.pinned === "right") ? null : /* @__PURE__ */ l(
50
+ return e.category === "structure" ? e.id !== "root-frozen" ? null : /* @__PURE__ */ n(H, {}) : !s.isLeaf || !(t?.pinned === "left" || t?.pinned === "right") ? null : /* @__PURE__ */ n(
51
51
  G,
52
52
  {
53
53
  value: t?.pinned ?? null,
@@ -58,31 +58,31 @@ const W = 100, le = ({
58
58
  },
59
59
  [u]
60
60
  );
61
- return L ? /* @__PURE__ */ l("div", { ref: A, className: "flex flex-col h-full bg-canvas-elevated", children: /* @__PURE__ */ l(
61
+ return L ? /* @__PURE__ */ n("div", { ref: A, className: "flex flex-col flex-1 min-h-0 bg-canvas-elevated", children: /* @__PURE__ */ n(
62
62
  P,
63
63
  {
64
64
  items: a,
65
- onChange: x,
65
+ onChange: I,
66
66
  onSubmit: T,
67
67
  renderLabelExtras: N,
68
68
  renderActions: v,
69
69
  enableApplyDiscard: o,
70
- enableSearch: m,
70
+ enableSearch: d,
71
71
  enableSelectAll: p,
72
72
  enableDragDrop: !0,
73
73
  enableCollapse: !0,
74
74
  enableGlobalCollapse: f,
75
75
  selectionMode: R.CASCADE_DOWN,
76
76
  searchPlaceholder: r("dataTable.searchColumnsPlaceholder"),
77
- className: "h-full",
78
- initialCollapsedItems: I,
77
+ className: "flex-1 min-h-0",
78
+ initialCollapsedItems: x,
79
79
  onCollapseChange: (e) => {
80
80
  b.current = e, S(e);
81
81
  }
82
82
  },
83
83
  `data-table-column-list-${g}`
84
- ) }) : /* @__PURE__ */ l("div", { className: "p-4 text-[13px] text-content-placeholder", children: r("dataTable.loadingColumns") });
84
+ ) }) : /* @__PURE__ */ n("div", { className: "p-4 text-[13px] text-content-placeholder", children: r("dataTable.loadingColumns") });
85
85
  };
86
86
  export {
87
- le as DataTableColumnList
87
+ ne as DataTableColumnList
88
88
  };
@@ -0,0 +1,26 @@
1
+ import { default as React } from 'react';
2
+ import { Tabs, TabsContent, TabsList } from '../../primitives/tabs/tabs';
3
+ /** Flex body below `DataTableSheetHeader` — establishes the sheet scroll height chain. */
4
+ export declare const DataTableSheetBody: ({ children, className, }: {
5
+ children: React.ReactNode;
6
+ className?: string;
7
+ }) => import("react/jsx-runtime").JSX.Element;
8
+ /** Non-scrolling chrome row (saved views, filters summary, etc.). */
9
+ export declare const DataTableSheetSection: ({ children, className, }: {
10
+ children: React.ReactNode;
11
+ className?: string;
12
+ }) => import("react/jsx-runtime").JSX.Element;
13
+ export type DataTableSheetTabsProps = React.ComponentPropsWithoutRef<typeof Tabs>;
14
+ /** Tabs root with flex + overflow defaults for sheet settings panels. */
15
+ export declare const DataTableSheetTabs: ({ className, ...rest }: DataTableSheetTabsProps) => import("react/jsx-runtime").JSX.Element;
16
+ export type DataTableSheetTabsListProps = React.ComponentPropsWithoutRef<typeof TabsList>;
17
+ export declare const DataTableSheetTabsList: ({ className, ...rest }: DataTableSheetTabsListProps) => import("react/jsx-runtime").JSX.Element;
18
+ export type DataTableSheetTabPanelLayout = "list" | "scroll";
19
+ export type DataTableSheetTabPanelProps = React.ComponentPropsWithoutRef<typeof TabsContent> & {
20
+ /**
21
+ * `list` — NestedList / column tree scrolls internally; search stays fixed.
22
+ * `scroll` — panel body scrolls (format options, filter forms).
23
+ */
24
+ layout?: DataTableSheetTabPanelLayout;
25
+ };
26
+ export declare const DataTableSheetTabPanel: ({ layout, className, children, ...rest }: DataTableSheetTabPanelProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,71 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import "react";
3
+ import { TabsContent as i, Tabs as T, TabsList as c } from "../../primitives/tabs/tabs.js";
4
+ import { cn as t } from "../../../lib/utils.js";
5
+ const r = ({
6
+ children: a,
7
+ className: e
8
+ }) => /* @__PURE__ */ l(
9
+ "div",
10
+ {
11
+ "data-slot": "data-table-sheet-body",
12
+ className: t("flex flex-col flex-1 min-h-0 overflow-hidden", e),
13
+ children: a
14
+ }
15
+ ), _ = ({
16
+ children: a,
17
+ className: e
18
+ }) => /* @__PURE__ */ l(
19
+ "div",
20
+ {
21
+ "data-slot": "data-table-sheet-section",
22
+ className: t("shrink-0", e),
23
+ children: a
24
+ }
25
+ ), x = ({
26
+ className: a,
27
+ ...e
28
+ }) => /* @__PURE__ */ l(
29
+ T,
30
+ {
31
+ "data-slot": "data-table-sheet-tabs",
32
+ className: t(
33
+ "flex flex-1 min-h-0 w-full flex-col overflow-hidden",
34
+ a
35
+ ),
36
+ ...e
37
+ }
38
+ ), E = ({
39
+ className: a,
40
+ ...e
41
+ }) => /* @__PURE__ */ l(c, { className: t("shrink-0", a), ...e }), o = "mt-0 flex-1 min-h-0 data-[state=inactive]:hidden", d = t(
42
+ o,
43
+ "flex flex-col overflow-hidden"
44
+ ), f = t(
45
+ o,
46
+ "overflow-y-auto"
47
+ ), S = ({
48
+ layout: a = "scroll",
49
+ className: e,
50
+ children: s,
51
+ ...n
52
+ }) => /* @__PURE__ */ l(
53
+ i,
54
+ {
55
+ "data-slot": "data-table-sheet-tab-panel",
56
+ "data-layout": a,
57
+ className: t(
58
+ a === "list" ? d : f,
59
+ e
60
+ ),
61
+ ...n,
62
+ children: a === "list" ? /* @__PURE__ */ l("div", { className: "flex flex-1 min-h-0 flex-col", children: s }) : s
63
+ }
64
+ );
65
+ export {
66
+ r as DataTableSheetBody,
67
+ _ as DataTableSheetSection,
68
+ S as DataTableSheetTabPanel,
69
+ x as DataTableSheetTabs,
70
+ E as DataTableSheetTabsList
71
+ };
@@ -1,6 +1,8 @@
1
1
  import { default as React } from 'react';
2
2
  import { DataTableSheetProps } from './data-table.types';
3
3
  export type { DataTableSheetProps } from './data-table.types';
4
+ export { DataTableSheetBody, DataTableSheetSection, DataTableSheetTabs, DataTableSheetTabsList, DataTableSheetTabPanel, } from './data-table-sheet-layout';
5
+ export type { DataTableSheetTabsProps, DataTableSheetTabsListProps, DataTableSheetTabPanelProps, DataTableSheetTabPanelLayout, } from './data-table-sheet-layout';
4
6
  export declare const DataTableSheet: ({ children, defaultOpen, open: controlledOpen, onOpenChange, }: DataTableSheetProps) => import("react/jsx-runtime").JSX.Element;
5
7
  export declare const DataTableSheetTrigger: ({ children, asChild, }: {
6
8
  children: React.ReactNode;
@@ -4,6 +4,7 @@ export * from './data-table-column-list';
4
4
  export * from './data-table-context';
5
5
  export * from './data-table-format-options';
6
6
  export * from './data-table-sheet';
7
+ export * from './data-table-sheet-layout';
7
8
  export { useDataTableSheet, useDataTableSheetApi } from './data-table-sheet-context';
8
9
  export * from './data-table-view-menu';
9
10
  export * from './data-table-saved-views';
@@ -1,42 +1,48 @@
1
- import { DataTable as t, DataTableContent as o, DataTableToolbar as r } from "./data-table.js";
2
- import { DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX as D, DATA_TABLE_SHEET_SLIDE_TRANSITION_MS as l, TABLE_VIEWPORT_SHELL_EXPANDED_CLASS as S } from "./data-table-constants.js";
1
+ import { DataTable as t, DataTableContent as o, DataTableToolbar as T } from "./data-table.js";
2
+ import { DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX as l, DATA_TABLE_SHEET_SLIDE_TRANSITION_MS as D, TABLE_VIEWPORT_SHELL_EXPANDED_CLASS as b } from "./data-table-constants.js";
3
3
  import { DataTableColumnList as n } from "./data-table-column-list.js";
4
- import { DataTableContext as m, DataTableSheetPortalStoreContext as p, useDataTable as _, useDataTableSheetPortal as x, useDataTableSheetPortalStore as E } from "./data-table-context.js";
5
- import { DataTableFormatOptions as u } from "./data-table-format-options.js";
6
- import { DataTableSheet as h, DataTableSheetContent as s, DataTableSheetHeader as C, DataTableSheetTrigger as I } from "./data-table-sheet.js";
7
- import { useDataTableSheet as w, useDataTableSheetApi as P } from "./data-table-sheet-context.js";
8
- import { DataTableViewMenuContent as H, DataTableViewMenuDensity as M, DataTableViewMenuSettingsItem as d, DataTableViewMenuTrigger as g, DataTableViewMenuViewportExpand as O } from "./data-table-view-menu.js";
9
- import { DataTableSavedViews as c } from "./data-table-saved-views.js";
10
- import { PinSwitch as R } from "./pin-switch.js";
11
- import { ColumnIndicator as v } from "./column-indicator.js";
12
- import { IndicatorLegend as F } from "./indicator-legend.js";
4
+ import { DataTableContext as m, DataTableSheetPortalStoreContext as p, useDataTable as x, useDataTableSheetPortal as _, useDataTableSheetPortalStore as h } from "./data-table-context.js";
5
+ import { DataTableFormatOptions as f } from "./data-table-format-options.js";
6
+ import { DataTableSheet as u, DataTableSheetContent as A, DataTableSheetHeader as L, DataTableSheetTrigger as C } from "./data-table-sheet.js";
7
+ import { DataTableSheetBody as P, DataTableSheetSection as w, DataTableSheetTabPanel as V, DataTableSheetTabs as d, DataTableSheetTabsList as H } from "./data-table-sheet-layout.js";
8
+ import { useDataTableSheet as g, useDataTableSheetApi as O } from "./data-table-sheet-context.js";
9
+ import { DataTableViewMenuContent as B, DataTableViewMenuDensity as N, DataTableViewMenuSettingsItem as y, DataTableViewMenuTrigger as R, DataTableViewMenuViewportExpand as X } from "./data-table-view-menu.js";
10
+ import { DataTableSavedViews as F } from "./data-table-saved-views.js";
11
+ import { PinSwitch as W } from "./pin-switch.js";
12
+ import { ColumnIndicator as k } from "./column-indicator.js";
13
+ import { IndicatorLegend as z } from "./indicator-legend.js";
13
14
  export {
14
- v as ColumnIndicator,
15
- D as DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX,
16
- l as DATA_TABLE_SHEET_SLIDE_TRANSITION_MS,
15
+ k as ColumnIndicator,
16
+ l as DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX,
17
+ D as DATA_TABLE_SHEET_SLIDE_TRANSITION_MS,
17
18
  t as DataTable,
18
19
  n as DataTableColumnList,
19
20
  o as DataTableContent,
20
21
  m as DataTableContext,
21
- u as DataTableFormatOptions,
22
- c as DataTableSavedViews,
23
- h as DataTableSheet,
24
- s as DataTableSheetContent,
25
- C as DataTableSheetHeader,
22
+ f as DataTableFormatOptions,
23
+ F as DataTableSavedViews,
24
+ u as DataTableSheet,
25
+ P as DataTableSheetBody,
26
+ A as DataTableSheetContent,
27
+ L as DataTableSheetHeader,
26
28
  p as DataTableSheetPortalStoreContext,
27
- I as DataTableSheetTrigger,
28
- r as DataTableToolbar,
29
- H as DataTableViewMenuContent,
30
- M as DataTableViewMenuDensity,
31
- d as DataTableViewMenuSettingsItem,
32
- g as DataTableViewMenuTrigger,
33
- O as DataTableViewMenuViewportExpand,
34
- F as IndicatorLegend,
35
- R as PinSwitch,
36
- S as TABLE_VIEWPORT_SHELL_EXPANDED_CLASS,
37
- _ as useDataTable,
38
- w as useDataTableSheet,
39
- P as useDataTableSheetApi,
40
- x as useDataTableSheetPortal,
41
- E as useDataTableSheetPortalStore
29
+ w as DataTableSheetSection,
30
+ V as DataTableSheetTabPanel,
31
+ d as DataTableSheetTabs,
32
+ H as DataTableSheetTabsList,
33
+ C as DataTableSheetTrigger,
34
+ T as DataTableToolbar,
35
+ B as DataTableViewMenuContent,
36
+ N as DataTableViewMenuDensity,
37
+ y as DataTableViewMenuSettingsItem,
38
+ R as DataTableViewMenuTrigger,
39
+ X as DataTableViewMenuViewportExpand,
40
+ z as IndicatorLegend,
41
+ W as PinSwitch,
42
+ b as TABLE_VIEWPORT_SHELL_EXPANDED_CLASS,
43
+ x as useDataTable,
44
+ g as useDataTableSheet,
45
+ O as useDataTableSheetApi,
46
+ _ as useDataTableSheetPortal,
47
+ h as useDataTableSheetPortalStore
42
48
  };
@@ -3,8 +3,7 @@ import { Badge as s } from "../../data-display/badge/badge.js";
3
3
  import { FilterPopoverContent as u } from "../../flows/filter-strip/filter-tag-list.js";
4
4
  import { Popover as b, PopoverTrigger as f } from "../../feedback/popover/popover.js";
5
5
  import { Tooltip as g, TooltipTrigger as v, TooltipContent as x } from "../../feedback/tooltip/tooltip.js";
6
- import "react";
7
- function I({
6
+ function w({
8
7
  tags: o,
9
8
  title: l = "Attributes",
10
9
  maxVisibleTags: n = 4,
@@ -71,5 +70,5 @@ function I({
71
70
  );
72
71
  }
73
72
  export {
74
- I as ExpandableListItemAttributes
73
+ w as ExpandableListItemAttributes
75
74
  };
@@ -1,9 +1,8 @@
1
1
  import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
2
  import { ScrollOverflowAffordance as o } from "../../layout/horizontal-scroller/scroll-overflow-affordance.js";
3
- import "react";
4
3
  import { OverflowTooltip as r } from "../../feedback/tooltip/overflow-tooltip.js";
5
4
  const m = 128;
6
- function f({
5
+ function x({
7
6
  columns: i,
8
7
  sectionId: l = "metrics"
9
8
  }) {
@@ -51,5 +50,5 @@ function f({
51
50
  );
52
51
  }
53
52
  export {
54
- f as ExpandableListItemMetrics
53
+ x as ExpandableListItemMetrics
55
54
  };
@@ -15,6 +15,7 @@ declare function updateParentsNormalized(normalized: NormalizedItems, updates: M
15
15
  declare function applyUpdatesToTree(items: NestedListItem[], updates: Map<string, Partial<NestedListItem>>): NestedListItem[];
16
16
  interface UseNestedListHandlersProps {
17
17
  setItems: React.Dispatch<React.SetStateAction<NestedListItem[]>>;
18
+ itemsRef: React.RefObject<NestedListItem[]>;
18
19
  findItemById: (items: NestedListItem[], id: string) => NestedListItem | null;
19
20
  updateParentsUpward: (items: NestedListItem[], targetItemId: string) => NestedListItem[];
20
21
  onChange: (items: NestedListItem[]) => void;
@@ -27,13 +28,13 @@ interface UseNestedListHandlersProps {
27
28
  setCollapsedItems: React.Dispatch<React.SetStateAction<Record<string, boolean>>>;
28
29
  setIsListCollapsed: React.Dispatch<React.SetStateAction<boolean>>;
29
30
  setSelectedCategories: React.Dispatch<React.SetStateAction<Set<string>>>;
30
- isUserChangeRef: React.MutableRefObject<boolean>;
31
+ markUserChange: () => void;
31
32
  selectionMode: SelectionMode;
32
33
  isNormalized?: boolean;
33
34
  normalizedState?: NormalizedItems;
34
35
  batchUpdateItems?: (updates: Map<string, Partial<NestedListItem>>) => void;
35
36
  }
36
- export declare const useNestedListHandlers: ({ setItems, findItemById, updateParentsUpward, onChange, onItemToggle, getCategory, setCollapsedItems, setIsListCollapsed, setSelectedCategories, isUserChangeRef, selectionMode, isNormalized, normalizedState, batchUpdateItems, }: UseNestedListHandlersProps) => {
37
+ export declare const useNestedListHandlers: ({ setItems, itemsRef, findItemById, updateParentsUpward, onChange, onItemToggle, getCategory, setCollapsedItems, setIsListCollapsed, setSelectedCategories, markUserChange, selectionMode, isNormalized, normalizedState, batchUpdateItems, }: UseNestedListHandlersProps) => {
37
38
  handleToggle: (itemId: string) => void;
38
39
  handleToggleCollapse: (itemId: string) => void;
39
40
  handleCollapseAll: () => void;