@1771technologies/lytenyte-pro 0.0.39 → 0.0.40

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.
@@ -10,9 +10,10 @@ import "@1771technologies/grid-core";
10
10
  import { g as useEdgeScroll, h as useDraggable, c as canAgg, a as canMeasure, f as useDroppable, u as useAggregationSource, b as useMeasuresSource, d as useRowGroupsSource, e as useColumnPivotSource, P as Pill, M as MenuTrigger, i as PillManagerAggMenu, j as PillManagerMeasureMenu } from "./pill-C4Jhdf8E.js";
11
11
  import { A as ArrowRightIcon } from "./tickmark-icon-CoogRMoO.js";
12
12
  import { A as ArrowDownIcon } from "./arrow-down-icon-B-3ldODD.js";
13
- import { D as DragIcon, M as MeasuresIcon, C as ColumnPivotIcon, R as RowGroupIcon, a as MoreDotsIcon } from "./row-group-icon-BOOju5Vu.js";
13
+ import { D as DragIcon, M as MeasuresIcon, C as ColumnPivotIcon, R as RowGroupIcon } from "./row-group-icon-D8JA6sh9.js";
14
14
  import { createPortal } from "react-dom";
15
15
  import { D as DragGroupIcon, S as SearchIcon } from "./search-icon-CcG1lqsn.js";
16
+ import { M as MoreDotsIcon } from "./more-dots-icon-CzAH3xHG.js";
16
17
  import { C as CrossIcon } from "./cross-icon-CEMLAlFX.js";
17
18
  import { M as MenuRoot, a as MenuPortal, b as MenuPositioner } from "./MenuRoot-9n64jNWP.js";
18
19
  function Sizer({
package/dist/icons.js CHANGED
@@ -1,11 +1,13 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { A, T } from "./tickmark-icon-CoogRMoO.js";
3
3
  import { A as A2 } from "./arrow-down-icon-B-3ldODD.js";
4
- import { C, D, M, a, R } from "./row-group-icon-BOOju5Vu.js";
4
+ import { C, D, M, R } from "./row-group-icon-D8JA6sh9.js";
5
5
  import { C as C2 } from "./cross-icon-CEMLAlFX.js";
6
6
  import { D as D2, S } from "./search-icon-CcG1lqsn.js";
7
7
  import { C as C3, E, M as M2 } from "./manage-columns-icon-D4CElo5H.js";
8
+ import { M as M3 } from "./more-dots-icon-CzAH3xHG.js";
8
9
  import { P } from "./plus-icon-ToqW5CC-.js";
10
+ import { S as S2, a } from "./sort-descending-BMtfaa2L.js";
9
11
  function AggregationIcon(props) {
10
12
  return /* @__PURE__ */ jsxs(
11
13
  "svg",
@@ -502,11 +504,13 @@ export {
502
504
  HideColumnIcon,
503
505
  M2 as ManageColumnsIcon,
504
506
  M as MeasuresIcon,
505
- a as MoreDotsIcon,
507
+ M3 as MoreDotsIcon,
506
508
  P as PlusIcon,
507
509
  ResetColumnsIcon,
508
510
  R as RowGroupIcon,
509
511
  S as SearchIcon,
512
+ S2 as SortAscending,
513
+ a as SortDescending,
510
514
  SortIcon,
511
515
  T as TickmarkIcon
512
516
  };
package/dist/index.js CHANGED
@@ -19,6 +19,8 @@ import { u as useDialogRootContext, D as DialogPortalContext, b as useOptionalDi
19
19
  import { a as useControlled, b as useTransitionStatus, c as useScrollLock } from "./useScrollLock-D6h5lZYs.js";
20
20
  import { P as PopoverRootContext, u as usePopoverRootContext, c as PopoverPortalContext, A as AnchorProvider } from "./anchor-context-B9sGQdR5.js";
21
21
  import { makeGridPro } from "@1771technologies/grid-store-pro";
22
+ import { M as MoreDotsIcon } from "./more-dots-icon-CzAH3xHG.js";
23
+ import { S as SortAscending, a as SortDescending } from "./sort-descending-BMtfaa2L.js";
22
24
  import { createClientDataSource } from "@1771technologies/grid-client-data-source-pro";
23
25
  import { createTreeDataSource } from "@1771technologies/grid-tree-data-source";
24
26
  function useGrid() {
@@ -38,23 +40,6 @@ function useHeaderDisplayGridTemplate(levelsCount, headerHeight, groupHeaderHeig
38
40
  }, [floatingRowEnabled, floatingRowHeight, groupHeaderHeight, headerHeight, levelsCount]);
39
41
  return gridTemplateRows;
40
42
  }
41
- function HeaderCellDefault({ column }) {
42
- const label = column.headerName ?? column.id;
43
- return /* @__PURE__ */ jsx(
44
- "div",
45
- {
46
- style: {
47
- display: "flex",
48
- alignItems: "center",
49
- boxSizing: "border-box",
50
- width: "100%",
51
- height: "100%",
52
- paddingInline: 12
53
- },
54
- children: label
55
- }
56
- );
57
- }
58
43
  function HeaderCellMarker({ api }) {
59
44
  const supportsSelectedAll = api.rowSelectionSelectAllSupported();
60
45
  const allSelected = api.rowSelectionAllRowsSelected();
@@ -95,17 +80,18 @@ function useHeaderCellRenderer(api, column) {
95
80
  const sx = api.getState();
96
81
  const renderers = sx.columnHeaderRenderers.use();
97
82
  const base = sx.columnBase.use();
83
+ const defaultRenderer = sx.internal.columnHeaderDefaultRenderer.peek();
98
84
  const Renderer = useMemo(() => {
99
85
  if (column.id === COLUMN_MARKER_ID) return HeaderCellMarker;
100
86
  const fn = column.headerRenderer ?? base.headerRenderer;
101
- if (!fn) return HeaderCellDefault;
87
+ if (!fn) return defaultRenderer;
102
88
  if (typeof fn === "string") {
103
89
  const cell = renderers[fn];
104
90
  if (!cell) throw new Error(`Header cell renderer with name ${fn} does not exist.`);
105
91
  return cell;
106
92
  }
107
93
  return fn;
108
- }, [base.headerRenderer, column.headerRenderer, column.id, renderers]);
94
+ }, [base.headerRenderer, column.headerRenderer, column.id, defaultRenderer, renderers]);
109
95
  return Renderer;
110
96
  }
111
97
  function useHeaderMove(api, column, columnIndex) {
@@ -611,6 +597,7 @@ function HeaderGroupCell({
611
597
  hierarchyRowIndex: rowStart - 1
612
598
  });
613
599
  });
600
+ const Renderer = api.getState().columnGroupHeaderRenderer.use() ?? HeaderGroupDefault;
614
601
  return /* @__PURE__ */ jsx(
615
602
  "div",
616
603
  {
@@ -625,7 +612,7 @@ function HeaderGroupCell({
625
612
  tabIndex: -1,
626
613
  ...headerMove.moveProps,
627
614
  className: "lng1771-header__group",
628
- children: /* @__PURE__ */ jsx(HeaderGroupDefault, { group: groupItem, api })
615
+ children: /* @__PURE__ */ jsx(Renderer, { group: groupItem, api })
629
616
  }
630
617
  );
631
618
  }
@@ -2797,7 +2784,7 @@ function GridFrame({
2797
2784
  return /* @__PURE__ */ jsxs(
2798
2785
  "div",
2799
2786
  {
2800
- "data-lng1771-cell-selection-enabled": cellSelectionEnabled ? true : void 0,
2787
+ "data-cell-selection-enabled": cellSelectionEnabled ? true : void 0,
2801
2788
  className: "lng1771-grid-frame",
2802
2789
  style: { gridTemplateColumns: template },
2803
2790
  children: [
@@ -3657,9 +3644,67 @@ function Bottom() {
3657
3644
  /* @__PURE__ */ jsx(CellSelectionBottom, {})
3658
3645
  ] });
3659
3646
  }
3647
+ function HeaderCellDefault({ column, api }) {
3648
+ const sx = api.getState();
3649
+ const isSortable = api.columnIsSortable(column);
3650
+ const sortModel = sx.sortModel.use();
3651
+ const currentSort = api.columnSortDirection(column);
3652
+ const currentSortIndex = api.columnSortModelIndex(column);
3653
+ const nextSort = api.columnSortGetNext(column);
3654
+ const displaySortNumber = sortModel.length > 0 && currentSortIndex > 0;
3655
+ const hints = column.uiHints ?? sx.columnBase.peek().uiHints ?? {};
3656
+ const columnMenuOpen = sx.columnMenuActiveColumn.use();
3657
+ const hasControls = hints.columnMenu || hints.sortButton && isSortable;
3658
+ return /* @__PURE__ */ jsxs(
3659
+ "div",
3660
+ {
3661
+ className: clsx(
3662
+ "lng1771-header-default",
3663
+ column.type === "number" && "lng1771-header-default--end-align",
3664
+ column.type !== "number" && "lng1771-header-default--start-align"
3665
+ ),
3666
+ children: [
3667
+ /* @__PURE__ */ jsx("div", { children: column.headerName ?? column.id }),
3668
+ hasControls && /* @__PURE__ */ jsxs("div", { className: "lng1771-header-default__controls", children: [
3669
+ isSortable && hints.sortButton && /* @__PURE__ */ jsxs(
3670
+ "button",
3671
+ {
3672
+ tabIndex: -1,
3673
+ "data-active": currentSort != null,
3674
+ className: clsx("lng1771-header-default__button"),
3675
+ onClick: () => api.columnSortCycleToNext(column),
3676
+ children: [
3677
+ currentSort === "asc" && /* @__PURE__ */ jsx(SortAscending, { width: 16, height: 16 }),
3678
+ currentSort === "desc" && /* @__PURE__ */ jsx(SortDescending, { width: 16, height: 16 }),
3679
+ !currentSort && nextSort?.includes("asc") && /* @__PURE__ */ jsx(SortAscending, { width: 16, height: 16 }),
3680
+ !currentSort && nextSort?.includes("desc") && /* @__PURE__ */ jsx(SortDescending, { width: 16, height: 16 }),
3681
+ displaySortNumber && currentSortIndex > 0 && /* @__PURE__ */ jsx("span", { className: "lng1771-header-default__sort-count", children: currentSortIndex + 1 })
3682
+ ]
3683
+ }
3684
+ ),
3685
+ hints.columnMenu && /* @__PURE__ */ jsx(
3686
+ "button",
3687
+ {
3688
+ tabIndex: -1,
3689
+ className: "lng1771-header-default__button",
3690
+ onFocus: (ev) => {
3691
+ if (column !== columnMenuOpen) return;
3692
+ ev.currentTarget.parentElement?.parentElement?.parentElement?.focus();
3693
+ },
3694
+ "data-active": column === columnMenuOpen,
3695
+ onClick: (e) => api.columnMenuOpen(column, e.currentTarget),
3696
+ children: /* @__PURE__ */ jsx(MoreDotsIcon, { width: 16, height: 16 })
3697
+ }
3698
+ )
3699
+ ] })
3700
+ ]
3701
+ }
3702
+ );
3703
+ }
3660
3704
  const useLyteNytePro = (p2) => {
3661
3705
  const [grid] = useState(() => {
3662
3706
  const s3 = makeGridPro(p2);
3707
+ s3.state.internal.columnHeaderDefaultRenderer.set(() => HeaderCellDefault);
3663
3708
  const useSignalWatcher = (c, fn) => {
3664
3709
  const signal2 = s3.state[c];
3665
3710
  useEffect(() => {
@@ -23,21 +23,8 @@
23
23
  .lng1771-cell,
24
24
  .lng1771-cell__full-width {
25
25
  &:focus {
26
- outline: none;
27
- }
28
-
29
- &:focus:after {
30
- content: "";
31
- position: absolute;
32
- top: 0px;
33
- inset-inline-start: 1px;
34
- width: calc(100% - 2px);
35
- height: 100%;
36
- pointer-events: none;
37
- box-sizing: border-box;
38
- border: 1px solid var(--lng1771-focus-outline);
39
- border-radius: 2px;
40
- z-index: 10;
26
+ outline: 1px solid var(--lng1771-focus-outline);
27
+ outline-offset: -2px;
41
28
  }
42
29
  }
43
30
 
@@ -1946,3 +1933,71 @@ body.lng1771-drag-on
1946
1933
  .lng1771-grid-frame__control-button-icon {
1947
1934
  color: var(--lng1771-gray-70);
1948
1935
  }
1936
+ .lng1771-header-default {
1937
+ display: flex;
1938
+ align-items: center;
1939
+ width: 100%;
1940
+ height: 100%;
1941
+ padding-inline: 12px;
1942
+ box-sizing: border-box;
1943
+ text-transform: capitalize;
1944
+ position: relative;
1945
+ font-weight: 400;
1946
+ letter-spacing: 0.25px;
1947
+ }
1948
+
1949
+ .lng1771-header-default--end-align {
1950
+ justify-content: flex-end;
1951
+ }
1952
+
1953
+ .lng1771-header-default__controls {
1954
+ position: absolute;
1955
+ display: flex;
1956
+ align-items: center;
1957
+ gap: 4px;
1958
+ }
1959
+
1960
+ .lng1771-header-default--start-align .lng1771-header-default__controls {
1961
+ inset-inline-end: 12px;
1962
+ }
1963
+
1964
+ .lng1771-header-default--end-align .lng1771-header-default__controls {
1965
+ inset-inline-start: 12px;
1966
+ flex-direction: row-reverse;
1967
+ }
1968
+
1969
+ .lng1771-header-default__button {
1970
+ background-color: transparent;
1971
+ background-color: var(--lng1771-gray-05);
1972
+ border: 1px solid transparent;
1973
+ display: flex;
1974
+ align-items: center;
1975
+ justify-content: center;
1976
+ padding: 3px;
1977
+ border-radius: 4px;
1978
+ opacity: 0;
1979
+ transition: opacity 100ms ease-in;
1980
+ color: var(--lng1771-gray-70);
1981
+
1982
+ &:hover {
1983
+ background-color: var(--lng1771-gray-20);
1984
+ border-color: var(--lng1771-gray-30);
1985
+ cursor: pointer;
1986
+ }
1987
+ }
1988
+
1989
+ .lng1771-header-default__button[data-active="true"] {
1990
+ opacity: 1;
1991
+ color: var(--lng1771-primary-50);
1992
+ border-color: var(--lng1771-gray-40);
1993
+ }
1994
+
1995
+ .lng1771-header-default:hover .lng1771-header-default__button {
1996
+ opacity: 1;
1997
+ }
1998
+
1999
+ .lng1771-header-default__sort-count {
2000
+ font-size: 10px;
2001
+ position: relative;
2002
+ top: -5px;
2003
+ }
@@ -0,0 +1,26 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ const MoreDotsIcon = (props) => {
3
+ return /* @__PURE__ */ jsx(
4
+ "svg",
5
+ {
6
+ width: "20",
7
+ height: "20",
8
+ viewBox: "0 0 20 20",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ ...props,
12
+ children: /* @__PURE__ */ jsx(
13
+ "path",
14
+ {
15
+ fillRule: "evenodd",
16
+ clipRule: "evenodd",
17
+ d: "M11.5 3.75C11.5 2.7835 10.7165 2 9.75 2C8.7835 2 8 2.7835 8 3.75C8 4.7165 8.7835 5.5 9.75 5.5C10.7165 5.5 11.5 4.7165 11.5 3.75ZM9.75 8C10.7165 8 11.5 8.7835 11.5 9.75C11.5 10.7165 10.7165 11.5 9.75 11.5C8.7835 11.5 8 10.7165 8 9.75C8 8.7835 8.7835 8 9.75 8ZM9.75 14C10.7165 14 11.5 14.7835 11.5 15.75C11.5 16.7165 10.7165 17.5 9.75 17.5C8.7835 17.5 8 16.7165 8 15.75C8 14.7835 8.7835 14 9.75 14Z",
18
+ fill: "currentcolor"
19
+ }
20
+ )
21
+ }
22
+ );
23
+ };
24
+ export {
25
+ MoreDotsIcon as M
26
+ };
@@ -8,10 +8,11 @@ import { useCombinedRefs } from "@1771technologies/react-utils";
8
8
  import "@1771technologies/grid-provider";
9
9
  import "@1771technologies/react-dragon";
10
10
  import "@1771technologies/grid-core";
11
- import { D as DragIcon, M as MeasuresIcon, C as ColumnPivotIcon, R as RowGroupIcon, a as MoreDotsIcon } from "./row-group-icon-BOOju5Vu.js";
11
+ import { D as DragIcon, M as MeasuresIcon, C as ColumnPivotIcon, R as RowGroupIcon } from "./row-group-icon-D8JA6sh9.js";
12
12
  import { M as MenuRoot, a as MenuPortal, b as MenuPositioner } from "./MenuRoot-9n64jNWP.js";
13
13
  import { M as ManageColumnsIcon, C as CollapseIcon, E as ExpandIcon } from "./manage-columns-icon-D4CElo5H.js";
14
14
  import { createPortal } from "react-dom";
15
+ import { M as MoreDotsIcon } from "./more-dots-icon-CzAH3xHG.js";
15
16
  function useColumnSource(source) {
16
17
  const { api, state: sx } = useGrid();
17
18
  const columns = sx.columns.use();
@@ -109,28 +109,6 @@ const MeasuresIcon = (props) => {
109
109
  }
110
110
  );
111
111
  };
112
- const MoreDotsIcon = (props) => {
113
- return /* @__PURE__ */ jsx(
114
- "svg",
115
- {
116
- width: "20",
117
- height: "20",
118
- viewBox: "0 0 20 20",
119
- fill: "none",
120
- xmlns: "http://www.w3.org/2000/svg",
121
- ...props,
122
- children: /* @__PURE__ */ jsx(
123
- "path",
124
- {
125
- fillRule: "evenodd",
126
- clipRule: "evenodd",
127
- d: "M11.5 3.75C11.5 2.7835 10.7165 2 9.75 2C8.7835 2 8 2.7835 8 3.75C8 4.7165 8.7835 5.5 9.75 5.5C10.7165 5.5 11.5 4.7165 11.5 3.75ZM9.75 8C10.7165 8 11.5 8.7835 11.5 9.75C11.5 10.7165 10.7165 11.5 9.75 11.5C8.7835 11.5 8 10.7165 8 9.75C8 8.7835 8.7835 8 9.75 8ZM9.75 14C10.7165 14 11.5 14.7835 11.5 15.75C11.5 16.7165 10.7165 17.5 9.75 17.5C8.7835 17.5 8 16.7165 8 15.75C8 14.7835 8.7835 14 9.75 14Z",
128
- fill: "currentcolor"
129
- }
130
- )
131
- }
132
- );
133
- };
134
112
  const RowGroupIcon = (p) => {
135
113
  return /* @__PURE__ */ jsxs(
136
114
  "svg",
@@ -200,6 +178,5 @@ export {
200
178
  ColumnPivotIcon as C,
201
179
  DragIcon as D,
202
180
  MeasuresIcon as M,
203
- RowGroupIcon as R,
204
- MoreDotsIcon as a
181
+ RowGroupIcon as R
205
182
  };
@@ -0,0 +1,34 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ const SortAscending = (p) => {
3
+ return /* @__PURE__ */ jsx(
4
+ "svg",
5
+ {
6
+ xmlns: "http://www.w3.org/2000/svg",
7
+ width: "20",
8
+ height: "20",
9
+ fill: "currentcolor",
10
+ stroke: "2",
11
+ viewBox: "0 0 256 256",
12
+ ...p,
13
+ children: /* @__PURE__ */ jsx("path", { d: "M202.83,146.83l-72,72a4,4,0,0,1-5.66,0l-72-72a4,4,0,0,1,5.66-5.66L124,206.34V40a4,4,0,0,1,8,0V206.34l65.17-65.17a4,4,0,0,1,5.66,5.66Z" })
14
+ }
15
+ );
16
+ };
17
+ const SortDescending = (p) => {
18
+ return /* @__PURE__ */ jsx(
19
+ "svg",
20
+ {
21
+ xmlns: "http://www.w3.org/2000/svg",
22
+ width: "20",
23
+ height: "20",
24
+ fill: "currentcolor",
25
+ viewBox: "0 0 256 256",
26
+ ...p,
27
+ children: /* @__PURE__ */ jsx("path", { d: "M202.83,114.83a4,4,0,0,1-5.66,0L132,49.66V216a4,4,0,0,1-8,0V49.66L58.83,114.83a4,4,0,0,1-5.66-5.66l72-72a4,4,0,0,1,5.66,0l72,72A4,4,0,0,1,202.83,114.83Z" })
28
+ }
29
+ );
30
+ };
31
+ export {
32
+ SortAscending as S,
33
+ SortDescending as a
34
+ };
@@ -0,0 +1,2 @@
1
+ import { ColumnHeaderRendererParamsProReact } from '../types';
2
+ export declare function HeaderCellDefault({ column, api }: ColumnHeaderRendererParamsProReact): import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1771technologies/lytenyte-pro",
3
- "version": "0.0.39",
3
+ "version": "0.0.40",
4
4
  "license": "COMMERCIAL",
5
5
  "type": "module",
6
6
  "files": [
@@ -70,22 +70,20 @@
70
70
  "react-dom": "^18.0.0 || ^19.0.0"
71
71
  },
72
72
  "dependencies": {
73
- "@1771technologies/grid-client-data-source-pro": "0.0.39",
74
- "@1771technologies/grid-core": "0.0.39",
75
- "@1771technologies/grid-design": "0.0.39",
76
- "@1771technologies/grid-provider": "0.0.39",
77
- "@1771technologies/grid-store-pro": "0.0.39",
78
- "@1771technologies/grid-tree-data-source": "0.0.39",
79
- "@1771technologies/grid-types": "0.0.39",
80
- "@1771technologies/js-utils": "0.0.39",
81
- "@1771technologies/lytenyte-core": "0.0.39",
82
- "@1771technologies/positioner": "0.0.39",
83
- "@1771technologies/react-cascada": "0.0.39",
84
- "@1771technologies/react-dragon": "0.0.39",
85
- "@1771technologies/react-popover": "0.0.39",
86
- "@1771technologies/react-sizer": "0.0.39",
87
- "@1771technologies/react-split-pane": "0.0.39",
88
- "@1771technologies/react-utils": "0.0.39",
73
+ "@1771technologies/grid-client-data-source-pro": "0.0.40",
74
+ "@1771technologies/grid-core": "0.0.40",
75
+ "@1771technologies/grid-design": "0.0.40",
76
+ "@1771technologies/grid-provider": "0.0.40",
77
+ "@1771technologies/grid-store-pro": "0.0.40",
78
+ "@1771technologies/grid-tree-data-source": "0.0.40",
79
+ "@1771technologies/grid-types": "0.0.40",
80
+ "@1771technologies/js-utils": "0.0.40",
81
+ "@1771technologies/lytenyte-core": "0.0.40",
82
+ "@1771technologies/react-cascada": "0.0.40",
83
+ "@1771technologies/react-dragon": "0.0.40",
84
+ "@1771technologies/react-sizer": "0.0.40",
85
+ "@1771technologies/react-split-pane": "0.0.40",
86
+ "@1771technologies/react-utils": "0.0.40",
89
87
  "@base-ui-components/react": "1.0.0-alpha.7"
90
88
  },
91
89
  "devDependencies": {