@seeqdev/qomponents 0.0.64 → 0.0.66
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/ButtonWithDropdown/ButtonWithDropdown.types.d.ts +23 -8
- package/dist/ButtonWithPopover/ButtonWithPopover.types.d.ts +8 -0
- package/dist/index.esm.js +336 -27
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +336 -27
- package/dist/index.js.map +1 -1
- package/dist/styles.css +41 -50
- package/package.json +1 -1
- package/dist/Accordion/Accordion.js +0 -9
- package/dist/Accordion/Accordion.js.map +0 -1
- package/dist/Accordion/Accordion.stories.js +0 -109
- package/dist/Accordion/Accordion.stories.js.map +0 -1
- package/dist/Accordion/Accordion.test.js +0 -55
- package/dist/Accordion/Accordion.test.js.map +0 -1
- package/dist/Accordion/Accordion.types.js +0 -2
- package/dist/Accordion/Accordion.types.js.map +0 -1
- package/dist/Accordion/index.js +0 -2
- package/dist/Accordion/index.js.map +0 -1
- package/dist/Button/Button.js +0 -87
- package/dist/Button/Button.js.map +0 -1
- package/dist/Button/Button.stories.js +0 -77
- package/dist/Button/Button.stories.js.map +0 -1
- package/dist/Button/Button.test.js +0 -49
- package/dist/Button/Button.test.js.map +0 -1
- package/dist/Button/Button.types.js +0 -4
- package/dist/Button/Button.types.js.map +0 -1
- package/dist/Button/index.js +0 -2
- package/dist/Button/index.js.map +0 -1
- package/dist/ButtonWithDropdown/ButtonWithDropdown.js +0 -39
- package/dist/ButtonWithDropdown/ButtonWithDropdown.js.map +0 -1
- package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js +0 -66
- package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js.map +0 -1
- package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js +0 -72
- package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js.map +0 -1
- package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js +0 -2
- package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js.map +0 -1
- package/dist/ButtonWithDropdown/index.js +0 -2
- package/dist/ButtonWithDropdown/index.js.map +0 -1
- package/dist/ButtonWithPopover/ButtonWithPopover.js +0 -27
- package/dist/ButtonWithPopover/ButtonWithPopover.js.map +0 -1
- package/dist/ButtonWithPopover/ButtonWithPopover.stories.js +0 -50
- package/dist/ButtonWithPopover/ButtonWithPopover.stories.js.map +0 -1
- package/dist/ButtonWithPopover/ButtonWithPopover.test.js +0 -61
- package/dist/ButtonWithPopover/ButtonWithPopover.test.js.map +0 -1
- package/dist/ButtonWithPopover/ButtonWithPopover.types.js +0 -2
- package/dist/ButtonWithPopover/ButtonWithPopover.types.js.map +0 -1
- package/dist/ButtonWithPopover/index.js +0 -2
- package/dist/ButtonWithPopover/index.js.map +0 -1
- package/dist/Checkbox/Checkbox.js +0 -26
- package/dist/Checkbox/Checkbox.js.map +0 -1
- package/dist/Checkbox/Checkbox.stories.js +0 -34
- package/dist/Checkbox/Checkbox.stories.js.map +0 -1
- package/dist/Checkbox/Checkbox.test.js +0 -94
- package/dist/Checkbox/Checkbox.test.js.map +0 -1
- package/dist/Checkbox/Checkbox.types.js +0 -2
- package/dist/Checkbox/Checkbox.types.js.map +0 -1
- package/dist/Checkbox/index.js +0 -2
- package/dist/Checkbox/index.js.map +0 -1
- package/dist/Icon/Icon.js +0 -55
- package/dist/Icon/Icon.js.map +0 -1
- package/dist/Icon/Icon.stories.js +0 -41
- package/dist/Icon/Icon.stories.js.map +0 -1
- package/dist/Icon/Icon.test.js +0 -55
- package/dist/Icon/Icon.test.js.map +0 -1
- package/dist/Icon/Icon.types.js +0 -16
- package/dist/Icon/Icon.types.js.map +0 -1
- package/dist/Icon/index.js +0 -2
- package/dist/Icon/index.js.map +0 -1
- package/dist/Modal/Modal.js +0 -99
- package/dist/Modal/Modal.js.map +0 -1
- package/dist/Modal/Modal.stories.js +0 -176
- package/dist/Modal/Modal.stories.js.map +0 -1
- package/dist/Modal/Modal.test.js +0 -108
- package/dist/Modal/Modal.test.js.map +0 -1
- package/dist/Modal/Modal.types.js +0 -2
- package/dist/Modal/Modal.types.js.map +0 -1
- package/dist/Modal/index.js +0 -2
- package/dist/Modal/index.js.map +0 -1
- package/dist/Select/Select.js +0 -168
- package/dist/Select/Select.js.map +0 -1
- package/dist/Select/Select.stories.js +0 -72
- package/dist/Select/Select.stories.js.map +0 -1
- package/dist/Select/Select.test.js +0 -161
- package/dist/Select/Select.test.js.map +0 -1
- package/dist/Select/Select.types.js +0 -2
- package/dist/Select/Select.types.js.map +0 -1
- package/dist/Select/index.js +0 -2
- package/dist/Select/index.js.map +0 -1
- package/dist/Tabs/Tabs.js +0 -22
- package/dist/Tabs/Tabs.js.map +0 -1
- package/dist/Tabs/Tabs.stories.js +0 -91
- package/dist/Tabs/Tabs.stories.js.map +0 -1
- package/dist/Tabs/Tabs.test.js +0 -91
- package/dist/Tabs/Tabs.test.js.map +0 -1
- package/dist/Tabs/Tabs.types.js +0 -2
- package/dist/Tabs/Tabs.types.js.map +0 -1
- package/dist/Tabs/index.js +0 -2
- package/dist/Tabs/index.js.map +0 -1
- package/dist/TextArea/TextArea.js +0 -23
- package/dist/TextArea/TextArea.js.map +0 -1
- package/dist/TextArea/TextArea.stories.js +0 -39
- package/dist/TextArea/TextArea.stories.js.map +0 -1
- package/dist/TextArea/TextArea.test.js +0 -68
- package/dist/TextArea/TextArea.test.js.map +0 -1
- package/dist/TextArea/TextArea.types.js +0 -2
- package/dist/TextArea/TextArea.types.js.map +0 -1
- package/dist/TextArea/index.js +0 -2
- package/dist/TextArea/index.js.map +0 -1
- package/dist/TextField/TextField.js +0 -64
- package/dist/TextField/TextField.js.map +0 -1
- package/dist/TextField/TextField.stories.js +0 -41
- package/dist/TextField/TextField.stories.js.map +0 -1
- package/dist/TextField/TextField.test.js +0 -35
- package/dist/TextField/TextField.test.js.map +0 -1
- package/dist/TextField/TextField.types.js +0 -2
- package/dist/TextField/TextField.types.js.map +0 -1
- package/dist/TextField/index.js +0 -2
- package/dist/TextField/index.js.map +0 -1
- package/dist/ToolbarButton/ToolbarButton.js +0 -76
- package/dist/ToolbarButton/ToolbarButton.js.map +0 -1
- package/dist/ToolbarButton/ToolbarButton.stories.js +0 -89
- package/dist/ToolbarButton/ToolbarButton.stories.js.map +0 -1
- package/dist/ToolbarButton/ToolbarButton.test.js +0 -93
- package/dist/ToolbarButton/ToolbarButton.test.js.map +0 -1
- package/dist/ToolbarButton/ToolbarButton.types.js +0 -2
- package/dist/ToolbarButton/ToolbarButton.types.js.map +0 -1
- package/dist/ToolbarButton/index.js +0 -2
- package/dist/ToolbarButton/index.js.map +0 -1
- package/dist/Tooltip/QTip.stories.js +0 -40
- package/dist/Tooltip/QTip.stories.js.map +0 -1
- package/dist/Tooltip/QTip.types.js +0 -2
- package/dist/Tooltip/QTip.types.js.map +0 -1
- package/dist/Tooltip/QTipPerformance.stories.js +0 -30
- package/dist/Tooltip/QTipPerformance.stories.js.map +0 -1
- package/dist/Tooltip/Qtip.js +0 -154
- package/dist/Tooltip/Qtip.js.map +0 -1
- package/dist/Tooltip/Tooltip.js +0 -36
- package/dist/Tooltip/Tooltip.js.map +0 -1
- package/dist/Tooltip/Tooltip.stories.js +0 -32
- package/dist/Tooltip/Tooltip.stories.js.map +0 -1
- package/dist/Tooltip/Tooltip.types.js +0 -3
- package/dist/Tooltip/Tooltip.types.js.map +0 -1
- package/dist/Tooltip/TooltipPerformance.stories.js +0 -30
- package/dist/Tooltip/TooltipPerformance.stories.js.map +0 -1
- package/dist/Tooltip/index.js +0 -3
- package/dist/Tooltip/index.js.map +0 -1
- package/dist/Tooltip/qTip.utilities.js +0 -11
- package/dist/Tooltip/qTip.utilities.js.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils/browserId.js +0 -29
- package/dist/utils/browserId.js.map +0 -1
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
import { TooltipComponentProps } from '../Tooltip/Tooltip.types';
|
|
2
|
-
interface
|
|
3
|
-
/** icon class to be used with the dropdown subitems - if available (i.e. 'fc-zoom')
|
|
2
|
+
interface DropdownSubItem {
|
|
3
|
+
/** icon class to be used with the dropdown subitems - if available (i.e. 'fc-zoom') */
|
|
4
|
+
iconClass?: string;
|
|
5
|
+
/** label for the dropdown subitems */
|
|
6
|
+
label: string;
|
|
7
|
+
/** function called when the dropdown subitem is clicked on */
|
|
8
|
+
onClick?: (e?: Event) => void;
|
|
9
|
+
/** is subitem disabled */
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
/** tooltip for the dropdown subitem */
|
|
12
|
+
tooltip?: string;
|
|
13
|
+
}
|
|
14
|
+
interface DropdownItems {
|
|
15
|
+
id?: string;
|
|
16
|
+
/** icon class to be used with the dropdown items - if available (i.e. 'fc-zoom') */
|
|
4
17
|
icon?: string;
|
|
5
|
-
/** icon type to be used with the dropdown
|
|
18
|
+
/** icon type to be used with the dropdown items - if available (i.e. 'fc') */
|
|
6
19
|
iconType?: string;
|
|
7
|
-
/** icon color to be used with the dropdown
|
|
20
|
+
/** icon color to be used with the dropdown items - if available */
|
|
8
21
|
iconColor?: string;
|
|
9
22
|
/** custom id for the icon */
|
|
10
23
|
iconCustomId?: string;
|
|
11
24
|
/** icon extra class names */
|
|
12
25
|
iconExtraClassNames?: string;
|
|
13
|
-
/** label for the dropdown
|
|
26
|
+
/** label for the dropdown items */
|
|
14
27
|
label: string;
|
|
15
28
|
/** custom id for the dropdown label */
|
|
16
29
|
labelCustomId?: string;
|
|
17
30
|
/** is the dropdown subitem a label */
|
|
18
31
|
isLabel?: boolean;
|
|
19
|
-
/** function called when the dropdown
|
|
20
|
-
onClick: (e
|
|
32
|
+
/** function called when the dropdown item is clicked on */
|
|
33
|
+
onClick: (e?: Event) => void;
|
|
21
34
|
/** dropdown subitem container classes */
|
|
22
35
|
itemContainerClasses?: string;
|
|
23
36
|
/** dropdown subitem label classes */
|
|
@@ -36,10 +49,12 @@ interface DropdownSubItems {
|
|
|
36
49
|
hasDivider?: boolean;
|
|
37
50
|
/** test id for the dropdown subitem */
|
|
38
51
|
testId?: string;
|
|
52
|
+
/** subitems for the dropdown */
|
|
53
|
+
subMenuItems?: DropdownSubItem[];
|
|
39
54
|
}
|
|
40
55
|
export interface ButtonWithDropdownProps extends TooltipComponentProps {
|
|
41
56
|
/** items for the dropdown content */
|
|
42
|
-
dropdownItems:
|
|
57
|
+
dropdownItems: DropdownItems[];
|
|
43
58
|
/** icon element to be used as the trigger */
|
|
44
59
|
triggerIcon: React.ReactNode;
|
|
45
60
|
/** id of the dropdown trigger */
|
|
@@ -29,6 +29,10 @@ export interface ButtonWithPopoverProps extends TooltipComponentProps {
|
|
|
29
29
|
onOpenChange?: (isOpen: boolean) => void;
|
|
30
30
|
/** set to display arrow or not */
|
|
31
31
|
hasArrow?: boolean;
|
|
32
|
+
/** displays the popover when we hover over trigger */
|
|
33
|
+
isHoverEnabled?: boolean;
|
|
34
|
+
/** delay before popover is displayed when isHoverEnabled is true */
|
|
35
|
+
hoverOpenDelay?: number;
|
|
32
36
|
/** extra trigger container classnames */
|
|
33
37
|
extraTriggerClassNames?: string;
|
|
34
38
|
/** extra popover container classnames */
|
|
@@ -37,4 +41,8 @@ export interface ButtonWithPopoverProps extends TooltipComponentProps {
|
|
|
37
41
|
isCloseOnContentClick?: boolean;
|
|
38
42
|
/** sets focus on the trigger button after the dropdown is closed */
|
|
39
43
|
setFocusOnTriggerOnClose?: boolean;
|
|
44
|
+
/** calls the function if click or focus happens outside popover content */
|
|
45
|
+
onInteractOutside?: () => void;
|
|
46
|
+
/** calls the function if pointer down happens outside popover content */
|
|
47
|
+
onPointerDownOutside?: () => void;
|
|
40
48
|
}
|
package/dist/index.esm.js
CHANGED
|
@@ -89,7 +89,7 @@ const Icon = ({ onClick, icon, iconPrefix = undefined, type = 'theme', extraClas
|
|
|
89
89
|
const iconPrefixString = icon.startsWith('fc') ? 'fc' : fontAwesomePrefix;
|
|
90
90
|
const style = type === 'color' && color ? { color } : {};
|
|
91
91
|
const appliedClassNames = `${iconPrefixString} ${icon} ${small ? 'fa-sm' : ''} ${large ? 'fa-lg' : ''}
|
|
92
|
-
${colorClassesThemeLight[type]} ${colorClassesThemeDark[type]} ${onClick ? 'cursor-pointer' : ''} ${extraClassNames}`;
|
|
92
|
+
${colorClassesThemeLight[type]} ${colorClassesThemeDark[type]} ${onClick ? 'cursor-pointer' : ''} ${extraClassNames} focus:tw-outline-none focus-visible:tw-outline-none tw-outline-none`;
|
|
93
93
|
const tooltipData = getQTipData(tooltipProps);
|
|
94
94
|
return (React__default.createElement("i", { className: appliedClassNames, style: style, onClick: onClick, "data-testid": testId, "data-customid": customId, id: id, "data-number": number, ...tooltipData }));
|
|
95
95
|
};
|
|
@@ -4548,12 +4548,8 @@ const borderStyles$3 = [
|
|
|
4548
4548
|
'tw-border-solid',
|
|
4549
4549
|
'tw-border',
|
|
4550
4550
|
'tw-rounded-sm',
|
|
4551
|
-
'
|
|
4552
|
-
'
|
|
4553
|
-
'active:tw-border-sq-sq-light-gray',
|
|
4554
|
-
'dark:hover:tw-border-sq-color-dark-dark',
|
|
4555
|
-
'dark:focus:tw-border-sq-color-dark-dark',
|
|
4556
|
-
'dark:active:tw-border-sq-color-dark-dark',
|
|
4551
|
+
'tw-border-sq-disabled-gray',
|
|
4552
|
+
'dark:tw-border-gray-500',
|
|
4557
4553
|
].join(' ');
|
|
4558
4554
|
const triggerBorderStyles = [
|
|
4559
4555
|
'tw-border-solid',
|
|
@@ -4612,7 +4608,8 @@ const ToolbarButton = ({ isSmall = false, label, icon, secondIcon, forceSmallIco
|
|
|
4612
4608
|
' tw-relative tw-z-[1000] tw-min-w-6 tw-p-[0.5rem] focus-visible:tw-outline-none tw-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out' +
|
|
4613
4609
|
' data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2' +
|
|
4614
4610
|
borderStyles$3 },
|
|
4615
|
-
hasArrow && (React.createElement($cb5cc270b50c6fcd$export$21b07c8f274aebd5, {
|
|
4611
|
+
hasArrow && (React.createElement($cb5cc270b50c6fcd$export$21b07c8f274aebd5, { asChild: true },
|
|
4612
|
+
React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-mt-[-7px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500" }))),
|
|
4616
4613
|
popoverContent))) : undefined));
|
|
4617
4614
|
};
|
|
4618
4615
|
|
|
@@ -4695,7 +4692,7 @@ const Checkbox = (props) => {
|
|
|
4695
4692
|
const assignedId = id ?? 'checkbox_' + Math.random();
|
|
4696
4693
|
const tooltipData = getQTipData(tooltipProps);
|
|
4697
4694
|
return (React__default.createElement("span", { className: `${alignment} ${extraClassNames}` },
|
|
4698
|
-
React__default.createElement("input", { value: value, type: type, "data-testid": testId, name: name, id: assignedId, checked: checked, defaultChecked: defaultChecked, className: `${type === 'checkbox' ? checkboxClasses : radioClasses} ${disabled ? 'tw-cursor-not-allowed' : 'tw-cursor-pointer'}`, disabled: disabled, onClick: onClick, onChange: onChange, onKeyDown: onKeyDown, ...tooltipData }),
|
|
4695
|
+
React__default.createElement("input", { value: value, type: type, "data-testid": testId, name: name, id: assignedId, readOnly: !onChange, checked: checked, defaultChecked: defaultChecked, className: `${type === 'checkbox' ? checkboxClasses : radioClasses} ${disabled ? 'tw-cursor-not-allowed' : 'tw-cursor-pointer'}`, disabled: disabled, onClick: onClick, onChange: onChange, onKeyDown: onKeyDown, ...tooltipData }),
|
|
4699
4696
|
React__default.createElement("label", { htmlFor: assignedId, className: `${labelClasses} ${extraLabelClassNames} ${disabled
|
|
4700
4697
|
? 'tw-cursor-not-allowed dark:tw-text-sq-fairly-dark-gray tw-text-sq-fairly-dark-gray'
|
|
4701
4698
|
: 'tw-cursor-pointer tw-text-sq-text-color dark:tw-text-sq-dark-text'}` }, label)));
|
|
@@ -15000,20 +14997,39 @@ const borderStyles$1 = [
|
|
|
15000
14997
|
'tw-border',
|
|
15001
14998
|
'tw-rounded-sm',
|
|
15002
14999
|
'tw-border-sq-disabled-gray',
|
|
15003
|
-
'dark:tw-border-gray-
|
|
15000
|
+
'dark:tw-border-gray-500',
|
|
15004
15001
|
].join(' ');
|
|
15005
15002
|
const disabledClasses$1 = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
|
|
15006
|
-
const ButtonWithPopover = ({ children, trigger, id, hasArrow, extraTriggerClassNames, extraPopoverClassNames, containerTestId, disabled = false, align = 'end', alignOffset = -
|
|
15003
|
+
const ButtonWithPopover = ({ children, trigger, id, hasArrow, extraTriggerClassNames, extraPopoverClassNames, containerTestId, onInteractOutside, onPointerDownOutside, disabled = false, align = 'end', alignOffset = -35, placement = 'bottom', placementOffset = 2, isHoverEnabled = false, hoverOpenDelay = 300, onOpenChange, isOpen, isCloseOnContentClick = false, setFocusOnTriggerOnClose = true, ...tooltipProps }) => {
|
|
15007
15004
|
const tooltipData = getQTipData(tooltipProps);
|
|
15008
|
-
|
|
15005
|
+
let timeout;
|
|
15006
|
+
const [isHoveredOpen, setIsHoveredOpen] = React.useState();
|
|
15007
|
+
const onHoverStart = () => {
|
|
15008
|
+
if (isHoverEnabled) {
|
|
15009
|
+
timeout = setTimeout(() => {
|
|
15010
|
+
setIsHoveredOpen(true);
|
|
15011
|
+
onOpenChange && onOpenChange(true);
|
|
15012
|
+
}, hoverOpenDelay);
|
|
15013
|
+
}
|
|
15014
|
+
};
|
|
15015
|
+
const onHoverEnd = () => {
|
|
15016
|
+
if (isHoverEnabled) {
|
|
15017
|
+
timeout = setTimeout(() => {
|
|
15018
|
+
setIsHoveredOpen(false);
|
|
15019
|
+
onOpenChange && onOpenChange(false);
|
|
15020
|
+
}, 200);
|
|
15021
|
+
}
|
|
15022
|
+
};
|
|
15023
|
+
React.useEffect(() => () => timeout && clearTimeout(timeout), []);
|
|
15024
|
+
return (React.createElement($cb5cc270b50c6fcd$export$be92b6f5f03c0fe9, { open: isOpen || isHoveredOpen, defaultOpen: false, onOpenChange: onOpenChange },
|
|
15009
15025
|
React.createElement($cb5cc270b50c6fcd$export$41fb9f06171c75f4, { id: id, className: `tw-border-none`, disabled: disabled },
|
|
15010
|
-
React.createElement("div", { ...tooltipData, className: `tw-bg-transparent tw-flex tw-flex-col tw-items-center tw-justify-center ${disabled ? disabledClasses$1 : ''} ${extraTriggerClassNames || ''}` }, trigger)),
|
|
15011
|
-
React.createElement($cb5cc270b50c6fcd$export$7c6e2c02157bb7d2, { sideOffset: placementOffset, align: align, side: placement,
|
|
15012
|
-
React.createElement("div", { "data-testid": containerTestId, className: `${bgStyles$1} ${borderStyles$1} tw-relative tw-z-[1000] tw-min-w-6
|
|
15013
|
-
data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade
|
|
15026
|
+
React.createElement("div", { ...tooltipData, onMouseOver: onHoverStart, onMouseOut: onHoverEnd, className: `tw-bg-transparent tw-flex tw-flex-col tw-items-center tw-justify-center focus-visible:tw-outline-none tw-outline-none ${disabled ? disabledClasses$1 : ''} ${extraTriggerClassNames || ''}` }, trigger)),
|
|
15027
|
+
React.createElement($cb5cc270b50c6fcd$export$7c6e2c02157bb7d2, { sideOffset: placementOffset, align: align, side: placement, onInteractOutside: onInteractOutside, onPointerDownOutside: onPointerDownOutside, alignOffset: isHoverEnabled ? -10 : alignOffset, asChild: true, onClick: () => isCloseOnContentClick && onOpenChange && onOpenChange(false), className: "focus-visible:tw-outline-none tw-outline-none" },
|
|
15028
|
+
React.createElement("div", { "data-testid": containerTestId, className: `${bgStyles$1} ${borderStyles$1} tw-relative tw-z-[1000] tw-min-w-6 focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out
|
|
15029
|
+
data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade tw-text-sq-text-color
|
|
15014
15030
|
${extraPopoverClassNames || ''}` },
|
|
15015
15031
|
hasArrow && (React.createElement($cb5cc270b50c6fcd$export$21b07c8f274aebd5, { asChild: true },
|
|
15016
|
-
React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[
|
|
15032
|
+
React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-mt-[-7px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500" }))),
|
|
15017
15033
|
children))));
|
|
15018
15034
|
};
|
|
15019
15035
|
|
|
@@ -15035,6 +15051,24 @@ const $6cc32821e9371a1c$var$FIRST_LAST_KEYS = [
|
|
|
15035
15051
|
...$6cc32821e9371a1c$var$FIRST_KEYS,
|
|
15036
15052
|
...$6cc32821e9371a1c$var$LAST_KEYS
|
|
15037
15053
|
];
|
|
15054
|
+
const $6cc32821e9371a1c$var$SUB_OPEN_KEYS = {
|
|
15055
|
+
ltr: [
|
|
15056
|
+
...$6cc32821e9371a1c$var$SELECTION_KEYS,
|
|
15057
|
+
'ArrowRight'
|
|
15058
|
+
],
|
|
15059
|
+
rtl: [
|
|
15060
|
+
...$6cc32821e9371a1c$var$SELECTION_KEYS,
|
|
15061
|
+
'ArrowLeft'
|
|
15062
|
+
]
|
|
15063
|
+
};
|
|
15064
|
+
const $6cc32821e9371a1c$var$SUB_CLOSE_KEYS = {
|
|
15065
|
+
ltr: [
|
|
15066
|
+
'ArrowLeft'
|
|
15067
|
+
],
|
|
15068
|
+
rtl: [
|
|
15069
|
+
'ArrowRight'
|
|
15070
|
+
]
|
|
15071
|
+
};
|
|
15038
15072
|
/* -------------------------------------------------------------------------------------------------
|
|
15039
15073
|
* Menu
|
|
15040
15074
|
* -----------------------------------------------------------------------------------------------*/ const $6cc32821e9371a1c$var$MENU_NAME = 'Menu';
|
|
@@ -15482,7 +15516,218 @@ const $6cc32821e9371a1c$export$bcdda4773debf5fa = /*#__PURE__*/ forwardRef((prop
|
|
|
15482
15516
|
/* -------------------------------------------------------------------------------------------------
|
|
15483
15517
|
* MenuSub
|
|
15484
15518
|
* -----------------------------------------------------------------------------------------------*/ const $6cc32821e9371a1c$var$SUB_NAME = 'MenuSub';
|
|
15485
|
-
$6cc32821e9371a1c$var$createMenuContext($6cc32821e9371a1c$var$SUB_NAME);
|
|
15519
|
+
const [$6cc32821e9371a1c$var$MenuSubProvider, $6cc32821e9371a1c$var$useMenuSubContext] = $6cc32821e9371a1c$var$createMenuContext($6cc32821e9371a1c$var$SUB_NAME);
|
|
15520
|
+
const $6cc32821e9371a1c$export$71bdb9d1e2909932 = (props)=>{
|
|
15521
|
+
const { __scopeMenu: __scopeMenu , children: children , open: open = false , onOpenChange: onOpenChange } = props;
|
|
15522
|
+
const parentMenuContext = $6cc32821e9371a1c$var$useMenuContext($6cc32821e9371a1c$var$SUB_NAME, __scopeMenu);
|
|
15523
|
+
const popperScope = $6cc32821e9371a1c$var$usePopperScope(__scopeMenu);
|
|
15524
|
+
const [trigger, setTrigger] = useState(null);
|
|
15525
|
+
const [content, setContent] = useState(null);
|
|
15526
|
+
const handleOpenChange = $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(onOpenChange); // Prevent the parent menu from reopening with open submenus.
|
|
15527
|
+
useEffect(()=>{
|
|
15528
|
+
if (parentMenuContext.open === false) handleOpenChange(false);
|
|
15529
|
+
return ()=>handleOpenChange(false)
|
|
15530
|
+
;
|
|
15531
|
+
}, [
|
|
15532
|
+
parentMenuContext.open,
|
|
15533
|
+
handleOpenChange
|
|
15534
|
+
]);
|
|
15535
|
+
return /*#__PURE__*/ createElement($cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9, popperScope, /*#__PURE__*/ createElement($6cc32821e9371a1c$var$MenuProvider, {
|
|
15536
|
+
scope: __scopeMenu,
|
|
15537
|
+
open: open,
|
|
15538
|
+
onOpenChange: handleOpenChange,
|
|
15539
|
+
content: content,
|
|
15540
|
+
onContentChange: setContent
|
|
15541
|
+
}, /*#__PURE__*/ createElement($6cc32821e9371a1c$var$MenuSubProvider, {
|
|
15542
|
+
scope: __scopeMenu,
|
|
15543
|
+
contentId: $1746a345f3d73bb7$export$f680877a34711e37(),
|
|
15544
|
+
triggerId: $1746a345f3d73bb7$export$f680877a34711e37(),
|
|
15545
|
+
trigger: trigger,
|
|
15546
|
+
onTriggerChange: setTrigger
|
|
15547
|
+
}, children)));
|
|
15548
|
+
};
|
|
15549
|
+
/* -------------------------------------------------------------------------------------------------
|
|
15550
|
+
* MenuSubTrigger
|
|
15551
|
+
* -----------------------------------------------------------------------------------------------*/ const $6cc32821e9371a1c$var$SUB_TRIGGER_NAME = 'MenuSubTrigger';
|
|
15552
|
+
const $6cc32821e9371a1c$export$5fbbb3ba7297405f = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
|
|
15553
|
+
const context = $6cc32821e9371a1c$var$useMenuContext($6cc32821e9371a1c$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
15554
|
+
const rootContext = $6cc32821e9371a1c$var$useMenuRootContext($6cc32821e9371a1c$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
15555
|
+
const subContext = $6cc32821e9371a1c$var$useMenuSubContext($6cc32821e9371a1c$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
15556
|
+
const contentContext = $6cc32821e9371a1c$var$useMenuContentContext($6cc32821e9371a1c$var$SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
15557
|
+
const openTimerRef = useRef(null);
|
|
15558
|
+
const { pointerGraceTimerRef: pointerGraceTimerRef , onPointerGraceIntentChange: onPointerGraceIntentChange } = contentContext;
|
|
15559
|
+
const scope = {
|
|
15560
|
+
__scopeMenu: props.__scopeMenu
|
|
15561
|
+
};
|
|
15562
|
+
const clearOpenTimer = useCallback(()=>{
|
|
15563
|
+
if (openTimerRef.current) window.clearTimeout(openTimerRef.current);
|
|
15564
|
+
openTimerRef.current = null;
|
|
15565
|
+
}, []);
|
|
15566
|
+
useEffect(()=>clearOpenTimer
|
|
15567
|
+
, [
|
|
15568
|
+
clearOpenTimer
|
|
15569
|
+
]);
|
|
15570
|
+
useEffect(()=>{
|
|
15571
|
+
const pointerGraceTimer = pointerGraceTimerRef.current;
|
|
15572
|
+
return ()=>{
|
|
15573
|
+
window.clearTimeout(pointerGraceTimer);
|
|
15574
|
+
onPointerGraceIntentChange(null);
|
|
15575
|
+
};
|
|
15576
|
+
}, [
|
|
15577
|
+
pointerGraceTimerRef,
|
|
15578
|
+
onPointerGraceIntentChange
|
|
15579
|
+
]);
|
|
15580
|
+
return /*#__PURE__*/ createElement($6cc32821e9371a1c$export$9fa5ebd18bee4d43, _extends({
|
|
15581
|
+
asChild: true
|
|
15582
|
+
}, scope), /*#__PURE__*/ createElement($6cc32821e9371a1c$var$MenuItemImpl, _extends({
|
|
15583
|
+
id: subContext.triggerId,
|
|
15584
|
+
"aria-haspopup": "menu",
|
|
15585
|
+
"aria-expanded": context.open,
|
|
15586
|
+
"aria-controls": subContext.contentId,
|
|
15587
|
+
"data-state": $6cc32821e9371a1c$var$getOpenState(context.open)
|
|
15588
|
+
}, props, {
|
|
15589
|
+
ref: $6ed0406888f73fc4$export$43e446d32b3d21af(forwardedRef, subContext.onTriggerChange) // This is redundant for mouse users but we cannot determine pointer type from
|
|
15590
|
+
,
|
|
15591
|
+
onClick: (event)=>{
|
|
15592
|
+
var _props$onClick;
|
|
15593
|
+
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, event);
|
|
15594
|
+
if (props.disabled || event.defaultPrevented) return;
|
|
15595
|
+
/**
|
|
15596
|
+
* We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)
|
|
15597
|
+
* and we rely heavily on `onFocusOutside` for submenus to close when switching
|
|
15598
|
+
* between separate submenus.
|
|
15599
|
+
*/ event.currentTarget.focus();
|
|
15600
|
+
if (!context.open) context.onOpenChange(true);
|
|
15601
|
+
},
|
|
15602
|
+
onPointerMove: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onPointerMove, $6cc32821e9371a1c$var$whenMouse((event)=>{
|
|
15603
|
+
contentContext.onItemEnter(event);
|
|
15604
|
+
if (event.defaultPrevented) return;
|
|
15605
|
+
if (!props.disabled && !context.open && !openTimerRef.current) {
|
|
15606
|
+
contentContext.onPointerGraceIntentChange(null);
|
|
15607
|
+
openTimerRef.current = window.setTimeout(()=>{
|
|
15608
|
+
context.onOpenChange(true);
|
|
15609
|
+
clearOpenTimer();
|
|
15610
|
+
}, 100);
|
|
15611
|
+
}
|
|
15612
|
+
})),
|
|
15613
|
+
onPointerLeave: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onPointerLeave, $6cc32821e9371a1c$var$whenMouse((event)=>{
|
|
15614
|
+
var _context$content;
|
|
15615
|
+
clearOpenTimer();
|
|
15616
|
+
const contentRect = (_context$content = context.content) === null || _context$content === void 0 ? void 0 : _context$content.getBoundingClientRect();
|
|
15617
|
+
if (contentRect) {
|
|
15618
|
+
var _context$content2;
|
|
15619
|
+
// TODO: make sure to update this when we change positioning logic
|
|
15620
|
+
const side = (_context$content2 = context.content) === null || _context$content2 === void 0 ? void 0 : _context$content2.dataset.side;
|
|
15621
|
+
const rightSide = side === 'right';
|
|
15622
|
+
const bleed = rightSide ? -5 : 5;
|
|
15623
|
+
const contentNearEdge = contentRect[rightSide ? 'left' : 'right'];
|
|
15624
|
+
const contentFarEdge = contentRect[rightSide ? 'right' : 'left'];
|
|
15625
|
+
contentContext.onPointerGraceIntentChange({
|
|
15626
|
+
area: [
|
|
15627
|
+
// consistently within polygon bounds
|
|
15628
|
+
{
|
|
15629
|
+
x: event.clientX + bleed,
|
|
15630
|
+
y: event.clientY
|
|
15631
|
+
},
|
|
15632
|
+
{
|
|
15633
|
+
x: contentNearEdge,
|
|
15634
|
+
y: contentRect.top
|
|
15635
|
+
},
|
|
15636
|
+
{
|
|
15637
|
+
x: contentFarEdge,
|
|
15638
|
+
y: contentRect.top
|
|
15639
|
+
},
|
|
15640
|
+
{
|
|
15641
|
+
x: contentFarEdge,
|
|
15642
|
+
y: contentRect.bottom
|
|
15643
|
+
},
|
|
15644
|
+
{
|
|
15645
|
+
x: contentNearEdge,
|
|
15646
|
+
y: contentRect.bottom
|
|
15647
|
+
}
|
|
15648
|
+
],
|
|
15649
|
+
side: side
|
|
15650
|
+
});
|
|
15651
|
+
window.clearTimeout(pointerGraceTimerRef.current);
|
|
15652
|
+
pointerGraceTimerRef.current = window.setTimeout(()=>contentContext.onPointerGraceIntentChange(null)
|
|
15653
|
+
, 300);
|
|
15654
|
+
} else {
|
|
15655
|
+
contentContext.onTriggerLeave(event);
|
|
15656
|
+
if (event.defaultPrevented) return; // There's 100ms where the user may leave an item before the submenu was opened.
|
|
15657
|
+
contentContext.onPointerGraceIntentChange(null);
|
|
15658
|
+
}
|
|
15659
|
+
})),
|
|
15660
|
+
onKeyDown: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onKeyDown, (event)=>{
|
|
15661
|
+
const isTypingAhead = contentContext.searchRef.current !== '';
|
|
15662
|
+
if (props.disabled || isTypingAhead && event.key === ' ') return;
|
|
15663
|
+
if ($6cc32821e9371a1c$var$SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {
|
|
15664
|
+
var _context$content3;
|
|
15665
|
+
context.onOpenChange(true); // The trigger may hold focus if opened via pointer interaction
|
|
15666
|
+
// so we ensure content is given focus again when switching to keyboard.
|
|
15667
|
+
(_context$content3 = context.content) === null || _context$content3 === void 0 || _context$content3.focus(); // prevent window from scrolling
|
|
15668
|
+
event.preventDefault();
|
|
15669
|
+
}
|
|
15670
|
+
})
|
|
15671
|
+
})));
|
|
15672
|
+
});
|
|
15673
|
+
/* -------------------------------------------------------------------------------------------------
|
|
15674
|
+
* MenuSubContent
|
|
15675
|
+
* -----------------------------------------------------------------------------------------------*/ const $6cc32821e9371a1c$var$SUB_CONTENT_NAME = 'MenuSubContent';
|
|
15676
|
+
const $6cc32821e9371a1c$export$e7142ab31822bde6 = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
|
|
15677
|
+
const portalContext = $6cc32821e9371a1c$var$usePortalContext($6cc32821e9371a1c$var$CONTENT_NAME, props.__scopeMenu);
|
|
15678
|
+
const { forceMount: forceMount = portalContext.forceMount , ...subContentProps } = props;
|
|
15679
|
+
const context = $6cc32821e9371a1c$var$useMenuContext($6cc32821e9371a1c$var$CONTENT_NAME, props.__scopeMenu);
|
|
15680
|
+
const rootContext = $6cc32821e9371a1c$var$useMenuRootContext($6cc32821e9371a1c$var$CONTENT_NAME, props.__scopeMenu);
|
|
15681
|
+
const subContext = $6cc32821e9371a1c$var$useMenuSubContext($6cc32821e9371a1c$var$SUB_CONTENT_NAME, props.__scopeMenu);
|
|
15682
|
+
const ref = useRef(null);
|
|
15683
|
+
const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(forwardedRef, ref);
|
|
15684
|
+
return /*#__PURE__*/ createElement($6cc32821e9371a1c$var$Collection.Provider, {
|
|
15685
|
+
scope: props.__scopeMenu
|
|
15686
|
+
}, /*#__PURE__*/ createElement($921a889cee6df7e8$export$99c2b779aa4e8b8b, {
|
|
15687
|
+
present: forceMount || context.open
|
|
15688
|
+
}, /*#__PURE__*/ createElement($6cc32821e9371a1c$var$Collection.Slot, {
|
|
15689
|
+
scope: props.__scopeMenu
|
|
15690
|
+
}, /*#__PURE__*/ createElement($6cc32821e9371a1c$var$MenuContentImpl, _extends({
|
|
15691
|
+
id: subContext.contentId,
|
|
15692
|
+
"aria-labelledby": subContext.triggerId
|
|
15693
|
+
}, subContentProps, {
|
|
15694
|
+
ref: composedRefs,
|
|
15695
|
+
align: "start",
|
|
15696
|
+
side: rootContext.dir === 'rtl' ? 'left' : 'right',
|
|
15697
|
+
disableOutsidePointerEvents: false,
|
|
15698
|
+
disableOutsideScroll: false,
|
|
15699
|
+
trapFocus: false,
|
|
15700
|
+
onOpenAutoFocus: (event)=>{
|
|
15701
|
+
var _ref$current;
|
|
15702
|
+
// when opening a submenu, focus content for keyboard users only
|
|
15703
|
+
if (rootContext.isUsingKeyboardRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus();
|
|
15704
|
+
event.preventDefault();
|
|
15705
|
+
} // The menu might close because of focusing another menu item in the parent menu. We
|
|
15706
|
+
,
|
|
15707
|
+
onCloseAutoFocus: (event)=>event.preventDefault()
|
|
15708
|
+
,
|
|
15709
|
+
onFocusOutside: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onFocusOutside, (event)=>{
|
|
15710
|
+
// We prevent closing when the trigger is focused to avoid triggering a re-open animation
|
|
15711
|
+
// on pointer interaction.
|
|
15712
|
+
if (event.target !== subContext.trigger) context.onOpenChange(false);
|
|
15713
|
+
}),
|
|
15714
|
+
onEscapeKeyDown: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onEscapeKeyDown, (event)=>{
|
|
15715
|
+
rootContext.onClose(); // ensure pressing escape in submenu doesn't escape full screen mode
|
|
15716
|
+
event.preventDefault();
|
|
15717
|
+
}),
|
|
15718
|
+
onKeyDown: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onKeyDown, (event)=>{
|
|
15719
|
+
// Submenu key events bubble through portals. We only care about keys in this menu.
|
|
15720
|
+
const isKeyDownInside = event.currentTarget.contains(event.target);
|
|
15721
|
+
const isCloseKey = $6cc32821e9371a1c$var$SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);
|
|
15722
|
+
if (isKeyDownInside && isCloseKey) {
|
|
15723
|
+
var _subContext$trigger;
|
|
15724
|
+
context.onOpenChange(false); // We focus manually because we prevented it in `onCloseAutoFocus`
|
|
15725
|
+
(_subContext$trigger = subContext.trigger) === null || _subContext$trigger === void 0 || _subContext$trigger.focus(); // prevent window from scrolling
|
|
15726
|
+
event.preventDefault();
|
|
15727
|
+
}
|
|
15728
|
+
})
|
|
15729
|
+
})))));
|
|
15730
|
+
});
|
|
15486
15731
|
/* -----------------------------------------------------------------------------------------------*/ function $6cc32821e9371a1c$var$getOpenState(open) {
|
|
15487
15732
|
return open ? 'open' : 'closed';
|
|
15488
15733
|
}
|
|
@@ -15565,6 +15810,9 @@ const $6cc32821e9371a1c$export$b04be29aa201d4f5 = $6cc32821e9371a1c$export$dd37b
|
|
|
15565
15810
|
const $6cc32821e9371a1c$export$6d08773d2e66f8f2 = $6cc32821e9371a1c$export$2ce376c2cc3355c8;
|
|
15566
15811
|
const $6cc32821e9371a1c$export$1ff3c3f08ae963c0 = $6cc32821e9371a1c$export$1cec7dcdd713e220;
|
|
15567
15812
|
const $6cc32821e9371a1c$export$21b07c8f274aebd5 = $6cc32821e9371a1c$export$bcdda4773debf5fa;
|
|
15813
|
+
const $6cc32821e9371a1c$export$d7a01e11500dfb6f = $6cc32821e9371a1c$export$71bdb9d1e2909932;
|
|
15814
|
+
const $6cc32821e9371a1c$export$2ea8a7a591ac5eac = $6cc32821e9371a1c$export$5fbbb3ba7297405f;
|
|
15815
|
+
const $6cc32821e9371a1c$export$6d4de93b380beddf = $6cc32821e9371a1c$export$e7142ab31822bde6;
|
|
15568
15816
|
|
|
15569
15817
|
/* -------------------------------------------------------------------------------------------------
|
|
15570
15818
|
* DropdownMenu
|
|
@@ -15711,6 +15959,43 @@ const $d08ef79370b62062$export$34b8980744021ec5 = /*#__PURE__*/ forwardRef((prop
|
|
|
15711
15959
|
ref: forwardedRef
|
|
15712
15960
|
}));
|
|
15713
15961
|
});
|
|
15962
|
+
/* -------------------------------------------------------------------------------------------------
|
|
15963
|
+
* DropdownMenuSub
|
|
15964
|
+
* -----------------------------------------------------------------------------------------------*/ const $d08ef79370b62062$export$2f307d81a64f5442 = (props)=>{
|
|
15965
|
+
const { __scopeDropdownMenu: __scopeDropdownMenu , children: children , open: openProp , onOpenChange: onOpenChange , defaultOpen: defaultOpen } = props;
|
|
15966
|
+
const menuScope = $d08ef79370b62062$var$useMenuScope(__scopeDropdownMenu);
|
|
15967
|
+
const [open = false, setOpen] = $71cd76cc60e0454e$export$6f32135080cb4c3({
|
|
15968
|
+
prop: openProp,
|
|
15969
|
+
defaultProp: defaultOpen,
|
|
15970
|
+
onChange: onOpenChange
|
|
15971
|
+
});
|
|
15972
|
+
return /*#__PURE__*/ createElement($6cc32821e9371a1c$export$d7a01e11500dfb6f, _extends({}, menuScope, {
|
|
15973
|
+
open: open,
|
|
15974
|
+
onOpenChange: setOpen
|
|
15975
|
+
}), children);
|
|
15976
|
+
};
|
|
15977
|
+
const $d08ef79370b62062$export$21dcb7ec56f874cf = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
|
|
15978
|
+
const { __scopeDropdownMenu: __scopeDropdownMenu , ...subTriggerProps } = props;
|
|
15979
|
+
const menuScope = $d08ef79370b62062$var$useMenuScope(__scopeDropdownMenu);
|
|
15980
|
+
return /*#__PURE__*/ createElement($6cc32821e9371a1c$export$2ea8a7a591ac5eac, _extends({}, menuScope, subTriggerProps, {
|
|
15981
|
+
ref: forwardedRef
|
|
15982
|
+
}));
|
|
15983
|
+
});
|
|
15984
|
+
const $d08ef79370b62062$export$f34ec8bc2482cc5f = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
|
|
15985
|
+
const { __scopeDropdownMenu: __scopeDropdownMenu , ...subContentProps } = props;
|
|
15986
|
+
const menuScope = $d08ef79370b62062$var$useMenuScope(__scopeDropdownMenu);
|
|
15987
|
+
return /*#__PURE__*/ createElement($6cc32821e9371a1c$export$6d4de93b380beddf, _extends({}, menuScope, subContentProps, {
|
|
15988
|
+
ref: forwardedRef,
|
|
15989
|
+
style: {
|
|
15990
|
+
...props.style,
|
|
15991
|
+
'--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',
|
|
15992
|
+
'--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)',
|
|
15993
|
+
'--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)',
|
|
15994
|
+
'--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)',
|
|
15995
|
+
'--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)'
|
|
15996
|
+
}
|
|
15997
|
+
}));
|
|
15998
|
+
});
|
|
15714
15999
|
/* -----------------------------------------------------------------------------------------------*/ const $d08ef79370b62062$export$be92b6f5f03c0fe9 = $d08ef79370b62062$export$e44a253a59704894;
|
|
15715
16000
|
const $d08ef79370b62062$export$41fb9f06171c75f4 = $d08ef79370b62062$export$d2469213b3befba9;
|
|
15716
16001
|
const $d08ef79370b62062$export$7c6e2c02157bb7d2 = $d08ef79370b62062$export$6e76d93a37c01248;
|
|
@@ -15718,38 +16003,62 @@ const $d08ef79370b62062$export$b04be29aa201d4f5 = $d08ef79370b62062$export$76e48
|
|
|
15718
16003
|
const $d08ef79370b62062$export$6d08773d2e66f8f2 = $d08ef79370b62062$export$ed97964d1871885d;
|
|
15719
16004
|
const $d08ef79370b62062$export$1ff3c3f08ae963c0 = $d08ef79370b62062$export$da160178fd3bc7e9;
|
|
15720
16005
|
const $d08ef79370b62062$export$21b07c8f274aebd5 = $d08ef79370b62062$export$34b8980744021ec5;
|
|
16006
|
+
const $d08ef79370b62062$export$d7a01e11500dfb6f = $d08ef79370b62062$export$2f307d81a64f5442;
|
|
16007
|
+
const $d08ef79370b62062$export$2ea8a7a591ac5eac = $d08ef79370b62062$export$21dcb7ec56f874cf;
|
|
16008
|
+
const $d08ef79370b62062$export$6d4de93b380beddf = $d08ef79370b62062$export$f34ec8bc2482cc5f;
|
|
15721
16009
|
|
|
15722
16010
|
const borderStyles = [
|
|
15723
16011
|
'tw-border-solid',
|
|
15724
16012
|
'tw-border',
|
|
15725
16013
|
'tw-rounded-sm',
|
|
15726
16014
|
'tw-border-sq-disabled-gray',
|
|
15727
|
-
'dark:tw-border-gray-
|
|
16015
|
+
'dark:tw-border-gray-500',
|
|
15728
16016
|
].join(' ');
|
|
15729
16017
|
const bgStyles = ['tw-bg-sq-white', 'dark:tw-bg-sq-dark-background'].join(' ');
|
|
15730
16018
|
const disabledClasses = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
|
|
15731
|
-
const ButtonWithDropdown = ({ dropdownItems, triggerIcon, id, extraClassNames, containerTestId, disabled = false, align = 'end', placement = 'bottom', placementOffset =
|
|
16019
|
+
const ButtonWithDropdown = ({ dropdownItems, triggerIcon, id, extraClassNames, containerTestId, disabled = false, align = 'end', placement = 'bottom', placementOffset = 5, alignOffset = -35, hasArrow = false, onOpenChange, isOpen, setFocusOnTriggerOnClose = true, keepFocusInsideDropdown = true, ...tooltipProps }) => {
|
|
15732
16020
|
const tooltipData = getQTipData(tooltipProps);
|
|
15733
16021
|
return (React.createElement($d08ef79370b62062$export$be92b6f5f03c0fe9, { defaultOpen: false, open: isOpen, onOpenChange: onOpenChange, modal: keepFocusInsideDropdown },
|
|
15734
16022
|
React.createElement($d08ef79370b62062$export$41fb9f06171c75f4, { id: id, className: `tw-border-none focus-visible:tw-outline-none focus:tw-outline-none focus-within:tw-outline-none`, disabled: disabled },
|
|
15735
16023
|
React.createElement("div", { ...tooltipData, className: `tw-bg-transparent tw-flex tw-flex-col tw-items-center focus-visible:tw-outline-none focus:tw-outline-none focus-within:tw-outline-none ${disabled ? disabledClasses : ''} ${extraClassNames || ''}` }, triggerIcon)),
|
|
15736
16024
|
React.createElement($d08ef79370b62062$export$7c6e2c02157bb7d2, { sideOffset: placementOffset, side: placement, align: align, alignOffset: alignOffset, asChild: true, onCloseAutoFocus: (e) => !setFocusOnTriggerOnClose && e.preventDefault(), className: "focus-visible:tw-outline-none tw-outline-none" },
|
|
15737
16025
|
React.createElement("div", { "data-testid": containerTestId, className: bgStyles +
|
|
15738
|
-
' tw-relative tw-z-[1000] tw-min-w-6 focus-visible:tw-outline-none tw-outline-none
|
|
16026
|
+
' tw-relative tw-z-[1000] tw-min-w-6 tw-py-2 focus-visible:tw-outline-none tw-outline-none' +
|
|
16027
|
+
' data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out' +
|
|
15739
16028
|
' forceFont data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade ' +
|
|
15740
16029
|
borderStyles },
|
|
15741
16030
|
hasArrow && (React.createElement($d08ef79370b62062$export$21b07c8f274aebd5, { asChild: true },
|
|
15742
|
-
React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[
|
|
16031
|
+
React.createElement("div", { className: " tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500 tw-mt-[-7px]" }))),
|
|
15743
16032
|
dropdownItems.map((item, index) => {
|
|
15744
|
-
|
|
15745
|
-
|
|
15746
|
-
|
|
16033
|
+
if (item.isLabel) {
|
|
16034
|
+
return (React.createElement($d08ef79370b62062$export$b04be29aa201d4f5, { key: (item.label || '') + index, className: item.containerExtraClassNames },
|
|
16035
|
+
item.icon && (React.createElement(Icon, { icon: item.icon, testId: item.iconTestId, type: "text", color: item.iconColor, extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" })),
|
|
16036
|
+
React.createElement("div", { "data-testid": item.labelTestId, className: "tw-text-[13px] tw-ml-1" }, item.label)));
|
|
16037
|
+
}
|
|
16038
|
+
if (Array.isArray(item.subMenuItems) && item.subMenuItems.length > 0) {
|
|
16039
|
+
return (React.createElement($d08ef79370b62062$export$d7a01e11500dfb6f, { key: item.label + index },
|
|
16040
|
+
React.createElement($d08ef79370b62062$export$2ea8a7a591ac5eac, { id: id, className: `tw-cursor-pointer tw-flex tw-justify-between dark:tw-text-sq-white hover:tw-bg-sq-gray-highlight dark:hover:tw-bg-sq-gray-highlight-dark tw-leading-none tw-items-center tw-h-[27px] tw-pl-[19px] tw-relative tw-select-none tw-outline-none data-[disabled]:tw-text-sq-disabled-gray data-[disabled]:tw-pointer-events-none ${item.containerExtraClassNames || ''}`, "data-testid": item.testId, disabled: item.disabled },
|
|
16041
|
+
React.createElement("div", { className: "tw-flex" },
|
|
16042
|
+
item.icon && (React.createElement(Icon, { icon: item.icon, extraClassNames: `tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px] ${item.iconExtraClassNames || ''}` })),
|
|
16043
|
+
React.createElement("div", { "data-testid": item.labelTestId, "data-customid": item.labelCustomId, className: `tw-text-[13px] tw-ml-1 ${item.labelClasses}` }, item.label)),
|
|
16044
|
+
React.createElement(Icon, { small: true, icon: "fc-arrow-dropdown -tw-rotate-90", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px] tw-ml-4 tw-text-[8px] tw-justify-center tw-flex" })),
|
|
16045
|
+
React.createElement($d08ef79370b62062$export$6d4de93b380beddf, { className: "focus-visible:tw-outline-none tw-outline-none" },
|
|
16046
|
+
React.createElement("div", { "data-testid": containerTestId, className: bgStyles +
|
|
16047
|
+
' tw-relative tw-z-[1000] tw-min-w-6 tw-py-2 focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out' +
|
|
16048
|
+
' forceFont data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade ' +
|
|
16049
|
+
borderStyles }, item.subMenuItems.map((subItem, subIndex) => {
|
|
16050
|
+
return (React.createElement($d08ef79370b62062$export$6d08773d2e66f8f2, { key: subItem.label + subIndex, onSelect: subItem.onClick, "data-qtip-text": subItem.tooltip, className: "tw-cursor-pointer tw-flex dark:tw-text-sq-white hover:tw-bg-sq-gray-highlight dark:hover:tw-bg-sq-gray-highlight-dark tw-leading-none tw-items-center tw-h-[27px] tw-px-[19px] tw-relative tw-select-none tw-outline-none data-[disabled]:tw-text-sq-disabled-gray data-[disabled]:tw-pointer-events-none", disabled: subItem.disabled },
|
|
16051
|
+
subItem.iconClass && (React.createElement(Icon, { icon: subItem.iconClass, extraClassNames: `tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]` })),
|
|
16052
|
+
React.createElement("div", { className: `tw-text-[13px] tw-ml-1` }, subItem.label)));
|
|
16053
|
+
})))));
|
|
16054
|
+
}
|
|
16055
|
+
return (React.createElement("div", { key: item.label + index },
|
|
15747
16056
|
React.createElement($d08ef79370b62062$export$6d08773d2e66f8f2, { key: item.label + index, "data-customid": item.itemCustomId, onSelect: (e) => {
|
|
15748
16057
|
item.onClick(e);
|
|
15749
|
-
}, className: `tw-cursor-pointer tw-flex dark:tw-text-sq-white hover:tw-bg-sq-
|
|
16058
|
+
}, className: `tw-cursor-pointer tw-flex dark:tw-text-sq-white hover:tw-bg-sq-gray-highlight dark:hover:tw-bg-sq-gray-highlight-dark tw-leading-none tw-items-center tw-h-[27px] tw-px-[19px] tw-relative tw-select-none tw-outline-none data-[disabled]:tw-text-sq-disabled-gray data-[disabled]:tw-pointer-events-none ${item.containerExtraClassNames || ''}`, "data-testid": item.testId, disabled: item.disabled },
|
|
15750
16059
|
item.icon && (React.createElement(Icon, { icon: item.icon, testId: item.iconTestId, type: (item.iconType || 'text'), color: item.iconColor, customId: item.iconCustomId, extraClassNames: `tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px] ${item.iconExtraClassNames || ''}` })),
|
|
15751
16060
|
React.createElement("div", { "data-testid": item.labelTestId, "data-customid": item.labelCustomId, className: `tw-text-[13px] tw-ml-1 ${item.labelClasses}` }, item.label)),
|
|
15752
|
-
item.hasDivider && (React.createElement($d08ef79370b62062$export$1ff3c3f08ae963c0, { "data-testid": `dropdown-divider-${index}`, className: "tw-h-[1px] tw-bg-sq-disabled-gray dark:tw-bg-gray-
|
|
16061
|
+
item.hasDivider && (React.createElement($d08ef79370b62062$export$1ff3c3f08ae963c0, { "data-testid": `dropdown-divider-${index}`, className: "tw-h-[1px] tw-bg-sq-disabled-gray dark:tw-bg-gray-500 tw-my-[8px]" }))));
|
|
15753
16062
|
})))));
|
|
15754
16063
|
};
|
|
15755
16064
|
|