@frontify/fondue 12.0.0-beta.342 → 12.0.0-beta.343
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.
|
@@ -12,59 +12,60 @@ import { useContainScroll as Q } from "./hooks/useContainScroll.es.js";
|
|
|
12
12
|
import { useOverlayPositionWithBottomMargin as X } from "./hooks/useOverlayPositionWithBottomMargin.es.js";
|
|
13
13
|
import { Overlay as Z } from "./Overlay.es.js";
|
|
14
14
|
import { LegacyFlyoutFooter as $ } from "./FlyoutFooter.es.js";
|
|
15
|
-
const
|
|
15
|
+
const To = "#eaebeb", bo = "10px";
|
|
16
16
|
var oo = /* @__PURE__ */ ((o) => (o.Top = "top", o.Bottom = "bottom", o.TopLeft = "top left", o.BottomLeft = "bottom left", o.TopRight = "top right", o.BottomRight = "bottom right", o.Right = "right", o.Left = "left", o))(oo || {});
|
|
17
17
|
const to = ({
|
|
18
18
|
trigger: o,
|
|
19
19
|
isTriggerDisabled: p = !1,
|
|
20
|
-
decorator:
|
|
21
|
-
onConfirm:
|
|
22
|
-
onCancel:
|
|
23
|
-
children:
|
|
20
|
+
decorator: u,
|
|
21
|
+
onConfirm: a,
|
|
22
|
+
onCancel: c,
|
|
23
|
+
children: g,
|
|
24
24
|
onOpenChange: d,
|
|
25
25
|
isOpen: t = !1,
|
|
26
|
-
title:
|
|
27
|
-
badges:
|
|
28
|
-
hug:
|
|
29
|
-
fitContent:
|
|
26
|
+
title: v = "",
|
|
27
|
+
badges: T = [],
|
|
28
|
+
hug: b = !0,
|
|
29
|
+
fitContent: h = !1,
|
|
30
30
|
fixedHeader: y,
|
|
31
31
|
fixedFooter: R,
|
|
32
32
|
contentMinHeight: F,
|
|
33
33
|
legacyFooter: L = !0,
|
|
34
|
-
placement:
|
|
35
|
-
offset:
|
|
36
|
-
updatePositionOnContentChange:
|
|
34
|
+
placement: O = "bottom left",
|
|
35
|
+
offset: w,
|
|
36
|
+
updatePositionOnContentChange: x = !1
|
|
37
37
|
}) => {
|
|
38
|
-
const n = z({ isOpen: t, onOpenChange: d }), { toggle:
|
|
38
|
+
const n = z({ isOpen: t, onOpenChange: d }), { toggle: C, close: D } = n, r = i(null), s = i(null), f = i(null), { isFocusVisible: l, focusProps: B } = N(), { triggerProps: E, overlayProps: I } = W(
|
|
39
39
|
{ type: "dialog" },
|
|
40
40
|
n,
|
|
41
41
|
r
|
|
42
|
-
), { positionProps:
|
|
42
|
+
), { positionProps: P } = X({
|
|
43
43
|
triggerRef: r,
|
|
44
44
|
overlayRef: s,
|
|
45
45
|
scrollRef: f,
|
|
46
46
|
isOpen: t,
|
|
47
|
-
placement:
|
|
48
|
-
offset:
|
|
49
|
-
updatePositionOnContentChange:
|
|
50
|
-
}), { buttonProps:
|
|
51
|
-
|
|
47
|
+
placement: O,
|
|
48
|
+
offset: w,
|
|
49
|
+
updatePositionOnContentChange: x
|
|
50
|
+
}), { buttonProps: S, isPressed: _ } = H(
|
|
51
|
+
// @ts-expect-error preventFocusOnPress is an undocumented property in react-aria
|
|
52
|
+
{ onPress: () => C(), elementType: "div", isDisabled: p, preventFocusOnPress: !0 },
|
|
52
53
|
r
|
|
53
54
|
);
|
|
54
55
|
K(() => {
|
|
55
56
|
const U = j();
|
|
56
57
|
return () => U();
|
|
57
58
|
}, []), Q(s, { isDisabled: !t });
|
|
58
|
-
const m = q(
|
|
59
|
+
const m = q(S, E, B, {
|
|
59
60
|
"aria-label": "Toggle Flyout Menu"
|
|
60
|
-
}), M = typeof o == "function" ? o(m, r, { isFocusVisible: l, isPressed:
|
|
61
|
+
}), M = typeof o == "function" ? o(m, r, { isFocusVisible: l, isPressed: _ }) : /* @__PURE__ */ e(
|
|
61
62
|
"div",
|
|
62
63
|
{
|
|
63
64
|
...m,
|
|
64
65
|
ref: r,
|
|
65
66
|
className: J([
|
|
66
67
|
"tw-outline-none tw-rounded",
|
|
67
|
-
|
|
68
|
+
b ? "tw-mx-3" : "tw-w-full",
|
|
68
69
|
l && A
|
|
69
70
|
]),
|
|
70
71
|
"data-test-id": "flyout-trigger",
|
|
@@ -76,28 +77,28 @@ const to = ({
|
|
|
76
77
|
t && /* @__PURE__ */ e(k, { children: /* @__PURE__ */ e(G, { restoreFocus: !0, contain: !0, children: /* @__PURE__ */ e(
|
|
77
78
|
Z,
|
|
78
79
|
{
|
|
79
|
-
title:
|
|
80
|
-
badges:
|
|
81
|
-
decorator:
|
|
80
|
+
title: v,
|
|
81
|
+
badges: T,
|
|
82
|
+
decorator: u,
|
|
82
83
|
isOpen: t,
|
|
83
|
-
onClose:
|
|
84
|
+
onClose: D,
|
|
84
85
|
overlayTriggerProps: I,
|
|
85
|
-
positionProps:
|
|
86
|
+
positionProps: P,
|
|
86
87
|
fixedHeader: y,
|
|
87
|
-
fixedFooter: L ? /* @__PURE__ */ e($, { onConfirm:
|
|
88
|
+
fixedFooter: L ? /* @__PURE__ */ e($, { onConfirm: a, onCancel: c }) : R,
|
|
88
89
|
ref: s,
|
|
89
90
|
scrollRef: f,
|
|
90
|
-
fitContent:
|
|
91
|
+
fitContent: h,
|
|
91
92
|
contentMinHeight: F,
|
|
92
|
-
children:
|
|
93
|
+
children: g
|
|
93
94
|
}
|
|
94
95
|
) }) })
|
|
95
96
|
] });
|
|
96
97
|
};
|
|
97
98
|
to.displayName = "FondueFlyout";
|
|
98
99
|
export {
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
To as FLYOUT_DIVIDER_COLOR,
|
|
101
|
+
bo as FLYOUT_DIVIDER_HEIGHT,
|
|
101
102
|
to as Flyout,
|
|
102
103
|
oo as FlyoutPlacement
|
|
103
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Flyout.es.js","sources":["../../../src/components/Flyout/Flyout.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { BadgeProps } from '@components/Badge';\nimport { watchModals } from '@react-aria/aria-modal-polyfill';\nimport { useButton } from '@react-aria/button';\nimport { FocusScope, useFocusRing } from '@react-aria/focus';\nimport { OverlayContainer, useOverlayTrigger } from '@react-aria/overlays';\nimport { mergeProps } from '@react-aria/utils';\nimport { useOverlayTriggerState } from '@react-stately/overlays';\nimport { FOCUS_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\nimport { HTMLAttributes, MouseEvent, MutableRefObject, ReactElement, ReactNode, useEffect, useRef } from 'react';\nimport { LegacyFlyoutFooter } from '.';\nimport { useContainScroll } from './hooks/useContainScroll';\nimport { useOverlayPositionWithBottomMargin } from './hooks/useOverlayPositionWithBottomMargin';\nimport { Overlay } from './Overlay';\n\nexport const FLYOUT_DIVIDER_COLOR = '#eaebeb';\nexport const FLYOUT_DIVIDER_HEIGHT = '10px';\n\nexport enum FlyoutPlacement {\n Top = 'top',\n Bottom = 'bottom',\n TopLeft = 'top left',\n BottomLeft = 'bottom left',\n TopRight = 'top right',\n BottomRight = 'bottom right',\n Right = 'right',\n Left = 'left',\n}\n\nexport type FlyoutProps = {\n trigger:\n | ReactNode\n | ((\n triggerProps: HTMLAttributes<HTMLElement>,\n ref: MutableRefObject<HTMLElement | null>,\n triggerState: { isFocusVisible: boolean; isPressed: boolean },\n ) => JSX.Element);\n onCancel?: () => void;\n onConfirm?: (event?: MouseEvent<HTMLButtonElement>) => void;\n title?: string;\n decorator?: ReactNode;\n badges?: BadgeProps[];\n hug?: boolean;\n fitContent?: boolean;\n isOpen?: boolean;\n onOpenChange: (isOpen: boolean) => void;\n fixedHeader?: ReactNode;\n fixedFooter?: ReactNode;\n contentMinHeight?: number;\n /**\n * The legacy footer buttons section inside of the flyout will be deleted in the future.\n * @deprecated Pass the FlyoutFooter component with buttons to the Flyout component.\n */\n legacyFooter?: boolean;\n placement?: FlyoutPlacement;\n offset?: number;\n updatePositionOnContentChange?: boolean;\n isTriggerDisabled?: boolean;\n children?: ReactNode;\n};\n\nexport const Flyout = ({\n trigger,\n isTriggerDisabled = false,\n decorator,\n onConfirm,\n onCancel,\n children,\n onOpenChange,\n isOpen = false,\n title = '',\n badges = [],\n hug = true,\n fitContent = false,\n fixedHeader,\n fixedFooter,\n contentMinHeight,\n legacyFooter = true,\n placement = FlyoutPlacement.BottomLeft,\n offset,\n updatePositionOnContentChange = false,\n}: FlyoutProps): ReactElement => {\n const state = useOverlayTriggerState({ isOpen, onOpenChange });\n const { toggle, close } = state;\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const { isFocusVisible, focusProps } = useFocusRing();\n\n const { triggerProps, overlayProps: overlayTriggerProps } = useOverlayTrigger(\n { type: 'dialog' },\n state,\n triggerRef,\n );\n\n const { positionProps } = useOverlayPositionWithBottomMargin({\n triggerRef,\n overlayRef,\n scrollRef,\n isOpen,\n placement,\n offset,\n updatePositionOnContentChange,\n });\n\n const { buttonProps, isPressed } = useButton(\n { onPress: () => toggle(), elementType: 'div', isDisabled: isTriggerDisabled },\n triggerRef,\n );\n\n useEffect(() => {\n const revert = watchModals();\n\n return () => revert();\n }, []);\n\n useContainScroll(overlayRef, { isDisabled: !isOpen });\n\n const combinedTriggerProps = mergeProps(buttonProps, triggerProps, focusProps, {\n 'aria-label': 'Toggle Flyout Menu',\n });\n\n const triggerComponent =\n typeof trigger === 'function' ? (\n trigger(combinedTriggerProps, triggerRef, { isFocusVisible, isPressed })\n ) : (\n <div\n {...combinedTriggerProps}\n ref={triggerRef}\n className={merge([\n 'tw-outline-none tw-rounded',\n hug ? 'tw-mx-3' : 'tw-w-full',\n isFocusVisible && FOCUS_STYLE,\n ])}\n data-test-id=\"flyout-trigger\"\n >\n {trigger}\n </div>\n );\n\n return (\n <>\n {triggerComponent}\n {isOpen && (\n <OverlayContainer>\n <FocusScope restoreFocus contain>\n <Overlay\n title={title}\n badges={badges}\n decorator={decorator}\n isOpen={isOpen}\n onClose={close}\n overlayTriggerProps={overlayTriggerProps}\n positionProps={positionProps}\n fixedHeader={fixedHeader}\n fixedFooter={\n legacyFooter ? (\n <LegacyFlyoutFooter onConfirm={onConfirm} onCancel={onCancel} />\n ) : (\n fixedFooter\n )\n }\n ref={overlayRef}\n scrollRef={scrollRef}\n fitContent={fitContent}\n contentMinHeight={contentMinHeight}\n >\n {children}\n </Overlay>\n </FocusScope>\n </OverlayContainer>\n )}\n </>\n );\n};\nFlyout.displayName = 'FondueFlyout';\n"],"names":["FLYOUT_DIVIDER_COLOR","FLYOUT_DIVIDER_HEIGHT","FlyoutPlacement","Flyout","trigger","isTriggerDisabled","decorator","onConfirm","onCancel","children","onOpenChange","isOpen","title","badges","hug","fitContent","fixedHeader","fixedFooter","contentMinHeight","legacyFooter","placement","offset","updatePositionOnContentChange","state","useOverlayTriggerState","toggle","close","triggerRef","useRef","overlayRef","scrollRef","isFocusVisible","focusProps","useFocusRing","triggerProps","overlayTriggerProps","useOverlayTrigger","positionProps","useOverlayPositionWithBottomMargin","buttonProps","isPressed","useButton","useEffect","revert","watchModals","useContainScroll","combinedTriggerProps","mergeProps","triggerComponent","jsx","merge","FOCUS_STYLE","jsxs","Fragment","OverlayContainer","FocusScope","Overlay","LegacyFlyoutFooter"],"mappings":";;;;;;;;;;;;;;AAiBO,MAAMA,KAAuB,WACvBC,KAAwB;AAEzB,IAAAC,uBAAAA,OACRA,EAAA,MAAM,OACNA,EAAA,SAAS,UACTA,EAAA,UAAU,YACVA,EAAA,aAAa,eACbA,EAAA,WAAW,aACXA,EAAA,cAAc,gBACdA,EAAA,QAAQ,SACRA,EAAA,OAAO,QARCA,IAAAA,MAAA,CAAA,CAAA;AA2CL,MAAMC,KAAS,CAAC;AAAA,EACnB,SAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS,CAAC;AAAA,EACV,KAAAC,IAAM;AAAA,EACN,YAAAC,IAAa;AAAA,EACb,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,WAAAC,IAAY;AAAA,EACZ,QAAAC;AAAA,EACA,+BAAAC,IAAgC;AACpC,MAAiC;AAC7B,QAAMC,IAAQC,EAAuB,EAAE,QAAAb,GAAQ,cAAAD,EAAc,CAAA,GACvD,EAAE,QAAAe,GAAQ,OAAAC,EAAU,IAAAH,GACpBI,IAAaC,EAA8B,IAAI,GAC/CC,IAAaD,EAA8B,IAAI,GAC/CE,IAAYF,EAA8B,IAAI,GAC9C,EAAE,gBAAAG,GAAgB,YAAAC,EAAW,IAAIC,EAAa,GAE9C,EAAE,cAAAC,GAAc,cAAcC,EAAwB,IAAAC;AAAA,IACxD,EAAE,MAAM,SAAS;AAAA,IACjBb;AAAA,IACAI;AAAA,EAAA,GAGE,EAAE,eAAAU,EAAc,IAAIC,EAAmC;AAAA,IACzD,YAAAX;AAAA,IACA,YAAAE;AAAA,IACA,WAAAC;AAAA,IACA,QAAAnB;AAAA,IACA,WAAAS;AAAA,IACA,QAAAC;AAAA,IACA,+BAAAC;AAAA,EAAA,CACH,GAEK,EAAE,aAAAiB,GAAa,WAAAC,EAAA,IAAcC;AAAA,
|
|
1
|
+
{"version":3,"file":"Flyout.es.js","sources":["../../../src/components/Flyout/Flyout.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { BadgeProps } from '@components/Badge';\nimport { watchModals } from '@react-aria/aria-modal-polyfill';\nimport { useButton } from '@react-aria/button';\nimport { FocusScope, useFocusRing } from '@react-aria/focus';\nimport { OverlayContainer, useOverlayTrigger } from '@react-aria/overlays';\nimport { mergeProps } from '@react-aria/utils';\nimport { useOverlayTriggerState } from '@react-stately/overlays';\nimport { FOCUS_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\nimport { HTMLAttributes, MouseEvent, MutableRefObject, ReactElement, ReactNode, useEffect, useRef } from 'react';\nimport { LegacyFlyoutFooter } from '.';\nimport { useContainScroll } from './hooks/useContainScroll';\nimport { useOverlayPositionWithBottomMargin } from './hooks/useOverlayPositionWithBottomMargin';\nimport { Overlay } from './Overlay';\n\nexport const FLYOUT_DIVIDER_COLOR = '#eaebeb';\nexport const FLYOUT_DIVIDER_HEIGHT = '10px';\n\nexport enum FlyoutPlacement {\n Top = 'top',\n Bottom = 'bottom',\n TopLeft = 'top left',\n BottomLeft = 'bottom left',\n TopRight = 'top right',\n BottomRight = 'bottom right',\n Right = 'right',\n Left = 'left',\n}\n\nexport type FlyoutProps = {\n trigger:\n | ReactNode\n | ((\n triggerProps: HTMLAttributes<HTMLElement>,\n ref: MutableRefObject<HTMLElement | null>,\n triggerState: { isFocusVisible: boolean; isPressed: boolean },\n ) => JSX.Element);\n onCancel?: () => void;\n onConfirm?: (event?: MouseEvent<HTMLButtonElement>) => void;\n title?: string;\n decorator?: ReactNode;\n badges?: BadgeProps[];\n hug?: boolean;\n fitContent?: boolean;\n isOpen?: boolean;\n onOpenChange: (isOpen: boolean) => void;\n fixedHeader?: ReactNode;\n fixedFooter?: ReactNode;\n contentMinHeight?: number;\n /**\n * The legacy footer buttons section inside of the flyout will be deleted in the future.\n * @deprecated Pass the FlyoutFooter component with buttons to the Flyout component.\n */\n legacyFooter?: boolean;\n placement?: FlyoutPlacement;\n offset?: number;\n updatePositionOnContentChange?: boolean;\n isTriggerDisabled?: boolean;\n children?: ReactNode;\n};\n\nexport const Flyout = ({\n trigger,\n isTriggerDisabled = false,\n decorator,\n onConfirm,\n onCancel,\n children,\n onOpenChange,\n isOpen = false,\n title = '',\n badges = [],\n hug = true,\n fitContent = false,\n fixedHeader,\n fixedFooter,\n contentMinHeight,\n legacyFooter = true,\n placement = FlyoutPlacement.BottomLeft,\n offset,\n updatePositionOnContentChange = false,\n}: FlyoutProps): ReactElement => {\n const state = useOverlayTriggerState({ isOpen, onOpenChange });\n const { toggle, close } = state;\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const { isFocusVisible, focusProps } = useFocusRing();\n\n const { triggerProps, overlayProps: overlayTriggerProps } = useOverlayTrigger(\n { type: 'dialog' },\n state,\n triggerRef,\n );\n\n const { positionProps } = useOverlayPositionWithBottomMargin({\n triggerRef,\n overlayRef,\n scrollRef,\n isOpen,\n placement,\n offset,\n updatePositionOnContentChange,\n });\n\n const { buttonProps, isPressed } = useButton(\n // @ts-expect-error preventFocusOnPress is an undocumented property in react-aria\n { onPress: () => toggle(), elementType: 'div', isDisabled: isTriggerDisabled, preventFocusOnPress: true },\n triggerRef,\n );\n\n useEffect(() => {\n const revert = watchModals();\n\n return () => revert();\n }, []);\n\n useContainScroll(overlayRef, { isDisabled: !isOpen });\n\n const combinedTriggerProps = mergeProps(buttonProps, triggerProps, focusProps, {\n 'aria-label': 'Toggle Flyout Menu',\n });\n\n const triggerComponent =\n typeof trigger === 'function' ? (\n trigger(combinedTriggerProps, triggerRef, { isFocusVisible, isPressed })\n ) : (\n <div\n {...combinedTriggerProps}\n ref={triggerRef}\n className={merge([\n 'tw-outline-none tw-rounded',\n hug ? 'tw-mx-3' : 'tw-w-full',\n isFocusVisible && FOCUS_STYLE,\n ])}\n data-test-id=\"flyout-trigger\"\n >\n {trigger}\n </div>\n );\n\n return (\n <>\n {triggerComponent}\n {isOpen && (\n <OverlayContainer>\n <FocusScope restoreFocus contain>\n <Overlay\n title={title}\n badges={badges}\n decorator={decorator}\n isOpen={isOpen}\n onClose={close}\n overlayTriggerProps={overlayTriggerProps}\n positionProps={positionProps}\n fixedHeader={fixedHeader}\n fixedFooter={\n legacyFooter ? (\n <LegacyFlyoutFooter onConfirm={onConfirm} onCancel={onCancel} />\n ) : (\n fixedFooter\n )\n }\n ref={overlayRef}\n scrollRef={scrollRef}\n fitContent={fitContent}\n contentMinHeight={contentMinHeight}\n >\n {children}\n </Overlay>\n </FocusScope>\n </OverlayContainer>\n )}\n </>\n );\n};\nFlyout.displayName = 'FondueFlyout';\n"],"names":["FLYOUT_DIVIDER_COLOR","FLYOUT_DIVIDER_HEIGHT","FlyoutPlacement","Flyout","trigger","isTriggerDisabled","decorator","onConfirm","onCancel","children","onOpenChange","isOpen","title","badges","hug","fitContent","fixedHeader","fixedFooter","contentMinHeight","legacyFooter","placement","offset","updatePositionOnContentChange","state","useOverlayTriggerState","toggle","close","triggerRef","useRef","overlayRef","scrollRef","isFocusVisible","focusProps","useFocusRing","triggerProps","overlayTriggerProps","useOverlayTrigger","positionProps","useOverlayPositionWithBottomMargin","buttonProps","isPressed","useButton","useEffect","revert","watchModals","useContainScroll","combinedTriggerProps","mergeProps","triggerComponent","jsx","merge","FOCUS_STYLE","jsxs","Fragment","OverlayContainer","FocusScope","Overlay","LegacyFlyoutFooter"],"mappings":"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"}
|