@homebound/beam 4.24.0 → 4.25.0
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 +327 -175
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +24 -6
- package/dist/index.d.ts +24 -6
- package/dist/index.js +304 -156
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -163,6 +163,7 @@ __export(index_exports, {
|
|
|
163
163
|
NavbarLayout: () => NavbarLayout,
|
|
164
164
|
NumberField: () => NumberField,
|
|
165
165
|
OpenModal: () => OpenModal,
|
|
166
|
+
PageBanner: () => PageBanner,
|
|
166
167
|
PageHeaderLayout: () => PageHeaderLayout,
|
|
167
168
|
Pagination: () => Pagination,
|
|
168
169
|
Palette: () => Palette,
|
|
@@ -233,19 +234,20 @@ __export(index_exports, {
|
|
|
233
234
|
actionColumn: () => actionColumn,
|
|
234
235
|
applyRowFn: () => applyRowFn,
|
|
235
236
|
assignDefaultColumnIds: () => assignDefaultColumnIds,
|
|
236
|
-
bannerAndNavbarChromeTop: () => bannerAndNavbarChromeTop,
|
|
237
237
|
beamEnvironmentBannerLayoutHeightVar: () => beamEnvironmentBannerLayoutHeightVar,
|
|
238
238
|
beamFloatingRightOffsetVar: () => beamFloatingRightOffsetVar,
|
|
239
239
|
beamLayoutContentPaddingXVar: () => beamLayoutContentPaddingXVar,
|
|
240
240
|
beamLayoutViewportHeightVar: () => beamLayoutViewportHeightVar,
|
|
241
241
|
beamLayoutViewportWidthVar: () => beamLayoutViewportWidthVar,
|
|
242
242
|
beamNavbarLayoutHeightVar: () => beamNavbarLayoutHeightVar,
|
|
243
|
+
beamPageBannerHeightVar: () => beamPageBannerHeightVar,
|
|
243
244
|
beamPageHeaderLayoutHeightVar: () => beamPageHeaderLayoutHeightVar,
|
|
244
245
|
beamRightPaneContentMinVar: () => beamRightPaneContentMinVar,
|
|
245
246
|
beamRightPaneWidthVar: () => beamRightPaneWidthVar,
|
|
246
247
|
beamSideNavLayoutWidthVar: () => beamSideNavLayoutWidthVar,
|
|
247
248
|
beamTableActionsHeightVar: () => beamTableActionsHeightVar,
|
|
248
249
|
beamWorkflowLayoutFooterHeightVar: () => beamWorkflowLayoutFooterHeightVar,
|
|
250
|
+
belowNavbarOffset: () => belowNavbarOffset,
|
|
249
251
|
booleanFilter: () => booleanFilter,
|
|
250
252
|
boundCheckboxField: () => boundCheckboxField,
|
|
251
253
|
boundCheckboxGroupField: () => boundCheckboxGroupField,
|
|
@@ -359,6 +361,7 @@ __export(index_exports, {
|
|
|
359
361
|
nonKindGridColumnKeys: () => nonKindGridColumnKeys,
|
|
360
362
|
numberRangeFilter: () => numberRangeFilter,
|
|
361
363
|
numericColumn: () => numericColumn,
|
|
364
|
+
pageBannerOffset: () => pageBannerOffset,
|
|
362
365
|
pageContentGutterPx: () => pageContentGutterPx,
|
|
363
366
|
pageContentPaddingX: () => pageContentPaddingX,
|
|
364
367
|
parseDate: () => parseDate,
|
|
@@ -422,6 +425,7 @@ __export(index_exports, {
|
|
|
422
425
|
useHasSideNavLayoutProvider: () => useHasSideNavLayoutProvider,
|
|
423
426
|
useHover: () => useHover2,
|
|
424
427
|
useModal: () => useModal,
|
|
428
|
+
usePageBanner: () => usePageBanner,
|
|
425
429
|
usePersistedFilter: () => usePersistedFilter,
|
|
426
430
|
useQueryState: () => useQueryState,
|
|
427
431
|
useResponsiveGrid: () => useResponsiveGrid,
|
|
@@ -7377,17 +7381,17 @@ function useComputed(fn, deps) {
|
|
|
7377
7381
|
hasRan: false
|
|
7378
7382
|
});
|
|
7379
7383
|
(0, import_react9.useMemo)(() => {
|
|
7380
|
-
const { current } = ref;
|
|
7381
|
-
if (
|
|
7382
|
-
|
|
7384
|
+
const { current: current2 } = ref;
|
|
7385
|
+
if (current2.runner) {
|
|
7386
|
+
current2.runner();
|
|
7383
7387
|
}
|
|
7384
|
-
|
|
7385
|
-
|
|
7386
|
-
const { value: oldValue, hasRan } =
|
|
7388
|
+
current2.hasRan = false;
|
|
7389
|
+
current2.runner = (0, import_mobx2.autorun)(() => {
|
|
7390
|
+
const { value: oldValue, hasRan } = current2;
|
|
7387
7391
|
const newValue = fn(oldValue);
|
|
7388
7392
|
if (hasRan && shallowEqual(newValue, oldValue)) return;
|
|
7389
|
-
|
|
7390
|
-
|
|
7393
|
+
current2.value = newValue;
|
|
7394
|
+
current2.hasRan = true;
|
|
7391
7395
|
if (hasRan) {
|
|
7392
7396
|
setTick((tick) => tick + 1);
|
|
7393
7397
|
}
|
|
@@ -7413,6 +7417,7 @@ function useHover2(props) {
|
|
|
7413
7417
|
var beamEnvironmentBannerLayoutHeightVar = "--beam-environment-banner-height";
|
|
7414
7418
|
var beamNavbarLayoutHeightVar = "--beam-navbar-layout-height";
|
|
7415
7419
|
var beamPageHeaderLayoutHeightVar = "--beam-page-header-layout-height";
|
|
7420
|
+
var beamPageBannerHeightVar = "--beam-page-banner-height";
|
|
7416
7421
|
var beamLayoutViewportWidthVar = "--beam-layout-viewport-width";
|
|
7417
7422
|
var beamLayoutViewportHeightVar = "--beam-layout-viewport-height";
|
|
7418
7423
|
var beamSideNavLayoutWidthVar = "--beam-side-nav-layout-width";
|
|
@@ -7446,24 +7451,27 @@ function documentScrollBodyMinHeight() {
|
|
|
7446
7451
|
function documentScrollRightPaneWidthCss(maxPx) {
|
|
7447
7452
|
return `min(${maxPx}px, ${documentScrollChromeWidth()})`;
|
|
7448
7453
|
}
|
|
7449
|
-
function
|
|
7454
|
+
function belowNavbarOffset() {
|
|
7450
7455
|
return `calc(var(${beamEnvironmentBannerLayoutHeightVar}, 0px) + var(${beamNavbarLayoutHeightVar}, 0px))`;
|
|
7451
7456
|
}
|
|
7457
|
+
function pageBannerOffset() {
|
|
7458
|
+
return `calc(var(${beamEnvironmentBannerLayoutHeightVar}, 0px) + var(${beamNavbarLayoutHeightVar}, 0px) + var(${beamPageHeaderLayoutHeightVar}, 0px))`;
|
|
7459
|
+
}
|
|
7452
7460
|
function stickyNavAndHeaderOffset(basePx = 0) {
|
|
7453
|
-
return `calc(${basePx}px + var(${beamEnvironmentBannerLayoutHeightVar}, 0px) + var(${beamNavbarLayoutHeightVar}, 0px) + var(${beamPageHeaderLayoutHeightVar}, 0px))`;
|
|
7461
|
+
return `calc(${basePx}px + var(${beamEnvironmentBannerLayoutHeightVar}, 0px) + var(${beamNavbarLayoutHeightVar}, 0px) + var(${beamPageHeaderLayoutHeightVar}, 0px) + var(${beamPageBannerHeightVar}, 0px))`;
|
|
7454
7462
|
}
|
|
7455
7463
|
function stickyNavAndHeaderOffsetPx(el) {
|
|
7456
7464
|
const styles = getComputedStyle(el);
|
|
7457
7465
|
const read = (name) => parseFloat(styles.getPropertyValue(name)) || 0;
|
|
7458
|
-
return read(beamEnvironmentBannerLayoutHeightVar) + read(beamNavbarLayoutHeightVar) + read(beamPageHeaderLayoutHeightVar);
|
|
7466
|
+
return read(beamEnvironmentBannerLayoutHeightVar) + read(beamNavbarLayoutHeightVar) + read(beamPageHeaderLayoutHeightVar) + read(beamPageBannerHeightVar);
|
|
7459
7467
|
}
|
|
7460
7468
|
function stickyTableHeaderOffsetPx(el) {
|
|
7461
7469
|
const styles = getComputedStyle(el);
|
|
7462
7470
|
const read = (name) => parseFloat(styles.getPropertyValue(name)) || 0;
|
|
7463
|
-
return read(beamEnvironmentBannerLayoutHeightVar) + read(beamNavbarLayoutHeightVar) + read(beamPageHeaderLayoutHeightVar) + read(beamTableActionsHeightVar);
|
|
7471
|
+
return read(beamEnvironmentBannerLayoutHeightVar) + read(beamNavbarLayoutHeightVar) + read(beamPageHeaderLayoutHeightVar) + read(beamPageBannerHeightVar) + read(beamTableActionsHeightVar);
|
|
7464
7472
|
}
|
|
7465
7473
|
function stickyTableHeaderOffset(basePx = 0) {
|
|
7466
|
-
return `calc(${basePx}px + var(${beamEnvironmentBannerLayoutHeightVar}, 0px) + var(${beamNavbarLayoutHeightVar}, 0px) + var(${beamPageHeaderLayoutHeightVar}, 0px) + var(${beamTableActionsHeightVar}, 0px))`;
|
|
7474
|
+
return `calc(${basePx}px + var(${beamEnvironmentBannerLayoutHeightVar}, 0px) + var(${beamNavbarLayoutHeightVar}, 0px) + var(${beamPageHeaderLayoutHeightVar}, 0px) + var(${beamPageBannerHeightVar}, 0px) + var(${beamTableActionsHeightVar}, 0px))`;
|
|
7467
7475
|
}
|
|
7468
7476
|
function getFloatingBottomOffset(basePx = 0) {
|
|
7469
7477
|
return `calc(${basePx}px + var(${beamWorkflowLayoutFooterHeightVar}, 0px))`;
|
|
@@ -7493,6 +7501,9 @@ var zIndices = {
|
|
|
7493
7501
|
rightPane: 60,
|
|
7494
7502
|
// Workflow floating right-pane triggers — above the pane, below sticky headers.
|
|
7495
7503
|
rightPaneTriggers: 65,
|
|
7504
|
+
// Stay-pinned page banner under the header — above the floating triggers it pins above, and below
|
|
7505
|
+
// pageStickyHeader so the auto-hiding header paints over it during the slide.
|
|
7506
|
+
pageBanner: 68,
|
|
7496
7507
|
pageStickyHeader: 70,
|
|
7497
7508
|
// Sticky mobile action footer (workflow layouts) — same tier as pageStickyHeader; header and footer never overlap on screen.
|
|
7498
7509
|
pageStickyFooter: 70,
|
|
@@ -7646,8 +7657,8 @@ function SortHeader(props) {
|
|
|
7646
7657
|
const {
|
|
7647
7658
|
tableState
|
|
7648
7659
|
} = (0, import_react11.useContext)(TableStateContext);
|
|
7649
|
-
const
|
|
7650
|
-
const sorted = sortKey ===
|
|
7660
|
+
const current2 = useComputed(() => tableState.sortState?.current, [tableState]);
|
|
7661
|
+
const sorted = sortKey === current2?.columnId ? current2?.direction : void 0;
|
|
7651
7662
|
const toggleSort = (0, import_react11.useCallback)(() => tableState.setSortKey(sortKey), [sortKey, tableState]);
|
|
7652
7663
|
const sortVisible = isHovered || sorted !== void 0;
|
|
7653
7664
|
const tid = useTestIds(props, "sortHeader");
|
|
@@ -8840,8 +8851,8 @@ function sortRows(columns, rows, sortState, caseSensitive) {
|
|
|
8840
8851
|
return sorted;
|
|
8841
8852
|
}
|
|
8842
8853
|
function sortFn(columns, sortState, caseSensitive) {
|
|
8843
|
-
const { current, persistent } = sortState ?? {};
|
|
8844
|
-
const { columnId, direction } =
|
|
8854
|
+
const { current: current2, persistent } = sortState ?? {};
|
|
8855
|
+
const { columnId, direction } = current2 ?? {};
|
|
8845
8856
|
const { columnId: persistentSortColumnId, direction: persistentSortDirection } = persistent ?? {};
|
|
8846
8857
|
const column2 = columns.find((c) => c.id === columnId);
|
|
8847
8858
|
const invert = direction === "DESC";
|
|
@@ -20402,18 +20413,18 @@ function initializeOptions(optionsOrLoad, getOptionValue, getOptionLabel, unsetL
|
|
|
20402
20413
|
} else {
|
|
20403
20414
|
const {
|
|
20404
20415
|
options,
|
|
20405
|
-
current
|
|
20416
|
+
current: current2
|
|
20406
20417
|
} = optionsOrLoad;
|
|
20407
20418
|
if (options) {
|
|
20408
20419
|
userOptions.push(...options);
|
|
20409
20420
|
}
|
|
20410
|
-
if (
|
|
20411
|
-
const toCheck = Array.isArray(
|
|
20412
|
-
toCheck.forEach((
|
|
20413
|
-
const value = getOptionValue(
|
|
20421
|
+
if (current2) {
|
|
20422
|
+
const toCheck = Array.isArray(current2) ? current2 : [current2];
|
|
20423
|
+
toCheck.forEach((current3) => {
|
|
20424
|
+
const value = getOptionValue(current3);
|
|
20414
20425
|
const found = options && options.find((o) => getOptionValue(o) === value);
|
|
20415
20426
|
if (!found) {
|
|
20416
|
-
userOptions.push(
|
|
20427
|
+
userOptions.push(current3);
|
|
20417
20428
|
}
|
|
20418
20429
|
});
|
|
20419
20430
|
}
|
|
@@ -30026,7 +30037,7 @@ function SideNavLayoutContent(props) {
|
|
|
30026
30037
|
const collapsed = navState === "collapse";
|
|
30027
30038
|
const showRail = navState !== "hidden" && !showMobileSubNav;
|
|
30028
30039
|
const railOffsetPx = !showRail ? 0 : !bp.mdAndUp || collapsed ? railCollapsedWidthPx : railWidthPx;
|
|
30029
|
-
const navTop =
|
|
30040
|
+
const navTop = belowNavbarOffset();
|
|
30030
30041
|
const railViewportHeight = `calc(var(${beamLayoutViewportHeightVar}, 100vh) - var(${beamEnvironmentBannerLayoutHeightVar}, 0px) - var(${beamNavbarLayoutHeightVar}, 0px))`;
|
|
30031
30042
|
const rail = showRail && /* @__PURE__ */ (0, import_jsx_runtime236.jsxs)("div", { ...(0, import_runtime153.trussProps)({
|
|
30032
30043
|
...{
|
|
@@ -30348,14 +30359,14 @@ function useActiveJumpLink(sectionIds) {
|
|
|
30348
30359
|
const first = ids.map((id) => document.getElementById(id)).find((el) => el !== null);
|
|
30349
30360
|
if (!first) return;
|
|
30350
30361
|
const headerOffset = stickyNavAndHeaderOffsetPx(first);
|
|
30351
|
-
let
|
|
30362
|
+
let current2 = ids[0];
|
|
30352
30363
|
for (const id of ids) {
|
|
30353
30364
|
const el = document.getElementById(id);
|
|
30354
30365
|
if (el && el.getBoundingClientRect().top - headerOffset <= activationLeadPx) {
|
|
30355
|
-
|
|
30366
|
+
current2 = id;
|
|
30356
30367
|
}
|
|
30357
30368
|
}
|
|
30358
|
-
setActiveId(
|
|
30369
|
+
setActiveId(current2);
|
|
30359
30370
|
};
|
|
30360
30371
|
update();
|
|
30361
30372
|
window.addEventListener("scroll", update, { passive: true });
|
|
@@ -30442,12 +30453,66 @@ function FormSectionLayout(props) {
|
|
|
30442
30453
|
return /* @__PURE__ */ (0, import_jsx_runtime242.jsx)(DocumentScrollOverlayRightPaneLayout, { paneWidth: rightPane.width, children: body });
|
|
30443
30454
|
}
|
|
30444
30455
|
|
|
30456
|
+
// src/layouts/PageBanner/usePageBanner.tsx
|
|
30457
|
+
var import_react163 = require("react");
|
|
30458
|
+
|
|
30459
|
+
// src/layouts/PageBanner/pageBannerStore.ts
|
|
30460
|
+
var current;
|
|
30461
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
30462
|
+
var pageBannerStore = {
|
|
30463
|
+
subscribe: (listener) => {
|
|
30464
|
+
listeners.add(listener);
|
|
30465
|
+
return () => {
|
|
30466
|
+
listeners.delete(listener);
|
|
30467
|
+
};
|
|
30468
|
+
},
|
|
30469
|
+
getSnapshot: () => current?.banner
|
|
30470
|
+
};
|
|
30471
|
+
function notify() {
|
|
30472
|
+
listeners.forEach((listener) => listener());
|
|
30473
|
+
}
|
|
30474
|
+
function hasPageBannerSubscriber() {
|
|
30475
|
+
return listeners.size > 0;
|
|
30476
|
+
}
|
|
30477
|
+
function setPageBanner(id, banner) {
|
|
30478
|
+
const previous = current;
|
|
30479
|
+
if (previous?.id === id && previous.banner === banner) return;
|
|
30480
|
+
if (previous && previous.id !== id && process.env.NODE_ENV !== "production") {
|
|
30481
|
+
console.warn("[usePageBanner] A second page banner replaced the first; a layout shows one at a time.");
|
|
30482
|
+
}
|
|
30483
|
+
current = { id, banner };
|
|
30484
|
+
notify();
|
|
30485
|
+
}
|
|
30486
|
+
function clearPageBanner(id) {
|
|
30487
|
+
if (current?.id !== id) return;
|
|
30488
|
+
current = void 0;
|
|
30489
|
+
notify();
|
|
30490
|
+
}
|
|
30491
|
+
|
|
30492
|
+
// src/layouts/PageBanner/usePageBanner.tsx
|
|
30493
|
+
function usePageBanner(banner) {
|
|
30494
|
+
const id = (0, import_react163.useId)();
|
|
30495
|
+
(0, import_react163.useLayoutEffect)(() => {
|
|
30496
|
+
if (!banner) return;
|
|
30497
|
+
setPageBanner(id, banner);
|
|
30498
|
+
return () => clearPageBanner(id);
|
|
30499
|
+
}, [id, banner]);
|
|
30500
|
+
(0, import_react163.useEffect)(() => {
|
|
30501
|
+
if (!banner || hasPageBannerSubscriber() || process.env.NODE_ENV === "production") return;
|
|
30502
|
+
console.warn("[usePageBanner] No page layout above this component; the banner will not render.");
|
|
30503
|
+
}, [banner]);
|
|
30504
|
+
}
|
|
30505
|
+
function PageBanner(props) {
|
|
30506
|
+
usePageBanner(props);
|
|
30507
|
+
return null;
|
|
30508
|
+
}
|
|
30509
|
+
|
|
30445
30510
|
// src/layouts/NavbarLayout/NavbarLayout.tsx
|
|
30446
|
-
var
|
|
30511
|
+
var import_react168 = require("react");
|
|
30447
30512
|
var import_runtime160 = require("@homebound/truss/runtime");
|
|
30448
30513
|
|
|
30449
30514
|
// src/layouts/useAutoHideOnScroll.ts
|
|
30450
|
-
var
|
|
30515
|
+
var import_react164 = require("react");
|
|
30451
30516
|
var THRESHOLD = 80;
|
|
30452
30517
|
function getInitialAutoHideState() {
|
|
30453
30518
|
if (typeof window === "undefined" || window.scrollY <= 0) {
|
|
@@ -30457,13 +30522,13 @@ function getInitialAutoHideState() {
|
|
|
30457
30522
|
}
|
|
30458
30523
|
function useAutoHideOnScroll(spacerRef, enabled, getTopOffset) {
|
|
30459
30524
|
const initial = getInitialAutoHideState();
|
|
30460
|
-
const [state, setState] = (0,
|
|
30461
|
-
const stateRef = (0,
|
|
30462
|
-
const getTopOffsetRef = (0,
|
|
30525
|
+
const [state, setState] = (0, import_react164.useState)(initial);
|
|
30526
|
+
const stateRef = (0, import_react164.useRef)(initial);
|
|
30527
|
+
const getTopOffsetRef = (0, import_react164.useRef)(getTopOffset);
|
|
30463
30528
|
getTopOffsetRef.current = getTopOffset;
|
|
30464
|
-
const lastScrollY = (0,
|
|
30465
|
-
const lastScrollHeight = (0,
|
|
30466
|
-
(0,
|
|
30529
|
+
const lastScrollY = (0, import_react164.useRef)(Number.POSITIVE_INFINITY);
|
|
30530
|
+
const lastScrollHeight = (0, import_react164.useRef)(0);
|
|
30531
|
+
(0, import_react164.useLayoutEffect)(() => {
|
|
30467
30532
|
if (!enabled) {
|
|
30468
30533
|
stateRef.current = "resting";
|
|
30469
30534
|
lastScrollY.current = Number.POSITIVE_INFINITY;
|
|
@@ -30529,25 +30594,25 @@ function useAutoHideOnScroll(spacerRef, enabled, getTopOffset) {
|
|
|
30529
30594
|
|
|
30530
30595
|
// src/layouts/useMeasuredHeight.ts
|
|
30531
30596
|
var import_utils50 = require("@react-aria/utils");
|
|
30532
|
-
var
|
|
30597
|
+
var import_react165 = require("react");
|
|
30533
30598
|
function useMeasuredHeight(ref, enabled) {
|
|
30534
|
-
const [height, setHeight] = (0,
|
|
30535
|
-
const syncElementHeight = (0,
|
|
30599
|
+
const [height, setHeight] = (0, import_react165.useState)(0);
|
|
30600
|
+
const syncElementHeight = (0, import_react165.useCallback)(() => {
|
|
30536
30601
|
const el = ref.current;
|
|
30537
30602
|
const next = el ? Math.round(el.getBoundingClientRect().height) : 0;
|
|
30538
30603
|
setHeight((prev) => prev === next ? prev : next);
|
|
30539
30604
|
}, [ref]);
|
|
30540
30605
|
(0, import_utils50.useResizeObserver)({ ref, onResize: syncElementHeight });
|
|
30541
|
-
(0,
|
|
30606
|
+
(0, import_react165.useLayoutEffect)(() => {
|
|
30542
30607
|
syncElementHeight();
|
|
30543
30608
|
}, [enabled, syncElementHeight]);
|
|
30544
30609
|
return height;
|
|
30545
30610
|
}
|
|
30546
30611
|
|
|
30547
30612
|
// src/layouts/useTransitionAfterPaint.ts
|
|
30548
|
-
var
|
|
30613
|
+
var import_react166 = require("react");
|
|
30549
30614
|
function useTransitionAfterPaint(ref, transition) {
|
|
30550
|
-
(0,
|
|
30615
|
+
(0, import_react166.useLayoutEffect)(() => {
|
|
30551
30616
|
const el = ref.current;
|
|
30552
30617
|
if (!el) return;
|
|
30553
30618
|
const id = requestAnimationFrame(() => {
|
|
@@ -30558,14 +30623,14 @@ function useTransitionAfterPaint(ref, transition) {
|
|
|
30558
30623
|
}
|
|
30559
30624
|
|
|
30560
30625
|
// src/layouts/NavbarLayout/NavbarLayoutHeightContext.tsx
|
|
30561
|
-
var
|
|
30626
|
+
var import_react167 = require("react");
|
|
30562
30627
|
var import_jsx_runtime243 = require("react/jsx-runtime");
|
|
30563
|
-
var NavbarLayoutHeightContext = (0,
|
|
30628
|
+
var NavbarLayoutHeightContext = (0, import_react167.createContext)(0);
|
|
30564
30629
|
function NavbarLayoutHeightProvider({ value, children }) {
|
|
30565
30630
|
return /* @__PURE__ */ (0, import_jsx_runtime243.jsx)(NavbarLayoutHeightContext.Provider, { value, children });
|
|
30566
30631
|
}
|
|
30567
30632
|
function useNavbarLayoutHeight() {
|
|
30568
|
-
return (0,
|
|
30633
|
+
return (0, import_react167.useContext)(NavbarLayoutHeightContext);
|
|
30569
30634
|
}
|
|
30570
30635
|
|
|
30571
30636
|
// src/layouts/NavbarLayout/NavbarLayout.tsx
|
|
@@ -30579,8 +30644,8 @@ function NavbarLayout(props) {
|
|
|
30579
30644
|
children
|
|
30580
30645
|
} = props;
|
|
30581
30646
|
const tid = useTestIds(props, "navbarLayout");
|
|
30582
|
-
const navMetricsRef = (0,
|
|
30583
|
-
const spacerRef = (0,
|
|
30647
|
+
const navMetricsRef = (0, import_react168.useRef)(null);
|
|
30648
|
+
const spacerRef = (0, import_react168.useRef)(null);
|
|
30584
30649
|
const navHeight = useMeasuredHeight(navMetricsRef, true);
|
|
30585
30650
|
const {
|
|
30586
30651
|
state: autoHideState
|
|
@@ -30606,7 +30671,7 @@ function NavbarLayout(props) {
|
|
|
30606
30671
|
const innerStyle = {
|
|
30607
30672
|
top: autoHideState === "hidden" ? `calc(${bannerTop} - ${navHeight}px)` : bannerTop
|
|
30608
30673
|
};
|
|
30609
|
-
const navbarEl = (0,
|
|
30674
|
+
const navbarEl = (0, import_react168.useMemo)(() => /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(Navbar, { ...navbar }), [navbar]);
|
|
30610
30675
|
return /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(NavbarLayoutHeightProvider, { value: navbarOffsetPx, children: /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(MobileSubNavProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime244.jsxs)("div", { ...(0, import_runtime160.mergeProps)(void 0, cssVars, {
|
|
30611
30676
|
display: "df",
|
|
30612
30677
|
flexDirection: "fdc",
|
|
@@ -30624,14 +30689,14 @@ function NavbarLayout(props) {
|
|
|
30624
30689
|
}
|
|
30625
30690
|
|
|
30626
30691
|
// src/layouts/PageHeaderLayout/PageHeaderLayout.tsx
|
|
30627
|
-
var
|
|
30692
|
+
var import_react171 = require("react");
|
|
30628
30693
|
|
|
30629
30694
|
// src/hooks/useDocumentTitle.tsx
|
|
30630
|
-
var
|
|
30695
|
+
var import_react169 = require("react");
|
|
30631
30696
|
function useDocumentTitle(...titleSegments) {
|
|
30632
30697
|
const config = useDocumentTitleConfig();
|
|
30633
30698
|
const pageTitle = joinDocumentTitleSegments(...titleSegments);
|
|
30634
|
-
(0,
|
|
30699
|
+
(0, import_react169.useLayoutEffect)(() => {
|
|
30635
30700
|
if (!config || !pageTitle || typeof document === "undefined") {
|
|
30636
30701
|
return;
|
|
30637
30702
|
}
|
|
@@ -30736,94 +30801,162 @@ function PageHeader2(props) {
|
|
|
30736
30801
|
] }) });
|
|
30737
30802
|
}
|
|
30738
30803
|
|
|
30804
|
+
// src/layouts/PageBanner/internal/usePageBannerSlot.tsx
|
|
30805
|
+
var import_react170 = require("react");
|
|
30806
|
+
|
|
30807
|
+
// src/layouts/PageBanner/internal/PageBannerSlot.tsx
|
|
30808
|
+
var import_runtime163 = require("@homebound/truss/runtime");
|
|
30809
|
+
var import_jsx_runtime247 = require("react/jsx-runtime");
|
|
30810
|
+
var __maybeInc34 = (inc) => {
|
|
30811
|
+
return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
|
|
30812
|
+
};
|
|
30813
|
+
function PageBannerSlot(props) {
|
|
30814
|
+
const {
|
|
30815
|
+
banner,
|
|
30816
|
+
metricsRef
|
|
30817
|
+
} = props;
|
|
30818
|
+
const tid = useTestIds(props, "pageBannerSlot");
|
|
30819
|
+
return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)("div", { ref: metricsRef, ...(0, import_runtime163.trussProps)({
|
|
30820
|
+
flexShrink: "fs0",
|
|
30821
|
+
width: ["w_var", {
|
|
30822
|
+
"--width": (0, import_runtime163.maybeCssVar)(__maybeInc34(`min(100%, ${documentScrollChromeWidth()})`))
|
|
30823
|
+
}],
|
|
30824
|
+
transition: "transitionTop",
|
|
30825
|
+
position: "sticky",
|
|
30826
|
+
top: ["top_var", {
|
|
30827
|
+
"--top": (0, import_runtime163.maybeCssVar)(__maybeInc34(pageBannerOffset()))
|
|
30828
|
+
}],
|
|
30829
|
+
left: ["left_var", {
|
|
30830
|
+
"--left": (0, import_runtime163.maybeCssVar)(__maybeInc34(documentScrollChromeLeft()))
|
|
30831
|
+
}],
|
|
30832
|
+
zIndex: ["z_var", {
|
|
30833
|
+
"--zIndex": (0, import_runtime163.maybeCssVar)(zIndices.pageBanner)
|
|
30834
|
+
}]
|
|
30835
|
+
}), ...tid.bannerSticky, children: /* @__PURE__ */ (0, import_jsx_runtime247.jsx)(StatusBanner, { ...banner, sticky: true, ...tid.banner }) });
|
|
30836
|
+
}
|
|
30837
|
+
|
|
30838
|
+
// src/layouts/PageBanner/internal/usePageBannerSlot.tsx
|
|
30839
|
+
var import_jsx_runtime248 = require("react/jsx-runtime");
|
|
30840
|
+
function usePageBannerSlot(bannerProp, testIds) {
|
|
30841
|
+
const publishedBanner = usePublishedPageBanner();
|
|
30842
|
+
const banner = publishedBanner ?? bannerProp;
|
|
30843
|
+
const metricsRef = (0, import_react170.useRef)(null);
|
|
30844
|
+
const height = useMeasuredHeight(metricsRef, banner != null);
|
|
30845
|
+
const slot = banner ? /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(PageBannerSlot, { ...testIds, banner, metricsRef }) : null;
|
|
30846
|
+
return { slot, height };
|
|
30847
|
+
}
|
|
30848
|
+
function usePublishedPageBanner() {
|
|
30849
|
+
const [banner, setBanner] = (0, import_react170.useState)(pageBannerStore.getSnapshot);
|
|
30850
|
+
const sync = (0, import_react170.useCallback)(() => {
|
|
30851
|
+
const next = pageBannerStore.getSnapshot();
|
|
30852
|
+
setBanner((prev) => prev === next ? prev : next);
|
|
30853
|
+
}, []);
|
|
30854
|
+
(0, import_react170.useLayoutEffect)(() => {
|
|
30855
|
+
sync();
|
|
30856
|
+
return pageBannerStore.subscribe(sync);
|
|
30857
|
+
}, [sync]);
|
|
30858
|
+
return banner;
|
|
30859
|
+
}
|
|
30860
|
+
|
|
30739
30861
|
// src/layouts/useBannerAndNavbarHeight.ts
|
|
30740
30862
|
function useBannerAndNavbarHeight() {
|
|
30741
30863
|
return useEnvironmentBannerLayoutHeight() + useNavbarLayoutHeight();
|
|
30742
30864
|
}
|
|
30743
30865
|
|
|
30744
30866
|
// src/layouts/PageHeaderLayout/PageHeaderLayout.tsx
|
|
30745
|
-
var
|
|
30746
|
-
var
|
|
30747
|
-
var
|
|
30867
|
+
var import_runtime164 = require("@homebound/truss/runtime");
|
|
30868
|
+
var import_jsx_runtime249 = require("react/jsx-runtime");
|
|
30869
|
+
var __maybeInc35 = (inc) => {
|
|
30748
30870
|
return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
|
|
30749
30871
|
};
|
|
30750
30872
|
function PageHeaderLayout(props) {
|
|
30751
30873
|
const {
|
|
30752
30874
|
pageHeader,
|
|
30875
|
+
banner: bannerProp,
|
|
30753
30876
|
children
|
|
30754
30877
|
} = props;
|
|
30755
30878
|
const tid = useTestIds(props, "pageHeaderLayout");
|
|
30879
|
+
const {
|
|
30880
|
+
slot: bannerSlot,
|
|
30881
|
+
height: bannerHeight
|
|
30882
|
+
} = usePageBannerSlot(bannerProp, tid);
|
|
30756
30883
|
const bannerAndNavbarHeight = useBannerAndNavbarHeight();
|
|
30757
|
-
const bannerAndNavbarHeightRef = (0,
|
|
30884
|
+
const bannerAndNavbarHeightRef = (0, import_react171.useRef)(bannerAndNavbarHeight);
|
|
30758
30885
|
bannerAndNavbarHeightRef.current = bannerAndNavbarHeight;
|
|
30759
|
-
const getBannerAndNavbarHeight = (0,
|
|
30760
|
-
const headerMetricsRef = (0,
|
|
30761
|
-
const spacerRef = (0,
|
|
30886
|
+
const getBannerAndNavbarHeight = (0, import_react171.useCallback)(() => bannerAndNavbarHeightRef.current, []);
|
|
30887
|
+
const headerMetricsRef = (0, import_react171.useRef)(null);
|
|
30888
|
+
const spacerRef = (0, import_react171.useRef)(null);
|
|
30762
30889
|
const headerHeight = useMeasuredHeight(headerMetricsRef, true);
|
|
30763
30890
|
const {
|
|
30764
30891
|
state: autoHideState
|
|
30765
30892
|
} = useAutoHideOnScroll(spacerRef, true, getBannerAndNavbarHeight);
|
|
30766
30893
|
const headerOccupiesPosition = autoHideState !== "hidden";
|
|
30767
|
-
const cssVars =
|
|
30768
|
-
|
|
30769
|
-
|
|
30894
|
+
const cssVars = {};
|
|
30895
|
+
if (headerHeight > 0 && headerOccupiesPosition) {
|
|
30896
|
+
cssVars[beamPageHeaderLayoutHeightVar] = `${headerHeight}px`;
|
|
30897
|
+
}
|
|
30898
|
+
if (bannerHeight > 0) {
|
|
30899
|
+
cssVars[beamPageBannerHeightVar] = `${bannerHeight}px`;
|
|
30900
|
+
}
|
|
30901
|
+
const style = Object.keys(cssVars).length > 0 ? cssVars : void 0;
|
|
30770
30902
|
const headerLeft = documentScrollChromeLeft();
|
|
30771
30903
|
const headerWidth = documentScrollChromeWidth();
|
|
30772
|
-
const outerTop =
|
|
30904
|
+
const outerTop = belowNavbarOffset();
|
|
30773
30905
|
const innerCss = {
|
|
30774
30906
|
position: "fixed",
|
|
30775
30907
|
left: ["left_var", {
|
|
30776
|
-
"--left": (0,
|
|
30908
|
+
"--left": (0, import_runtime164.maybeCssVar)(__maybeInc35(headerLeft))
|
|
30777
30909
|
}],
|
|
30778
30910
|
width: ["w_var", {
|
|
30779
|
-
"--width": (0,
|
|
30911
|
+
"--width": (0, import_runtime164.maybeCssVar)(__maybeInc35(headerWidth))
|
|
30780
30912
|
}],
|
|
30781
30913
|
zIndex: ["z_var", {
|
|
30782
|
-
"--zIndex": (0,
|
|
30914
|
+
"--zIndex": (0, import_runtime164.maybeCssVar)(zIndices.pageStickyHeader)
|
|
30783
30915
|
}]
|
|
30784
30916
|
};
|
|
30785
30917
|
useTransitionAfterPaint(headerMetricsRef, "all 200ms cubic-bezier(0.4, 0, 0.2, 1)");
|
|
30786
30918
|
const innerStyle = {
|
|
30787
30919
|
top: autoHideState === "hidden" ? `calc(${outerTop} - ${headerHeight}px)` : outerTop
|
|
30788
30920
|
};
|
|
30789
|
-
const pageHeaderEl = (0,
|
|
30790
|
-
return /* @__PURE__ */ (0,
|
|
30921
|
+
const pageHeaderEl = (0, import_react171.useMemo)(() => /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(PageHeader2, { ...pageHeader }), [pageHeader]);
|
|
30922
|
+
return /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(DocumentScrollLayoutProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime249.jsxs)("div", { ...(0, import_runtime164.mergeProps)(void 0, style, {
|
|
30791
30923
|
display: "df",
|
|
30792
30924
|
flexDirection: "fdc",
|
|
30793
30925
|
width: "w100"
|
|
30794
30926
|
}), ...tid, children: [
|
|
30795
|
-
/* @__PURE__ */ (0,
|
|
30927
|
+
/* @__PURE__ */ (0, import_jsx_runtime249.jsx)("div", { ref: spacerRef, ...(0, import_runtime164.mergeProps)(void 0, {
|
|
30796
30928
|
height: headerHeight
|
|
30797
30929
|
}, {
|
|
30798
30930
|
flexShrink: "fs0",
|
|
30799
30931
|
width: "w100"
|
|
30800
|
-
}), children: /* @__PURE__ */ (0,
|
|
30801
|
-
|
|
30932
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)("div", { ref: headerMetricsRef, ...(0, import_runtime164.mergeProps)(void 0, innerStyle, innerCss), ...tid.pageHeader, children: pageHeaderEl }) }),
|
|
30933
|
+
bannerSlot,
|
|
30934
|
+
/* @__PURE__ */ (0, import_jsx_runtime249.jsx)("div", { className: "df fdc fg1 mh0 w100 n_has_data_self_top_spaced_first_child_pt3", ...tid.body, children })
|
|
30802
30935
|
] }) });
|
|
30803
30936
|
}
|
|
30804
30937
|
|
|
30805
30938
|
// src/layouts/Workflow/WorkflowPageLayout.tsx
|
|
30806
|
-
var
|
|
30939
|
+
var import_react174 = require("react");
|
|
30807
30940
|
|
|
30808
30941
|
// src/components/Headers/WorkflowHeader.tsx
|
|
30809
|
-
var
|
|
30942
|
+
var import_jsx_runtime250 = require("react/jsx-runtime");
|
|
30810
30943
|
function WorkflowHeader(props) {
|
|
30811
30944
|
const { stepperTabs, ...otherProps } = props;
|
|
30812
30945
|
const tid = useTestIds(otherProps, "header");
|
|
30813
|
-
return /* @__PURE__ */ (0,
|
|
30946
|
+
return /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
|
|
30814
30947
|
BaseHeader,
|
|
30815
30948
|
{
|
|
30816
30949
|
...otherProps,
|
|
30817
|
-
bottomSlot: stepperTabs ? /* @__PURE__ */ (0,
|
|
30950
|
+
bottomSlot: stepperTabs ? /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(StepperTabs, { ...stepperTabs, ...tid.stepperTabs }) : void 0
|
|
30818
30951
|
}
|
|
30819
30952
|
);
|
|
30820
30953
|
}
|
|
30821
30954
|
|
|
30822
30955
|
// src/layouts/Workflow/RightPaneTriggers.tsx
|
|
30823
|
-
var
|
|
30824
|
-
var
|
|
30825
|
-
var
|
|
30826
|
-
var
|
|
30956
|
+
var import_react172 = require("react");
|
|
30957
|
+
var import_runtime165 = require("@homebound/truss/runtime");
|
|
30958
|
+
var import_jsx_runtime251 = require("react/jsx-runtime");
|
|
30959
|
+
var __maybeInc36 = (inc) => {
|
|
30827
30960
|
return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
|
|
30828
30961
|
};
|
|
30829
30962
|
function WorkflowPageRightPaneTriggers(props) {
|
|
@@ -30841,14 +30974,14 @@ function WorkflowPageRightPaneTriggers(props) {
|
|
|
30841
30974
|
} = useRightPaneActions();
|
|
30842
30975
|
const tid = useTestIds(props, "rightPaneTriggers");
|
|
30843
30976
|
const pageTriggerInsetPx = 24;
|
|
30844
|
-
const onClick = (0,
|
|
30977
|
+
const onClick = (0, import_react172.useCallback)((trigger) => {
|
|
30845
30978
|
openRightPane({
|
|
30846
|
-
content: /* @__PURE__ */ (0,
|
|
30979
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(RightPanePanel, { title: trigger.label, children: trigger.content })
|
|
30847
30980
|
});
|
|
30848
30981
|
}, [openRightPane]);
|
|
30849
|
-
return /* @__PURE__ */ (0,
|
|
30982
|
+
return /* @__PURE__ */ (0, import_jsx_runtime251.jsx)("div", { ...tid, "aria-hidden": isRightPaneOpen, ...isRightPaneOpen ? {
|
|
30850
30983
|
inert: true
|
|
30851
|
-
} : {}, ...(0,
|
|
30984
|
+
} : {}, ...(0, import_runtime165.trussProps)({
|
|
30852
30985
|
...{
|
|
30853
30986
|
display: "df",
|
|
30854
30987
|
alignItems: "aic",
|
|
@@ -30862,40 +30995,40 @@ function WorkflowPageRightPaneTriggers(props) {
|
|
|
30862
30995
|
...!isMobile && {
|
|
30863
30996
|
position: "fixed",
|
|
30864
30997
|
top: ["top_var", {
|
|
30865
|
-
"--top": (0,
|
|
30998
|
+
"--top": (0, import_runtime165.maybeCssVar)(__maybeInc36(stickyNavAndHeaderOffset(pageTriggerInsetPx)))
|
|
30866
30999
|
}],
|
|
30867
31000
|
right: ["right_var", {
|
|
30868
31001
|
"--right": `${pageTriggerInsetPx}px`
|
|
30869
31002
|
}],
|
|
30870
31003
|
zIndex: ["z_var", {
|
|
30871
|
-
"--zIndex": (0,
|
|
31004
|
+
"--zIndex": (0, import_runtime165.maybeCssVar)(zIndices.rightPaneTriggers)
|
|
30872
31005
|
}]
|
|
30873
31006
|
},
|
|
30874
31007
|
// Desktop only — on `sm` the full-bleed pane covers the header slot.
|
|
30875
31008
|
...!isMobile && (isRightPaneOpen ? {
|
|
30876
31009
|
transform: ["transform_var", {
|
|
30877
|
-
"--transform": (0,
|
|
31010
|
+
"--transform": (0, import_runtime165.maybeCssVar)(`translateX(calc(100% + ${pageTriggerInsetPx}px))`)
|
|
30878
31011
|
}],
|
|
30879
31012
|
pointerEvents: "pen"
|
|
30880
31013
|
} : {
|
|
30881
31014
|
transform: "tf_translateX_0"
|
|
30882
31015
|
})
|
|
30883
|
-
}), children: triggers.map((trigger) => /* @__PURE__ */ (0,
|
|
31016
|
+
}), children: triggers.map((trigger) => /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(IconButton, { icon: trigger.icon, label: trigger.label, variant: "circle", compact: isMobile, onClick: () => onClick(trigger), ...tid[trigger.icon] }, trigger.label)) });
|
|
30884
31017
|
}
|
|
30885
31018
|
|
|
30886
31019
|
// src/layouts/Workflow/useUnsavedChangesGuard.tsx
|
|
30887
|
-
var
|
|
31020
|
+
var import_react173 = require("react");
|
|
30888
31021
|
var import_react_router_dom9 = require("react-router-dom");
|
|
30889
|
-
var
|
|
31022
|
+
var import_jsx_runtime252 = require("react/jsx-runtime");
|
|
30890
31023
|
function useUnsavedChangesGuard(options) {
|
|
30891
31024
|
const { isDirty, allowNavigation, onCancel } = options;
|
|
30892
31025
|
const { openModal } = useModal();
|
|
30893
|
-
const isDirtyRef = (0,
|
|
31026
|
+
const isDirtyRef = (0, import_react173.useRef)(isDirty);
|
|
30894
31027
|
isDirtyRef.current = isDirty;
|
|
30895
|
-
const allowNavigationRef = (0,
|
|
31028
|
+
const allowNavigationRef = (0, import_react173.useRef)(allowNavigation);
|
|
30896
31029
|
allowNavigationRef.current = allowNavigation;
|
|
30897
|
-
const allowCancelNavigationRef = (0,
|
|
30898
|
-
(0,
|
|
31030
|
+
const allowCancelNavigationRef = (0, import_react173.useRef)(false);
|
|
31031
|
+
(0, import_react173.useEffect)(() => {
|
|
30899
31032
|
const onBeforeUnload = (e) => {
|
|
30900
31033
|
if (isDirtyRef.current?.()) {
|
|
30901
31034
|
e.preventDefault();
|
|
@@ -30922,7 +31055,7 @@ function useUnsavedChangesGuard(options) {
|
|
|
30922
31055
|
}
|
|
30923
31056
|
openModal({
|
|
30924
31057
|
allowClosing: false,
|
|
30925
|
-
content: /* @__PURE__ */ (0,
|
|
31058
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(ConfirmCloseModal, { onClose: () => confirmCancel(e) })
|
|
30926
31059
|
});
|
|
30927
31060
|
};
|
|
30928
31061
|
const navigationBlocker = blocker.state === "blocked" ? { proceed: () => blocker.proceed?.(), cancelNavigation: () => blocker.reset?.() } : void 0;
|
|
@@ -30931,10 +31064,10 @@ function useUnsavedChangesGuard(options) {
|
|
|
30931
31064
|
function UnsavedChangesNavigationModal(props) {
|
|
30932
31065
|
const { proceed, cancelNavigation } = props;
|
|
30933
31066
|
const { openModal, closeModal } = useModal();
|
|
30934
|
-
(0,
|
|
31067
|
+
(0, import_react173.useEffect)(() => {
|
|
30935
31068
|
openModal({
|
|
30936
31069
|
allowClosing: false,
|
|
30937
|
-
content: /* @__PURE__ */ (0,
|
|
31070
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(ConfirmCloseModal, { title: "Leave page?", onClose: proceed, onContinue: cancelNavigation })
|
|
30938
31071
|
});
|
|
30939
31072
|
return () => closeModal();
|
|
30940
31073
|
}, []);
|
|
@@ -30942,7 +31075,7 @@ function UnsavedChangesNavigationModal(props) {
|
|
|
30942
31075
|
}
|
|
30943
31076
|
|
|
30944
31077
|
// src/layouts/Workflow/WorkflowActions.tsx
|
|
30945
|
-
var
|
|
31078
|
+
var import_jsx_runtime253 = require("react/jsx-runtime");
|
|
30946
31079
|
function WorkflowActions(props) {
|
|
30947
31080
|
const {
|
|
30948
31081
|
onCancel,
|
|
@@ -30960,12 +31093,12 @@ function WorkflowActions(props) {
|
|
|
30960
31093
|
sm: isMobile
|
|
30961
31094
|
} = useBreakpoint();
|
|
30962
31095
|
const primaryVariant = aiMode ? "ai" : "primary";
|
|
30963
|
-
return /* @__PURE__ */ (0,
|
|
30964
|
-
/* @__PURE__ */ (0,
|
|
30965
|
-
/* @__PURE__ */ (0,
|
|
30966
|
-
/* @__PURE__ */ (0,
|
|
30967
|
-
onSaveAndExit && /* @__PURE__ */ (0,
|
|
30968
|
-
isLastStep ? /* @__PURE__ */ (0,
|
|
31096
|
+
return /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)("div", { className: "df aic jcsb sm_w100", children: [
|
|
31097
|
+
/* @__PURE__ */ (0, import_jsx_runtime253.jsx)("div", { className: "df aic", children: !isFirstStep && isMobile && onBack && /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(IconButton, { icon: "arrowBack", label: "Back", onClick: onBack }) }),
|
|
31098
|
+
/* @__PURE__ */ (0, import_jsx_runtime253.jsxs)("div", { className: "df aic g_1", children: [
|
|
31099
|
+
/* @__PURE__ */ (0, import_jsx_runtime253.jsx)(Button, { label: "Cancel", variant: "quaternary", onClick: onCancel }),
|
|
31100
|
+
onSaveAndExit && /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(Button, { label: "Save & Exit", variant: "secondary", onClick: onSaveAndExit }),
|
|
31101
|
+
isLastStep ? /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(Button, { label: completeLabel, variant: primaryVariant, onClick: onComplete, disabled: primaryDisabled }) : /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(Button, { label: "Continue", variant: primaryVariant, onClick: async () => {
|
|
30969
31102
|
await onContinue?.();
|
|
30970
31103
|
}, disabled: primaryDisabled })
|
|
30971
31104
|
] })
|
|
@@ -30973,9 +31106,9 @@ function WorkflowActions(props) {
|
|
|
30973
31106
|
}
|
|
30974
31107
|
|
|
30975
31108
|
// src/layouts/Workflow/WorkflowPageLayout.tsx
|
|
30976
|
-
var
|
|
30977
|
-
var
|
|
30978
|
-
var
|
|
31109
|
+
var import_runtime166 = require("@homebound/truss/runtime");
|
|
31110
|
+
var import_jsx_runtime254 = require("react/jsx-runtime");
|
|
31111
|
+
var __maybeInc37 = (inc) => {
|
|
30979
31112
|
return typeof inc === "string" ? inc : `calc(var(--t-spacing) * ${inc})`;
|
|
30980
31113
|
};
|
|
30981
31114
|
var mobileFooterHeightPx = 80;
|
|
@@ -30991,9 +31124,14 @@ function WorkflowPageLayout(props) {
|
|
|
30991
31124
|
breadcrumbs,
|
|
30992
31125
|
onCancel,
|
|
30993
31126
|
rightPaneTriggers,
|
|
31127
|
+
banner: bannerProp,
|
|
30994
31128
|
...actionProps
|
|
30995
31129
|
} = props;
|
|
30996
31130
|
const tid = useTestIds(props, "workflowPageLayout");
|
|
31131
|
+
const {
|
|
31132
|
+
slot: bannerSlot,
|
|
31133
|
+
height: bannerHeight
|
|
31134
|
+
} = usePageBannerSlot(bannerProp, tid);
|
|
30997
31135
|
const {
|
|
30998
31136
|
sm: isMobile
|
|
30999
31137
|
} = useBreakpoint();
|
|
@@ -31005,18 +31143,23 @@ function WorkflowPageLayout(props) {
|
|
|
31005
31143
|
allowNavigation,
|
|
31006
31144
|
onCancel
|
|
31007
31145
|
});
|
|
31008
|
-
const actions = /* @__PURE__ */ (0,
|
|
31146
|
+
const actions = /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(WorkflowActions, { ...actionProps, aiMode, onCancel: onCancelClick });
|
|
31009
31147
|
const triggers = rightPaneTriggers ?? [];
|
|
31010
|
-
const pageTriggers = triggers.length > 0 ? /* @__PURE__ */ (0,
|
|
31011
|
-
const headerMetricsRef = (0,
|
|
31148
|
+
const pageTriggers = triggers.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(WorkflowPageRightPaneTriggers, { triggers }) : void 0;
|
|
31149
|
+
const headerMetricsRef = (0, import_react174.useRef)(null);
|
|
31012
31150
|
const headerHeight = useMeasuredHeight(headerMetricsRef, true);
|
|
31013
31151
|
const headerWidth = documentScrollChromeWidth();
|
|
31014
|
-
const outerTop =
|
|
31015
|
-
const cssVars =
|
|
31016
|
-
|
|
31017
|
-
|
|
31152
|
+
const outerTop = belowNavbarOffset();
|
|
31153
|
+
const cssVars = {};
|
|
31154
|
+
if (headerHeight > 0) {
|
|
31155
|
+
cssVars[beamPageHeaderLayoutHeightVar] = `${headerHeight}px`;
|
|
31156
|
+
}
|
|
31157
|
+
if (bannerHeight > 0) {
|
|
31158
|
+
cssVars[beamPageBannerHeightVar] = `${bannerHeight}px`;
|
|
31159
|
+
}
|
|
31160
|
+
const style = Object.keys(cssVars).length > 0 ? cssVars : void 0;
|
|
31018
31161
|
const showFooter = isMobile;
|
|
31019
|
-
(0,
|
|
31162
|
+
(0, import_react174.useLayoutEffect)(() => {
|
|
31020
31163
|
const root = document.documentElement;
|
|
31021
31164
|
const previous = root.style.getPropertyValue(beamWorkflowLayoutFooterHeightVar);
|
|
31022
31165
|
root.style.setProperty(beamWorkflowLayoutFooterHeightVar, showFooter ? `${mobileFooterHeightPx}px` : "0px");
|
|
@@ -31028,32 +31171,33 @@ function WorkflowPageLayout(props) {
|
|
|
31028
31171
|
}
|
|
31029
31172
|
};
|
|
31030
31173
|
}, [showFooter]);
|
|
31031
|
-
return /* @__PURE__ */ (0,
|
|
31032
|
-
/* @__PURE__ */ (0,
|
|
31174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime254.jsxs)(DocumentScrollLayoutProvider, { children: [
|
|
31175
|
+
/* @__PURE__ */ (0, import_jsx_runtime254.jsxs)("div", { ...(0, import_runtime166.mergeProps)(void 0, style, {
|
|
31033
31176
|
display: "df",
|
|
31034
31177
|
flexDirection: "fdc",
|
|
31035
31178
|
width: "w100"
|
|
31036
31179
|
}), ...tid, children: [
|
|
31037
|
-
/* @__PURE__ */ (0,
|
|
31180
|
+
/* @__PURE__ */ (0, import_jsx_runtime254.jsx)("div", { ...(0, import_runtime166.mergeProps)(void 0, {
|
|
31038
31181
|
height: headerHeight
|
|
31039
31182
|
}, {
|
|
31040
31183
|
flexShrink: "fs0",
|
|
31041
31184
|
width: "w100"
|
|
31042
|
-
}), children: /* @__PURE__ */ (0,
|
|
31185
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime254.jsx)("div", { ref: headerMetricsRef, ...(0, import_runtime166.trussProps)({
|
|
31043
31186
|
position: "fixed",
|
|
31044
31187
|
left: "l_0",
|
|
31045
31188
|
width: ["w_var", {
|
|
31046
|
-
"--width": (0,
|
|
31189
|
+
"--width": (0, import_runtime166.maybeCssVar)(__maybeInc37(headerWidth))
|
|
31047
31190
|
}],
|
|
31048
31191
|
zIndex: ["z_var", {
|
|
31049
|
-
"--zIndex": (0,
|
|
31192
|
+
"--zIndex": (0, import_runtime166.maybeCssVar)(zIndices.pageStickyHeader)
|
|
31050
31193
|
}],
|
|
31051
31194
|
top: ["top_var", {
|
|
31052
|
-
"--top": (0,
|
|
31195
|
+
"--top": (0, import_runtime166.maybeCssVar)(__maybeInc37(outerTop))
|
|
31053
31196
|
}],
|
|
31054
31197
|
transition: "transitionAll"
|
|
31055
|
-
}), ...tid.header, children: /* @__PURE__ */ (0,
|
|
31056
|
-
|
|
31198
|
+
}), ...tid.header, children: /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(WorkflowHeader, { title, documentTitleSuffix, breadcrumbs, rightSlot: isMobile ? pageTriggers : actions, stepperTabs }) }) }),
|
|
31199
|
+
bannerSlot,
|
|
31200
|
+
/* @__PURE__ */ (0, import_jsx_runtime254.jsx)("div", { ...(0, import_runtime166.trussProps)({
|
|
31057
31201
|
...{
|
|
31058
31202
|
display: "df",
|
|
31059
31203
|
flexDirection: "fdc",
|
|
@@ -31065,29 +31209,29 @@ function WorkflowPageLayout(props) {
|
|
|
31065
31209
|
...aiMode && {
|
|
31066
31210
|
backgroundImage: "aiBackground",
|
|
31067
31211
|
minHeight: ["mh_var", {
|
|
31068
|
-
"--minHeight": (0,
|
|
31212
|
+
"--minHeight": (0, import_runtime166.maybeCssVar)(documentScrollBodyMinHeight())
|
|
31069
31213
|
}]
|
|
31070
31214
|
}
|
|
31071
|
-
}), ...tid.body, children: triggers.length > 0 ? /* @__PURE__ */ (0,
|
|
31215
|
+
}), ...tid.body, children: triggers.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(DocumentScrollOverlayRightPaneLayout, { children }) : children }),
|
|
31072
31216
|
!isMobile && pageTriggers,
|
|
31073
|
-
showFooter && /* @__PURE__ */ (0,
|
|
31217
|
+
showFooter && /* @__PURE__ */ (0, import_jsx_runtime254.jsx)("div", { ...(0, import_runtime166.trussProps)({
|
|
31074
31218
|
flexShrink: "fs0",
|
|
31075
31219
|
width: "w100",
|
|
31076
31220
|
height: ["h_var", {
|
|
31077
31221
|
"--height": `${mobileFooterHeightPx}px`
|
|
31078
31222
|
}]
|
|
31079
|
-
}), children: /* @__PURE__ */ (0,
|
|
31223
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime254.jsx)("div", { ...(0, import_runtime166.trussProps)({
|
|
31080
31224
|
...{
|
|
31081
31225
|
position: "fixed",
|
|
31082
31226
|
bottom: "bot_0",
|
|
31083
31227
|
width: ["w_var", {
|
|
31084
|
-
"--width": (0,
|
|
31228
|
+
"--width": (0, import_runtime166.maybeCssVar)(__maybeInc37(headerWidth))
|
|
31085
31229
|
}],
|
|
31086
31230
|
height: ["h_var", {
|
|
31087
31231
|
"--height": `${mobileFooterHeightPx}px`
|
|
31088
31232
|
}],
|
|
31089
31233
|
zIndex: ["z_var", {
|
|
31090
|
-
"--zIndex": (0,
|
|
31234
|
+
"--zIndex": (0, import_runtime166.maybeCssVar)(zIndices.pageStickyFooter)
|
|
31091
31235
|
}],
|
|
31092
31236
|
display: "df",
|
|
31093
31237
|
alignItems: "aic",
|
|
@@ -31105,12 +31249,12 @@ function WorkflowPageLayout(props) {
|
|
|
31105
31249
|
...pageContentPaddingX
|
|
31106
31250
|
}), ...tid.footer, children: actions }) })
|
|
31107
31251
|
] }),
|
|
31108
|
-
navigationBlocker && /* @__PURE__ */ (0,
|
|
31252
|
+
navigationBlocker && /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(UnsavedChangesNavigationModal, { ...navigationBlocker })
|
|
31109
31253
|
] });
|
|
31110
31254
|
}
|
|
31111
31255
|
|
|
31112
31256
|
// src/layouts/Workflow/FocusedFormLayout.tsx
|
|
31113
|
-
var
|
|
31257
|
+
var import_jsx_runtime255 = require("react/jsx-runtime");
|
|
31114
31258
|
function FocusedFormLayout(props) {
|
|
31115
31259
|
const {
|
|
31116
31260
|
onCancel,
|
|
@@ -31122,15 +31266,17 @@ function FocusedFormLayout(props) {
|
|
|
31122
31266
|
allowNavigation,
|
|
31123
31267
|
aiMode,
|
|
31124
31268
|
rightPaneTriggers,
|
|
31269
|
+
banner,
|
|
31125
31270
|
children,
|
|
31126
31271
|
...headerProps
|
|
31127
31272
|
} = props;
|
|
31128
31273
|
const tid = useTestIds(props, "focusedFormLayout");
|
|
31129
|
-
return /* @__PURE__ */ (0,
|
|
31274
|
+
return /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(
|
|
31130
31275
|
WorkflowPageLayout,
|
|
31131
31276
|
{
|
|
31132
31277
|
...tid,
|
|
31133
31278
|
...headerProps,
|
|
31279
|
+
banner,
|
|
31134
31280
|
aiMode,
|
|
31135
31281
|
isDirty,
|
|
31136
31282
|
allowNavigation,
|
|
@@ -31146,8 +31292,8 @@ function FocusedFormLayout(props) {
|
|
|
31146
31292
|
}
|
|
31147
31293
|
|
|
31148
31294
|
// src/layouts/Workflow/StepperLayout.tsx
|
|
31149
|
-
var
|
|
31150
|
-
var
|
|
31295
|
+
var import_react175 = require("react");
|
|
31296
|
+
var import_jsx_runtime256 = require("react/jsx-runtime");
|
|
31151
31297
|
function StepperLayout(props) {
|
|
31152
31298
|
const {
|
|
31153
31299
|
steps,
|
|
@@ -31159,10 +31305,11 @@ function StepperLayout(props) {
|
|
|
31159
31305
|
isDirty,
|
|
31160
31306
|
allowNavigation,
|
|
31161
31307
|
aiMode,
|
|
31308
|
+
banner,
|
|
31162
31309
|
...headerProps
|
|
31163
31310
|
} = props;
|
|
31164
31311
|
const stepTabs = steps.map((step) => ({ ...step, value: defaultTestId(step.label) }));
|
|
31165
|
-
const [currentStep, setCurrentStep] = (0,
|
|
31312
|
+
const [currentStep, setCurrentStep] = (0, import_react175.useState)(() => getInitialStep(stepTabs, defaultStep));
|
|
31166
31313
|
const tid = useTestIds(props, "stepperLayout");
|
|
31167
31314
|
const { closeRightPane } = useRightPaneActions();
|
|
31168
31315
|
const currentIndex = hasStep(stepTabs, currentStep) ? stepTabs.findIndex((step) => step.value === currentStep) : 0;
|
|
@@ -31174,11 +31321,12 @@ function StepperLayout(props) {
|
|
|
31174
31321
|
closeRightPane();
|
|
31175
31322
|
setCurrentStep(value);
|
|
31176
31323
|
}
|
|
31177
|
-
return /* @__PURE__ */ (0,
|
|
31324
|
+
return /* @__PURE__ */ (0, import_jsx_runtime256.jsx)(
|
|
31178
31325
|
WorkflowPageLayout,
|
|
31179
31326
|
{
|
|
31180
31327
|
...tid,
|
|
31181
31328
|
...headerProps,
|
|
31329
|
+
banner,
|
|
31182
31330
|
aiMode,
|
|
31183
31331
|
stepperTabs: { steps: stepTabs, currentStep, onChange: goToStep },
|
|
31184
31332
|
isDirty,
|
|
@@ -31217,7 +31365,7 @@ function getInitialStep(steps, defaultStep) {
|
|
|
31217
31365
|
|
|
31218
31366
|
// src/forms/BoundChipSelectField.tsx
|
|
31219
31367
|
var import_mobx_react23 = require("mobx-react");
|
|
31220
|
-
var
|
|
31368
|
+
var import_jsx_runtime257 = require("react/jsx-runtime");
|
|
31221
31369
|
function BoundChipSelectField(props) {
|
|
31222
31370
|
const {
|
|
31223
31371
|
field,
|
|
@@ -31233,7 +31381,7 @@ function BoundChipSelectField(props) {
|
|
|
31233
31381
|
...others
|
|
31234
31382
|
} = props;
|
|
31235
31383
|
const testId = useTestIds(props, field.key);
|
|
31236
|
-
return /* @__PURE__ */ (0,
|
|
31384
|
+
return /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(import_mobx_react23.Observer, { children: () => /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(
|
|
31237
31385
|
ChipSelectField,
|
|
31238
31386
|
{
|
|
31239
31387
|
label,
|
|
@@ -31263,12 +31411,12 @@ function BoundChipSelectField(props) {
|
|
|
31263
31411
|
}
|
|
31264
31412
|
|
|
31265
31413
|
// src/forms/BoundSelectAndTextField.tsx
|
|
31266
|
-
var
|
|
31414
|
+
var import_jsx_runtime258 = require("react/jsx-runtime");
|
|
31267
31415
|
function BoundSelectAndTextField(props) {
|
|
31268
31416
|
const { selectFieldProps, textFieldProps, compact = true } = props;
|
|
31269
31417
|
const tid = useTestIds(props);
|
|
31270
|
-
return /* @__PURE__ */ (0,
|
|
31271
|
-
/* @__PURE__ */ (0,
|
|
31418
|
+
return /* @__PURE__ */ (0, import_jsx_runtime258.jsxs)(CompoundField, { children: [
|
|
31419
|
+
/* @__PURE__ */ (0, import_jsx_runtime258.jsx)(
|
|
31272
31420
|
BoundSelectField,
|
|
31273
31421
|
{
|
|
31274
31422
|
...tid[defaultTestId(selectFieldProps.label ?? selectFieldProps.field.key)],
|
|
@@ -31277,7 +31425,7 @@ function BoundSelectAndTextField(props) {
|
|
|
31277
31425
|
compact
|
|
31278
31426
|
}
|
|
31279
31427
|
),
|
|
31280
|
-
/* @__PURE__ */ (0,
|
|
31428
|
+
/* @__PURE__ */ (0, import_jsx_runtime258.jsx)(
|
|
31281
31429
|
BoundTextField,
|
|
31282
31430
|
{
|
|
31283
31431
|
...tid[defaultTestId(textFieldProps.label ?? textFieldProps.field.key)],
|
|
@@ -31289,8 +31437,8 @@ function BoundSelectAndTextField(props) {
|
|
|
31289
31437
|
}
|
|
31290
31438
|
|
|
31291
31439
|
// src/forms/FormHeading.tsx
|
|
31292
|
-
var
|
|
31293
|
-
var
|
|
31440
|
+
var import_runtime167 = require("@homebound/truss/runtime");
|
|
31441
|
+
var import_jsx_runtime259 = (
|
|
31294
31442
|
// Add space before the heading, but only if it's not first.
|
|
31295
31443
|
require("react/jsx-runtime")
|
|
31296
31444
|
);
|
|
@@ -31301,7 +31449,7 @@ function FormHeading(props) {
|
|
|
31301
31449
|
isFirst = false,
|
|
31302
31450
|
...others
|
|
31303
31451
|
} = props;
|
|
31304
|
-
return /* @__PURE__ */ (0,
|
|
31452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime259.jsx)("h3", { ...(0, import_runtime167.trussProps)({
|
|
31305
31453
|
...{
|
|
31306
31454
|
fontWeight: "fw4",
|
|
31307
31455
|
fontSize: "fz_16px",
|
|
@@ -31317,8 +31465,8 @@ FormHeading.isFormHeading = true;
|
|
|
31317
31465
|
|
|
31318
31466
|
// src/forms/StaticField.tsx
|
|
31319
31467
|
var import_utils51 = require("@react-aria/utils");
|
|
31320
|
-
var
|
|
31321
|
-
var
|
|
31468
|
+
var import_runtime168 = require("@homebound/truss/runtime");
|
|
31469
|
+
var import_jsx_runtime260 = require("react/jsx-runtime");
|
|
31322
31470
|
function StaticField(props) {
|
|
31323
31471
|
const {
|
|
31324
31472
|
fieldProps
|
|
@@ -31331,14 +31479,14 @@ function StaticField(props) {
|
|
|
31331
31479
|
} = props;
|
|
31332
31480
|
const tid = useTestIds(props, typeof label === "string" ? defaultTestId(label) : "staticField");
|
|
31333
31481
|
const id = (0, import_utils51.useId)();
|
|
31334
|
-
return /* @__PURE__ */ (0,
|
|
31482
|
+
return /* @__PURE__ */ (0, import_jsx_runtime260.jsxs)("div", { ...(0, import_runtime168.trussProps)({
|
|
31335
31483
|
...labelStyle === "left" ? {
|
|
31336
31484
|
display: "df",
|
|
31337
31485
|
justifyContent: "jcsb",
|
|
31338
31486
|
maxWidth: "maxw100"
|
|
31339
31487
|
} : {}
|
|
31340
31488
|
}), ...tid.container, children: [
|
|
31341
|
-
/* @__PURE__ */ (0,
|
|
31489
|
+
/* @__PURE__ */ (0, import_jsx_runtime260.jsx)("label", { ...(0, import_runtime168.trussProps)({
|
|
31342
31490
|
display: "db",
|
|
31343
31491
|
fontWeight: "fw4",
|
|
31344
31492
|
fontSize: "fz_14px",
|
|
@@ -31348,7 +31496,7 @@ function StaticField(props) {
|
|
|
31348
31496
|
}],
|
|
31349
31497
|
marginBottom: "mb_4px"
|
|
31350
31498
|
}), htmlFor: id, ...tid.label, children: label }),
|
|
31351
|
-
/* @__PURE__ */ (0,
|
|
31499
|
+
/* @__PURE__ */ (0, import_jsx_runtime260.jsx)("div", { id, ...(0, import_runtime168.trussProps)({
|
|
31352
31500
|
fontWeight: "fw4",
|
|
31353
31501
|
fontSize: "fz_14px",
|
|
31354
31502
|
lineHeight: "lh_20px",
|
|
@@ -31365,9 +31513,9 @@ function StaticField(props) {
|
|
|
31365
31513
|
}
|
|
31366
31514
|
|
|
31367
31515
|
// src/hooks/useFilter.ts
|
|
31368
|
-
var
|
|
31516
|
+
var import_react176 = require("react");
|
|
31369
31517
|
function useFilter4({ filterDefs }) {
|
|
31370
|
-
const [filter, setFilter] = (0,
|
|
31518
|
+
const [filter, setFilter] = (0, import_react176.useState)(
|
|
31371
31519
|
Object.fromEntries(
|
|
31372
31520
|
safeEntries(filterDefs).filter(([key, def]) => def(key).defaultValue !== void 0).map(([key, def]) => [key, def(key).defaultValue])
|
|
31373
31521
|
)
|
|
@@ -31376,10 +31524,10 @@ function useFilter4({ filterDefs }) {
|
|
|
31376
31524
|
}
|
|
31377
31525
|
|
|
31378
31526
|
// src/inputs/Autocomplete.tsx
|
|
31379
|
-
var
|
|
31527
|
+
var import_react177 = require("react");
|
|
31380
31528
|
var import_react_aria69 = require("react-aria");
|
|
31381
31529
|
var import_react_stately18 = require("react-stately");
|
|
31382
|
-
var
|
|
31530
|
+
var import_jsx_runtime261 = require("react/jsx-runtime");
|
|
31383
31531
|
function Autocomplete(props) {
|
|
31384
31532
|
const {
|
|
31385
31533
|
onSelect,
|
|
@@ -31396,8 +31544,8 @@ function Autocomplete(props) {
|
|
|
31396
31544
|
} = props;
|
|
31397
31545
|
const { effectiveValue, proposalProps } = useAiProposal(value, proposedValue);
|
|
31398
31546
|
const disabledOptionsWithReasons = Object.fromEntries(disabledOptions?.map(disabledOptionToKeyedTuple) ?? []);
|
|
31399
|
-
const comboBoxChildren = (0,
|
|
31400
|
-
(item) => /* @__PURE__ */ (0,
|
|
31547
|
+
const comboBoxChildren = (0, import_react177.useCallback)(
|
|
31548
|
+
(item) => /* @__PURE__ */ (0, import_jsx_runtime261.jsx)(import_react_stately18.Item, { textValue: getOptionLabel(item), children: getOptionMenuLabel ? getOptionMenuLabel(item) : getOptionLabel(item) }, getOptionValue(item)),
|
|
31401
31549
|
[getOptionValue, getOptionLabel, getOptionMenuLabel]
|
|
31402
31550
|
);
|
|
31403
31551
|
const comboBoxProps = {
|
|
@@ -31421,10 +31569,10 @@ function Autocomplete(props) {
|
|
|
31421
31569
|
...others
|
|
31422
31570
|
};
|
|
31423
31571
|
const state = (0, import_react_stately18.useComboBoxState)(comboBoxProps);
|
|
31424
|
-
const inputWrapRef = (0,
|
|
31425
|
-
const inputRef = (0,
|
|
31426
|
-
const listBoxRef = (0,
|
|
31427
|
-
const popoverRef = (0,
|
|
31572
|
+
const inputWrapRef = (0, import_react177.useRef)(null);
|
|
31573
|
+
const inputRef = (0, import_react177.useRef)(null);
|
|
31574
|
+
const listBoxRef = (0, import_react177.useRef)(null);
|
|
31575
|
+
const popoverRef = (0, import_react177.useRef)(null);
|
|
31428
31576
|
const { inputProps, listBoxProps, labelProps } = (0, import_react_aria69.useComboBox)(
|
|
31429
31577
|
{
|
|
31430
31578
|
...comboBoxProps,
|
|
@@ -31450,8 +31598,8 @@ function Autocomplete(props) {
|
|
|
31450
31598
|
// Ensures the menu never gets too small.
|
|
31451
31599
|
minWidth: 200
|
|
31452
31600
|
};
|
|
31453
|
-
return /* @__PURE__ */ (0,
|
|
31454
|
-
/* @__PURE__ */ (0,
|
|
31601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime261.jsxs)(import_jsx_runtime261.Fragment, { children: [
|
|
31602
|
+
/* @__PURE__ */ (0, import_jsx_runtime261.jsx)(
|
|
31455
31603
|
TextFieldBase,
|
|
31456
31604
|
{
|
|
31457
31605
|
inputRef,
|
|
@@ -31461,11 +31609,11 @@ function Autocomplete(props) {
|
|
|
31461
31609
|
onChange: onInputChange,
|
|
31462
31610
|
...proposalProps,
|
|
31463
31611
|
clearable: true,
|
|
31464
|
-
startAdornment: "startAdornment" in props ? props.startAdornment : /* @__PURE__ */ (0,
|
|
31612
|
+
startAdornment: "startAdornment" in props ? props.startAdornment : /* @__PURE__ */ (0, import_jsx_runtime261.jsx)(Icon, { icon: "search" }),
|
|
31465
31613
|
...others
|
|
31466
31614
|
}
|
|
31467
31615
|
),
|
|
31468
|
-
state.isOpen && /* @__PURE__ */ (0,
|
|
31616
|
+
state.isOpen && /* @__PURE__ */ (0, import_jsx_runtime261.jsx)(
|
|
31469
31617
|
Popover,
|
|
31470
31618
|
{
|
|
31471
31619
|
triggerRef: inputRef,
|
|
@@ -31474,7 +31622,7 @@ function Autocomplete(props) {
|
|
|
31474
31622
|
onClose: () => state.close(),
|
|
31475
31623
|
isOpen: state.isOpen,
|
|
31476
31624
|
minWidth: 200,
|
|
31477
|
-
children: /* @__PURE__ */ (0,
|
|
31625
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime261.jsx)(
|
|
31478
31626
|
ListBox,
|
|
31479
31627
|
{
|
|
31480
31628
|
...listBoxProps,
|
|
@@ -31492,11 +31640,11 @@ function Autocomplete(props) {
|
|
|
31492
31640
|
}
|
|
31493
31641
|
|
|
31494
31642
|
// src/inputs/ToggleButton.tsx
|
|
31495
|
-
var
|
|
31643
|
+
var import_react178 = require("react");
|
|
31496
31644
|
var import_react_aria70 = require("react-aria");
|
|
31497
31645
|
var import_react_stately19 = require("react-stately");
|
|
31498
|
-
var
|
|
31499
|
-
var
|
|
31646
|
+
var import_runtime169 = require("@homebound/truss/runtime");
|
|
31647
|
+
var import_jsx_runtime262 = require("react/jsx-runtime");
|
|
31500
31648
|
function ToggleButton(props) {
|
|
31501
31649
|
const {
|
|
31502
31650
|
selected: isSelected = false,
|
|
@@ -31507,7 +31655,7 @@ function ToggleButton(props) {
|
|
|
31507
31655
|
__storyState,
|
|
31508
31656
|
...otherProps
|
|
31509
31657
|
} = props;
|
|
31510
|
-
const [asyncInProgress, setAsyncInProgress] = (0,
|
|
31658
|
+
const [asyncInProgress, setAsyncInProgress] = (0, import_react178.useState)(false);
|
|
31511
31659
|
const isDisabled = !!disabled || asyncInProgress;
|
|
31512
31660
|
const ariaProps = {
|
|
31513
31661
|
"aria-label": label,
|
|
@@ -31526,8 +31674,8 @@ function ToggleButton(props) {
|
|
|
31526
31674
|
return result;
|
|
31527
31675
|
}
|
|
31528
31676
|
});
|
|
31529
|
-
const labelRef = (0,
|
|
31530
|
-
const ref = (0,
|
|
31677
|
+
const labelRef = (0, import_react178.useRef)(null);
|
|
31678
|
+
const ref = (0, import_react178.useRef)(null);
|
|
31531
31679
|
const tid = useTestIds(otherProps, label);
|
|
31532
31680
|
const {
|
|
31533
31681
|
isPressed: isPressedFromEvents,
|
|
@@ -31560,7 +31708,7 @@ function ToggleButton(props) {
|
|
|
31560
31708
|
...focusProps,
|
|
31561
31709
|
...hoverProps,
|
|
31562
31710
|
...pressProps,
|
|
31563
|
-
...(0,
|
|
31711
|
+
...(0, import_runtime169.trussProps)({
|
|
31564
31712
|
// Gray500 off-state has no semantic match — keep palette (OnSurfaceMuted is Gray700).
|
|
31565
31713
|
...{
|
|
31566
31714
|
borderRadius: "br4",
|
|
@@ -31600,10 +31748,10 @@ function ToggleButton(props) {
|
|
|
31600
31748
|
return maybeTooltip({
|
|
31601
31749
|
title: tooltip,
|
|
31602
31750
|
placement: "top",
|
|
31603
|
-
children: /* @__PURE__ */ (0,
|
|
31604
|
-
icon && /* @__PURE__ */ (0,
|
|
31751
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime262.jsxs)("label", { ...labelAttrs, children: [
|
|
31752
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime262.jsx)(Icon, { icon }),
|
|
31605
31753
|
label,
|
|
31606
|
-
/* @__PURE__ */ (0,
|
|
31754
|
+
/* @__PURE__ */ (0, import_jsx_runtime262.jsx)(import_react_aria70.VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime262.jsx)("input", { ref, ...inputProps, ...tid.value }) })
|
|
31607
31755
|
] })
|
|
31608
31756
|
});
|
|
31609
31757
|
}
|
|
@@ -31755,6 +31903,7 @@ var togglePressStyles = {
|
|
|
31755
31903
|
NavbarLayout,
|
|
31756
31904
|
NumberField,
|
|
31757
31905
|
OpenModal,
|
|
31906
|
+
PageBanner,
|
|
31758
31907
|
PageHeaderLayout,
|
|
31759
31908
|
Pagination,
|
|
31760
31909
|
Palette,
|
|
@@ -31825,19 +31974,20 @@ var togglePressStyles = {
|
|
|
31825
31974
|
actionColumn,
|
|
31826
31975
|
applyRowFn,
|
|
31827
31976
|
assignDefaultColumnIds,
|
|
31828
|
-
bannerAndNavbarChromeTop,
|
|
31829
31977
|
beamEnvironmentBannerLayoutHeightVar,
|
|
31830
31978
|
beamFloatingRightOffsetVar,
|
|
31831
31979
|
beamLayoutContentPaddingXVar,
|
|
31832
31980
|
beamLayoutViewportHeightVar,
|
|
31833
31981
|
beamLayoutViewportWidthVar,
|
|
31834
31982
|
beamNavbarLayoutHeightVar,
|
|
31983
|
+
beamPageBannerHeightVar,
|
|
31835
31984
|
beamPageHeaderLayoutHeightVar,
|
|
31836
31985
|
beamRightPaneContentMinVar,
|
|
31837
31986
|
beamRightPaneWidthVar,
|
|
31838
31987
|
beamSideNavLayoutWidthVar,
|
|
31839
31988
|
beamTableActionsHeightVar,
|
|
31840
31989
|
beamWorkflowLayoutFooterHeightVar,
|
|
31990
|
+
belowNavbarOffset,
|
|
31841
31991
|
booleanFilter,
|
|
31842
31992
|
boundCheckboxField,
|
|
31843
31993
|
boundCheckboxGroupField,
|
|
@@ -31951,6 +32101,7 @@ var togglePressStyles = {
|
|
|
31951
32101
|
nonKindGridColumnKeys,
|
|
31952
32102
|
numberRangeFilter,
|
|
31953
32103
|
numericColumn,
|
|
32104
|
+
pageBannerOffset,
|
|
31954
32105
|
pageContentGutterPx,
|
|
31955
32106
|
pageContentPaddingX,
|
|
31956
32107
|
parseDate,
|
|
@@ -32014,6 +32165,7 @@ var togglePressStyles = {
|
|
|
32014
32165
|
useHasSideNavLayoutProvider,
|
|
32015
32166
|
useHover,
|
|
32016
32167
|
useModal,
|
|
32168
|
+
usePageBanner,
|
|
32017
32169
|
usePersistedFilter,
|
|
32018
32170
|
useQueryState,
|
|
32019
32171
|
useResponsiveGrid,
|