@homebound/beam 4.36.0 → 4.37.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.
- package/dist/index.cjs +150 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -13
- package/dist/index.d.ts +41 -13
- package/dist/index.js +153 -73
- package/dist/index.js.map +1 -1
- package/dist/truss.css +6 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -130,6 +130,7 @@ __export(index_exports, {
|
|
|
130
130
|
FormSectionChild: () => FormSectionChild,
|
|
131
131
|
FormSectionLayout: () => FormSectionLayout,
|
|
132
132
|
FullBleed: () => FullBleed,
|
|
133
|
+
GROUP_HEADER: () => GROUP_HEADER,
|
|
133
134
|
GridTable: () => GridTable,
|
|
134
135
|
GridTableEmptyState: () => GridTableEmptyState,
|
|
135
136
|
GridTableLayout: () => GridTableLayout,
|
|
@@ -335,6 +336,7 @@ __export(index_exports, {
|
|
|
335
336
|
getNavLinkStyles: () => getNavLinkStyles,
|
|
336
337
|
getTableRefWidthStyles: () => getTableRefWidthStyles,
|
|
337
338
|
getTableStyles: () => getTableStyles,
|
|
339
|
+
groupColumns: () => groupColumns,
|
|
338
340
|
headerContentPaddingX: () => headerContentPaddingX,
|
|
339
341
|
headerRenderFn: () => headerRenderFn,
|
|
340
342
|
hoverStyles: () => hoverStyles,
|
|
@@ -395,6 +397,7 @@ __export(index_exports, {
|
|
|
395
397
|
shouldShowEnvironmentBanner: () => shouldShowEnvironmentBanner,
|
|
396
398
|
shouldSkipScrollTo: () => shouldSkipScrollTo,
|
|
397
399
|
simpleDataRows: () => simpleDataRows,
|
|
400
|
+
simpleGroupHeader: () => simpleGroupHeader,
|
|
398
401
|
simpleHeader: () => simpleHeader,
|
|
399
402
|
singleFilter: () => singleFilter,
|
|
400
403
|
sortFn: () => sortFn,
|
|
@@ -6449,7 +6452,10 @@ var nonKindGridColumnKeys = [
|
|
|
6449
6452
|
"initExpanded",
|
|
6450
6453
|
"hideOnExpand",
|
|
6451
6454
|
"showIn",
|
|
6452
|
-
"tooltip"
|
|
6455
|
+
"tooltip",
|
|
6456
|
+
"groupId",
|
|
6457
|
+
"groupLabel",
|
|
6458
|
+
"bgColor"
|
|
6453
6459
|
];
|
|
6454
6460
|
|
|
6455
6461
|
// src/components/Table/components/CollapseToggle.tsx
|
|
@@ -7089,6 +7095,25 @@ function memoizedTableStyles() {
|
|
|
7089
7095
|
"--boxShadow": (0, import_runtime10.maybeCssVar)(insetSeparatorCorner)
|
|
7090
7096
|
}]
|
|
7091
7097
|
},
|
|
7098
|
+
groupHeaderCss: {
|
|
7099
|
+
backgroundColor: ["bgColor_var", {
|
|
7100
|
+
"--backgroundColor": "var(--b-surface)"
|
|
7101
|
+
}],
|
|
7102
|
+
color: ["color_var", {
|
|
7103
|
+
"--color": "var(--b-on-surface)"
|
|
7104
|
+
}],
|
|
7105
|
+
fontWeight: "fw6",
|
|
7106
|
+
fontSize: "fz_14px",
|
|
7107
|
+
lineHeight: "lh_20px",
|
|
7108
|
+
whiteSpace: "wsn",
|
|
7109
|
+
height: "ha",
|
|
7110
|
+
paddingLeft: "pl_12px",
|
|
7111
|
+
paddingRight: "pr_12px",
|
|
7112
|
+
paddingTop: "pt_8px",
|
|
7113
|
+
paddingBottom: "pb0",
|
|
7114
|
+
boxShadow: "bsh0",
|
|
7115
|
+
borderBottomWidth: "bbw_0"
|
|
7116
|
+
},
|
|
7092
7117
|
cellCss: {
|
|
7093
7118
|
...{
|
|
7094
7119
|
...__typography[cellTypography] ?? {},
|
|
@@ -7719,7 +7744,7 @@ var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
|
7719
7744
|
var __maybeInc4 = (inc) => {
|
|
7720
7745
|
return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
|
|
7721
7746
|
};
|
|
7722
|
-
function toContent(maybeContent, isHeader, canSortColumn, isClientSideSorting, style, as, alignment, column2, isExpandableHeader, isExpandable, minStickyLeftOffset, isKeptSelectedRow) {
|
|
7747
|
+
function toContent(maybeContent, isHeader, canSortColumn, isClientSideSorting, style, as, alignment, column2, isExpandableHeader, isGroupHeader, isExpandable, minStickyLeftOffset, isKeptSelectedRow) {
|
|
7723
7748
|
if (isKeptSelectedRow && column2.id === "beamCollapseColumn") {
|
|
7724
7749
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, {});
|
|
7725
7750
|
}
|
|
@@ -7748,9 +7773,14 @@ function toContent(maybeContent, isHeader, canSortColumn, isClientSideSorting, s
|
|
|
7748
7773
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SortHeader, { content: content2, iconOnLeft: alignment === "right", sortKey: column2.serverSideSortKey ?? column2.id, tooltipEl });
|
|
7749
7774
|
} else if (content2 && typeof content2 === "string" && isExpandableHeader && isExpandable) {
|
|
7750
7775
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ExpandableHeader, { title: content2, column: column2, minStickyLeftOffset, as, tooltipEl });
|
|
7776
|
+
} else if (content2 && typeof content2 === "string" && isGroupHeader) {
|
|
7777
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
7778
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "oh d_negwebkit_box wbo_vertical to_ellipsis wlc_2 mwminc", children: content2 }),
|
|
7779
|
+
tooltipEl
|
|
7780
|
+
] });
|
|
7751
7781
|
} else if (content2 && typeof content2 === "string" && isExpandableHeader) {
|
|
7752
7782
|
return (
|
|
7753
|
-
//
|
|
7783
|
+
// Expandable-header cells that do not expand match the expandable header cell height.
|
|
7754
7784
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { ...(0, import_runtime13.trussProps)({
|
|
7755
7785
|
display: "df",
|
|
7756
7786
|
alignItems: "aic",
|
|
@@ -7772,7 +7802,7 @@ function toContent(maybeContent, isHeader, canSortColumn, isClientSideSorting, s
|
|
|
7772
7802
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "wsnw oh to_ellipsis mw0", title: content2, children: content2 }),
|
|
7773
7803
|
tooltipEl
|
|
7774
7804
|
] });
|
|
7775
|
-
} else if (!isHeader && !isExpandableHeader && style.emptyCell && isContentEmpty(content2)) {
|
|
7805
|
+
} else if (!isHeader && !isExpandableHeader && !isGroupHeader && style.emptyCell && isContentEmpty(content2)) {
|
|
7776
7806
|
return style.emptyCell;
|
|
7777
7807
|
}
|
|
7778
7808
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
@@ -7886,8 +7916,9 @@ function matchesFilter(maybeContent, filter) {
|
|
|
7886
7916
|
var HEADER = "header";
|
|
7887
7917
|
var TOTALS = "totals";
|
|
7888
7918
|
var EXPANDABLE_HEADER = "expandableHeader";
|
|
7919
|
+
var GROUP_HEADER = "groupHeader";
|
|
7889
7920
|
var KEPT_GROUP = "keptGroup";
|
|
7890
|
-
var reservedRowKinds = [HEADER, TOTALS, EXPANDABLE_HEADER, KEPT_GROUP];
|
|
7921
|
+
var reservedRowKinds = [HEADER, TOTALS, EXPANDABLE_HEADER, GROUP_HEADER, KEPT_GROUP];
|
|
7891
7922
|
function loadArrayOrUndefined(key) {
|
|
7892
7923
|
try {
|
|
7893
7924
|
const ids = sessionStorage.getItem(key);
|
|
@@ -9545,6 +9576,28 @@ function SelectToggle({ id, disabled }) {
|
|
|
9545
9576
|
|
|
9546
9577
|
// src/components/Table/utils/columns.tsx
|
|
9547
9578
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
9579
|
+
function groupColumns(opts) {
|
|
9580
|
+
const {
|
|
9581
|
+
id,
|
|
9582
|
+
header,
|
|
9583
|
+
bgColor,
|
|
9584
|
+
columns
|
|
9585
|
+
} = opts;
|
|
9586
|
+
return columns.map((column2) => ({
|
|
9587
|
+
canHide: true,
|
|
9588
|
+
initHidden: false,
|
|
9589
|
+
...column2,
|
|
9590
|
+
groupId: id,
|
|
9591
|
+
groupLabel: header,
|
|
9592
|
+
groupHeader: header,
|
|
9593
|
+
bgColor: column2.bgColor ?? bgColor,
|
|
9594
|
+
name: prefixGroupColumnName(header, column2.name)
|
|
9595
|
+
}));
|
|
9596
|
+
}
|
|
9597
|
+
function prefixGroupColumnName(groupLabel, name) {
|
|
9598
|
+
if (!name || name.startsWith(`${groupLabel}: `)) return name;
|
|
9599
|
+
return `${groupLabel}: ${name}`;
|
|
9600
|
+
}
|
|
9548
9601
|
function column(columnDef) {
|
|
9549
9602
|
return {
|
|
9550
9603
|
canHide: true,
|
|
@@ -9595,8 +9648,9 @@ function selectColumn(columnDef) {
|
|
|
9595
9648
|
w: "40px",
|
|
9596
9649
|
wrapAction: false,
|
|
9597
9650
|
isAction: true,
|
|
9598
|
-
// Select Column should not display the select toggle for
|
|
9651
|
+
// Select Column should not display the select toggle for group, expandable, or totals header rows.
|
|
9599
9652
|
expandableHeader: emptyCell,
|
|
9653
|
+
groupHeader: emptyCell,
|
|
9600
9654
|
totals: emptyCell,
|
|
9601
9655
|
// Use any of the user's per-row kind methods if they have them.
|
|
9602
9656
|
...columnDef
|
|
@@ -9619,8 +9673,9 @@ function collapseColumn(columnDef) {
|
|
|
9619
9673
|
w: "38px",
|
|
9620
9674
|
wrapAction: false,
|
|
9621
9675
|
isAction: true,
|
|
9622
|
-
// Collapse Column should not display the collapse toggle for
|
|
9676
|
+
// Collapse Column should not display the collapse toggle for group, expandable, or totals header rows.
|
|
9623
9677
|
expandableHeader: emptyCell,
|
|
9678
|
+
groupHeader: emptyCell,
|
|
9624
9679
|
totals: emptyCell,
|
|
9625
9680
|
...columnDef
|
|
9626
9681
|
};
|
|
@@ -9645,6 +9700,7 @@ function pinColumn(columnDef) {
|
|
|
9645
9700
|
isAction: true,
|
|
9646
9701
|
header: emptyCell,
|
|
9647
9702
|
expandableHeader: emptyCell,
|
|
9703
|
+
groupHeader: emptyCell,
|
|
9648
9704
|
totals: emptyCell,
|
|
9649
9705
|
// Use any of the user's per-row kind methods if they have them.
|
|
9650
9706
|
...columnDef
|
|
@@ -9673,6 +9729,7 @@ function layoutGutterColumn(side, sticky, gutterPx) {
|
|
|
9673
9729
|
isLayoutGutter: true,
|
|
9674
9730
|
canHide: false,
|
|
9675
9731
|
expandableHeader: emptyCell,
|
|
9732
|
+
groupHeader: emptyCell,
|
|
9676
9733
|
totals: emptyCell,
|
|
9677
9734
|
...sticky ? {
|
|
9678
9735
|
sticky
|
|
@@ -9896,6 +9953,7 @@ function dragHandleColumn(columnDef) {
|
|
|
9896
9953
|
wrapAction: false,
|
|
9897
9954
|
isAction: true,
|
|
9898
9955
|
expandableHeader: emptyCell,
|
|
9956
|
+
groupHeader: emptyCell,
|
|
9899
9957
|
totals: emptyCell,
|
|
9900
9958
|
// Use any of the user's per-row kind methods if they have them.
|
|
9901
9959
|
...columnDef
|
|
@@ -10874,6 +10932,7 @@ function RowImpl(props) {
|
|
|
10874
10932
|
cellHighlight,
|
|
10875
10933
|
omitRowHover,
|
|
10876
10934
|
hasExpandableHeader,
|
|
10935
|
+
hasGroupHeader,
|
|
10877
10936
|
isFirstHeadRow,
|
|
10878
10937
|
isFirstBodyRow,
|
|
10879
10938
|
isLastBodyRow,
|
|
@@ -10909,9 +10968,10 @@ function RowImpl(props) {
|
|
|
10909
10968
|
const isHeader = row.kind === HEADER;
|
|
10910
10969
|
const isTotals = row.kind === TOTALS;
|
|
10911
10970
|
const isExpandableHeader = row.kind === EXPANDABLE_HEADER;
|
|
10971
|
+
const isGroupHeader = row.kind === GROUP_HEADER;
|
|
10912
10972
|
const isKeptGroupRow = row.kind === KEPT_GROUP;
|
|
10913
|
-
const isBodyRow = !isHeader && !isTotals && !isExpandableHeader;
|
|
10914
|
-
const isFirstHeadCellRow = isExpandableHeader || !hasExpandableHeader && (isHeader || isTotals);
|
|
10973
|
+
const isBodyRow = !isHeader && !isTotals && !isExpandableHeader && !isGroupHeader;
|
|
10974
|
+
const isFirstHeadCellRow = isGroupHeader || isExpandableHeader && !hasGroupHeader || !hasGroupHeader && !hasExpandableHeader && (isHeader || isTotals);
|
|
10915
10975
|
const rowStyle = rowStyles?.[row.kind];
|
|
10916
10976
|
const RowTag = as === "table" ? "tr" : "div";
|
|
10917
10977
|
const sortOn = tableState.sortConfig?.on;
|
|
@@ -11010,14 +11070,15 @@ function RowImpl(props) {
|
|
|
11010
11070
|
onDragEnter,
|
|
11011
11071
|
onDragOver: onDragOverDebounced
|
|
11012
11072
|
};
|
|
11013
|
-
const maybeContent = applyRowFn(column2, row, rowApi, level, isExpanded, dragData);
|
|
11014
|
-
|
|
11073
|
+
const maybeContent = isGroupHeader && column2.groupId ? column2.groupLabel : applyRowFn(column2, row, rowApi, level, isExpanded, dragData);
|
|
11074
|
+
const groupSpan = isGroupHeader && column2.groupId ? consecutiveGroupSpan(columns, columnIndex) : 1;
|
|
11075
|
+
currentColspan = isGroupHeader && column2.groupId ? groupSpan : isGridCellContent(maybeContent) && typeof maybeContent.colspan === "number" ? maybeContent.colspan : isExpandableHeader ? numExpandedColumns + 1 : 1;
|
|
11015
11076
|
const canSortColumn = sortOn === "client" && column2.clientSideSort !== false || sortOn === "server" && !!column2.serverSideSortKey;
|
|
11016
|
-
const alignment = getAlignment(column2, maybeContent);
|
|
11077
|
+
const alignment = isGroupHeader ? "left" : getAlignment(column2, maybeContent);
|
|
11017
11078
|
const justificationCss = getJustification(column2, maybeContent, as, alignment);
|
|
11018
11079
|
const isExpandable = isFunction(column2.expandColumns) || column2.expandColumns && column2.expandColumns.length > 0 || column2.expandedWidth !== void 0;
|
|
11019
|
-
const content2 = toContent(maybeContent, isHeader, canSortColumn, sortOn === "client", style, as, alignment, column2, isExpandableHeader, isExpandable, minStickyLeftOffset, isKeptRow);
|
|
11020
|
-
ensureClientSideSortValueIsSortable(sortOn, isHeader || isTotals || isExpandableHeader, column2, columnIndex, maybeContent);
|
|
11080
|
+
const content2 = toContent(maybeContent, isHeader, canSortColumn, sortOn === "client", style, as, alignment, column2, isExpandableHeader, isGroupHeader, isExpandable, minStickyLeftOffset, isKeptRow);
|
|
11081
|
+
ensureClientSideSortValueIsSortable(sortOn, isHeader || isTotals || isExpandableHeader || isGroupHeader, column2, columnIndex, maybeContent);
|
|
11021
11082
|
const maybeSticky = (isGridCellContent(maybeContent) && maybeContent.sticky || column2.sticky) ?? void 0;
|
|
11022
11083
|
const maybeStickyColumnStyles = maybeSticky && columnSizes ? {
|
|
11023
11084
|
...{
|
|
@@ -11043,7 +11104,7 @@ function RowImpl(props) {
|
|
|
11043
11104
|
} : {};
|
|
11044
11105
|
minStickyLeftOffset += maybeSticky === "left" ? parseInt(columnSizes[columnIndex].replace("px", ""), 10) : 0;
|
|
11045
11106
|
const cellId = `${row.kind}_${row.id}_${column2.id}`;
|
|
11046
|
-
const applyCellHighlight = cellHighlight && !!column2.id && !isHeader && !isTotals;
|
|
11107
|
+
const applyCellHighlight = cellHighlight && !!column2.id && !isHeader && !isTotals && !isGroupHeader;
|
|
11047
11108
|
const isCellActive = tableState.activeCellId === cellId;
|
|
11048
11109
|
const cellCss = {
|
|
11049
11110
|
// Adding `display: flex` so we can align content within the cells, unless it is displayed as a `table`, then use `table-cell`.
|
|
@@ -11090,6 +11151,12 @@ function RowImpl(props) {
|
|
|
11090
11151
|
...isExpandableHeader && style.expandableHeaderCss,
|
|
11091
11152
|
// Add right border on expandable header cells except the last column
|
|
11092
11153
|
...isExpandableHeader && columnIndex + currentColspan < columns.length && style.expandableHeaderNonLastColumnCss,
|
|
11154
|
+
...isGroupHeader && style.groupHeaderCss,
|
|
11155
|
+
...column2.bgColor && {
|
|
11156
|
+
backgroundColor: ["bgColor_var", {
|
|
11157
|
+
"--backgroundColor": (0, import_runtime24.maybeCssVar)(column2.bgColor)
|
|
11158
|
+
}]
|
|
11159
|
+
},
|
|
11093
11160
|
// Conditionally apply the right border styling for the header or totals row when using expandable tables
|
|
11094
11161
|
// Only apply if not the last column in the table AND when this column is the last column in the group of expandable column or not expanded AND
|
|
11095
11162
|
...hasExpandableHeader && columnIndex + currentColspan < columns.length && (isHeader || isTotals) && currentExpandedColumnCount === 0 && {
|
|
@@ -11153,7 +11220,7 @@ function RowImpl(props) {
|
|
|
11153
11220
|
};
|
|
11154
11221
|
const cellOnClick = applyCellHighlight ? () => api.setActiveCellId(cellId) : void 0;
|
|
11155
11222
|
const tooltip = isGridCellContent(maybeContent) ? maybeContent.tooltip : void 0;
|
|
11156
|
-
const renderFn = (rowStyle?.renderCell || rowStyle?.rowLink) && wrapAction ? rowLinkRenderFn(as, currentColspan) : isHeader || isTotals || isExpandableHeader ? headerRenderFn(column2, as, currentColspan) : rowStyle?.onClick && wrapAction ? rowClickRenderFn(as, api, currentColspan) : defaultRenderFn(as, currentColspan);
|
|
11223
|
+
const renderFn = (rowStyle?.renderCell || rowStyle?.rowLink) && wrapAction ? rowLinkRenderFn(as, currentColspan) : isHeader || isTotals || isExpandableHeader || isGroupHeader ? headerRenderFn(column2, as, currentColspan) : rowStyle?.onClick && wrapAction ? rowClickRenderFn(as, api, currentColspan) : defaultRenderFn(as, currentColspan);
|
|
11157
11224
|
const cellElement = renderFn(columnIndex, cellCss, content2, row, rowStyle, void 0, cellOnClick, tooltip);
|
|
11158
11225
|
if (!disableColumnResizing && isHeader && columnIndex < columns.length - 1 && currentColspan === 1 && isContentColumn(column2)) {
|
|
11159
11226
|
const currentSizeStr = columnSizes[columnIndex];
|
|
@@ -11192,6 +11259,13 @@ var BorderHoverParent = "beam-bhp";
|
|
|
11192
11259
|
var BorderHoverChild = "beam-bhc";
|
|
11193
11260
|
var RowHoverClass = "beam-row-hover";
|
|
11194
11261
|
var rowHoverBgVar = "--beam-row-hover-bg";
|
|
11262
|
+
function consecutiveGroupSpan(columns, columnIndex) {
|
|
11263
|
+
const groupId = columns[columnIndex]?.groupId;
|
|
11264
|
+
if (!groupId) return 1;
|
|
11265
|
+
let span = 1;
|
|
11266
|
+
while (columns[columnIndex + span]?.groupId === groupId) span += 1;
|
|
11267
|
+
return span;
|
|
11268
|
+
}
|
|
11195
11269
|
|
|
11196
11270
|
// src/components/Table/components/RowGroup.tsx
|
|
11197
11271
|
var import_react34 = require("react");
|
|
@@ -14626,11 +14700,12 @@ function GridTable(props) {
|
|
|
14626
14700
|
};
|
|
14627
14701
|
const [tableHeadRows, visibleDataRows, keptSelectedRows, pinnedRows, tooManyClientSideRows] = useComputed(() => {
|
|
14628
14702
|
if (as === "card") {
|
|
14629
|
-
const cardElements = tableState.visibleRows.filter((rs) => ![HEADER, EXPANDABLE_HEADER, TOTALS, KEPT_GROUP].includes(rs.kind)).map((rs) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TableCard, { rs, columns, rowStyle: rowStyles?.[rs.row.kind], api: tableState.api, height: cardHeight, imageFit: cardImageFit }, rs.key));
|
|
14703
|
+
const cardElements = tableState.visibleRows.filter((rs) => ![HEADER, EXPANDABLE_HEADER, GROUP_HEADER, TOTALS, KEPT_GROUP].includes(rs.kind)).map((rs) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TableCard, { rs, columns, rowStyle: rowStyles?.[rs.row.kind], api: tableState.api, height: cardHeight, imageFit: cardImageFit }, rs.key));
|
|
14630
14704
|
return [[], cardElements, [], [], false];
|
|
14631
14705
|
}
|
|
14632
14706
|
const headerRows = [];
|
|
14633
14707
|
const expandableHeaderRows = [];
|
|
14708
|
+
const groupHeaderRows = [];
|
|
14634
14709
|
const totalsRows = [];
|
|
14635
14710
|
const keptSelectedRows2 = [];
|
|
14636
14711
|
let visibleDataRows2 = [];
|
|
@@ -14638,8 +14713,9 @@ function GridTable(props) {
|
|
|
14638
14713
|
const pinnedIds = new Set(pinnedRowStates.map((rs) => rs.row.id));
|
|
14639
14714
|
const visibleRows = tableState.visibleRows.filter((rs) => !pinnedIds.has(rs.row.id));
|
|
14640
14715
|
const hasExpandableHeader = visibleRows.some((rs) => rs.row.id === EXPANDABLE_HEADER);
|
|
14716
|
+
const hasGroupHeader = visibleRows.some((rs) => rs.kind === GROUP_HEADER);
|
|
14641
14717
|
const omitRowHover = "rowHover" in maybeStyle && maybeStyle.rowHover === false;
|
|
14642
|
-
const isHeadKind = (kind) => [HEADER, EXPANDABLE_HEADER, TOTALS].includes(kind);
|
|
14718
|
+
const isHeadKind = (kind) => [HEADER, EXPANDABLE_HEADER, GROUP_HEADER, TOTALS].includes(kind);
|
|
14643
14719
|
const makeRow = (rs, isFirstHeadRow, isFirstBodyRow, isLastBodyRow, hasTrailingCompanion) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Row, { onDragStart, onDragOver, onDragEnd, onDrop, onDragEnter, ...{
|
|
14644
14720
|
as,
|
|
14645
14721
|
rs,
|
|
@@ -14650,6 +14726,7 @@ function GridTable(props) {
|
|
|
14650
14726
|
cellHighlight: "cellHighlight" in maybeStyle && maybeStyle.cellHighlight === true,
|
|
14651
14727
|
omitRowHover,
|
|
14652
14728
|
hasExpandableHeader,
|
|
14729
|
+
hasGroupHeader,
|
|
14653
14730
|
isFirstHeadRow,
|
|
14654
14731
|
isFirstBodyRow,
|
|
14655
14732
|
isLastBodyRow,
|
|
@@ -14691,6 +14768,8 @@ function GridTable(props) {
|
|
|
14691
14768
|
headerRows.push(makeRow(rs, isFirstHeadRow, false, false, false));
|
|
14692
14769
|
} else if (rs.kind === "expandableHeader") {
|
|
14693
14770
|
expandableHeaderRows.push(makeRow(rs, isFirstHeadRow, false, false, false));
|
|
14771
|
+
} else if (rs.kind === GROUP_HEADER) {
|
|
14772
|
+
groupHeaderRows.push(makeRow(rs, isFirstHeadRow, false, false, false));
|
|
14694
14773
|
} else if (rs.kind === "totals") {
|
|
14695
14774
|
totalsRows.push(makeRow(rs, isFirstHeadRow, false, false, false));
|
|
14696
14775
|
} else if (rs.isKept || rs.kind === KEPT_GROUP) {
|
|
@@ -14699,7 +14778,7 @@ function GridTable(props) {
|
|
|
14699
14778
|
visibleDataRows2.push(makeRowGroup(rs, isFirstBodyRow, rs === lastBodyRs, false));
|
|
14700
14779
|
}
|
|
14701
14780
|
});
|
|
14702
|
-
const tableHeadRows2 = expandableHeaderRows.concat(headerRows).concat(totalsRows);
|
|
14781
|
+
const tableHeadRows2 = groupHeaderRows.concat(expandableHeaderRows).concat(headerRows).concat(totalsRows);
|
|
14703
14782
|
const pinnedRows2 = pinnedRowStates.map((rs) => makeRowGroup(rs, false, false, as === "table"));
|
|
14704
14783
|
const tooManyClientSideRows2 = !!filterMaxRows && visibleDataRows2.length > filterMaxRows;
|
|
14705
14784
|
if (tooManyClientSideRows2) {
|
|
@@ -19799,6 +19878,50 @@ function ListBox(props) {
|
|
|
19799
19878
|
}
|
|
19800
19879
|
var maxPopoverHeight = 512;
|
|
19801
19880
|
|
|
19881
|
+
// src/inputs/internal/selectFieldHelpers.ts
|
|
19882
|
+
function initializeOptions(optionsOrLoad, getOptionValue, getOptionLabel, unsetLabel, autoSort) {
|
|
19883
|
+
const result = [];
|
|
19884
|
+
if (unsetLabel) {
|
|
19885
|
+
result.push(unsetOption);
|
|
19886
|
+
}
|
|
19887
|
+
const userOptions = [];
|
|
19888
|
+
if (Array.isArray(optionsOrLoad)) {
|
|
19889
|
+
userOptions.push(...optionsOrLoad);
|
|
19890
|
+
} else {
|
|
19891
|
+
const { options, current: current2 } = optionsOrLoad;
|
|
19892
|
+
if (options) {
|
|
19893
|
+
userOptions.push(...options);
|
|
19894
|
+
}
|
|
19895
|
+
if (current2) {
|
|
19896
|
+
const toCheck = Array.isArray(current2) ? current2 : [current2];
|
|
19897
|
+
toCheck.forEach((current3) => {
|
|
19898
|
+
const value = getOptionValue(current3);
|
|
19899
|
+
const found = options && options.find((o) => getOptionValue(o) === value);
|
|
19900
|
+
if (!found) {
|
|
19901
|
+
userOptions.push(current3);
|
|
19902
|
+
}
|
|
19903
|
+
});
|
|
19904
|
+
}
|
|
19905
|
+
}
|
|
19906
|
+
result.push(...autoSort ? sortOptions(userOptions, getOptionLabel) : userOptions);
|
|
19907
|
+
return result;
|
|
19908
|
+
}
|
|
19909
|
+
var unsetOption = {};
|
|
19910
|
+
function disabledOptionToKeyedTuple(disabledOption) {
|
|
19911
|
+
if (typeof disabledOption === "object" && disabledOption !== null) {
|
|
19912
|
+
return [valueToKey(disabledOption.value), disabledOption.reason];
|
|
19913
|
+
} else {
|
|
19914
|
+
return [valueToKey(disabledOption), void 0];
|
|
19915
|
+
}
|
|
19916
|
+
}
|
|
19917
|
+
function sortOptions(options, getOptionLabel) {
|
|
19918
|
+
return [...options].sort((a, b) => {
|
|
19919
|
+
const labelA = getOptionLabel(a).toLowerCase();
|
|
19920
|
+
const labelB = getOptionLabel(b).toLowerCase();
|
|
19921
|
+
return labelA.localeCompare(labelB);
|
|
19922
|
+
});
|
|
19923
|
+
}
|
|
19924
|
+
|
|
19802
19925
|
// src/inputs/TreeSelectField/TreeSelectField.tsx
|
|
19803
19926
|
var import_jsx_runtime115 = require("react/jsx-runtime");
|
|
19804
19927
|
function TreeSelectField(props) {
|
|
@@ -20705,44 +20828,6 @@ function getInputValue(selectedOptions, getOptionLabel, multiselect, nothingSele
|
|
|
20705
20828
|
function getAiDisplayValue(options, getOptionLabel) {
|
|
20706
20829
|
return options.map(getOptionLabel).join(", ");
|
|
20707
20830
|
}
|
|
20708
|
-
function initializeOptions(optionsOrLoad, getOptionValue, getOptionLabel, unsetLabel, autoSort) {
|
|
20709
|
-
const result = [];
|
|
20710
|
-
if (unsetLabel) {
|
|
20711
|
-
result.push(unsetOption);
|
|
20712
|
-
}
|
|
20713
|
-
const userOptions = [];
|
|
20714
|
-
if (Array.isArray(optionsOrLoad)) {
|
|
20715
|
-
userOptions.push(...optionsOrLoad);
|
|
20716
|
-
} else {
|
|
20717
|
-
const {
|
|
20718
|
-
options,
|
|
20719
|
-
current: current2
|
|
20720
|
-
} = optionsOrLoad;
|
|
20721
|
-
if (options) {
|
|
20722
|
-
userOptions.push(...options);
|
|
20723
|
-
}
|
|
20724
|
-
if (current2) {
|
|
20725
|
-
const toCheck = Array.isArray(current2) ? current2 : [current2];
|
|
20726
|
-
toCheck.forEach((current3) => {
|
|
20727
|
-
const value = getOptionValue(current3);
|
|
20728
|
-
const found = options && options.find((o) => getOptionValue(o) === value);
|
|
20729
|
-
if (!found) {
|
|
20730
|
-
userOptions.push(current3);
|
|
20731
|
-
}
|
|
20732
|
-
});
|
|
20733
|
-
}
|
|
20734
|
-
}
|
|
20735
|
-
result.push(...autoSort ? sortOptions(userOptions, getOptionLabel) : userOptions);
|
|
20736
|
-
return result;
|
|
20737
|
-
}
|
|
20738
|
-
function sortOptions(options, getOptionLabel) {
|
|
20739
|
-
return [...options].sort((a, b) => {
|
|
20740
|
-
const labelA = getOptionLabel(a).toLowerCase();
|
|
20741
|
-
const labelB = getOptionLabel(b).toLowerCase();
|
|
20742
|
-
return labelA.localeCompare(labelB);
|
|
20743
|
-
});
|
|
20744
|
-
}
|
|
20745
|
-
var unsetOption = {};
|
|
20746
20831
|
var addNewOptionId = "beam_new";
|
|
20747
20832
|
function isAddNewOption(o) {
|
|
20748
20833
|
return typeof o === "object" && o !== null && "id" in o && o.id === addNewOptionId;
|
|
@@ -20762,13 +20847,6 @@ function getAddNewOption(searchValue, options, getOptionLabel, onAddNew) {
|
|
|
20762
20847
|
name: `Add "${trimmedSearch}"`
|
|
20763
20848
|
};
|
|
20764
20849
|
}
|
|
20765
|
-
function disabledOptionToKeyedTuple(disabledOption) {
|
|
20766
|
-
if (typeof disabledOption === "object" && disabledOption !== null) {
|
|
20767
|
-
return [valueToKey(disabledOption.value), disabledOption.reason];
|
|
20768
|
-
} else {
|
|
20769
|
-
return [valueToKey(disabledOption), void 0];
|
|
20770
|
-
}
|
|
20771
|
-
}
|
|
20772
20850
|
|
|
20773
20851
|
// src/inputs/SelectField.tsx
|
|
20774
20852
|
var import_jsx_runtime118 = require("react/jsx-runtime");
|
|
@@ -22650,7 +22728,7 @@ function getSelectCardOptionsCss({
|
|
|
22650
22728
|
gap: "g_2",
|
|
22651
22729
|
width: "w100"
|
|
22652
22730
|
};
|
|
22653
|
-
const cardWidth = layout === "horizontal" ? hasImage ?
|
|
22731
|
+
const cardWidth = layout === "horizontal" ? hasImage ? 352 : 240 : hasImage || hasDescription ? 192 : 142;
|
|
22654
22732
|
return {
|
|
22655
22733
|
display: "dg",
|
|
22656
22734
|
gridTemplateColumns: ["gtc_var", {
|
|
@@ -25585,13 +25663,14 @@ function EditColumnsButton(props) {
|
|
|
25585
25663
|
color: ["color_var", {
|
|
25586
25664
|
"--color": "var(--b-on-surface)"
|
|
25587
25665
|
}],
|
|
25588
|
-
|
|
25666
|
+
width: "wmaxc",
|
|
25667
|
+
maxWidth: "maxw_calc_100vw_32px",
|
|
25589
25668
|
maxHeight: "maxh_512px",
|
|
25590
25669
|
boxShadow: "bshBasic h_bshHover"
|
|
25591
25670
|
}), children: [
|
|
25592
25671
|
/* @__PURE__ */ (0, import_jsx_runtime179.jsx)("div", { className: "dg gtc_1fr_auto g_2 pt2 pb2 pr2 pl2 fg1 mh0 oya", children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime179.jsxs)(import_react117.Fragment, { children: [
|
|
25593
25672
|
/* @__PURE__ */ (0, import_jsx_runtime179.jsxs)("div", { className: "df aic g_4px mw0 pr1", children: [
|
|
25594
|
-
/* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "fw4 fz_14px lh_20px
|
|
25673
|
+
/* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "fw4 fz_14px lh_20px mw0", children: option.label }),
|
|
25595
25674
|
option.tooltip ? /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(ColumnTooltipIcon, { ...tid[`tooltip_${option.value}`], tooltip: closeMenuOnClickTooltip(option.tooltip, state.close), color: "--b-text-link-default" /* TextLinkDefault */, label: option.label }) : null
|
|
25596
25675
|
] }),
|
|
25597
25676
|
/* @__PURE__ */ (0, import_jsx_runtime179.jsx)(Switch, { compact: true, selected: selectedValues.includes(option.value), onChange: (value) => setSelectedValues(value ? [...selectedValues, option.value] : selectedValues.filter((v) => v !== option.value)), labelStyle: "hidden", label: option.label, ...tid[`option${option.value}`] })
|
|
@@ -30441,6 +30520,7 @@ function cardCarouselSlot(props) {
|
|
|
30441
30520
|
|
|
30442
30521
|
// src/components/Table/utils/simpleHelpers.ts
|
|
30443
30522
|
var simpleHeader = { kind: "header", id: "header", data: void 0 };
|
|
30523
|
+
var simpleGroupHeader = { kind: "groupHeader", id: "groupHeader", data: void 0 };
|
|
30444
30524
|
function simpleDataRows(data = []) {
|
|
30445
30525
|
return [simpleHeader, ...data.map((data2) => ({ kind: "data", data: data2, id: data2.id }))];
|
|
30446
30526
|
}
|
|
@@ -32856,6 +32936,7 @@ var togglePressStyles = {
|
|
|
32856
32936
|
FormSectionChild,
|
|
32857
32937
|
FormSectionLayout,
|
|
32858
32938
|
FullBleed,
|
|
32939
|
+
GROUP_HEADER,
|
|
32859
32940
|
GridTable,
|
|
32860
32941
|
GridTableEmptyState,
|
|
32861
32942
|
GridTableLayout,
|
|
@@ -33061,6 +33142,7 @@ var togglePressStyles = {
|
|
|
33061
33142
|
getNavLinkStyles,
|
|
33062
33143
|
getTableRefWidthStyles,
|
|
33063
33144
|
getTableStyles,
|
|
33145
|
+
groupColumns,
|
|
33064
33146
|
headerContentPaddingX,
|
|
33065
33147
|
headerRenderFn,
|
|
33066
33148
|
hoverStyles,
|
|
@@ -33121,6 +33203,7 @@ var togglePressStyles = {
|
|
|
33121
33203
|
shouldShowEnvironmentBanner,
|
|
33122
33204
|
shouldSkipScrollTo,
|
|
33123
33205
|
simpleDataRows,
|
|
33206
|
+
simpleGroupHeader,
|
|
33124
33207
|
simpleHeader,
|
|
33125
33208
|
singleFilter,
|
|
33126
33209
|
sortFn,
|