@salt-ds/data-grid 1.0.23 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist-cjs/BaseCell.js +3 -3
- package/dist-cjs/BaseCell.js.map +1 -1
- package/dist-cjs/CellFrame.js.map +1 -1
- package/dist-cjs/ColumnDragContext.js.map +1 -1
- package/dist-cjs/ColumnGroup.js.map +1 -1
- package/dist-cjs/DropdownCellEditor.js +1 -1
- package/dist-cjs/DropdownCellEditor.js.map +1 -1
- package/dist-cjs/Grid.js +7 -7
- package/dist-cjs/Grid.js.map +1 -1
- package/dist-cjs/GridColumn.js.map +1 -1
- package/dist-cjs/HeaderCell.js +27 -25
- package/dist-cjs/HeaderCell.js.map +1 -1
- package/dist-cjs/RowSelectionCheckboxCellValue.js +1 -1
- package/dist-cjs/RowSelectionCheckboxCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js +1 -1
- package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionRadioCellValue.js +1 -1
- package/dist-cjs/RowSelectionRadioCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionRadioHeaderCell.js +2 -2
- package/dist-cjs/RowSelectionRadioHeaderCell.js.map +1 -1
- package/dist-cjs/index.js +20 -20
- package/dist-cjs/internal/ColumnGhost.js +1 -1
- package/dist-cjs/internal/ColumnGhost.js.map +1 -1
- package/dist-cjs/internal/LeftPart.js +2 -2
- package/dist-cjs/internal/LeftPart.js.map +1 -1
- package/dist-cjs/internal/MiddlePart.js +2 -2
- package/dist-cjs/internal/MiddlePart.js.map +1 -1
- package/dist-cjs/internal/RightPart.js +2 -2
- package/dist-cjs/internal/RightPart.js.map +1 -1
- package/dist-cjs/internal/TableRow.js.map +1 -1
- package/dist-cjs/internal/TopLeftPart.js +1 -1
- package/dist-cjs/internal/TopLeftPart.js.map +1 -1
- package/dist-cjs/internal/TopPart.js +1 -1
- package/dist-cjs/internal/TopPart.js.map +1 -1
- package/dist-cjs/internal/TopRightPart.js +2 -2
- package/dist-cjs/internal/TopRightPart.js.map +1 -1
- package/dist-cjs/internal/gridHooks.js +4 -4
- package/dist-cjs/internal/gridHooks.js.map +1 -1
- package/dist-es/BaseCell.js +3 -3
- package/dist-es/BaseCell.js.map +1 -1
- package/dist-es/CellFrame.js.map +1 -1
- package/dist-es/ColumnDragContext.js.map +1 -1
- package/dist-es/ColumnGroup.js.map +1 -1
- package/dist-es/DropdownCellEditor.js +1 -1
- package/dist-es/DropdownCellEditor.js.map +1 -1
- package/dist-es/Grid.js +7 -7
- package/dist-es/Grid.js.map +1 -1
- package/dist-es/GridColumn.js.map +1 -1
- package/dist-es/HeaderCell.js +27 -25
- package/dist-es/HeaderCell.js.map +1 -1
- package/dist-es/RowSelectionCheckboxCellValue.js +1 -1
- package/dist-es/RowSelectionCheckboxCellValue.js.map +1 -1
- package/dist-es/RowSelectionCheckboxHeaderCellValue.js +1 -1
- package/dist-es/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
- package/dist-es/RowSelectionRadioCellValue.js +1 -1
- package/dist-es/RowSelectionRadioCellValue.js.map +1 -1
- package/dist-es/RowSelectionRadioHeaderCell.js +2 -2
- package/dist-es/RowSelectionRadioHeaderCell.js.map +1 -1
- package/dist-es/index.js +8 -8
- package/dist-es/internal/ColumnGhost.js +1 -1
- package/dist-es/internal/ColumnGhost.js.map +1 -1
- package/dist-es/internal/LeftPart.js +2 -2
- package/dist-es/internal/LeftPart.js.map +1 -1
- package/dist-es/internal/MiddlePart.js +2 -2
- package/dist-es/internal/MiddlePart.js.map +1 -1
- package/dist-es/internal/RightPart.js +2 -2
- package/dist-es/internal/RightPart.js.map +1 -1
- package/dist-es/internal/TableRow.js.map +1 -1
- package/dist-es/internal/TopLeftPart.js +1 -1
- package/dist-es/internal/TopLeftPart.js.map +1 -1
- package/dist-es/internal/TopPart.js +1 -1
- package/dist-es/internal/TopPart.js.map +1 -1
- package/dist-es/internal/TopRightPart.js +2 -2
- package/dist-es/internal/TopRightPart.js.map +1 -1
- package/dist-es/internal/gridHooks.js +4 -4
- package/dist-es/internal/gridHooks.js.map +1 -1
- package/dist-types/GridColumn.d.ts +1 -1
- package/dist-types/index.d.ts +8 -8
- package/dist-types/internal/index.d.ts +5 -5
- package/package.json +3 -3
package/dist-cjs/HeaderCell.js
CHANGED
|
@@ -10,10 +10,13 @@ var react = require('react');
|
|
|
10
10
|
var ColumnDragContext = require('./ColumnDragContext.js');
|
|
11
11
|
var ColumnSortContext = require('./ColumnSortContext.js');
|
|
12
12
|
var Grid = require('./Grid.js');
|
|
13
|
-
var
|
|
13
|
+
var HeaderCell$1 = require('./HeaderCell.css.js');
|
|
14
14
|
require('./internal/CellMeasure.js');
|
|
15
15
|
var Cursor = require('./internal/Cursor.js');
|
|
16
|
+
require('./internal/DefaultCellValue.js');
|
|
17
|
+
require('./CellFrame.js');
|
|
16
18
|
require('./internal/GroupHeaderRow.js');
|
|
19
|
+
var gridHooks = require('./internal/gridHooks.js');
|
|
17
20
|
require('./internal/HeaderRow.js');
|
|
18
21
|
require('./internal/LeftPart.js');
|
|
19
22
|
require('./internal/MiddlePart.js');
|
|
@@ -23,19 +26,36 @@ require('./CursorContext.js');
|
|
|
23
26
|
require('./EditorContext.js');
|
|
24
27
|
require('./SelectionContext.js');
|
|
25
28
|
require('./internal/TableRow.js');
|
|
26
|
-
var gridHooks = require('./internal/gridHooks.js');
|
|
27
29
|
require('./internal/TopLeftPart.js');
|
|
28
30
|
require('./internal/TopPart.js');
|
|
29
31
|
require('./internal/TopRightPart.js');
|
|
30
|
-
require('./
|
|
31
|
-
require('./internal/DefaultCellValue.js');
|
|
32
|
-
var HeaderCell$1 = require('./HeaderCell.css.js');
|
|
32
|
+
var SizingContext = require('./SizingContext.js');
|
|
33
33
|
|
|
34
34
|
const withBaseName = core.makePrefixer("saltGridHeaderCell");
|
|
35
35
|
function HeaderCellSeparator(props) {
|
|
36
36
|
const className = withBaseName([props.separatorType, "Separator"].join(""));
|
|
37
37
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className });
|
|
38
38
|
}
|
|
39
|
+
const HeaderCellSortingIcon = ({
|
|
40
|
+
justify,
|
|
41
|
+
sortOrder
|
|
42
|
+
}) => {
|
|
43
|
+
const className = withBaseName("sortingIcon");
|
|
44
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45
|
+
"div",
|
|
46
|
+
{
|
|
47
|
+
className: clsx.clsx(className, {
|
|
48
|
+
[withBaseName("sortingIconStart")]: justify === "start",
|
|
49
|
+
[withBaseName("sortingIconEnd")]: justify === "end"
|
|
50
|
+
}),
|
|
51
|
+
"aria-hidden": true,
|
|
52
|
+
children: [
|
|
53
|
+
sortOrder === Grid.SortOrder.ASC && /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowUpIcon, {}),
|
|
54
|
+
sortOrder === Grid.SortOrder.DESC && /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownIcon, {})
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
};
|
|
39
59
|
function HeaderCell(props) {
|
|
40
60
|
const { column, children, isFocused } = props;
|
|
41
61
|
const targetWindow = window.useWindow();
|
|
@@ -58,24 +78,6 @@ function HeaderCell(props) {
|
|
|
58
78
|
setSortOrder
|
|
59
79
|
} = ColumnSortContext.useColumnSortContext();
|
|
60
80
|
const valueAlignRight = align === "right";
|
|
61
|
-
const HeaderCellSortingIcon = ({ justify }) => {
|
|
62
|
-
const className = withBaseName("sortingIcon");
|
|
63
|
-
const icon = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
64
|
-
"div",
|
|
65
|
-
{
|
|
66
|
-
className: clsx.clsx(className, {
|
|
67
|
-
[withBaseName("sortingIconStart")]: justify === "start",
|
|
68
|
-
[withBaseName("sortingIconEnd")]: justify === "end"
|
|
69
|
-
}),
|
|
70
|
-
"aria-hidden": true,
|
|
71
|
-
children: [
|
|
72
|
-
sortOrder === Grid.SortOrder.ASC && /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowUpIcon, {}),
|
|
73
|
-
sortOrder === Grid.SortOrder.DESC && /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowDownIcon, {})
|
|
74
|
-
]
|
|
75
|
-
}
|
|
76
|
-
);
|
|
77
|
-
return icon;
|
|
78
|
-
};
|
|
79
81
|
const ariaSortMap = {
|
|
80
82
|
asc: "ascending",
|
|
81
83
|
desc: "descending",
|
|
@@ -117,7 +119,7 @@ function HeaderCell(props) {
|
|
|
117
119
|
"aria-sort": sortByColumnId === id && sortable ? ariaSort : void 0,
|
|
118
120
|
"aria-label": column.info.props["aria-label"],
|
|
119
121
|
children: [
|
|
120
|
-
sortByColumnId === id && sortable && valueAlignRight && /* @__PURE__ */ jsxRuntime.jsx(HeaderCellSortingIcon, { justify: "start" }),
|
|
122
|
+
sortByColumnId === id && sortable && valueAlignRight && /* @__PURE__ */ jsxRuntime.jsx(HeaderCellSortingIcon, { justify: "start", sortOrder }),
|
|
121
123
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
122
124
|
"div",
|
|
123
125
|
{
|
|
@@ -131,7 +133,7 @@ function HeaderCell(props) {
|
|
|
131
133
|
children
|
|
132
134
|
}
|
|
133
135
|
),
|
|
134
|
-
sortByColumnId === id && sortable && !valueAlignRight && /* @__PURE__ */ jsxRuntime.jsx(HeaderCellSortingIcon, { justify: "end" }),
|
|
136
|
+
sortByColumnId === id && sortable && !valueAlignRight && /* @__PURE__ */ jsxRuntime.jsx(HeaderCellSortingIcon, { justify: "end", sortOrder }),
|
|
135
137
|
/* @__PURE__ */ jsxRuntime.jsx(HeaderCellSeparator, { separatorType: separator }),
|
|
136
138
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
137
139
|
"div",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderCell.js","sources":["../src/HeaderCell.tsx"],"sourcesContent":["import {\n type FlexContentAlignment,\n makePrefixer,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport { ArrowDownIcon, ArrowUpIcon } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type KeyboardEventHandler, useRef } from \"react\";\n\nimport { useColumnDragContext } from \"./ColumnDragContext\";\nimport { useColumnSortContext } from \"./ColumnSortContext\";\nimport { type ColumnSeparatorType, SortOrder } from \"./Grid\";\nimport type { HeaderCellProps } from \"./GridColumn\";\nimport { useSizingContext } from \"./SizingContext\";\nimport { Cursor, useFocusableContent } from \"./internal\";\n\nimport headerCellCss from \"./HeaderCell.css\";\n\nconst withBaseName = makePrefixer(\"saltGridHeaderCell\");\n\nexport interface HeaderCellSeparatorProps {\n separatorType: ColumnSeparatorType;\n}\n\nexport function HeaderCellSeparator(props: HeaderCellSeparatorProps) {\n const className = withBaseName([props.separatorType, \"Separator\"].join(\"\"));\n return <div className={className} />;\n}\n\ntype AriaSortProps = \"none\" | \"ascending\" | \"descending\";\n\nexport function HeaderCell<T>(props: HeaderCellProps<T>) {\n const { column, children, isFocused } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-header-cell\",\n css: headerCellCss,\n window: targetWindow,\n });\n\n const { separator } = column;\n const { align, id, headerClassName, sortable, onSortOrderChange } =\n column.info.props;\n const { onResizeHandleMouseDown } = useSizingContext();\n\n const { columnMove, onColumnMoveHandleMouseDown } = useColumnDragContext();\n const onMouseDown = columnMove ? onColumnMoveHandleMouseDown : undefined;\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableHeaderCellElement>();\n\n const {\n onClickSortColumn,\n setSortByColumnId,\n sortOrder,\n sortByColumnId,\n setSortOrder,\n } = useColumnSortContext();\n\n const valueAlignRight = align === \"right\";\n\n interface HeaderCellSortingIconProps {\n justify: FlexContentAlignment;\n }\n\n const HeaderCellSortingIcon = ({ justify }: HeaderCellSortingIconProps) => {\n const className = withBaseName(\"sortingIcon\");\n const icon = (\n <div\n className={clsx(className, {\n [withBaseName(\"sortingIconStart\")]: justify === \"start\",\n [withBaseName(\"sortingIconEnd\")]: justify === \"end\",\n })}\n aria-hidden\n >\n {sortOrder === SortOrder.ASC && <ArrowUpIcon />}\n {sortOrder === SortOrder.DESC && <ArrowDownIcon />}\n </div>\n );\n\n return icon;\n };\n\n const ariaSortMap = {\n asc: \"ascending\",\n desc: \"descending\",\n none: \"none\",\n };\n\n const ariaSort = ariaSortMap[sortOrder] as AriaSortProps;\n\n const order =\n sortOrder === SortOrder.ASC\n ? SortOrder.DESC\n : sortOrder === SortOrder.DESC\n ? SortOrder.NONE\n : SortOrder.ASC;\n\n const withSortOrder = sortOrder !== SortOrder.NONE && sortByColumnId === id;\n\n const onClick = () => {\n if (onSortOrderChange) {\n setSortByColumnId(id);\n setSortOrder(order);\n onSortOrderChange({ sortOrder: order });\n return;\n }\n setSortByColumnId(id);\n onClickSortColumn(id);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableHeaderCellElement> = (\n event,\n ) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n onClick();\n }\n };\n\n return (\n <th\n ref={ref}\n aria-colindex={column.index + 1}\n data-column-index={column.index}\n className={clsx(withBaseName(), headerClassName, {\n [withBaseName(\"sortable\")]: sortable,\n })}\n role=\"columnheader\"\n data-testid=\"column-header\"\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n onClick={sortable ? onClick : undefined}\n onKeyDown={sortable ? onKeyDown : undefined}\n aria-sort={sortByColumnId === id && sortable ? ariaSort : undefined}\n aria-label={column.info.props[\"aria-label\"]}\n >\n {sortByColumnId === id && sortable && valueAlignRight && (\n <HeaderCellSortingIcon justify=\"start\" />\n )}\n <div\n className={clsx(withBaseName(\"valueContainer\"), {\n [withBaseName(\"alignRight\")]: valueAlignRight,\n // both classNames below needed to ensure header cell title & sort icon do not overlap when column resized to be smaller\n [withBaseName(\"alignRightWithSortOrder\")]:\n valueAlignRight && withSortOrder,\n [withBaseName(\"alignLeftWithSortOrder\")]:\n !valueAlignRight && withSortOrder,\n })}\n onMouseDown={onMouseDown}\n >\n {children}\n </div>\n {sortByColumnId === id && sortable && !valueAlignRight && (\n <HeaderCellSortingIcon justify=\"end\" />\n )}\n <HeaderCellSeparator separatorType={separator} />\n <div\n data-testid={`column-${column.index}-resize-handle`}\n className={withBaseName(\"resizeHandle\")}\n onMouseDown={onResizeHandleMouseDown}\n />\n {isFocused && !isFocusableContent && <Cursor />}\n </th>\n );\n}\n\nexport function AutoSizeHeaderCell<T>(props: HeaderCellProps<T>) {\n const { column, children, isFocused } = props;\n const { separator } = column;\n const valueContainerRef = useRef<HTMLDivElement>(null);\n const { resizeColumn } = useSizingContext();\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableHeaderCellElement>();\n\n useIsomorphicLayoutEffect(() => {\n const width = valueContainerRef.current\n ? valueContainerRef.current.offsetWidth\n : undefined;\n if (width !== undefined && width !== column.info.width) {\n resizeColumn(column.index, width);\n }\n });\n\n return (\n <th\n ref={ref}\n aria-colindex={column.index + 1}\n data-column-index={column.index}\n className={withBaseName()}\n role=\"columnheader\"\n data-testid=\"column-header\"\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n >\n <div className={withBaseName(\"autosizeContainer\")}>\n <div\n ref={valueContainerRef}\n className={withBaseName(\"measuredContent\")}\n >\n {children}\n </div>\n </div>\n <HeaderCellSeparator separatorType={separator} />\n {isFocused && !isFocusableContent && <Cursor />}\n </th>\n );\n}\n"],"names":["makePrefixer","jsx","useWindow","useComponentCssInjection","headerCellCss","useSizingContext","useColumnDragContext","useFocusableContent","useColumnSortContext","jsxs","clsx","SortOrder","ArrowUpIcon","ArrowDownIcon","Cursor","useRef","useIsomorphicLayoutEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeaderCell.js","sources":["../src/HeaderCell.tsx"],"sourcesContent":["import {\n type FlexContentAlignment,\n makePrefixer,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport { ArrowDownIcon, ArrowUpIcon } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type KeyboardEventHandler, useRef } from \"react\";\n\nimport { useColumnDragContext } from \"./ColumnDragContext\";\nimport { useColumnSortContext } from \"./ColumnSortContext\";\nimport { type ColumnSeparatorType, SortOrder } from \"./Grid\";\nimport type { HeaderCellProps } from \"./GridColumn\";\nimport headerCellCss from \"./HeaderCell.css\";\nimport { Cursor, useFocusableContent } from \"./internal\";\nimport { useSizingContext } from \"./SizingContext\";\n\nconst withBaseName = makePrefixer(\"saltGridHeaderCell\");\n\nexport interface HeaderCellSeparatorProps {\n separatorType: ColumnSeparatorType;\n}\n\nexport function HeaderCellSeparator(props: HeaderCellSeparatorProps) {\n const className = withBaseName([props.separatorType, \"Separator\"].join(\"\"));\n return <div className={className} />;\n}\n\ninterface HeaderCellSortingIconProps {\n justify: FlexContentAlignment;\n sortOrder: SortOrder;\n}\n\nconst HeaderCellSortingIcon = ({\n justify,\n sortOrder,\n}: HeaderCellSortingIconProps) => {\n const className = withBaseName(\"sortingIcon\");\n return (\n <div\n className={clsx(className, {\n [withBaseName(\"sortingIconStart\")]: justify === \"start\",\n [withBaseName(\"sortingIconEnd\")]: justify === \"end\",\n })}\n aria-hidden\n >\n {sortOrder === SortOrder.ASC && <ArrowUpIcon />}\n {sortOrder === SortOrder.DESC && <ArrowDownIcon />}\n </div>\n );\n};\n\ntype AriaSortProps = \"none\" | \"ascending\" | \"descending\";\n\nexport function HeaderCell<T>(props: HeaderCellProps<T>) {\n const { column, children, isFocused } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-header-cell\",\n css: headerCellCss,\n window: targetWindow,\n });\n\n const { separator } = column;\n const { align, id, headerClassName, sortable, onSortOrderChange } =\n column.info.props;\n const { onResizeHandleMouseDown } = useSizingContext();\n\n const { columnMove, onColumnMoveHandleMouseDown } = useColumnDragContext();\n const onMouseDown = columnMove ? onColumnMoveHandleMouseDown : undefined;\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableHeaderCellElement>();\n\n const {\n onClickSortColumn,\n setSortByColumnId,\n sortOrder,\n sortByColumnId,\n setSortOrder,\n } = useColumnSortContext();\n\n const valueAlignRight = align === \"right\";\n\n const ariaSortMap = {\n asc: \"ascending\",\n desc: \"descending\",\n none: \"none\",\n };\n\n const ariaSort = ariaSortMap[sortOrder] as AriaSortProps;\n\n const order =\n sortOrder === SortOrder.ASC\n ? SortOrder.DESC\n : sortOrder === SortOrder.DESC\n ? SortOrder.NONE\n : SortOrder.ASC;\n\n const withSortOrder = sortOrder !== SortOrder.NONE && sortByColumnId === id;\n\n const onClick = () => {\n if (onSortOrderChange) {\n setSortByColumnId(id);\n setSortOrder(order);\n onSortOrderChange({ sortOrder: order });\n return;\n }\n setSortByColumnId(id);\n onClickSortColumn(id);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableHeaderCellElement> = (\n event,\n ) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n onClick();\n }\n };\n\n return (\n <th\n ref={ref}\n aria-colindex={column.index + 1}\n data-column-index={column.index}\n className={clsx(withBaseName(), headerClassName, {\n [withBaseName(\"sortable\")]: sortable,\n })}\n role=\"columnheader\"\n data-testid=\"column-header\"\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n onClick={sortable ? onClick : undefined}\n onKeyDown={sortable ? onKeyDown : undefined}\n aria-sort={sortByColumnId === id && sortable ? ariaSort : undefined}\n aria-label={column.info.props[\"aria-label\"]}\n >\n {sortByColumnId === id && sortable && valueAlignRight && (\n <HeaderCellSortingIcon justify=\"start\" sortOrder={sortOrder} />\n )}\n <div\n className={clsx(withBaseName(\"valueContainer\"), {\n [withBaseName(\"alignRight\")]: valueAlignRight,\n // both classNames below needed to ensure header cell title & sort icon do not overlap when column resized to be smaller\n [withBaseName(\"alignRightWithSortOrder\")]:\n valueAlignRight && withSortOrder,\n [withBaseName(\"alignLeftWithSortOrder\")]:\n !valueAlignRight && withSortOrder,\n })}\n onMouseDown={onMouseDown}\n >\n {children}\n </div>\n {sortByColumnId === id && sortable && !valueAlignRight && (\n <HeaderCellSortingIcon justify=\"end\" sortOrder={sortOrder} />\n )}\n <HeaderCellSeparator separatorType={separator} />\n <div\n data-testid={`column-${column.index}-resize-handle`}\n className={withBaseName(\"resizeHandle\")}\n onMouseDown={onResizeHandleMouseDown}\n />\n {isFocused && !isFocusableContent && <Cursor />}\n </th>\n );\n}\n\nexport function AutoSizeHeaderCell<T>(props: HeaderCellProps<T>) {\n const { column, children, isFocused } = props;\n const { separator } = column;\n const valueContainerRef = useRef<HTMLDivElement>(null);\n const { resizeColumn } = useSizingContext();\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableHeaderCellElement>();\n\n useIsomorphicLayoutEffect(() => {\n const width = valueContainerRef.current\n ? valueContainerRef.current.offsetWidth\n : undefined;\n if (width !== undefined && width !== column.info.width) {\n resizeColumn(column.index, width);\n }\n });\n\n return (\n <th\n ref={ref}\n aria-colindex={column.index + 1}\n data-column-index={column.index}\n className={withBaseName()}\n role=\"columnheader\"\n data-testid=\"column-header\"\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n >\n <div className={withBaseName(\"autosizeContainer\")}>\n <div\n ref={valueContainerRef}\n className={withBaseName(\"measuredContent\")}\n >\n {children}\n </div>\n </div>\n <HeaderCellSeparator separatorType={separator} />\n {isFocused && !isFocusableContent && <Cursor />}\n </th>\n );\n}\n"],"names":["makePrefixer","jsx","jsxs","clsx","SortOrder","ArrowUpIcon","ArrowDownIcon","useWindow","useComponentCssInjection","headerCellCss","useSizingContext","useColumnDragContext","useFocusableContent","useColumnSortContext","Cursor","useRef","useIsomorphicLayoutEffect"],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var core = require('@salt-ds/core');
|
|
5
5
|
var styles = require('@salt-ds/styles');
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
|
+
var CheckboxCell = require('./CheckboxCell.css.js');
|
|
7
8
|
var CursorContext = require('./CursorContext.js');
|
|
8
9
|
var SelectionContext = require('./SelectionContext.js');
|
|
9
|
-
var CheckboxCell = require('./CheckboxCell.css.js');
|
|
10
10
|
|
|
11
11
|
function RowSelectionCheckboxCellValue(props) {
|
|
12
12
|
const { row, column, isFocused } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowSelectionCheckboxCellValue.js","sources":["../src/RowSelectionCheckboxCellValue.tsx"],"sourcesContent":["import { Checkbox } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport type { MouseEventHandler } from \"react\";\nimport { useCursorContext } from \"./CursorContext\";\nimport type { GridCellValueProps } from \"./GridColumn\";\nimport { useSelectionContext } from \"./SelectionContext\";\n\
|
|
1
|
+
{"version":3,"file":"RowSelectionCheckboxCellValue.js","sources":["../src/RowSelectionCheckboxCellValue.tsx"],"sourcesContent":["import { Checkbox } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport type { MouseEventHandler } from \"react\";\nimport checkboxCellCss from \"./CheckboxCell.css\";\nimport { useCursorContext } from \"./CursorContext\";\nimport type { GridCellValueProps } from \"./GridColumn\";\nimport { useSelectionContext } from \"./SelectionContext\";\n\nexport function RowSelectionCheckboxCellValue<T>(props: GridCellValueProps<T>) {\n const { row, column, isFocused } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-checkbox-cell\",\n css: checkboxCellCss,\n window: targetWindow,\n });\n\n const { selRowIdxs, selectRows } = useSelectionContext();\n const { moveCursor } = useCursorContext();\n\n const isSelected = selRowIdxs.has(row.index);\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = (event) => {\n selectRows({ rowIndex: row.index, incremental: true });\n moveCursor(\"body\", row.index, column.index);\n event.preventDefault();\n event.stopPropagation();\n };\n\n return (\n <div className=\"saltGridCheckboxContainer\" onMouseDown={onMouseDown}>\n <Checkbox\n data-testid=\"grid-row-selection-checkbox\"\n inputProps={{\n \"aria-label\": \"Select Row\",\n tabIndex: isFocused ? 0 : -1,\n }}\n checked={isSelected}\n />\n </div>\n );\n}\n"],"names":["useWindow","useComponentCssInjection","checkboxCellCss","useSelectionContext","useCursorContext","jsx","Checkbox"],"mappings":";;;;;;;;;;AAUO,SAAS,8BAAiC,KAA8B,EAAA;AAC7E,EAAA,MAAM,EAAE,GAAA,EAAK,MAAQ,EAAA,SAAA,EAAc,GAAA,KAAA;AAEnC,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,oBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAE,UAAA,EAAY,UAAW,EAAA,GAAIC,oCAAoB,EAAA;AACvD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,8BAAiB,EAAA;AAExC,EAAA,MAAM,UAAa,GAAA,UAAA,CAAW,GAAI,CAAA,GAAA,CAAI,KAAK,CAAA;AAE3C,EAAM,MAAA,WAAA,GAAiD,CAAC,KAAU,KAAA;AAChE,IAAA,UAAA,CAAW,EAAE,QAAU,EAAA,GAAA,CAAI,KAAO,EAAA,WAAA,EAAa,MAAM,CAAA;AACrD,IAAA,UAAA,CAAW,MAAQ,EAAA,GAAA,CAAI,KAAO,EAAA,MAAA,CAAO,KAAK,CAAA;AAC1C,IAAA,KAAA,CAAM,cAAe,EAAA;AACrB,IAAA,KAAA,CAAM,eAAgB,EAAA;AAAA,GACxB;AAEA,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,2BAAA,EAA4B,WACzC,EAAA,QAAA,kBAAAA,cAAA;AAAA,IAACC,aAAA;AAAA,IAAA;AAAA,MACC,aAAY,EAAA,6BAAA;AAAA,MACZ,UAAY,EAAA;AAAA,QACV,YAAc,EAAA,YAAA;AAAA,QACd,QAAA,EAAU,YAAY,CAAI,GAAA;AAAA,OAC5B;AAAA,MACA,OAAS,EAAA;AAAA;AAAA,GAEb,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -4,8 +4,8 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var core = require('@salt-ds/core');
|
|
5
5
|
var styles = require('@salt-ds/styles');
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
|
-
var SelectionContext = require('./SelectionContext.js');
|
|
8
7
|
var CheckboxCell = require('./CheckboxCell.css.js');
|
|
8
|
+
var SelectionContext = require('./SelectionContext.js');
|
|
9
9
|
|
|
10
10
|
function RowSelectionCheckboxHeaderCellValue(props) {
|
|
11
11
|
const { isFocused } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowSelectionCheckboxHeaderCellValue.js","sources":["../src/RowSelectionCheckboxHeaderCellValue.tsx"],"sourcesContent":["import { Checkbox } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { KeyboardEventHandler, MouseEventHandler } from \"react\";\
|
|
1
|
+
{"version":3,"file":"RowSelectionCheckboxHeaderCellValue.js","sources":["../src/RowSelectionCheckboxHeaderCellValue.tsx"],"sourcesContent":["import { Checkbox } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { KeyboardEventHandler, MouseEventHandler } from \"react\";\nimport checkboxCellCss from \"./CheckboxCell.css\";\nimport type { GridHeaderValueProps } from \"./GridColumn\";\nimport { useSelectionContext } from \"./SelectionContext\";\n\nexport function RowSelectionCheckboxHeaderCellValue<T>(\n props: GridHeaderValueProps<T>,\n) {\n const { isFocused } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-checkbox-cell\",\n css: checkboxCellCss,\n window: targetWindow,\n });\n\n const { selectAll, unselectAll, isAllSelected, isAnySelected } =\n useSelectionContext();\n\n const onMousedown: MouseEventHandler<HTMLDivElement> = (event) => {\n if (isAllSelected) {\n unselectAll();\n } else {\n selectAll();\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = (event) => {\n if (event.key === \" \") {\n if (isAllSelected) {\n unselectAll();\n } else {\n selectAll();\n }\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n return (\n <div\n onMouseDown={onMousedown}\n className=\"saltGridCheckboxContainer\"\n onKeyDown={onKeyDown}\n >\n <Checkbox\n data-testid=\"grid-row-select-all-checkbox\"\n inputProps={{\n \"aria-label\": \"Select All\",\n tabIndex: isFocused ? 0 : -1,\n }}\n checked={isAllSelected}\n indeterminate={!isAllSelected && isAnySelected}\n />\n </div>\n );\n}\n"],"names":["useWindow","useComponentCssInjection","checkboxCellCss","useSelectionContext","jsx","Checkbox"],"mappings":";;;;;;;;;AAQO,SAAS,oCACd,KACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAc,GAAA,KAAA;AAEtB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,oBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAE,SAAW,EAAA,WAAA,EAAa,aAAe,EAAA,aAAA,KAC7CC,oCAAoB,EAAA;AAEtB,EAAM,MAAA,WAAA,GAAiD,CAAC,KAAU,KAAA;AAChE,IAAA,IAAI,aAAe,EAAA;AACjB,MAAY,WAAA,EAAA;AAAA,KACP,MAAA;AACL,MAAU,SAAA,EAAA;AAAA;AACZ,GACF;AAEA,EAAM,MAAA,SAAA,GAAkD,CAAC,KAAU,KAAA;AACjE,IAAI,IAAA,KAAA,CAAM,QAAQ,GAAK,EAAA;AACrB,MAAA,IAAI,aAAe,EAAA;AACjB,QAAY,WAAA,EAAA;AAAA,OACP,MAAA;AACL,QAAU,SAAA,EAAA;AAAA;AAEZ,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,KAAA,CAAM,eAAgB,EAAA;AAAA;AACxB,GACF;AAEA,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA,WAAA;AAAA,MACb,SAAU,EAAA,2BAAA;AAAA,MACV,SAAA;AAAA,MAEA,QAAA,kBAAAA,cAAA;AAAA,QAACC,aAAA;AAAA,QAAA;AAAA,UACC,aAAY,EAAA,8BAAA;AAAA,UACZ,UAAY,EAAA;AAAA,YACV,YAAc,EAAA,YAAA;AAAA,YACd,QAAA,EAAU,YAAY,CAAI,GAAA;AAAA,WAC5B;AAAA,UACA,OAAS,EAAA,aAAA;AAAA,UACT,aAAA,EAAe,CAAC,aAAiB,IAAA;AAAA;AAAA;AACnC;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -4,8 +4,8 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var core = require('@salt-ds/core');
|
|
5
5
|
var styles = require('@salt-ds/styles');
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
|
-
var SelectionContext = require('./SelectionContext.js');
|
|
8
7
|
var CheckboxCell = require('./CheckboxCell.css.js');
|
|
8
|
+
var SelectionContext = require('./SelectionContext.js');
|
|
9
9
|
|
|
10
10
|
function RowSelectionRadioCellValue(props) {
|
|
11
11
|
const { row, isFocused } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowSelectionRadioCellValue.js","sources":["../src/RowSelectionRadioCellValue.tsx"],"sourcesContent":["import { RadioButton } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\
|
|
1
|
+
{"version":3,"file":"RowSelectionRadioCellValue.js","sources":["../src/RowSelectionRadioCellValue.tsx"],"sourcesContent":["import { RadioButton } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport checkboxCellCss from \"./CheckboxCell.css\";\nimport type { GridCellValueProps } from \"./GridColumn\";\nimport { useSelectionContext } from \"./SelectionContext\";\n\nexport function RowSelectionRadioCellValue<T>(props: GridCellValueProps<T>) {\n const { row, isFocused } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-checkbox-cell\",\n css: checkboxCellCss,\n window: targetWindow,\n });\n\n const { selRowIdxs } = useSelectionContext();\n\n const isSelected = selRowIdxs.has(row.index);\n\n return (\n <div className=\"saltGridCheckboxContainer\">\n <RadioButton\n checked={isSelected}\n data-testid=\"grid-row-selection-radiobox\"\n tabIndex={isFocused ? 0 : -1}\n />\n </div>\n );\n}\n"],"names":["useWindow","useComponentCssInjection","checkboxCellCss","useSelectionContext","jsx","RadioButton"],"mappings":";;;;;;;;;AAOO,SAAS,2BAA8B,KAA8B,EAAA;AAC1E,EAAM,MAAA,EAAE,GAAK,EAAA,SAAA,EAAc,GAAA,KAAA;AAE3B,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,oBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,oCAAoB,EAAA;AAE3C,EAAA,MAAM,UAAa,GAAA,UAAA,CAAW,GAAI,CAAA,GAAA,CAAI,KAAK,CAAA;AAE3C,EACE,uBAAAC,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,2BACb,EAAA,QAAA,kBAAAA,cAAA;AAAA,IAACC,gBAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,UAAA;AAAA,MACT,aAAY,EAAA,6BAAA;AAAA,MACZ,QAAA,EAAU,YAAY,CAAI,GAAA;AAAA;AAAA,GAE9B,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var clsx = require('clsx');
|
|
5
4
|
var core = require('@salt-ds/core');
|
|
6
5
|
var styles = require('@salt-ds/styles');
|
|
7
6
|
var window = require('@salt-ds/window');
|
|
8
|
-
var
|
|
7
|
+
var clsx = require('clsx');
|
|
9
8
|
var CheckboxCell = require('./CheckboxCell.css.js');
|
|
9
|
+
var HeaderCell = require('./HeaderCell.js');
|
|
10
10
|
|
|
11
11
|
function RowSelectionRadioHeaderCell(props) {
|
|
12
12
|
const targetWindow = window.useWindow();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowSelectionRadioHeaderCell.js","sources":["../src/RowSelectionRadioHeaderCell.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"RowSelectionRadioHeaderCell.js","sources":["../src/RowSelectionRadioHeaderCell.tsx"],"sourcesContent":["import { RadioButtonIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport checkboxCellCss from \"./CheckboxCell.css\";\nimport type { HeaderCellProps } from \"./GridColumn\";\nimport { AutoSizeHeaderCell } from \"./HeaderCell\";\n\nexport function RowSelectionRadioHeaderCell<T>(props: HeaderCellProps<T>) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-checkbox-cell\",\n css: checkboxCellCss,\n window: targetWindow,\n });\n\n return (\n <AutoSizeHeaderCell {...props}>\n <div className={clsx(\"saltGridCheckboxContainer\", \"saltGrid-hidden\")}>\n <RadioButtonIcon />\n </div>\n </AutoSizeHeaderCell>\n );\n}\n"],"names":["useWindow","useComponentCssInjection","checkboxCellCss","jsx","AutoSizeHeaderCell","clsx","RadioButtonIcon"],"mappings":";;;;;;;;;;AAQO,SAAS,4BAA+B,KAA2B,EAAA;AACxE,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,oBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,uBACGC,cAAA,CAAAC,6BAAA,EAAA,EAAoB,GAAG,KAAA,EACtB,yCAAC,KAAI,EAAA,EAAA,SAAA,EAAWC,SAAK,CAAA,2BAAA,EAA6B,iBAAiB,CAAA,EACjE,QAAC,kBAAAF,cAAA,CAAAG,oBAAA,EAAA,EAAgB,GACnB,CACF,EAAA,CAAA;AAEJ;;;;"}
|
package/dist-cjs/index.js
CHANGED
|
@@ -1,39 +1,45 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var BaseCell = require('./BaseCell.js');
|
|
4
|
-
var ColumnGroup = require('./ColumnGroup.js');
|
|
5
4
|
var CellEditor = require('./CellEditor.js');
|
|
6
5
|
var CellFrame = require('./CellFrame.js');
|
|
6
|
+
var ColumnGroup = require('./ColumnGroup.js');
|
|
7
7
|
var CornerTag = require('./CornerTag.js');
|
|
8
|
+
var DropdownCellEditor = require('./DropdownCellEditor.js');
|
|
8
9
|
var EditorContext = require('./EditorContext.js');
|
|
10
|
+
var Grid = require('./Grid.js');
|
|
11
|
+
var GridColumn = require('./GridColumn.js');
|
|
12
|
+
var GridContext = require('./GridContext.js');
|
|
9
13
|
var GroupHeaderCell = require('./GroupHeaderCell.js');
|
|
10
14
|
var GroupHeaderCellValue = require('./GroupHeaderCellValue.js');
|
|
11
15
|
var HeaderCell = require('./HeaderCell.js');
|
|
12
16
|
var HeaderCellValue = require('./HeaderCellValue.js');
|
|
13
17
|
var NumberRange = require('./NumberRange.js');
|
|
14
|
-
var
|
|
18
|
+
var NumericColumn = require('./NumericColumn.js');
|
|
15
19
|
var RowSelectionCheckboxCellValue = require('./RowSelectionCheckboxCellValue.js');
|
|
20
|
+
var RowSelectionCheckboxColumn = require('./RowSelectionCheckboxColumn.js');
|
|
21
|
+
var RowSelectionCheckboxHeaderCellValue = require('./RowSelectionCheckboxHeaderCellValue.js');
|
|
16
22
|
var RowSelectionRadioColumn = require('./RowSelectionRadioColumn.js');
|
|
17
23
|
var SelectionContext = require('./SelectionContext.js');
|
|
18
24
|
var SizingContext = require('./SizingContext.js');
|
|
19
|
-
var Grid = require('./Grid.js');
|
|
20
|
-
var GridColumn = require('./GridColumn.js');
|
|
21
|
-
var GridContext = require('./GridContext.js');
|
|
22
|
-
var RowSelectionCheckboxColumn = require('./RowSelectionCheckboxColumn.js');
|
|
23
25
|
var TextCellEditor = require('./TextCellEditor.js');
|
|
24
|
-
var DropdownCellEditor = require('./DropdownCellEditor.js');
|
|
25
|
-
var NumericColumn = require('./NumericColumn.js');
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
exports.BaseCell = BaseCell.BaseCell;
|
|
30
30
|
exports.getCellId = BaseCell.getCellId;
|
|
31
|
-
exports.ColumnGroup = ColumnGroup.ColumnGroup;
|
|
32
31
|
exports.CellEditor = CellEditor.CellEditor;
|
|
33
32
|
exports.CellFrame = CellFrame.CellFrame;
|
|
33
|
+
exports.ColumnGroup = ColumnGroup.ColumnGroup;
|
|
34
34
|
exports.CornerTag = CornerTag.CornerTag;
|
|
35
|
+
exports.DropdownCellEditor = DropdownCellEditor.DropdownCellEditor;
|
|
35
36
|
exports.EditorContext = EditorContext.EditorContext;
|
|
36
37
|
exports.useEditorContext = EditorContext.useEditorContext;
|
|
38
|
+
exports.Grid = Grid.Grid;
|
|
39
|
+
exports.SortOrder = Grid.SortOrder;
|
|
40
|
+
exports.GridColumn = GridColumn.GridColumn;
|
|
41
|
+
exports.GridContext = GridContext.GridContext;
|
|
42
|
+
exports.useGridContext = GridContext.useGridContext;
|
|
37
43
|
exports.GroupHeaderCell = GroupHeaderCell.GroupHeaderCell;
|
|
38
44
|
exports.GroupHeaderCellValue = GroupHeaderCellValue.GroupHeaderCellValue;
|
|
39
45
|
exports.AutoSizeHeaderCell = HeaderCell.AutoSizeHeaderCell;
|
|
@@ -42,22 +48,16 @@ exports.HeaderCellSeparator = HeaderCell.HeaderCellSeparator;
|
|
|
42
48
|
exports.HeaderCellValue = HeaderCellValue.HeaderCellValue;
|
|
43
49
|
exports.NumberRange = NumberRange.NumberRange;
|
|
44
50
|
exports.range = NumberRange.range;
|
|
45
|
-
exports.
|
|
51
|
+
exports.NumericCellEditor = NumericColumn.NumericCellEditor;
|
|
52
|
+
exports.NumericCellValue = NumericColumn.NumericCellValue;
|
|
53
|
+
exports.NumericColumn = NumericColumn.NumericColumn;
|
|
46
54
|
exports.RowSelectionCheckboxCellValue = RowSelectionCheckboxCellValue.RowSelectionCheckboxCellValue;
|
|
55
|
+
exports.RowSelectionCheckboxColumn = RowSelectionCheckboxColumn.RowSelectionCheckboxColumn;
|
|
56
|
+
exports.RowSelectionCheckboxHeaderCellValue = RowSelectionCheckboxHeaderCellValue.RowSelectionCheckboxHeaderCellValue;
|
|
47
57
|
exports.RowSelectionRadioColumn = RowSelectionRadioColumn.RowSelectionRadioColumn;
|
|
48
58
|
exports.SelectionContext = SelectionContext.SelectionContext;
|
|
49
59
|
exports.useSelectionContext = SelectionContext.useSelectionContext;
|
|
50
60
|
exports.SizingContext = SizingContext.SizingContext;
|
|
51
61
|
exports.useSizingContext = SizingContext.useSizingContext;
|
|
52
|
-
exports.Grid = Grid.Grid;
|
|
53
|
-
exports.SortOrder = Grid.SortOrder;
|
|
54
|
-
exports.GridColumn = GridColumn.GridColumn;
|
|
55
|
-
exports.GridContext = GridContext.GridContext;
|
|
56
|
-
exports.useGridContext = GridContext.useGridContext;
|
|
57
|
-
exports.RowSelectionCheckboxColumn = RowSelectionCheckboxColumn.RowSelectionCheckboxColumn;
|
|
58
62
|
exports.TextCellEditor = TextCellEditor.TextCellEditor;
|
|
59
|
-
exports.DropdownCellEditor = DropdownCellEditor.DropdownCellEditor;
|
|
60
|
-
exports.NumericCellEditor = NumericColumn.NumericCellEditor;
|
|
61
|
-
exports.NumericCellValue = NumericColumn.NumericCellValue;
|
|
62
|
-
exports.NumericColumn = NumericColumn.NumericColumn;
|
|
63
63
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,10 +4,10 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var core = require('@salt-ds/core');
|
|
5
5
|
var styles = require('@salt-ds/styles');
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
|
+
var ColumnGhost$1 = require('./ColumnGhost.css.js');
|
|
7
8
|
var HeaderRow = require('./HeaderRow.js');
|
|
8
9
|
var TableBody = require('./TableBody.js');
|
|
9
10
|
var TableColGroup = require('./TableColGroup.js');
|
|
10
|
-
var ColumnGhost$1 = require('./ColumnGhost.css.js');
|
|
11
11
|
|
|
12
12
|
const withBaseName = core.makePrefixer("saltGridColumnGhost");
|
|
13
13
|
function ColumnGhost(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnGhost.js","sources":["../src/internal/ColumnGhost.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { CSSProperties } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\
|
|
1
|
+
{"version":3,"file":"ColumnGhost.js","sources":["../src/internal/ColumnGhost.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { CSSProperties } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport columnGhostCss from \"./ColumnGhost.css\";\nimport type { ColumnDragState } from \"./gridHooks\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nconst withBaseName = makePrefixer(\"saltGridColumnGhost\");\n\nexport interface ColumnGhostProps<T> {\n dragState?: ColumnDragState;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n zebra?: boolean;\n}\n\n// When the user drags a column this component renders a partially transparent\n// copy of the dragged column.\nexport function ColumnGhost<T = any>(props: ColumnGhostProps<T>) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-column-ghost\",\n css: columnGhostCss,\n window: targetWindow,\n });\n\n if (!props.dragState) {\n return null;\n }\n\n const { columnIndex, x, y } = props.dragState;\n const { columns, rows, zebra } = props;\n const movingColumn = columns[columnIndex];\n\n const style: CSSProperties = {\n left: x,\n top: y,\n };\n\n return (\n <div className={withBaseName()} style={style}>\n <table aria-hidden>\n <TableColGroup columns={[movingColumn]} />\n <thead>\n <HeaderRow columns={[movingColumn]} />\n </thead>\n <TableBody\n columns={[movingColumn]}\n rows={rows}\n setHoverRowKey={() => {}}\n zebra={zebra}\n />\n </table>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","columnGhostCss","jsx","jsxs","TableColGroup","HeaderRow","TableBody"],"mappings":";;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAWhD,SAAS,YAAqB,KAA4B,EAAA;AAC/D,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAI,IAAA,CAAC,MAAM,SAAW,EAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,EAAE,WAAA,EAAa,CAAG,EAAA,CAAA,KAAM,KAAM,CAAA,SAAA;AACpC,EAAA,MAAM,EAAE,OAAA,EAAS,IAAM,EAAA,KAAA,EAAU,GAAA,KAAA;AACjC,EAAM,MAAA,YAAA,GAAe,QAAQ,WAAW,CAAA;AAExC,EAAA,MAAM,KAAuB,GAAA;AAAA,IAC3B,IAAM,EAAA,CAAA;AAAA,IACN,GAAK,EAAA;AAAA,GACP;AAEA,EACE,uBAAAC,cAAA,CAAC,SAAI,SAAW,EAAA,YAAA,IAAgB,KAC9B,EAAA,QAAA,kBAAAC,eAAA,CAAC,OAAM,EAAA,EAAA,aAAA,EAAW,IAChB,EAAA,QAAA,EAAA;AAAA,oBAAAD,cAAA,CAACE,2BAAc,EAAA,EAAA,OAAA,EAAS,CAAC,YAAY,CAAG,EAAA,CAAA;AAAA,oBACxCF,cAAA,CAAC,WACC,QAAC,kBAAAA,cAAA,CAAAG,mBAAA,EAAA,EAAU,SAAS,CAAC,YAAY,GAAG,CACtC,EAAA,CAAA;AAAA,oBACAH,cAAA;AAAA,MAACI,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,CAAC,YAAY,CAAA;AAAA,QACtB,IAAA;AAAA,QACA,gBAAgB,MAAM;AAAA,SAAC;AAAA,QACvB;AAAA;AAAA;AACF,GAAA,EACF,CACF,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -5,10 +5,10 @@ var core = require('@salt-ds/core');
|
|
|
5
5
|
var styles = require('@salt-ds/styles');
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
7
|
var clsx = require('clsx');
|
|
8
|
-
var TableBody = require('./TableBody.js');
|
|
9
|
-
var TableColGroup = require('./TableColGroup.js');
|
|
10
8
|
var gridHooks = require('./gridHooks.js');
|
|
11
9
|
var LeftPart$1 = require('./LeftPart.css.js');
|
|
10
|
+
var TableBody = require('./TableBody.js');
|
|
11
|
+
var TableColGroup = require('./TableColGroup.js');
|
|
12
12
|
|
|
13
13
|
const withBaseName = core.makePrefixer("saltGridLeftPart");
|
|
14
14
|
function LeftPart(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftPart.js","sources":["../src/internal/LeftPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\
|
|
1
|
+
{"version":3,"file":"LeftPart.js","sources":["../src/internal/LeftPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport leftPartCss from \"./LeftPart.css\";\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nconst withBaseName = makePrefixer(\"saltGridLeftPart\");\n\nexport interface LeftPartProps<T> {\n leftRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n rightShadow?: boolean;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function LeftPart<T>(props: LeftPartProps<T>) {\n const {\n leftRef,\n onWheel,\n rightShadow,\n columns,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-left-part\",\n css: leftPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={leftRef}\n className={clsx(withBaseName(), {\n [withBaseName(\"rightShadow\")]: rightShadow,\n })}\n >\n <div className={withBaseName(\"space\")} data-testid=\"grid-left-part\">\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","leftPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;;AAaA,MAAM,YAAA,GAAeA,kBAAa,kBAAkB,CAAA;AAgB7C,SAAS,SAAY,KAAyB,EAAA;AACnD,EAAM,MAAA;AAAA,IACJ,OAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAAC,UAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,OAAA;AAAA,MACL,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,QAC9B,CAAC,YAAA,CAAa,aAAa,CAAC,GAAG;AAAA,OAChC,CAAA;AAAA,MAED,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,YAAA,CAAa,OAAO,CAAA,EAAG,aAAY,EAAA,gBAAA,EACjD,QAAC,kBAAAE,eAAA,CAAA,OAAA,EAAA,EAAM,GAAK,EAAA,QAAA,EAAU,MAAK,cACzB,EAAA,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,+BAAc,OAAkB,EAAA,CAAA;AAAA,wBACjCH,cAAA;AAAA,UAACI,mBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,KAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF,CACF,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -4,10 +4,10 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var core = require('@salt-ds/core');
|
|
5
5
|
var styles = require('@salt-ds/styles');
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
|
-
var TableBody = require('./TableBody.js');
|
|
8
|
-
var TableColGroup = require('./TableColGroup.js');
|
|
9
7
|
var gridHooks = require('./gridHooks.js');
|
|
10
8
|
var MiddlePart$1 = require('./MiddlePart.css.js');
|
|
9
|
+
var TableBody = require('./TableBody.js');
|
|
10
|
+
var TableColGroup = require('./TableColGroup.js');
|
|
11
11
|
|
|
12
12
|
const withBaseName = core.makePrefixer("saltGridMiddlePart");
|
|
13
13
|
function MiddlePart(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddlePart.js","sources":["../src/internal/MiddlePart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\
|
|
1
|
+
{"version":3,"file":"MiddlePart.js","sources":["../src/internal/MiddlePart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport middlePartCss from \"./MiddlePart.css\";\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nconst withBaseName = makePrefixer(\"saltGridMiddlePart\");\n\nexport interface MiddlePartProps<T> {\n middleRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n midGap: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function MiddlePart<T>(props: MiddlePartProps<T>) {\n const {\n middleRef,\n onWheel,\n columns,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n midGap,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-middle-part\",\n css: middlePartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n ref={middleRef}\n className={withBaseName()}\n data-testid=\"grid-middle-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n gap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","middlePartCss","useActiveOnWheel","jsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAgB/C,SAAS,WAAc,KAA2B,EAAA;AACvD,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,SAAA;AAAA,MACL,WAAW,YAAa,EAAA;AAAA,MACxB,aAAY,EAAA,kBAAA;AAAA,MAEZ,QAAA,kBAAAA,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,CAClC,EAAA,QAAA,kBAAAC,eAAA,CAAC,OAAM,EAAA,EAAA,GAAA,EAAK,QAAU,EAAA,IAAA,EAAK,cACzB,EAAA,QAAA,EAAA;AAAA,wBAACD,cAAA,CAAAE,2BAAA,EAAA,EAAc,OAAkB,EAAA,GAAA,EAAK,MAAQ,EAAA,CAAA;AAAA,wBAC9CF,cAAA;AAAA,UAACG,mBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,GAAK,EAAA,MAAA;AAAA,YACL,KAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF,CACF,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -5,10 +5,10 @@ var core = require('@salt-ds/core');
|
|
|
5
5
|
var styles = require('@salt-ds/styles');
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
7
|
var clsx = require('clsx');
|
|
8
|
-
var TableBody = require('./TableBody.js');
|
|
9
|
-
var TableColGroup = require('./TableColGroup.js');
|
|
10
8
|
var gridHooks = require('./gridHooks.js');
|
|
11
9
|
var RightPart$1 = require('./RightPart.css.js');
|
|
10
|
+
var TableBody = require('./TableBody.js');
|
|
11
|
+
var TableColGroup = require('./TableColGroup.js');
|
|
12
12
|
|
|
13
13
|
const withBaseName = core.makePrefixer("saltGridRightPart");
|
|
14
14
|
function RightPart(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPart.js","sources":["../src/internal/RightPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\
|
|
1
|
+
{"version":3,"file":"RightPart.js","sources":["../src/internal/RightPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport rightPartCss from \"./RightPart.css\";\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nconst withBaseName = makePrefixer(\"saltGridRightPart\");\n\nexport interface RightPartProps<T> {\n rightRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n leftShadow?: boolean;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function RightPart<T>(props: RightPartProps<T>) {\n const {\n rightRef,\n onWheel,\n columns,\n leftShadow,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-right-part\",\n css: rightPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={rightRef}\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n })}\n data-testid=\"grid-right-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","rightPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;;AAaA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAgB9C,SAAS,UAAa,KAA0B,EAAA;AACrD,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAAC,WAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,QAAA;AAAA,MACL,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,QAC9B,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG;AAAA,OAC/B,CAAA;AAAA,MACD,aAAY,EAAA,iBAAA;AAAA,MAEZ,QAAA,kBAAAD,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,CAClC,EAAA,QAAA,kBAAAE,eAAA,CAAC,OAAM,EAAA,EAAA,GAAA,EAAK,QAAU,EAAA,IAAA,EAAK,cACzB,EAAA,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,+BAAc,OAAkB,EAAA,CAAA;AAAA,wBACjCH,cAAA;AAAA,UAACI,mBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,KAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF,CACF,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.js","sources":["../src/internal/TableRow.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n
|
|
1
|
+
{"version":3,"file":"TableRow.js","sources":["../src/internal/TableRow.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n cloneElement,\n isValidElement,\n type MouseEventHandler,\n} from \"react\";\n\nimport { BaseCell } from \"../BaseCell\";\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useGridContext } from \"../GridContext\";\nimport { RowValidationStatusContext } from \"../RowValidationStatus\";\n\nimport { DefaultCellValue } from \"./DefaultCellValue\";\nimport { FakeCell } from \"./FakeCell\";\n\nimport tableRowCss from \"./TableRow.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTableRow\");\n\nexport interface TableRowProps<T> {\n row: GridRowModel<T>;\n isSelected?: boolean;\n isHoverOver?: boolean;\n zebra?: boolean;\n columns: GridColumnModel<T>[];\n cursorColIdx?: number;\n onMouseEnter?: MouseEventHandler<HTMLTableRowElement>;\n onMouseLeave?: MouseEventHandler<HTMLTableRowElement>;\n gap?: number;\n editorColIdx?: number;\n isCellSelected?: (rowIdx: number, colIdx: number) => boolean;\n headerIsFocusable?: boolean;\n validationStatus?: CellValidationState;\n}\n\nexport function TableRow<T>(props: TableRowProps<T>) {\n const {\n row,\n isSelected,\n zebra,\n isHoverOver,\n columns,\n onMouseEnter,\n onMouseLeave,\n cursorColIdx,\n gap,\n editorColIdx,\n isCellSelected,\n headerIsFocusable,\n validationStatus: rowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-table-row\",\n css: tableRowCss,\n window: targetWindow,\n });\n\n const grid = useGridContext();\n\n if (!row.key) {\n throw new Error(\"Invalid row\");\n }\n\n const ariaRowIndex = headerIsFocusable ? row.index + 2 : row.index + 1;\n\n return (\n <tr\n aria-rowindex={ariaRowIndex}\n aria-selected={isSelected ? true : undefined}\n className={clsx(withBaseName(), {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"hover\")]: isHoverOver,\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"first\")]: row.index === 0,\n [withBaseName(`validationStatus-${rowValidationStatus}`)]:\n rowValidationStatus,\n })}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-row-index={row.index}\n data-row-key={row.key}\n >\n {columns.map((column, i) => {\n const colKey = column.info.props.id;\n const editorInfo = grid.getEditor(column.info.props.id);\n const isEditable = !!editorInfo;\n\n if (editorColIdx === column.index) {\n if (isEditable) {\n if (isValidElement(editorInfo.children)) {\n const editorElement = Children.only(editorInfo.children);\n return cloneElement(editorElement, {\n key: colKey,\n row,\n column,\n } as any);\n }\n }\n }\n\n const Cell = column.info.props.cellComponent || BaseCell;\n const CellValue =\n column.info.props.cellValueComponent || DefaultCellValue;\n const value =\n column.info.props.getValue && row.data\n ? column.info.props.getValue(row.data)\n : null;\n const isFocused = cursorColIdx === column.index;\n const isSelected = isCellSelected?.(row.index, column.index);\n const validationFnArg = {\n row,\n column,\n isFocused,\n value,\n };\n const validationStatus =\n column.info.props.getValidationStatus?.(validationFnArg);\n const validationMessage =\n validationStatus &&\n column.info.props.getValidationMessage?.(validationFnArg);\n\n return (\n <RowValidationStatusContext.Provider\n key={colKey}\n value={{ status: rowValidationStatus }}\n >\n <Cell\n row={row}\n column={column}\n isFocused={isFocused}\n isSelected={isSelected}\n isEditable={isEditable}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n value={value}\n align={column.info.props.align}\n >\n <CellValue\n column={column}\n row={row}\n value={value}\n isFocused={isFocused}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n />\n </Cell>\n </RowValidationStatusContext.Provider>\n );\n })}\n {gap !== undefined && gap > 0 ? <FakeCell row={row} /> : null}\n </tr>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","tableRowCss","useGridContext","jsxs","clsx","isValidElement","Children","cloneElement","BaseCell","DefaultCellValue","isSelected","jsx","RowValidationStatusContext","FakeCell"],"mappings":";;;;;;;;;;;;;;;AAsBA,MAAM,YAAA,GAAeA,kBAAa,kBAAkB,CAAA;AAkB7C,SAAS,SAAY,KAAyB,EAAA;AACnD,EAAM,MAAA;AAAA,IACJ,GAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAkB,EAAA;AAAA,GAChB,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAAC,UAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,OAAOC,0BAAe,EAAA;AAE5B,EAAI,IAAA,CAAC,IAAI,GAAK,EAAA;AACZ,IAAM,MAAA,IAAI,MAAM,aAAa,CAAA;AAAA;AAG/B,EAAA,MAAM,eAAe,iBAAoB,GAAA,GAAA,CAAI,KAAQ,GAAA,CAAA,GAAI,IAAI,KAAQ,GAAA,CAAA;AAErE,EACE,uBAAAC,eAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,eAAe,EAAA,YAAA;AAAA,MACf,eAAA,EAAe,aAAa,IAAO,GAAA,MAAA;AAAA,MACnC,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,QAC9B,CAAC,YAAA,CAAa,OAAO,CAAC,GAAG,KAAA;AAAA,QACzB,CAAC,YAAA,CAAa,OAAO,CAAC,GAAG,WAAA;AAAA,QACzB,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,UAAA;AAAA,QAC5B,CAAC,YAAa,CAAA,OAAO,CAAC,GAAG,IAAI,KAAU,KAAA,CAAA;AAAA,QACvC,CAAC,YAAa,CAAA,CAAA,iBAAA,EAAoB,mBAAmB,CAAA,CAAE,CAAC,GACtD;AAAA,OACH,CAAA;AAAA,MACD,YAAA;AAAA,MACA,YAAA;AAAA,MACA,kBAAgB,GAAI,CAAA,KAAA;AAAA,MACpB,gBAAc,GAAI,CAAA,GAAA;AAAA,MAEjB,QAAA,EAAA;AAAA,QAAQ,OAAA,CAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAM,KAAA;AAzFlC,UAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0FQ,UAAM,MAAA,MAAA,GAAS,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,EAAA;AACjC,UAAA,MAAM,aAAa,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAK,MAAM,EAAE,CAAA;AACtD,UAAM,MAAA,UAAA,GAAa,CAAC,CAAC,UAAA;AAErB,UAAI,IAAA,YAAA,KAAiB,OAAO,KAAO,EAAA;AACjC,YAAA,IAAI,UAAY,EAAA;AACd,cAAI,IAAAC,oBAAA,CAAe,UAAW,CAAA,QAAQ,CAAG,EAAA;AACvC,gBAAA,MAAM,aAAgB,GAAAC,cAAA,CAAS,IAAK,CAAA,UAAA,CAAW,QAAQ,CAAA;AACvD,gBAAA,OAAOC,mBAAa,aAAe,EAAA;AAAA,kBACjC,GAAK,EAAA,MAAA;AAAA,kBACL,GAAA;AAAA,kBACA;AAAA,iBACM,CAAA;AAAA;AACV;AACF;AAGF,UAAA,MAAM,IAAO,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,aAAiB,IAAAC,iBAAA;AAChD,UAAA,MAAM,SACJ,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,kBAAsB,IAAAC,iCAAA;AAC1C,UAAA,MAAM,KACJ,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,QAAY,IAAA,GAAA,CAAI,IAC9B,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,QAAS,CAAA,GAAA,CAAI,IAAI,CACnC,GAAA,IAAA;AACN,UAAM,MAAA,SAAA,GAAY,iBAAiB,MAAO,CAAA,KAAA;AAC1C,UAAA,MAAMC,WAAa,GAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAiB,GAAI,CAAA,KAAA,EAAO,MAAO,CAAA,KAAA,CAAA;AACtD,UAAA,MAAM,eAAkB,GAAA;AAAA,YACtB,GAAA;AAAA,YACA,MAAA;AAAA,YACA,SAAA;AAAA,YACA;AAAA,WACF;AACA,UAAA,MAAM,gBACJ,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,EAAM,wBAAlB,IAAwC,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,eAAA,CAAA;AAC1C,UAAA,MAAM,oBACJ,gBACA,KAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,EAAM,yBAAlB,IAAyC,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,eAAA,CAAA,CAAA;AAE3C,UACE,uBAAAC,cAAA;AAAA,YAACC,8CAA2B,CAAA,QAAA;AAAA,YAA3B;AAAA,cAEC,KAAA,EAAO,EAAE,MAAA,EAAQ,mBAAoB,EAAA;AAAA,cAErC,QAAA,kBAAAD,cAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBACC,GAAA;AAAA,kBACA,MAAA;AAAA,kBACA,SAAA;AAAA,kBACA,UAAYD,EAAAA,WAAAA;AAAA,kBACZ,UAAA;AAAA,kBACA,gBAAA;AAAA,kBACA,iBAAA;AAAA,kBACA,cAAA,EAAgB,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,cAAA;AAAA,kBAClC,KAAA;AAAA,kBACA,KAAA,EAAO,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,KAAA;AAAA,kBAEzB,QAAA,kBAAAC,cAAA;AAAA,oBAAC,SAAA;AAAA,oBAAA;AAAA,sBACC,MAAA;AAAA,sBACA,GAAA;AAAA,sBACA,KAAA;AAAA,sBACA,SAAA;AAAA,sBACA,gBAAA;AAAA,sBACA,iBAAA;AAAA,sBACA,cAAA,EAAgB,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA;AAAA;AAAA;AACpC;AAAA;AACF,aAAA;AAAA,YAxBK;AAAA,WAyBP;AAAA,SAEH,CAAA;AAAA,QACA,QAAQ,MAAa,IAAA,GAAA,GAAM,oBAAKA,cAAA,CAAAE,iBAAA,EAAA,EAAS,KAAU,CAAK,GAAA;AAAA;AAAA;AAAA,GAC3D;AAEJ;;;;"}
|
|
@@ -6,9 +6,9 @@ var styles = require('@salt-ds/styles');
|
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
7
|
var clsx = require('clsx');
|
|
8
8
|
var GroupHeaderRow = require('./GroupHeaderRow.js');
|
|
9
|
+
var gridHooks = require('./gridHooks.js');
|
|
9
10
|
var HeaderRow = require('./HeaderRow.js');
|
|
10
11
|
var TableColGroup = require('./TableColGroup.js');
|
|
11
|
-
var gridHooks = require('./gridHooks.js');
|
|
12
12
|
var TopLeftPart$1 = require('./TopLeftPart.css.js');
|
|
13
13
|
|
|
14
14
|
const withBaseName = core.makePrefixer("saltGridTopLeftPart");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopLeftPart.js","sources":["../src/internal/TopLeftPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\n\nimport type { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\n\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport {
|
|
1
|
+
{"version":3,"file":"TopLeftPart.js","sources":["../src/internal/TopLeftPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\n\nimport type { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\n\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nimport topLeftPartCss from \"./TopLeftPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTopLeftPart\");\n\nexport interface TopLeftPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n rightShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopLeftPart<T>(props: TopLeftPartProps<T>) {\n const { onWheel, columns, columnGroups, rightShadow, bottomShadow } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-top-left-part\",\n css: topLeftPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"rightShadow\")]: rightShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-left-part\"\n >\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n </thead>\n </table>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","topLeftPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAUhD,SAAS,YAAe,KAA4B,EAAA;AACzD,EAAA,MAAM,EAAE,OAAS,EAAA,OAAA,EAAS,YAAc,EAAA,WAAA,EAAa,cAAiB,GAAA,KAAA;AAEtE,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,oBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,QAC9B,CAAC,YAAA,CAAa,aAAa,CAAC,GAAG,WAAA;AAAA,QAC/B,CAAC,YAAA,CAAa,cAAc,CAAC,GAAG;AAAA,OACjC,CAAA;AAAA,MACD,aAAY,EAAA,oBAAA;AAAA,MAEZ,QAAC,kBAAAC,eAAA,CAAA,OAAA,EAAA,EAAM,GAAK,EAAA,QAAA,EAAU,MAAK,cACzB,EAAA,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,+BAAc,OAAkB,EAAA,CAAA;AAAA,wCAChC,OACC,EAAA,EAAA,QAAA,EAAA;AAAA,0BAACH,cAAA,CAAAI,6BAAA,EAAA,EAAe,QAAQ,YAAc,EAAA,CAAA;AAAA,0BACtCJ,cAAA,CAACK,uBAAU,OAAkB,EAAA;AAAA,SAC/B,EAAA;AAAA,OACF,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -6,9 +6,9 @@ var styles = require('@salt-ds/styles');
|
|
|
6
6
|
var window = require('@salt-ds/window');
|
|
7
7
|
var clsx = require('clsx');
|
|
8
8
|
var GroupHeaderRow = require('./GroupHeaderRow.js');
|
|
9
|
+
var gridHooks = require('./gridHooks.js');
|
|
9
10
|
var HeaderRow = require('./HeaderRow.js');
|
|
10
11
|
var TableColGroup = require('./TableColGroup.js');
|
|
11
|
-
var gridHooks = require('./gridHooks.js');
|
|
12
12
|
var TopPart$1 = require('./TopPart.css.js');
|
|
13
13
|
|
|
14
14
|
const withBaseName = core.makePrefixer("saltGridTopPart");
|