@simplybusiness/mobius 10.4.2 → 10.4.4
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 +17 -0
- package/dist/cjs/components/AddressLookup/AddressLookup.js +39 -36
- package/dist/cjs/components/AddressLookup/AddressLookup.js.map +3 -3
- package/dist/cjs/components/AddressLookup/index.js +39 -36
- package/dist/cjs/components/AddressLookup/index.js.map +3 -3
- package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js +3 -7
- package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js.map +2 -2
- package/dist/cjs/components/Breadcrumbs/index.js +3 -7
- package/dist/cjs/components/Breadcrumbs/index.js.map +2 -2
- package/dist/cjs/components/Combobox/Combobox.js +35 -32
- package/dist/cjs/components/Combobox/Combobox.js.map +3 -3
- package/dist/cjs/components/Combobox/index.js +35 -32
- package/dist/cjs/components/Combobox/index.js.map +3 -3
- package/dist/cjs/components/DateField/DateField.js +11 -8
- package/dist/cjs/components/DateField/DateField.js.map +3 -3
- package/dist/cjs/components/DateField/index.js +11 -8
- package/dist/cjs/components/DateField/index.js.map +3 -3
- package/dist/cjs/components/DropdownMenu/Item.js +3 -6
- package/dist/cjs/components/DropdownMenu/Item.js.map +2 -2
- package/dist/cjs/components/DropdownMenu/index.js +3 -6
- package/dist/cjs/components/DropdownMenu/index.js.map +2 -2
- package/dist/cjs/components/MaskedField/MaskedField.js +11 -8
- package/dist/cjs/components/MaskedField/MaskedField.js.map +3 -3
- package/dist/cjs/components/MaskedField/index.js +13 -10
- package/dist/cjs/components/MaskedField/index.js.map +3 -3
- package/dist/cjs/components/NumberField/NumberField.js +10 -7
- package/dist/cjs/components/NumberField/NumberField.js.map +3 -3
- package/dist/cjs/components/NumberField/index.js +10 -7
- package/dist/cjs/components/NumberField/index.js.map +3 -3
- package/dist/cjs/components/PasswordField/PasswordField.js +9 -6
- package/dist/cjs/components/PasswordField/PasswordField.js.map +3 -3
- package/dist/cjs/components/PasswordField/index.js +9 -6
- package/dist/cjs/components/PasswordField/index.js.map +3 -3
- package/dist/cjs/components/Popover/Arrow.js +43 -0
- package/dist/cjs/components/Popover/Arrow.js.map +7 -0
- package/dist/cjs/components/Popover/Popover.js +258 -83
- package/dist/cjs/components/Popover/Popover.js.map +4 -4
- package/dist/cjs/components/Popover/index.js +258 -83
- package/dist/cjs/components/Popover/index.js.map +4 -4
- package/dist/cjs/components/Popover/useAutoUpdate.js +53 -0
- package/dist/cjs/components/Popover/useAutoUpdate.js.map +7 -0
- package/dist/cjs/components/Popover/useFloatingPosition.js +128 -0
- package/dist/cjs/components/Popover/useFloatingPosition.js.map +7 -0
- package/dist/cjs/components/Popover/useOutsidePress.js +46 -0
- package/dist/cjs/components/Popover/useOutsidePress.js.map +7 -0
- package/dist/cjs/components/TextField/TextField.js +6 -3
- package/dist/cjs/components/TextField/TextField.js.map +3 -3
- package/dist/cjs/components/TextField/adornmentWithClassName.js +3 -2
- package/dist/cjs/components/TextField/adornmentWithClassName.js.map +2 -2
- package/dist/cjs/components/TextField/index.js +6 -3
- package/dist/cjs/components/TextField/index.js.map +3 -3
- package/dist/cjs/components/index.js +550 -377
- package/dist/cjs/components/index.js.map +4 -4
- package/dist/cjs/index.js +550 -377
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/meta.json +490 -121
- package/dist/esm/chunk-26KZYRE6.js +108 -0
- package/dist/esm/chunk-26KZYRE6.js.map +7 -0
- package/dist/esm/{chunk-XNEQHHNV.js → chunk-5QMKPWB4.js} +2 -2
- package/dist/esm/{chunk-IQKS662C.js → chunk-6RDK3FM2.js} +5 -3
- package/dist/esm/chunk-6RDK3FM2.js.map +7 -0
- package/dist/esm/{chunk-4HI2AOBC.js → chunk-6TSYA7CJ.js} +4 -7
- package/dist/esm/{chunk-4HI2AOBC.js.map → chunk-6TSYA7CJ.js.map} +2 -2
- package/dist/esm/chunk-CAL44W47.js +23 -0
- package/dist/esm/chunk-CAL44W47.js.map +7 -0
- package/dist/esm/{chunk-PEEQNAIN.js → chunk-DMYDWKKA.js} +4 -4
- package/dist/esm/{chunk-IM3I5CZL.js → chunk-I6CFRGID.js} +4 -3
- package/dist/esm/{chunk-IM3I5CZL.js.map → chunk-I6CFRGID.js.map} +2 -2
- package/dist/esm/chunk-K3ECDAUR.js +33 -0
- package/dist/esm/chunk-K3ECDAUR.js.map +7 -0
- package/dist/esm/{chunk-GJBH37DH.js → chunk-KFHPI67N.js} +4 -4
- package/dist/esm/{chunk-OEDU5ZEA.js → chunk-KUH5AB5T.js} +2 -2
- package/dist/esm/{chunk-JFDDW3IV.js → chunk-P7TPNRU4.js} +4 -8
- package/dist/esm/{chunk-JFDDW3IV.js.map → chunk-P7TPNRU4.js.map} +2 -2
- package/dist/esm/{chunk-F5ELD54X.js → chunk-QNOBB5HT.js} +2 -2
- package/dist/esm/{chunk-GV36OVX7.js → chunk-R67C5QTH.js} +2 -2
- package/dist/esm/{chunk-S4CU4XRB.js → chunk-VGFVSRWH.js} +2 -2
- package/dist/esm/chunk-VZ3IWSK6.js +158 -0
- package/dist/esm/chunk-VZ3IWSK6.js.map +7 -0
- package/dist/esm/{chunk-X4CMSAET.js → chunk-WSQWMVA2.js} +2 -2
- package/dist/esm/chunk-WYJP7HVL.js +26 -0
- package/dist/esm/chunk-WYJP7HVL.js.map +7 -0
- package/dist/esm/{chunk-OAG5T7NC.js → chunk-XEP6X7JU.js} +5 -5
- package/dist/esm/chunk-XEP6X7JU.js.map +7 -0
- package/dist/esm/components/AddressLookup/AddressLookup.js +6 -6
- package/dist/esm/components/AddressLookup/index.js +8 -8
- package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/esm/components/Breadcrumbs/index.js +3 -3
- package/dist/esm/components/Checkbox/index.js +1 -1
- package/dist/esm/components/Combobox/Combobox.js +5 -5
- package/dist/esm/components/Combobox/index.js +5 -5
- package/dist/esm/components/DateField/DateField.js +3 -3
- package/dist/esm/components/DateField/index.js +3 -3
- package/dist/esm/components/Drawer/index.js +3 -3
- package/dist/esm/components/DropdownMenu/Item.js +1 -1
- package/dist/esm/components/DropdownMenu/index.js +2 -2
- package/dist/esm/components/MaskedField/MaskedField.js +2 -2
- package/dist/esm/components/MaskedField/index.js +3 -3
- package/dist/esm/components/Modal/index.js +3 -3
- package/dist/esm/components/NumberField/NumberField.js +3 -3
- package/dist/esm/components/NumberField/index.js +3 -3
- package/dist/esm/components/PasswordField/PasswordField.js +3 -3
- package/dist/esm/components/PasswordField/index.js +3 -3
- package/dist/esm/components/Popover/Arrow.js +8 -0
- package/dist/esm/components/Popover/Arrow.js.map +7 -0
- package/dist/esm/components/Popover/Popover.js +5 -1
- package/dist/esm/components/Popover/index.js +5 -1
- package/dist/esm/components/Popover/useAutoUpdate.js +8 -0
- package/dist/esm/components/Popover/useAutoUpdate.js.map +7 -0
- package/dist/esm/components/Popover/useFloatingPosition.js +8 -0
- package/dist/esm/components/Popover/useFloatingPosition.js.map +7 -0
- package/dist/esm/components/Popover/useOutsidePress.js +8 -0
- package/dist/esm/components/Popover/useOutsidePress.js.map +7 -0
- package/dist/esm/components/TextField/TextField.js +2 -2
- package/dist/esm/components/TextField/adornmentWithClassName.js +1 -1
- package/dist/esm/components/TextField/index.js +2 -2
- package/dist/esm/components/index.js +81 -77
- package/dist/esm/index.js +81 -77
- package/dist/esm/meta.json +3495 -3149
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/components/Accordion/Accordion.d.ts +4 -4
- package/dist/types/components/Accordion/AccordionList.d.ts +4 -4
- package/dist/types/components/AddressLookup/AddressLookup.d.ts +4 -4
- package/dist/types/components/AddressLookup/LoqateAddressLookupService.d.ts +1 -1
- package/dist/types/components/Alert/Alert.d.ts +4 -4
- package/dist/types/components/Box/Box.d.ts +4 -4
- package/dist/types/components/Breadcrumbs/BreadcrumbItem.d.ts +4 -4
- package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
- package/dist/types/components/Button/Button.d.ts +4 -4
- package/dist/types/components/Checkbox/Checkbox.d.ts +4 -4
- package/dist/types/components/Checkbox/CheckboxGroup.d.ts +4 -4
- package/dist/types/components/Combobox/Combobox.d.ts +2 -5
- package/dist/types/components/Combobox/useComboboxOptions.d.ts +1 -1
- package/dist/types/components/Container/Container.d.ts +4 -4
- package/dist/types/components/DateField/DateField.d.ts +4 -4
- package/dist/types/components/Divider/Divider.d.ts +4 -4
- package/dist/types/components/Drawer/Content.d.ts +4 -4
- package/dist/types/components/Drawer/Drawer.d.ts +4 -4
- package/dist/types/components/Drawer/Header.d.ts +4 -4
- package/dist/types/components/DropdownMenu/DropdownMenu.d.ts +4 -4
- package/dist/types/components/DropdownMenu/Item.d.ts +4 -4
- package/dist/types/components/ErrorMessage/ErrorMessage.d.ts +4 -4
- package/dist/types/components/ExpandableText/ExpandableText.d.ts +4 -4
- package/dist/types/components/Fieldset/Fieldset.d.ts +4 -4
- package/dist/types/components/Flex/Flex.d.ts +4 -4
- package/dist/types/components/Grid/Grid.d.ts +4 -4
- package/dist/types/components/Grid/Item.d.ts +4 -4
- package/dist/types/components/Image/Image.d.ts +4 -4
- package/dist/types/components/Label/Label.d.ts +4 -4
- package/dist/types/components/Link/Link.d.ts +4 -4
- package/dist/types/components/List/List.d.ts +4 -4
- package/dist/types/components/List/ListItem.d.ts +4 -4
- package/dist/types/components/LoadingIndicator/LoadingIndicator.d.ts +4 -4
- package/dist/types/components/Logo/Logo.d.ts +4 -4
- package/dist/types/components/MaskedField/MaskedField.d.ts +4 -4
- package/dist/types/components/Modal/Content.d.ts +4 -4
- package/dist/types/components/Modal/Header.d.ts +4 -4
- package/dist/types/components/Modal/Modal.d.ts +4 -4
- package/dist/types/components/NumberField/NumberField.d.ts +4 -4
- package/dist/types/components/Option/Option.d.ts +4 -4
- package/dist/types/components/PasswordField/PasswordField.d.ts +4 -4
- package/dist/types/components/Popover/Arrow.d.ts +9 -0
- package/dist/types/components/Popover/useAutoUpdate.d.ts +9 -0
- package/dist/types/components/Popover/useFloatingPosition.d.ts +17 -0
- package/dist/types/components/Popover/useOutsidePress.d.ts +9 -0
- package/dist/types/components/Progress/Progress.d.ts +4 -4
- package/dist/types/components/Radio/Radio.d.ts +4 -4
- package/dist/types/components/Radio/RadioGroup.d.ts +4 -4
- package/dist/types/components/SVG/SVG.d.ts +4 -4
- package/dist/types/components/Segment/Segment.d.ts +4 -4
- package/dist/types/components/Segment/SegmentGroup.d.ts +4 -4
- package/dist/types/components/Select/Select.d.ts +4 -4
- package/dist/types/components/Stack/Stack.d.ts +4 -4
- package/dist/types/components/Switch/Switch.d.ts +4 -4
- package/dist/types/components/Table/Body.d.ts +4 -4
- package/dist/types/components/Table/Cell.d.ts +4 -4
- package/dist/types/components/Table/Foot.d.ts +4 -4
- package/dist/types/components/Table/Head.d.ts +4 -4
- package/dist/types/components/Table/HeaderCell.d.ts +4 -4
- package/dist/types/components/Table/Row.d.ts +4 -4
- package/dist/types/components/Table/Table.d.ts +4 -4
- package/dist/types/components/Text/Text.d.ts +4 -4
- package/dist/types/components/TextArea/TextArea.d.ts +4 -4
- package/dist/types/components/TextAreaInput/TextAreaInput.d.ts +4 -4
- package/dist/types/components/TextField/TextField.d.ts +1 -4
- package/dist/types/components/TextField/adornmentWithClassName.d.ts +3 -1
- package/dist/types/components/TextOrHTML/TextOrHTML.d.ts +4 -4
- package/dist/types/components/Title/Title.d.ts +4 -4
- package/dist/types/components/Toast/ToastOptionsDoc.d.ts +4 -8
- package/dist/types/components/Toast/Toaster.d.ts +4 -4
- package/dist/types/hooks/useButton/useButton.d.ts +5 -5
- package/dist/types/hooks/useLabel/useLabel.d.ts +1 -1
- package/package.json +11 -11
- package/src/components/Box/Box.test.tsx +1 -2
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +3 -7
- package/src/components/Button/Button.stories.tsx +1 -1
- package/src/components/Combobox/Combobox.tsx +2 -4
- package/src/components/DropdownMenu/DropdownMenu.stories.tsx +1 -1
- package/src/components/DropdownMenu/Item.tsx +3 -6
- package/src/components/Grid/Grid.stories.tsx +1 -1
- package/src/components/Popover/Arrow.tsx +25 -0
- package/src/components/Popover/Popover.characterization.test.tsx +269 -0
- package/src/components/Popover/Popover.stories.tsx +40 -3
- package/src/components/Popover/Popover.test.tsx +6 -2
- package/src/components/Popover/Popover.tsx +87 -81
- package/src/components/Popover/useAutoUpdate.ts +43 -0
- package/src/components/Popover/useFloatingPosition.ts +177 -0
- package/src/components/Popover/useOutsidePress.ts +31 -0
- package/src/components/TextField/TextField.tsx +3 -1
- package/src/components/TextField/adornmentWithClassName.ts +4 -3
- package/src/hooks/useBreakpoint/useBreakpoint.test.tsx +4 -4
- package/src/styles.d.ts +2 -0
- package/dist/esm/chunk-IQKS662C.js.map +0 -7
- package/dist/esm/chunk-O5YEU5TG.js +0 -155
- package/dist/esm/chunk-O5YEU5TG.js.map +0 -7
- package/dist/esm/chunk-OAG5T7NC.js.map +0 -7
- /package/dist/esm/{chunk-XNEQHHNV.js.map → chunk-5QMKPWB4.js.map} +0 -0
- /package/dist/esm/{chunk-PEEQNAIN.js.map → chunk-DMYDWKKA.js.map} +0 -0
- /package/dist/esm/{chunk-GJBH37DH.js.map → chunk-KFHPI67N.js.map} +0 -0
- /package/dist/esm/{chunk-OEDU5ZEA.js.map → chunk-KUH5AB5T.js.map} +0 -0
- /package/dist/esm/{chunk-F5ELD54X.js.map → chunk-QNOBB5HT.js.map} +0 -0
- /package/dist/esm/{chunk-GV36OVX7.js.map → chunk-R67C5QTH.js.map} +0 -0
- /package/dist/esm/{chunk-S4CU4XRB.js.map → chunk-VGFVSRWH.js.map} +0 -0
- /package/dist/esm/{chunk-X4CMSAET.js.map → chunk-WSQWMVA2.js.map} +0 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Button
|
|
3
|
+
} from "./chunk-FD3JTY5L.js";
|
|
4
|
+
import {
|
|
5
|
+
useAutoUpdate
|
|
6
|
+
} from "./chunk-K3ECDAUR.js";
|
|
7
|
+
import {
|
|
8
|
+
useFloatingPosition
|
|
9
|
+
} from "./chunk-26KZYRE6.js";
|
|
10
|
+
import {
|
|
11
|
+
useOutsidePress
|
|
12
|
+
} from "./chunk-WYJP7HVL.js";
|
|
13
|
+
import {
|
|
14
|
+
Arrow
|
|
15
|
+
} from "./chunk-CAL44W47.js";
|
|
16
|
+
import {
|
|
17
|
+
Icon
|
|
18
|
+
} from "./chunk-TKIP5Q5H.js";
|
|
19
|
+
|
|
20
|
+
// src/components/Popover/Popover.tsx
|
|
21
|
+
import { cross } from "@simplybusiness/icons";
|
|
22
|
+
import classNames from "classnames/dedupe";
|
|
23
|
+
import { cloneElement, useCallback, useEffect, useRef, useState } from "react";
|
|
24
|
+
import { createPortal } from "react-dom";
|
|
25
|
+
import { useWindowEvent } from "@simplybusiness/mobius-hooks";
|
|
26
|
+
import "@simplybusiness/mobius/src/components/Popover/Popover.css";
|
|
27
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
28
|
+
var OFFSET_FROM_CONTENT_DEFAULT = 10;
|
|
29
|
+
var ARROW_WIDTH = 20;
|
|
30
|
+
var Popover = (props) => {
|
|
31
|
+
const { trigger, children, onOpen, onClose, className } = props;
|
|
32
|
+
const referenceRef = useRef(null);
|
|
33
|
+
const floatingRef = useRef(null);
|
|
34
|
+
const arrowRef = useRef(null);
|
|
35
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
36
|
+
const [portalTarget, setPortalTarget] = useState(null);
|
|
37
|
+
const isInsideDialog = portalTarget !== null && portalTarget.tagName === "DIALOG";
|
|
38
|
+
const { initialFloatingStyles, initialArrowStyles, update } = useFloatingPosition({
|
|
39
|
+
referenceRef,
|
|
40
|
+
floatingRef,
|
|
41
|
+
arrowRef,
|
|
42
|
+
isOpen,
|
|
43
|
+
offsetPx: OFFSET_FROM_CONTENT_DEFAULT,
|
|
44
|
+
arrowWidth: ARROW_WIDTH,
|
|
45
|
+
useFixedStrategy: isInsideDialog
|
|
46
|
+
});
|
|
47
|
+
useAutoUpdate({
|
|
48
|
+
referenceRef,
|
|
49
|
+
floatingRef,
|
|
50
|
+
onUpdate: update,
|
|
51
|
+
enabled: isOpen
|
|
52
|
+
});
|
|
53
|
+
useOutsidePress({
|
|
54
|
+
referenceRef,
|
|
55
|
+
floatingRef,
|
|
56
|
+
enabled: isOpen,
|
|
57
|
+
onOutsidePress: () => {
|
|
58
|
+
onClose?.();
|
|
59
|
+
setIsOpen(false);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const containerClasses = classNames(
|
|
63
|
+
"mobius",
|
|
64
|
+
"mobius-popover__container",
|
|
65
|
+
className
|
|
66
|
+
);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
const el = floatingRef.current;
|
|
69
|
+
if (!el) return;
|
|
70
|
+
const preventLabelActivation = (e) => {
|
|
71
|
+
const target = e.target;
|
|
72
|
+
if (!target.closest("a[href], input, select, textarea")) {
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
el.addEventListener("click", preventLabelActivation);
|
|
77
|
+
return () => el.removeEventListener("click", preventLabelActivation);
|
|
78
|
+
}, [isOpen]);
|
|
79
|
+
const toggleVisibility = () => {
|
|
80
|
+
if (isOpen) {
|
|
81
|
+
setIsOpen(false);
|
|
82
|
+
onClose?.();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const dialog = referenceRef.current?.closest("dialog");
|
|
86
|
+
setPortalTarget(dialog ?? document.body);
|
|
87
|
+
setIsOpen(true);
|
|
88
|
+
onOpen?.();
|
|
89
|
+
};
|
|
90
|
+
const setReferenceRef = useCallback((node) => {
|
|
91
|
+
referenceRef.current = node;
|
|
92
|
+
}, []);
|
|
93
|
+
const triggerComponent = cloneElement(trigger, {
|
|
94
|
+
ref: setReferenceRef,
|
|
95
|
+
className: classNames(
|
|
96
|
+
trigger.props.className,
|
|
97
|
+
"mobius-popover__toggle"
|
|
98
|
+
),
|
|
99
|
+
onClick: toggleVisibility
|
|
100
|
+
});
|
|
101
|
+
useWindowEvent("keydown", (e) => {
|
|
102
|
+
if (e.key === "Escape" && isOpen) {
|
|
103
|
+
setIsOpen(false);
|
|
104
|
+
onClose?.();
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
e.stopPropagation();
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
const floatingElement = isOpen ? /* @__PURE__ */ jsxs(
|
|
110
|
+
"div",
|
|
111
|
+
{
|
|
112
|
+
className: containerClasses,
|
|
113
|
+
ref: floatingRef,
|
|
114
|
+
style: initialFloatingStyles,
|
|
115
|
+
children: [
|
|
116
|
+
/* @__PURE__ */ jsxs("div", { className: "mobius-popover", children: [
|
|
117
|
+
/* @__PURE__ */ jsx("header", { className: "mobius-popover__header", children: /* @__PURE__ */ jsx(
|
|
118
|
+
Button,
|
|
119
|
+
{
|
|
120
|
+
type: "button",
|
|
121
|
+
className: "mobius-popover__close-button",
|
|
122
|
+
onClick: toggleVisibility,
|
|
123
|
+
"aria-label": "Close",
|
|
124
|
+
variant: "ghost",
|
|
125
|
+
children: /* @__PURE__ */ jsx(
|
|
126
|
+
Icon,
|
|
127
|
+
{
|
|
128
|
+
icon: cross,
|
|
129
|
+
size: "md",
|
|
130
|
+
className: "mobius-popover__close-icon"
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
) }),
|
|
135
|
+
/* @__PURE__ */ jsx("div", { className: "mobius-popover__body", children })
|
|
136
|
+
] }),
|
|
137
|
+
/* @__PURE__ */ jsx(
|
|
138
|
+
Arrow,
|
|
139
|
+
{
|
|
140
|
+
ref: arrowRef,
|
|
141
|
+
style: initialArrowStyles,
|
|
142
|
+
className: "mobius-popover__arrow-icon",
|
|
143
|
+
width: ARROW_WIDTH
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
) : null;
|
|
149
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
150
|
+
triggerComponent,
|
|
151
|
+
floatingElement && portalTarget ? createPortal(floatingElement, portalTarget) : null
|
|
152
|
+
] });
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
export {
|
|
156
|
+
Popover
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=chunk-VZ3IWSK6.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/Popover/Popover.tsx"],
|
|
4
|
+
"sourcesContent": ["import { cross } from \"@simplybusiness/icons\";\nimport classNames from \"classnames/dedupe\";\nimport type { ReactElement, ReactNode, RefAttributes } from \"react\";\nimport { cloneElement, useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useWindowEvent } from \"@simplybusiness/mobius-hooks\";\nimport type { DOMProps } from \"../../types\";\nimport { Button } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport { Arrow } from \"./Arrow\";\nimport { useAutoUpdate } from \"./useAutoUpdate\";\nimport { useFloatingPosition } from \"./useFloatingPosition\";\nimport { useOutsidePress } from \"./useOutsidePress\";\nimport \"./Popover.css\";\n\nexport type PopoverElementType = HTMLDivElement;\n\nexport interface PopoverProps\n extends DOMProps, RefAttributes<PopoverElementType> {\n children?: ReactNode;\n trigger: ReactElement;\n /** Callback that fires each time the accordion is opened */\n onOpen?: () => void;\n /** Callback that fires each time the accordion is closed */\n onClose?: () => void;\n /** Custom class name for setting specific CSS */\n className?: string;\n}\n\nconst OFFSET_FROM_CONTENT_DEFAULT = 10;\nconst ARROW_WIDTH = 20;\n\nexport const Popover = (props: PopoverProps) => {\n const { trigger, children, onOpen, onClose, className } = props;\n const referenceRef = useRef<HTMLElement | null>(null);\n const floatingRef = useRef<HTMLDivElement | null>(null);\n const arrowRef = useRef<SVGSVGElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [portalTarget, setPortalTarget] = useState<HTMLElement | null>(null);\n\n const isInsideDialog =\n portalTarget !== null && portalTarget.tagName === \"DIALOG\";\n\n const { initialFloatingStyles, initialArrowStyles, update } =\n useFloatingPosition({\n referenceRef,\n floatingRef,\n arrowRef,\n isOpen,\n offsetPx: OFFSET_FROM_CONTENT_DEFAULT,\n arrowWidth: ARROW_WIDTH,\n useFixedStrategy: isInsideDialog,\n });\n\n useAutoUpdate({\n referenceRef,\n floatingRef,\n onUpdate: update,\n enabled: isOpen,\n });\n\n useOutsidePress({\n referenceRef,\n floatingRef,\n enabled: isOpen,\n onOutsidePress: () => {\n onClose?.();\n setIsOpen(false);\n },\n });\n\n const containerClasses = classNames(\n \"mobius\",\n \"mobius-popover__container\",\n className,\n );\n\n // Native listener to prevent clicks inside the popover from activating\n // interactive ancestors. Must be native because React's onClick fires\n // too late via delegation.\n useEffect(() => {\n const el = floatingRef.current;\n if (!el) return;\n\n const preventLabelActivation = (e: Event) => {\n const target = e.target as HTMLElement;\n // Allow default behavior for interactive elements (links, inputs, etc.)\n // so they remain functional inside the popover.\n if (!target.closest(\"a[href], input, select, textarea\")) {\n e.preventDefault();\n }\n };\n el.addEventListener(\"click\", preventLabelActivation);\n return () => el.removeEventListener(\"click\", preventLabelActivation);\n }, [isOpen]);\n\n const toggleVisibility = () => {\n if (isOpen) {\n setIsOpen(false);\n onClose?.();\n return;\n }\n\n // Portal into the nearest open <dialog> ancestor so the popover renders\n // in the same top-layer as the dialog. document.body falls outside that\n // top-layer and paints beneath the modal backdrop.\n const dialog = referenceRef.current?.closest(\"dialog\");\n setPortalTarget(dialog ?? document.body);\n setIsOpen(true);\n onOpen?.();\n };\n\n const setReferenceRef = useCallback((node: HTMLElement | null) => {\n referenceRef.current = node;\n }, []);\n\n const triggerComponent = cloneElement(trigger, {\n ref: setReferenceRef,\n className: classNames(\n (trigger.props as { className?: string }).className,\n \"mobius-popover__toggle\",\n ),\n onClick: toggleVisibility,\n } as Record<string, unknown>);\n\n useWindowEvent(\"keydown\", e => {\n if (e.key === \"Escape\" && isOpen) {\n setIsOpen(false);\n onClose?.();\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n const floatingElement = isOpen ? (\n <div\n className={containerClasses}\n ref={floatingRef}\n style={initialFloatingStyles}\n >\n <div className=\"mobius-popover\">\n <header className=\"mobius-popover__header\">\n <Button\n type=\"button\"\n className=\"mobius-popover__close-button\"\n onClick={toggleVisibility}\n aria-label=\"Close\"\n variant=\"ghost\"\n >\n <Icon\n icon={cross}\n size=\"md\"\n className=\"mobius-popover__close-icon\"\n />\n </Button>\n </header>\n <div className=\"mobius-popover__body\">{children}</div>\n </div>\n <Arrow\n ref={arrowRef}\n style={initialArrowStyles}\n className=\"mobius-popover__arrow-icon\"\n width={ARROW_WIDTH}\n />\n </div>\n ) : null;\n\n return (\n <>\n {triggerComponent}\n {floatingElement && portalTarget\n ? createPortal(floatingElement, portalTarget)\n : null}\n </>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-WC3D5GNN.js";
|
|
4
4
|
import {
|
|
5
5
|
TextField
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6RDK3FM2.js";
|
|
7
7
|
import {
|
|
8
8
|
mergeRefs
|
|
9
9
|
} from "./chunk-QGGILW3D.js";
|
|
@@ -51,4 +51,4 @@ PasswordField.displayName = "PasswordField";
|
|
|
51
51
|
export {
|
|
52
52
|
PasswordField
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-WSQWMVA2.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// src/components/Popover/useOutsidePress.ts
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
var useOutsidePress = ({
|
|
4
|
+
referenceRef,
|
|
5
|
+
floatingRef,
|
|
6
|
+
enabled,
|
|
7
|
+
onOutsidePress
|
|
8
|
+
}) => {
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!enabled) return;
|
|
11
|
+
const handler = (event) => {
|
|
12
|
+
const target = event.target;
|
|
13
|
+
if (!target) return;
|
|
14
|
+
if (referenceRef.current?.contains(target)) return;
|
|
15
|
+
if (floatingRef.current?.contains(target)) return;
|
|
16
|
+
onOutsidePress(event);
|
|
17
|
+
};
|
|
18
|
+
document.addEventListener("pointerdown", handler);
|
|
19
|
+
return () => document.removeEventListener("pointerdown", handler);
|
|
20
|
+
}, [enabled, onOutsidePress, referenceRef, floatingRef]);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
useOutsidePress
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=chunk-WYJP7HVL.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/Popover/useOutsidePress.ts"],
|
|
4
|
+
"sourcesContent": ["import type { RefObject } from \"react\";\nimport { useEffect } from \"react\";\n\ninterface UseOutsidePressArgs {\n referenceRef: RefObject<HTMLElement | null>;\n floatingRef: RefObject<HTMLDivElement | null>;\n enabled: boolean;\n onOutsidePress: (event: PointerEvent) => void;\n}\n\nexport const useOutsidePress = ({\n referenceRef,\n floatingRef,\n enabled,\n onOutsidePress,\n}: UseOutsidePressArgs): void => {\n useEffect(() => {\n if (!enabled) return;\n\n const handler = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (!target) return;\n if (referenceRef.current?.contains(target)) return;\n if (floatingRef.current?.contains(target)) return;\n onOutsidePress(event);\n };\n\n document.addEventListener(\"pointerdown\", handler);\n return () => document.removeEventListener(\"pointerdown\", handler);\n }, [enabled, onOutsidePress, referenceRef, floatingRef]);\n};\n"],
|
|
5
|
+
"mappings": ";AACA,SAAS,iBAAiB;AASnB,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiC;AAC/B,YAAU,MAAM;AACd,QAAI,CAAC,QAAS;AAEd,UAAM,UAAU,CAAC,UAAwB;AACvC,YAAM,SAAS,MAAM;AACrB,UAAI,CAAC,OAAQ;AACb,UAAI,aAAa,SAAS,SAAS,MAAM,EAAG;AAC5C,UAAI,YAAY,SAAS,SAAS,MAAM,EAAG;AAC3C,qBAAe,KAAK;AAAA,IACtB;AAEA,aAAS,iBAAiB,eAAe,OAAO;AAChD,WAAO,MAAM,SAAS,oBAAoB,eAAe,OAAO;AAAA,EAClE,GAAG,CAAC,SAAS,gBAAgB,cAAc,WAAW,CAAC;AACzD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Listbox
|
|
3
|
-
} from "./chunk-PQSPISME.js";
|
|
4
1
|
import {
|
|
5
2
|
useComboboxHighlight
|
|
6
3
|
} from "./chunk-XZUQV54A.js";
|
|
7
4
|
import {
|
|
8
5
|
useComboboxOptions
|
|
9
6
|
} from "./chunk-GU5OMKTM.js";
|
|
7
|
+
import {
|
|
8
|
+
Listbox
|
|
9
|
+
} from "./chunk-PQSPISME.js";
|
|
10
10
|
import {
|
|
11
11
|
getOptionLabel,
|
|
12
12
|
getOptionValue,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-2JLZNSLY.js";
|
|
15
15
|
import {
|
|
16
16
|
TextField
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-6RDK3FM2.js";
|
|
18
18
|
import {
|
|
19
19
|
VisuallyHidden
|
|
20
20
|
} from "./chunk-PRZRE6A5.js";
|
|
@@ -352,4 +352,4 @@ var Combobox = ComboboxInner;
|
|
|
352
352
|
export {
|
|
353
353
|
Combobox
|
|
354
354
|
};
|
|
355
|
-
//# sourceMappingURL=chunk-
|
|
355
|
+
//# sourceMappingURL=chunk-XEP6X7JU.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/Combobox/Combobox.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useOnUnmount } from \"@simplybusiness/mobius-hooks\";\nimport classNames from \"classnames/dedupe\";\nimport type React from \"react\";\nimport type { FocusEvent } from \"react\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport { useBreakpoint } from \"../../hooks\";\nimport { TextField } from \"../TextField\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\nimport { Listbox } from \"./Listbox\"; // Import Listbox component\nimport type { ComboboxOption, ComboboxProps } from \"./types\";\nimport { useComboboxHighlight } from \"./useComboboxHighlight\";\nimport { useComboboxOptions } from \"./useComboboxOptions\";\nimport { getOptionLabel, getOptionValue, isOptionGroup } from \"./utils\";\nimport \"./Combobox.css\";\n\nconst ComboboxInner = <T extends ComboboxOption>({\n ref,\n ...props\n}: ComboboxProps<T>) => {\n const {\n id,\n defaultValue,\n value,\n options,\n asyncOptions,\n delay,\n minSearchLength,\n onSelected,\n className,\n placeholder,\n icon,\n onBlur,\n onFocus,\n onChange,\n // onSearched, // unused prop, consider removing\n optionComponent,\n optionTestIdPrefix,\n errorMessage,\n ...otherProps\n } = props;\n // Avoid re-fetching after selecting an option\n const skipNextDebounceRef = useRef(false);\n const fallbackRef = useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = useState(defaultValue || \"\");\n const [isOpen, setIsOpen] = useState(false);\n const [isChanging, setIsChanging] = useState(false);\n const { filteredOptions, updateFilteredOptions, isLoading, error } =\n useComboboxOptions({\n options,\n asyncOptions,\n inputValue,\n delay,\n minSearchLength,\n skipNextDebounceRef,\n });\n const [validationError, setValidationError] = useState(\n error?.message || errorMessage,\n );\n const {\n highlightedIndex,\n highlightedGroupIndex,\n highlightNextOption,\n highlightPreviousOption,\n highlightFirstOption,\n highlightLastOption,\n clearHighlight,\n } = useComboboxHighlight(filteredOptions);\n\n const inputRef = ref || fallbackRef;\n const listboxId = useId();\n const statusId = useId();\n const blurTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const userInteractedRef = useRef(false);\n const justSelectedRef = useRef(false);\n const { down } = useBreakpoint();\n const isMobile = down(\"md\");\n\n useEffect(() => {\n setValidationError(error?.message || errorMessage);\n }, [error, errorMessage]);\n\n // Helper to create properly-typed empty value based on option type\n const getEmptyValue = (): T => {\n // Check first available option to determine if we're using string or object options\n const firstOption = filteredOptions\n ? isOptionGroup(filteredOptions)\n ? filteredOptions[0]?.options[0]\n : filteredOptions[0]\n : options\n ? isOptionGroup(options)\n ? options[0]?.options[0]\n : options[0]\n : undefined;\n\n // If options are strings, return empty string\n if (typeof firstOption === \"string\") {\n return \"\" as T;\n }\n\n // If options are objects, return empty object with same shape\n return { label: \"\", value: \"\" } as T;\n };\n\n const handleFocus = (e: FocusEvent) => {\n onFocus?.(e);\n if (!filteredOptions || filteredOptions.length === 0) return;\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = null;\n }\n\n // Check if this is natural focus (user click/Tab) or programmatic focus\n const isNaturalFocus =\n userInteractedRef.current || e.relatedTarget !== null;\n if (userInteractedRef.current) {\n userInteractedRef.current = false;\n }\n\n // Block opening only if programmatic focus right after selection\n if (justSelectedRef.current && !isNaturalFocus) {\n return;\n }\n\n // Open dropdown for natural focus\n if (isNaturalFocus) {\n setIsOpen(true);\n justSelectedRef.current = false;\n }\n };\n\n useEffect(() => {\n if (!inputRef || typeof inputRef === \"function\") return;\n const inputElement = inputRef.current;\n if (!inputElement) return;\n\n const handleMouseDown = () => {\n // Track that user clicked/interacted with input\n userInteractedRef.current = true;\n };\n\n inputElement.addEventListener(\"mousedown\", handleMouseDown);\n return () => {\n inputElement.removeEventListener(\"mousedown\", handleMouseDown);\n };\n }, [inputRef]);\n\n useOnUnmount(() => {\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n }\n });\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n setValidationError(undefined);\n justSelectedRef.current = false;\n setIsChanging(true);\n // Only open immediately for sync options; async options controlled by useEffect\n if (!asyncOptions) {\n setIsOpen(true);\n }\n clearHighlight();\n onChange?.(e);\n };\n\n const handleOptionSelect = (option: T) => {\n const val = getOptionValue(option);\n\n // Allow empty values to pass through\n if (!val && val !== \"\") return;\n\n if (\n typeof option === \"object\" &&\n \"callback\" in option &&\n option.callback &&\n typeof option.callback === \"function\"\n ) {\n justSelectedRef.current = true;\n setTimeout(() => {\n if (inputRef && typeof inputRef !== \"function\" && inputRef.current) {\n inputRef.current.focus();\n }\n }, 0);\n const callbackPromise = option.callback();\n updateFilteredOptions(callbackPromise);\n callbackPromise\n .then(() => {\n setIsOpen(true);\n setIsChanging(true);\n })\n .catch(() => {\n // error handled inside updateFilteredOptions via setError\n });\n return;\n }\n\n // Prevent re-fetching options after selecting an option\n skipNextDebounceRef.current = true;\n justSelectedRef.current = true;\n\n setIsChanging(false);\n setValidationError(undefined);\n setIsOpen(false);\n setInputValue(val);\n onSelected?.(option);\n };\n\n const getFirstOption = () => {\n if (!filteredOptions) return undefined;\n if (isOptionGroup(filteredOptions)) {\n return filteredOptions[0]?.options[0];\n }\n\n return filteredOptions[0];\n };\n\n const getHighlightedOption = () => {\n if (!filteredOptions) return undefined;\n if (highlightedIndex === -1) return undefined;\n\n if (isOptionGroup(filteredOptions)) {\n const group = filteredOptions[highlightedGroupIndex];\n return group?.options[highlightedIndex];\n }\n\n return filteredOptions[highlightedIndex];\n };\n\n const getHighlightedOptionId = () => {\n const option = getHighlightedOption();\n if (!option) return undefined;\n\n if (isOptionGroup(filteredOptions)) {\n return `${listboxId}-option-${highlightedGroupIndex}-${highlightedIndex}`;\n }\n\n return `${listboxId}-option-${highlightedIndex}`;\n };\n\n const handleBlur = (e: FocusEvent<Element, Element>) => {\n // Force selection if user has matched an entry by typing (not already selected)\n // Defer this to allow natural focus flow to complete first\n if (!justSelectedRef.current) {\n const typedText = inputValue.trim();\n const typedTextLower = typedText.toLowerCase();\n const highlightedOption = getHighlightedOption();\n const label = getOptionLabel(highlightedOption);\n\n if (typedTextLower === label?.toLowerCase()) {\n // Exact match with an option\n setTimeout(() => {\n handleOptionSelect(highlightedOption as T);\n }, 0);\n } else if (typedText === \"\") {\n // Allow empty values\n setTimeout(() => {\n handleOptionSelect(getEmptyValue());\n }, 0);\n } else {\n // Invalid value (not in options and not empty)\n setValidationError(\n errorMessage || \"Please select an option from the list\",\n );\n setTimeout(() => {\n setInputValue(\"\");\n }, 0);\n }\n }\n\n blurTimeoutRef.current = setTimeout(() => {\n onBlur?.(e);\n setIsOpen(false);\n setIsChanging(false);\n }, 150);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n justSelectedRef.current = false;\n setIsOpen(true);\n highlightNextOption();\n break;\n case \"ArrowUp\":\n e.preventDefault();\n justSelectedRef.current = false;\n setIsOpen(true);\n highlightPreviousOption();\n break;\n case \"Home\":\n e.preventDefault();\n justSelectedRef.current = false;\n setIsOpen(true);\n highlightFirstOption();\n break;\n case \"End\":\n e.preventDefault();\n justSelectedRef.current = false;\n setIsOpen(true);\n highlightLastOption();\n break;\n case \"Enter\":\n e.preventDefault();\n if (isOpen) {\n const selectedOption = getHighlightedOption() || getFirstOption();\n if (selectedOption) {\n handleOptionSelect(selectedOption);\n }\n }\n break;\n case \"Escape\":\n e.preventDefault();\n setInputValue(\"\");\n setIsOpen(false);\n clearHighlight();\n break;\n default:\n // Do nothing\n }\n };\n\n useEffect(() => {\n if (value) {\n setInputValue(value);\n }\n }, [value]);\n\n // Open and close the combobox based on async filtered options\n useEffect(() => {\n if (asyncOptions && isChanging) {\n setIsOpen(!!filteredOptions && filteredOptions.length > 0);\n }\n }, [filteredOptions, asyncOptions, isChanging]);\n\n const classes = classNames(\n \"mobius mobius-combobox\",\n {\n \"mobius-combobox--is-expanded\": isOpen,\n \"mobius-combobox--is-loading\": isLoading,\n \"mobius-combobox--is-mobile\": isMobile,\n },\n className,\n );\n\n const getStatusMessage = () => {\n if (isLoading) return \"Loading options\";\n if (!filteredOptions || filteredOptions.length === 0) {\n return isChanging ? \"No options found\" : \"\";\n }\n const count = isOptionGroup(filteredOptions)\n ? filteredOptions.reduce((sum, group) => sum + group.options.length, 0)\n : filteredOptions.length;\n return isOpen && isChanging\n ? `${count} option${count === 1 ? \"\" : \"s\"} available`\n : \"\";\n };\n\n return (\n <div id={id} data-testid=\"mobius-combobox__wrapper\" className={classes}>\n <VisuallyHidden\n role=\"status\"\n aria-live=\"polite\"\n id={statusId}\n elementType=\"div\"\n className=\"mobius-combobox__status\"\n >\n {getStatusMessage()}\n </VisuallyHidden>\n <TextField\n {...otherProps}\n className=\"mobius-combobox__input\"\n role=\"combobox\"\n value={inputValue}\n placeholder={placeholder}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onChange={handleInputChange}\n autoComplete=\"off\"\n aria-describedby={isLoading ? statusId : undefined}\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls={isOpen ? listboxId : undefined}\n aria-expanded={isOpen}\n aria-activedescendant={\n highlightedIndex === -1 ? undefined : getHighlightedOptionId()\n }\n prefixInside={icon}\n ref={inputRef}\n errorMessage={errorMessage || validationError || error?.message}\n />\n <Listbox\n id={listboxId}\n isOpen={isOpen}\n isLoading={isLoading}\n options={filteredOptions}\n highlightedIndex={highlightedIndex}\n highlightedGroupIndex={highlightedGroupIndex}\n onOptionSelect={handleOptionSelect}\n optionComponent={optionComponent}\n optionTestIdPrefix={optionTestIdPrefix}\n />\n </div>\n );\n};\n\nexport const Combobox = ComboboxInner;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AddressLookup
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-QNOBB5HT.js";
|
|
4
4
|
import "../../chunk-66ARYOY7.js";
|
|
5
5
|
import "../../chunk-SZEFLEDA.js";
|
|
6
6
|
import "../../chunk-Q4QTBY7C.js";
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-PQSPISME.js";
|
|
9
|
-
import "../../chunk-WNWHIFKH.js";
|
|
7
|
+
import "../../chunk-XEP6X7JU.js";
|
|
10
8
|
import "../../chunk-XZUQV54A.js";
|
|
11
9
|
import "../../chunk-GU5OMKTM.js";
|
|
10
|
+
import "../../chunk-PQSPISME.js";
|
|
11
|
+
import "../../chunk-WNWHIFKH.js";
|
|
12
12
|
import "../../chunk-2JLZNSLY.js";
|
|
13
13
|
import "../../chunk-CUOVI2HT.js";
|
|
14
|
-
import "../../chunk-
|
|
15
|
-
import "../../chunk-
|
|
14
|
+
import "../../chunk-6RDK3FM2.js";
|
|
15
|
+
import "../../chunk-I6CFRGID.js";
|
|
16
16
|
import "../../chunk-3PRSHEVX.js";
|
|
17
17
|
import "../../chunk-MZJT3USG.js";
|
|
18
18
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import "../../chunk-WNRO77YH.js";
|
|
2
|
+
import "../../chunk-52GWES2P.js";
|
|
2
3
|
import {
|
|
3
4
|
AddressLookup
|
|
4
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-QNOBB5HT.js";
|
|
6
|
+
import "../../chunk-66ARYOY7.js";
|
|
5
7
|
import {
|
|
6
8
|
LoqateAddressLookupService
|
|
7
9
|
} from "../../chunk-VVL4B2KD.js";
|
|
8
10
|
import "../../chunk-EDSRI6SV.js";
|
|
9
|
-
import "../../chunk-52GWES2P.js";
|
|
10
|
-
import "../../chunk-66ARYOY7.js";
|
|
11
11
|
import "../../chunk-SZEFLEDA.js";
|
|
12
12
|
import "../../chunk-Q4QTBY7C.js";
|
|
13
|
-
import "../../chunk-
|
|
14
|
-
import "../../chunk-PQSPISME.js";
|
|
15
|
-
import "../../chunk-WNWHIFKH.js";
|
|
13
|
+
import "../../chunk-XEP6X7JU.js";
|
|
16
14
|
import "../../chunk-XZUQV54A.js";
|
|
17
15
|
import "../../chunk-GU5OMKTM.js";
|
|
16
|
+
import "../../chunk-PQSPISME.js";
|
|
17
|
+
import "../../chunk-WNWHIFKH.js";
|
|
18
18
|
import "../../chunk-2JLZNSLY.js";
|
|
19
19
|
import "../../chunk-CUOVI2HT.js";
|
|
20
|
-
import "../../chunk-
|
|
21
|
-
import "../../chunk-
|
|
20
|
+
import "../../chunk-6RDK3FM2.js";
|
|
21
|
+
import "../../chunk-I6CFRGID.js";
|
|
22
22
|
import "../../chunk-3PRSHEVX.js";
|
|
23
23
|
import "../../chunk-MZJT3USG.js";
|
|
24
24
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../../chunk-LX5HBXZN.js";
|
|
2
|
-
import {
|
|
3
|
-
Breadcrumbs
|
|
4
|
-
} from "../../chunk-JFDDW3IV.js";
|
|
5
2
|
import {
|
|
6
3
|
BreadcrumbItem
|
|
7
4
|
} from "../../chunk-HP2NRM7T.js";
|
|
8
5
|
import "../../chunk-HWGFFTOM.js";
|
|
6
|
+
import {
|
|
7
|
+
Breadcrumbs
|
|
8
|
+
} from "../../chunk-P7TPNRU4.js";
|
|
9
9
|
import "../../chunk-TJCUKTFX.js";
|
|
10
10
|
import "../../chunk-FIAL4HTE.js";
|
|
11
11
|
import "../../chunk-QGGILW3D.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../../chunk-6O77SOOB.js";
|
|
2
|
+
import "../../chunk-IFGPGF5W.js";
|
|
2
3
|
import {
|
|
3
4
|
CheckboxGroup
|
|
4
5
|
} from "../../chunk-576SEJGC.js";
|
|
5
6
|
import {
|
|
6
7
|
Checkbox
|
|
7
8
|
} from "../../chunk-2VEO5SSY.js";
|
|
8
|
-
import "../../chunk-IFGPGF5W.js";
|
|
9
9
|
import "../../chunk-3PRSHEVX.js";
|
|
10
10
|
import "../../chunk-MZJT3USG.js";
|
|
11
11
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Combobox
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-PQSPISME.js";
|
|
5
|
-
import "../../chunk-WNWHIFKH.js";
|
|
3
|
+
} from "../../chunk-XEP6X7JU.js";
|
|
6
4
|
import "../../chunk-XZUQV54A.js";
|
|
7
5
|
import "../../chunk-GU5OMKTM.js";
|
|
6
|
+
import "../../chunk-PQSPISME.js";
|
|
7
|
+
import "../../chunk-WNWHIFKH.js";
|
|
8
8
|
import "../../chunk-2JLZNSLY.js";
|
|
9
9
|
import "../../chunk-CUOVI2HT.js";
|
|
10
|
-
import "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
10
|
+
import "../../chunk-6RDK3FM2.js";
|
|
11
|
+
import "../../chunk-I6CFRGID.js";
|
|
12
12
|
import "../../chunk-3PRSHEVX.js";
|
|
13
13
|
import "../../chunk-MZJT3USG.js";
|
|
14
14
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -2,17 +2,17 @@ import "../../chunk-SZEFLEDA.js";
|
|
|
2
2
|
import "../../chunk-Q4QTBY7C.js";
|
|
3
3
|
import {
|
|
4
4
|
Combobox
|
|
5
|
-
} from "../../chunk-
|
|
6
|
-
import "../../chunk-PQSPISME.js";
|
|
7
|
-
import "../../chunk-WNWHIFKH.js";
|
|
5
|
+
} from "../../chunk-XEP6X7JU.js";
|
|
8
6
|
import "../../chunk-XZUQV54A.js";
|
|
9
7
|
import "../../chunk-GU5OMKTM.js";
|
|
8
|
+
import "../../chunk-PQSPISME.js";
|
|
9
|
+
import "../../chunk-WNWHIFKH.js";
|
|
10
10
|
import {
|
|
11
11
|
buildOptionTestId
|
|
12
12
|
} from "../../chunk-2JLZNSLY.js";
|
|
13
13
|
import "../../chunk-CUOVI2HT.js";
|
|
14
|
-
import "../../chunk-
|
|
15
|
-
import "../../chunk-
|
|
14
|
+
import "../../chunk-6RDK3FM2.js";
|
|
15
|
+
import "../../chunk-I6CFRGID.js";
|
|
16
16
|
import "../../chunk-3PRSHEVX.js";
|
|
17
17
|
import "../../chunk-MZJT3USG.js";
|
|
18
18
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import {
|
|
3
3
|
DateField,
|
|
4
4
|
MIN_MAX_ERROR
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-5QMKPWB4.js";
|
|
6
6
|
import "../../chunk-CI5GCPUG.js";
|
|
7
7
|
import "../../chunk-CUOVI2HT.js";
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-6RDK3FM2.js";
|
|
9
|
+
import "../../chunk-I6CFRGID.js";
|
|
10
10
|
import "../../chunk-3PRSHEVX.js";
|
|
11
11
|
import "../../chunk-MZJT3USG.js";
|
|
12
12
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -2,14 +2,14 @@ import "../../chunk-3O5DIIGS.js";
|
|
|
2
2
|
import {
|
|
3
3
|
DateField,
|
|
4
4
|
MIN_MAX_ERROR
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-5QMKPWB4.js";
|
|
6
6
|
import {
|
|
7
7
|
convertToDateFormat,
|
|
8
8
|
isValidDate
|
|
9
9
|
} from "../../chunk-CI5GCPUG.js";
|
|
10
10
|
import "../../chunk-CUOVI2HT.js";
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-6RDK3FM2.js";
|
|
12
|
+
import "../../chunk-I6CFRGID.js";
|
|
13
13
|
import "../../chunk-3PRSHEVX.js";
|
|
14
14
|
import "../../chunk-MZJT3USG.js";
|
|
15
15
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Drawer
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-WHRUNWJI.js";
|
|
5
|
-
import "../../chunk-VYQRTISC.js";
|
|
3
|
+
} from "../../chunk-KFHPI67N.js";
|
|
6
4
|
import "../../chunk-UZV5PZ7R.js";
|
|
7
5
|
import {
|
|
8
6
|
useDrawer
|
|
9
7
|
} from "../../chunk-GZFZXQRU.js";
|
|
8
|
+
import "../../chunk-WHRUNWJI.js";
|
|
9
|
+
import "../../chunk-VYQRTISC.js";
|
|
10
10
|
import "../../chunk-26JGSX7J.js";
|
|
11
11
|
import "../../chunk-F6UWB5K2.js";
|
|
12
12
|
import "../../chunk-FD3JTY5L.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DropdownMenu
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-KUH5AB5T.js";
|
|
4
4
|
import "../../chunk-YGME6T3L.js";
|
|
5
|
-
import "../../chunk-
|
|
5
|
+
import "../../chunk-6TSYA7CJ.js";
|
|
6
6
|
import "../../chunk-F6UWB5K2.js";
|
|
7
7
|
import "../../chunk-FD3JTY5L.js";
|
|
8
8
|
import "../../chunk-STMV644L.js";
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import "../../chunk-CUOVI2HT.js";
|
|
3
3
|
import {
|
|
4
4
|
TextField
|
|
5
|
-
} from "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
5
|
+
} from "../../chunk-6RDK3FM2.js";
|
|
6
|
+
import "../../chunk-I6CFRGID.js";
|
|
7
7
|
import "../../chunk-3PRSHEVX.js";
|
|
8
8
|
import "../../chunk-MZJT3USG.js";
|
|
9
9
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
MaskedField
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-R67C5QTH.js";
|
|
5
5
|
import "../../chunk-CUOVI2HT.js";
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-6RDK3FM2.js";
|
|
7
|
+
import "../../chunk-I6CFRGID.js";
|
|
8
8
|
import "../../chunk-3PRSHEVX.js";
|
|
9
9
|
import "../../chunk-MZJT3USG.js";
|
|
10
10
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Modal
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-DMYDWKKA.js";
|
|
4
|
+
import "../../chunk-55NPJOV3.js";
|
|
4
5
|
import "../../chunk-MPB5F6QL.js";
|
|
5
|
-
import "../../chunk-JJUTS5ET.js";
|
|
6
6
|
import {
|
|
7
7
|
useModal
|
|
8
8
|
} from "../../chunk-Q5MIALGZ.js";
|
|
9
|
+
import "../../chunk-JJUTS5ET.js";
|
|
9
10
|
import "../../chunk-TBKQA5ZF.js";
|
|
10
|
-
import "../../chunk-55NPJOV3.js";
|
|
11
11
|
import "../../chunk-F6UWB5K2.js";
|
|
12
12
|
import "../../chunk-FD3JTY5L.js";
|
|
13
13
|
import "../../chunk-STMV644L.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
NumberField
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-VGFVSRWH.js";
|
|
5
5
|
import "../../chunk-CUOVI2HT.js";
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-6RDK3FM2.js";
|
|
7
|
+
import "../../chunk-I6CFRGID.js";
|
|
8
8
|
import "../../chunk-3PRSHEVX.js";
|
|
9
9
|
import "../../chunk-MZJT3USG.js";
|
|
10
10
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "../../chunk-F4RQKLF7.js";
|
|
2
2
|
import {
|
|
3
3
|
NumberField
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-VGFVSRWH.js";
|
|
5
5
|
import "../../chunk-CUOVI2HT.js";
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-6RDK3FM2.js";
|
|
7
|
+
import "../../chunk-I6CFRGID.js";
|
|
8
8
|
import "../../chunk-3PRSHEVX.js";
|
|
9
9
|
import "../../chunk-MZJT3USG.js";
|
|
10
10
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
PasswordField
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-WSQWMVA2.js";
|
|
5
5
|
import "../../chunk-WC3D5GNN.js";
|
|
6
6
|
import "../../chunk-CUOVI2HT.js";
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-6RDK3FM2.js";
|
|
8
|
+
import "../../chunk-I6CFRGID.js";
|
|
9
9
|
import "../../chunk-3PRSHEVX.js";
|
|
10
10
|
import "../../chunk-MZJT3USG.js";
|
|
11
11
|
import "../../chunk-NPOXFILT.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../../chunk-5L4G4VLM.js";
|
|
2
2
|
import {
|
|
3
3
|
PasswordField
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-WSQWMVA2.js";
|
|
5
5
|
import "../../chunk-WC3D5GNN.js";
|
|
6
6
|
import "../../chunk-CUOVI2HT.js";
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-6RDK3FM2.js";
|
|
8
|
+
import "../../chunk-I6CFRGID.js";
|
|
9
9
|
import "../../chunk-3PRSHEVX.js";
|
|
10
10
|
import "../../chunk-MZJT3USG.js";
|
|
11
11
|
import "../../chunk-NPOXFILT.js";
|