@veeqo/ui 15.8.0 → 15.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Alerts/Alert/Alert.cjs +1 -2
- package/dist/components/Alerts/Alert/Alert.cjs.map +1 -1
- package/dist/components/Alerts/Alert/Alert.js +1 -2
- package/dist/components/Alerts/Alert/Alert.js.map +1 -1
- package/dist/components/Alerts/Alert/types.d.ts +5 -2
- package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs +1 -1
- package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js +1 -1
- package/dist/components/DataGrid/components/Body/LoadingBody/LoadingBodyCell.cjs +1 -1
- package/dist/components/DataGrid/components/Body/LoadingBody/LoadingBodyCell.js +1 -1
- package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs +1 -1
- package/dist/components/DataGrid/components/GridContainer/GridContainer.js +1 -1
- package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs +1 -1
- package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js +1 -1
- package/dist/components/Modal/Modal.cjs +11 -11
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.js +11 -11
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.scss.cjs +2 -2
- package/dist/components/Modal/Modal.module.scss.cjs.map +1 -1
- package/dist/components/Modal/Modal.module.scss.js +2 -2
- package/dist/components/Modal/Modal.module.scss.js.map +1 -1
- package/dist/components/Modal/components/Dialog/Dialog.cjs +2 -2
- package/dist/components/Modal/components/Dialog/Dialog.cjs.map +1 -1
- package/dist/components/Modal/components/Dialog/Dialog.d.ts +2 -2
- package/dist/components/Modal/components/Dialog/Dialog.js +2 -2
- package/dist/components/Modal/components/Dialog/Dialog.js.map +1 -1
- package/dist/components/Modal/types.cjs.map +1 -1
- package/dist/components/Modal/types.d.ts +56 -7
- package/dist/components/Modal/types.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.cjs +14 -6
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +2 -2
- package/dist/components/Tooltip/Tooltip.js +14 -6
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.module.scss.cjs +2 -2
- package/dist/components/Tooltip/Tooltip.module.scss.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.module.scss.js +2 -2
- package/dist/components/Tooltip/Tooltip.module.scss.js.map +1 -1
- package/dist/components/Tooltip/components/TooltipPopover.cjs +5 -5
- package/dist/components/Tooltip/components/TooltipPopover.cjs.map +1 -1
- package/dist/components/Tooltip/components/TooltipPopover.js +5 -5
- package/dist/components/Tooltip/components/TooltipPopover.js.map +1 -1
- package/dist/components/Tooltip/types.cjs.map +1 -1
- package/dist/components/Tooltip/types.d.ts +1 -6
- package/dist/components/Tooltip/types.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var Text = require('../../Text/Text.cjs');
|
|
5
|
-
var Button = require('../../Button/Button.cjs');
|
|
6
5
|
var Action = require('../../Action/Action.cjs');
|
|
7
6
|
var CrossIcon = require('../../../icons/design-system/components/CrossIcon.cjs');
|
|
8
7
|
var constants = require('../constants.cjs');
|
|
@@ -42,7 +41,7 @@ const Alert = ({ size = 'base', variant = 'default', direction = 'horizontal', c
|
|
|
42
41
|
messageSlot || (message && React__default.default.createElement(Text.Text, { variant: "body" }, message))))),
|
|
43
42
|
hasActions && (React__default.default.createElement(FlexRow.FlexRow, { flexWrap: "nowrap", gap: "sm", className: Alert_module.actions },
|
|
44
43
|
rightActionsSlot, rightActions === null || rightActions === void 0 ? void 0 :
|
|
45
|
-
rightActions.map(({ label, ...actionProps }) => (React__default.default.createElement(
|
|
44
|
+
rightActions.map(({ label, ...actionProps }) => (React__default.default.createElement(Action.Action, { key: label, type: "button", size: "sm", ...actionProps }, label))))),
|
|
46
45
|
onClickClose && (React__default.default.createElement(Action.Action, { variant: "flat", size: "sm", iconSlot: React__default.default.createElement(CrossIcon.ReactComponent, null), onClick: onClickClose, "aria-label": "Close", className: Alert_module.close }))));
|
|
47
46
|
};
|
|
48
47
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.cjs","sources":["../../../../src/components/Alerts/Alert/Alert.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Text } from '../../Text';\nimport {
|
|
1
|
+
{"version":3,"file":"Alert.cjs","sources":["../../../../src/components/Alerts/Alert/Alert.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Text } from '../../Text';\nimport { Action } from '../../Action';\nimport { CrossIcon } from '../../../icons';\nimport { IconMap } from '../constants';\nimport { AlertProps } from './types';\nimport { FlexRow } from '../../Flex/FlexRow';\nimport { FlexCol } from '../../Flex/FlexCol';\nimport { assignCssVars, buildClassnames } from '../../../utils';\n\nimport alertStyles from '../Alerts.module.scss';\nimport styles from './Alert.module.scss';\n\n/**\n * Alert component for displaying contextual feedback messages with optional actions and close button.\n */\nexport const Alert = ({\n size = 'base',\n variant = 'default',\n direction = 'horizontal',\n colours: passedColours,\n rightActions,\n rightActionsSlot,\n title,\n titleSlot,\n messageSlot,\n message,\n children,\n iconSlot,\n onClickClose,\n className,\n ...divProps\n}: AlertProps) => {\n const DefaultIcon = IconMap[variant];\n const isVertical = direction === 'vertical';\n const hasActions = (rightActions?.length ?? 0) > 0 || Boolean(rightActionsSlot);\n const hasSingleContent = !children && !((title || titleSlot) && (message || messageSlot));\n\n return (\n <FlexCol\n role={variant === 'error' ? 'alert' : 'status'}\n gap=\"none\"\n className={buildClassnames([\n styles.alertContainer,\n styles[`${size}-size`],\n isVertical ? styles.vertical : undefined,\n hasSingleContent ? styles.centered : undefined,\n alertStyles[`${variant}-alert-variant`],\n className,\n ])}\n style={assignCssVars({ backgroundColor: passedColours?.background })}\n {...divProps}\n >\n <FlexRow\n style={assignCssVars({ iconColor: passedColours?.primary })}\n className={buildClassnames([alertStyles.icon, styles.iconArea])}\n >\n {iconSlot || <DefaultIcon role=\"presentation\" />}\n </FlexRow>\n\n <FlexCol className={styles.content} flexWrap=\"nowrap\">\n {children || (\n <FlexCol gap={size === 'xs' ? 'xs' : 'sm'}>\n {titleSlot ||\n (title && (\n <Text variant=\"bodyBold\" style={size === 'base' ? { lineHeight: '24px' } : {}}>\n {title}\n </Text>\n ))}\n {messageSlot || (message && <Text variant=\"body\">{message}</Text>)}\n </FlexCol>\n )}\n </FlexCol>\n\n {hasActions && (\n <FlexRow flexWrap=\"nowrap\" gap=\"sm\" className={styles.actions}>\n {rightActionsSlot}\n {rightActions?.map(({ label, ...actionProps }) => (\n <Action key={label} type=\"button\" size=\"sm\" {...actionProps}>\n {label}\n </Action>\n ))}\n </FlexRow>\n )}\n\n {onClickClose && (\n <Action\n variant=\"flat\"\n size=\"sm\"\n iconSlot={<CrossIcon />}\n onClick={onClickClose}\n aria-label=\"Close\"\n className={styles.close}\n />\n )}\n </FlexCol>\n );\n};\n"],"names":["IconMap","React","FlexCol","buildClassnames","styles","alertStyles","assignCssVars","FlexRow","Text","Action","CrossIcon"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
2
|
import { Text } from '../../Text/Text.js';
|
|
3
|
-
import { Button } from '../../Button/Button.js';
|
|
4
3
|
import { Action } from '../../Action/Action.js';
|
|
5
4
|
import { ReactComponent as CrossIcon } from '../../../icons/design-system/components/CrossIcon.js';
|
|
6
5
|
import { IconMap } from '../constants.js';
|
|
@@ -36,7 +35,7 @@ const Alert = ({ size = 'base', variant = 'default', direction = 'horizontal', c
|
|
|
36
35
|
messageSlot || (message && React__default.createElement(Text, { variant: "body" }, message))))),
|
|
37
36
|
hasActions && (React__default.createElement(FlexRow, { flexWrap: "nowrap", gap: "sm", className: styles.actions },
|
|
38
37
|
rightActionsSlot, rightActions === null || rightActions === void 0 ? void 0 :
|
|
39
|
-
rightActions.map(({ label, ...actionProps }) => (React__default.createElement(
|
|
38
|
+
rightActions.map(({ label, ...actionProps }) => (React__default.createElement(Action, { key: label, type: "button", size: "sm", ...actionProps }, label))))),
|
|
40
39
|
onClickClose && (React__default.createElement(Action, { variant: "flat", size: "sm", iconSlot: React__default.createElement(CrossIcon, null), onClick: onClickClose, "aria-label": "Close", className: styles.close }))));
|
|
41
40
|
};
|
|
42
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.js","sources":["../../../../src/components/Alerts/Alert/Alert.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Text } from '../../Text';\nimport {
|
|
1
|
+
{"version":3,"file":"Alert.js","sources":["../../../../src/components/Alerts/Alert/Alert.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Text } from '../../Text';\nimport { Action } from '../../Action';\nimport { CrossIcon } from '../../../icons';\nimport { IconMap } from '../constants';\nimport { AlertProps } from './types';\nimport { FlexRow } from '../../Flex/FlexRow';\nimport { FlexCol } from '../../Flex/FlexCol';\nimport { assignCssVars, buildClassnames } from '../../../utils';\n\nimport alertStyles from '../Alerts.module.scss';\nimport styles from './Alert.module.scss';\n\n/**\n * Alert component for displaying contextual feedback messages with optional actions and close button.\n */\nexport const Alert = ({\n size = 'base',\n variant = 'default',\n direction = 'horizontal',\n colours: passedColours,\n rightActions,\n rightActionsSlot,\n title,\n titleSlot,\n messageSlot,\n message,\n children,\n iconSlot,\n onClickClose,\n className,\n ...divProps\n}: AlertProps) => {\n const DefaultIcon = IconMap[variant];\n const isVertical = direction === 'vertical';\n const hasActions = (rightActions?.length ?? 0) > 0 || Boolean(rightActionsSlot);\n const hasSingleContent = !children && !((title || titleSlot) && (message || messageSlot));\n\n return (\n <FlexCol\n role={variant === 'error' ? 'alert' : 'status'}\n gap=\"none\"\n className={buildClassnames([\n styles.alertContainer,\n styles[`${size}-size`],\n isVertical ? styles.vertical : undefined,\n hasSingleContent ? styles.centered : undefined,\n alertStyles[`${variant}-alert-variant`],\n className,\n ])}\n style={assignCssVars({ backgroundColor: passedColours?.background })}\n {...divProps}\n >\n <FlexRow\n style={assignCssVars({ iconColor: passedColours?.primary })}\n className={buildClassnames([alertStyles.icon, styles.iconArea])}\n >\n {iconSlot || <DefaultIcon role=\"presentation\" />}\n </FlexRow>\n\n <FlexCol className={styles.content} flexWrap=\"nowrap\">\n {children || (\n <FlexCol gap={size === 'xs' ? 'xs' : 'sm'}>\n {titleSlot ||\n (title && (\n <Text variant=\"bodyBold\" style={size === 'base' ? { lineHeight: '24px' } : {}}>\n {title}\n </Text>\n ))}\n {messageSlot || (message && <Text variant=\"body\">{message}</Text>)}\n </FlexCol>\n )}\n </FlexCol>\n\n {hasActions && (\n <FlexRow flexWrap=\"nowrap\" gap=\"sm\" className={styles.actions}>\n {rightActionsSlot}\n {rightActions?.map(({ label, ...actionProps }) => (\n <Action key={label} type=\"button\" size=\"sm\" {...actionProps}>\n {label}\n </Action>\n ))}\n </FlexRow>\n )}\n\n {onClickClose && (\n <Action\n variant=\"flat\"\n size=\"sm\"\n iconSlot={<CrossIcon />}\n onClick={onClickClose}\n aria-label=\"Close\"\n className={styles.close}\n />\n )}\n </FlexCol>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ActionProps } from '../../Action/types';
|
|
3
3
|
import { AlertColours, BaseAlertProps } from '../types';
|
|
4
4
|
/** Controls the padding density of the alert */
|
|
5
5
|
export type AlertSizes = 'base' | 'sm' | 'xs';
|
|
6
6
|
/** Direction of content flow */
|
|
7
7
|
export type AlertDirection = 'horizontal' | 'vertical';
|
|
8
|
+
export type AlertAction = {
|
|
9
|
+
label: string;
|
|
10
|
+
} & ActionProps<'button'>;
|
|
8
11
|
export type AlertProps = React.HTMLAttributes<HTMLDivElement> & BaseAlertProps & {
|
|
9
12
|
/** Controls padding density */
|
|
10
13
|
size?: AlertSizes;
|
|
@@ -13,7 +16,7 @@ export type AlertProps = React.HTMLAttributes<HTMLDivElement> & BaseAlertProps &
|
|
|
13
16
|
/** Override the primary and background colours */
|
|
14
17
|
colours?: AlertColours;
|
|
15
18
|
/** Action buttons rendered on the right (horizontal) or below the content (vertical) */
|
|
16
|
-
rightActions?:
|
|
19
|
+
rightActions?: AlertAction[];
|
|
17
20
|
/** Custom content rendered in the actions area, replacing or alongside `rightActions` */
|
|
18
21
|
rightActionsSlot?: ReactNode;
|
|
19
22
|
/** Replaces the default title text with custom content */
|
|
@@ -12,9 +12,9 @@ require('../../../../../theme/modules/shadows.cjs');
|
|
|
12
12
|
require('../../../../../theme/modules/sizes.cjs');
|
|
13
13
|
require('../../../../../theme/modules/text.cjs');
|
|
14
14
|
require('framer-motion');
|
|
15
|
-
require('../../../../Tooltip/components/TooltipPopover.cjs');
|
|
16
15
|
require('../../../../Portal/Portal.cjs');
|
|
17
16
|
require('../../../../Portal/PortalContext.cjs');
|
|
17
|
+
require('../../../../Tooltip/components/TooltipPopover.cjs');
|
|
18
18
|
require('../../../../Text/Text.cjs');
|
|
19
19
|
require('../../../../Flex/FlexRow/FlexRow.cjs');
|
|
20
20
|
require('../../../../Radio/Radio.cjs');
|
|
@@ -10,9 +10,9 @@ import '../../../../../theme/modules/shadows.js';
|
|
|
10
10
|
import '../../../../../theme/modules/sizes.js';
|
|
11
11
|
import '../../../../../theme/modules/text.js';
|
|
12
12
|
import 'framer-motion';
|
|
13
|
-
import '../../../../Tooltip/components/TooltipPopover.js';
|
|
14
13
|
import '../../../../Portal/Portal.js';
|
|
15
14
|
import '../../../../Portal/PortalContext.js';
|
|
15
|
+
import '../../../../Tooltip/components/TooltipPopover.js';
|
|
16
16
|
import '../../../../Text/Text.js';
|
|
17
17
|
import '../../../../Flex/FlexRow/FlexRow.js';
|
|
18
18
|
import '../../../../Radio/Radio.js';
|
|
@@ -9,9 +9,9 @@ require('@tanstack/react-table');
|
|
|
9
9
|
require('../../../../Stack/Stack.cjs');
|
|
10
10
|
var index = require('../../../../../theme/index.cjs');
|
|
11
11
|
require('framer-motion');
|
|
12
|
-
require('../../../../Tooltip/components/TooltipPopover.cjs');
|
|
13
12
|
require('../../../../Portal/Portal.cjs');
|
|
14
13
|
require('../../../../Portal/PortalContext.cjs');
|
|
14
|
+
require('../../../../Tooltip/components/TooltipPopover.cjs');
|
|
15
15
|
require('../../../../Text/Text.cjs');
|
|
16
16
|
require('../../../../Flex/FlexRow/FlexRow.cjs');
|
|
17
17
|
require('../../../../Radio/Radio.cjs');
|
|
@@ -7,9 +7,9 @@ import '@tanstack/react-table';
|
|
|
7
7
|
import '../../../../Stack/Stack.js';
|
|
8
8
|
import { theme } from '../../../../../theme/index.js';
|
|
9
9
|
import 'framer-motion';
|
|
10
|
-
import '../../../../Tooltip/components/TooltipPopover.js';
|
|
11
10
|
import '../../../../Portal/Portal.js';
|
|
12
11
|
import '../../../../Portal/PortalContext.js';
|
|
12
|
+
import '../../../../Tooltip/components/TooltipPopover.js';
|
|
13
13
|
import '../../../../Text/Text.js';
|
|
14
14
|
import '../../../../Flex/FlexRow/FlexRow.js';
|
|
15
15
|
import '../../../../Radio/Radio.js';
|
|
@@ -13,9 +13,9 @@ var usePinnedColumnLayout = require('../../hooks/usePinnedColumnLayout.cjs');
|
|
|
13
13
|
require('@tanstack/react-table');
|
|
14
14
|
require('../../../Stack/Stack.cjs');
|
|
15
15
|
require('framer-motion');
|
|
16
|
-
require('../../../Tooltip/components/TooltipPopover.cjs');
|
|
17
16
|
require('../../../Portal/Portal.cjs');
|
|
18
17
|
require('../../../Portal/PortalContext.cjs');
|
|
18
|
+
require('../../../Tooltip/components/TooltipPopover.cjs');
|
|
19
19
|
require('../../../Text/Text.cjs');
|
|
20
20
|
require('../../../Flex/FlexRow/FlexRow.cjs');
|
|
21
21
|
require('../../../Radio/Radio.cjs');
|
|
@@ -11,9 +11,9 @@ import { usePinnedColumnLayout } from '../../hooks/usePinnedColumnLayout.js';
|
|
|
11
11
|
import '@tanstack/react-table';
|
|
12
12
|
import '../../../Stack/Stack.js';
|
|
13
13
|
import 'framer-motion';
|
|
14
|
-
import '../../../Tooltip/components/TooltipPopover.js';
|
|
15
14
|
import '../../../Portal/Portal.js';
|
|
16
15
|
import '../../../Portal/PortalContext.js';
|
|
16
|
+
import '../../../Tooltip/components/TooltipPopover.js';
|
|
17
17
|
import '../../../Text/Text.js';
|
|
18
18
|
import '../../../Flex/FlexRow/FlexRow.js';
|
|
19
19
|
import '../../../Radio/Radio.js';
|
|
@@ -11,9 +11,9 @@ require('../../../../../theme/modules/shadows.cjs');
|
|
|
11
11
|
require('../../../../../theme/modules/sizes.cjs');
|
|
12
12
|
require('../../../../../theme/modules/text.cjs');
|
|
13
13
|
require('framer-motion');
|
|
14
|
-
require('../../../../Tooltip/components/TooltipPopover.cjs');
|
|
15
14
|
require('../../../../Portal/Portal.cjs');
|
|
16
15
|
require('../../../../Portal/PortalContext.cjs');
|
|
16
|
+
require('../../../../Tooltip/components/TooltipPopover.cjs');
|
|
17
17
|
require('../../../../Text/Text.cjs');
|
|
18
18
|
require('../../../../Flex/FlexRow/FlexRow.cjs');
|
|
19
19
|
require('../../../../Radio/Radio.cjs');
|
|
@@ -9,9 +9,9 @@ import '../../../../../theme/modules/shadows.js';
|
|
|
9
9
|
import '../../../../../theme/modules/sizes.js';
|
|
10
10
|
import '../../../../../theme/modules/text.js';
|
|
11
11
|
import 'framer-motion';
|
|
12
|
-
import '../../../../Tooltip/components/TooltipPopover.js';
|
|
13
12
|
import '../../../../Portal/Portal.js';
|
|
14
13
|
import '../../../../Portal/PortalContext.js';
|
|
14
|
+
import '../../../../Tooltip/components/TooltipPopover.js';
|
|
15
15
|
import '../../../../Text/Text.js';
|
|
16
16
|
import '../../../../Flex/FlexRow/FlexRow.js';
|
|
17
17
|
import '../../../../Radio/Radio.js';
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var React = require('react');
|
|
4
3
|
var framerMotion = require('framer-motion');
|
|
5
|
-
var
|
|
4
|
+
var React = require('react');
|
|
6
5
|
var Dialog = require('./components/Dialog/Dialog.cjs');
|
|
6
|
+
var types = require('./types.cjs');
|
|
7
|
+
var useIsOverflowing = require('../../hooks/useIsOverflowing.cjs');
|
|
7
8
|
var buildClassnames = require('../../utils/buildClassnames.cjs');
|
|
8
9
|
require('uid/secure');
|
|
9
|
-
var
|
|
10
|
-
var Button = require('../Button/Button.cjs');
|
|
10
|
+
var Action = require('../Action/Action.cjs');
|
|
11
11
|
var Card = require('../Card/Card.cjs');
|
|
12
12
|
var CardHeader = require('../CardHeader/CardHeader.cjs');
|
|
13
|
+
var FlexRow = require('../Flex/FlexRow/FlexRow.cjs');
|
|
13
14
|
var ScrollLock = require('../ScrollLock/ScrollLock.cjs');
|
|
14
|
-
var Stack = require('../Stack/Stack.cjs');
|
|
15
|
-
var utils = require('./utils.cjs');
|
|
16
15
|
var Modal_module = require('./Modal.module.scss.cjs');
|
|
16
|
+
var utils = require('./utils.cjs');
|
|
17
17
|
|
|
18
18
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
19
19
|
|
|
@@ -21,7 +21,7 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
|
21
21
|
|
|
22
22
|
/* eslint-disable react/destructuring-assignment */
|
|
23
23
|
const Modal = (props) => {
|
|
24
|
-
const { shouldShow, showHeaderCloseButton = true, preventClose = false, displayMode = 'modal', fullBleed = false,
|
|
24
|
+
const { shouldShow, showHeaderCloseButton = true, preventClose = false, displayMode = 'modal', fullBleed = false, size = 'base', onClose: parentOnClose, children, ...rest } = props;
|
|
25
25
|
const modalRef = React.useRef(null);
|
|
26
26
|
const [mainSectionRef, setMainSectionRef] = React.useState(null);
|
|
27
27
|
React.useEffect(() => {
|
|
@@ -59,7 +59,7 @@ const Modal = (props) => {
|
|
|
59
59
|
};
|
|
60
60
|
return (React__default.default.createElement(framerMotion.AnimatePresence, null, shouldShow && (React__default.default.createElement("div", { "data-testid": "dialog-wrapper", style: { position: 'absolute' } },
|
|
61
61
|
React__default.default.createElement(ScrollLock.ScrollLock, null),
|
|
62
|
-
React__default.default.createElement(Dialog.Dialog, { "data-dialog-type": "modal", displayMode: displayMode,
|
|
62
|
+
React__default.default.createElement(Dialog.Dialog, { "data-dialog-type": "modal", displayMode: displayMode, size: size, ref: modalRef, onClose: handleClose, onKeyDown: preventClose ? utils.preventDefaultEventOnESC : handleKeyDown, onClick: handleBackdropClick, ...rest, "aria-describedby": "modal_title", appearance: (types.isSideDraw(props) && props.appearance) || 'primary' },
|
|
63
63
|
React__default.default.createElement(Card.Card.Surface, null,
|
|
64
64
|
types.hasHeaderSlot(props) ? (props.headerSlot) : (React__default.default.createElement(CardHeader.CardHeader, { id: "modal_title", headerVariant: "headingLarge", title: props.headerTitle, subtitle: props.headerSubtitle, ...(showHeaderCloseButton && { onClickClose: handleClose }) })),
|
|
65
65
|
React__default.default.createElement("section", { onScroll: onScroll, ref: setMainSectionRef, className: buildClassnames.buildClassnames([
|
|
@@ -69,9 +69,9 @@ const Modal = (props) => {
|
|
|
69
69
|
]) }, children),
|
|
70
70
|
types.hasFooterSlot(props) && props.footerSlot,
|
|
71
71
|
!types.hasFooterSlot(props) && (props.leftActions || props.rightActions) && (React__default.default.createElement(Card.Card.Footer, null,
|
|
72
|
-
React__default.default.createElement(
|
|
73
|
-
props.leftActions && (React__default.default.createElement(
|
|
74
|
-
props.rightActions && (React__default.default.createElement(
|
|
72
|
+
React__default.default.createElement(FlexRow.FlexRow, { justifyContent: props.leftActions ? 'space-between' : 'flex-end' },
|
|
73
|
+
props.leftActions && (React__default.default.createElement(FlexRow.FlexRow, { justifyContent: "flex-start", "data-testid": "left-actions-container" }, props.leftActions.map(({ label, ...actionProps }) => (React__default.default.createElement(Action.Action, { key: label, type: "button", ...actionProps }, label))))),
|
|
74
|
+
props.rightActions && (React__default.default.createElement(FlexRow.FlexRow, { justifyContent: "flex-end", "data-testid": "right-actions-container" }, props.rightActions.map(({ label, ...actionProps }) => (React__default.default.createElement(Action.Action, { key: label, type: "button", ...actionProps }, label))))))))))))));
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
exports.Modal = Modal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.cjs","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\nimport React, { useEffect, useRef, useState } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"Modal.cjs","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\nimport { AnimatePresence } from 'framer-motion';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Dialog } from './components/Dialog/Dialog';\nimport { ModalProps, hasFooterSlot, hasHeaderSlot, isSideDraw } from './types';\n\nimport { useIsOverflowing } from '../../hooks/useIsOverflowing';\nimport { buildClassnames } from '../../utils';\nimport { Action } from '../Action';\nimport { Card } from '../Card';\nimport { CardHeader } from '../CardHeader';\nimport { FlexRow } from '../Flex/FlexRow';\nimport { ScrollLock } from '../ScrollLock';\nimport modalStyles from './Modal.module.scss';\nimport { preventDefaultEventOnESC } from './utils';\n\nexport const Modal = (props: ModalProps) => {\n const {\n shouldShow,\n showHeaderCloseButton = true,\n preventClose = false,\n displayMode = 'modal',\n fullBleed = false,\n size = 'base',\n onClose: parentOnClose,\n children,\n ...rest\n } = props;\n\n const modalRef = useRef<HTMLDialogElement | null>(null);\n const [mainSectionRef, setMainSectionRef] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n if (shouldShow) {\n modalRef.current?.removeAttribute('open'); // Allows for conditional rendering.\n modalRef.current?.showModal();\n }\n }, [shouldShow]);\n\n const { isOverflowing: isContentOverflowing, onScroll } = useIsOverflowing(mainSectionRef);\n\n const handleClose = () => {\n if (preventClose) return;\n\n const result = parentOnClose();\n if (result === false) return; // Otherwise close on void, or true.\n\n modalRef.current?.close();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDialogElement>) => {\n if (e.key === 'Escape') {\n e.preventDefault(); // Prevent default ESC behavior\n\n // Don't close if this is the top level and there are other dialogs open\n const openDialogs = document.querySelectorAll('dialog[open]');\n if (openDialogs.length > 1 && modalRef.current === openDialogs[0]) return;\n\n handleClose();\n }\n };\n\n const handleBackdropClick = async (e: React.MouseEvent<HTMLDialogElement>) => {\n if (displayMode === 'modal') return;\n if (e.target === modalRef.current) handleClose();\n };\n\n return (\n <AnimatePresence>\n {shouldShow && (\n <div data-testid=\"dialog-wrapper\" style={{ position: 'absolute' }}>\n <ScrollLock />\n <Dialog\n data-dialog-type=\"modal\"\n displayMode={displayMode}\n size={size}\n ref={modalRef}\n onClose={handleClose}\n onKeyDown={preventClose ? preventDefaultEventOnESC : handleKeyDown}\n onClick={handleBackdropClick}\n {...rest}\n aria-describedby=\"modal_title\"\n appearance={(isSideDraw(props) && props.appearance) || 'primary'}\n >\n <Card.Surface>\n {hasHeaderSlot(props) ? (\n props.headerSlot\n ) : (\n <CardHeader\n id=\"modal_title\"\n headerVariant=\"headingLarge\"\n title={props.headerTitle}\n subtitle={props.headerSubtitle}\n {...(showHeaderCloseButton && { onClickClose: handleClose })}\n />\n )}\n\n <section\n onScroll={onScroll}\n ref={setMainSectionRef}\n className={buildClassnames([\n modalStyles.mainSection,\n fullBleed && modalStyles.fullBleed,\n isContentOverflowing && modalStyles.scrollable,\n ])}\n >\n {children}\n </section>\n\n {hasFooterSlot(props) && props.footerSlot}\n\n {!hasFooterSlot(props) && (props.leftActions || props.rightActions) && (\n <Card.Footer>\n <FlexRow justifyContent={props.leftActions ? 'space-between' : 'flex-end'}>\n {props.leftActions && (\n <FlexRow justifyContent=\"flex-start\" data-testid=\"left-actions-container\">\n {props.leftActions.map(({ label, ...actionProps }) => (\n <Action key={label} type=\"button\" {...actionProps}>\n {label}\n </Action>\n ))}\n </FlexRow>\n )}\n {props.rightActions && (\n <FlexRow justifyContent=\"flex-end\" data-testid=\"right-actions-container\">\n {props.rightActions.map(({ label, ...actionProps }) => (\n <Action key={label} type=\"button\" {...actionProps}>\n {label}\n </Action>\n ))}\n </FlexRow>\n )}\n </FlexRow>\n </Card.Footer>\n )}\n </Card.Surface>\n </Dialog>\n </div>\n )}\n </AnimatePresence>\n );\n};\n"],"names":["useRef","useState","useEffect","useIsOverflowing","React","AnimatePresence","ScrollLock","Dialog","preventDefaultEventOnESC","isSideDraw","Card","hasHeaderSlot","CardHeader","buildClassnames","modalStyles","hasFooterSlot","FlexRow","Action"],"mappings":"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"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import React__default, { useRef, useState, useEffect } from 'react';
|
|
2
1
|
import { AnimatePresence } from 'framer-motion';
|
|
3
|
-
import {
|
|
2
|
+
import React__default, { useRef, useState, useEffect } from 'react';
|
|
4
3
|
import { Dialog } from './components/Dialog/Dialog.js';
|
|
4
|
+
import { isSideDraw, hasHeaderSlot, hasFooterSlot } from './types.js';
|
|
5
|
+
import { useIsOverflowing } from '../../hooks/useIsOverflowing.js';
|
|
5
6
|
import { buildClassnames } from '../../utils/buildClassnames.js';
|
|
6
7
|
import 'uid/secure';
|
|
7
|
-
import {
|
|
8
|
-
import { Button } from '../Button/Button.js';
|
|
8
|
+
import { Action } from '../Action/Action.js';
|
|
9
9
|
import { Card } from '../Card/Card.js';
|
|
10
10
|
import { CardHeader } from '../CardHeader/CardHeader.js';
|
|
11
|
+
import { FlexRow } from '../Flex/FlexRow/FlexRow.js';
|
|
11
12
|
import { ScrollLock } from '../ScrollLock/ScrollLock.js';
|
|
12
|
-
import { Stack } from '../Stack/Stack.js';
|
|
13
|
-
import { preventDefaultEventOnESC } from './utils.js';
|
|
14
13
|
import modalStyles from './Modal.module.scss.js';
|
|
14
|
+
import { preventDefaultEventOnESC } from './utils.js';
|
|
15
15
|
|
|
16
16
|
/* eslint-disable react/destructuring-assignment */
|
|
17
17
|
const Modal = (props) => {
|
|
18
|
-
const { shouldShow, showHeaderCloseButton = true, preventClose = false, displayMode = 'modal', fullBleed = false,
|
|
18
|
+
const { shouldShow, showHeaderCloseButton = true, preventClose = false, displayMode = 'modal', fullBleed = false, size = 'base', onClose: parentOnClose, children, ...rest } = props;
|
|
19
19
|
const modalRef = useRef(null);
|
|
20
20
|
const [mainSectionRef, setMainSectionRef] = useState(null);
|
|
21
21
|
useEffect(() => {
|
|
@@ -53,7 +53,7 @@ const Modal = (props) => {
|
|
|
53
53
|
};
|
|
54
54
|
return (React__default.createElement(AnimatePresence, null, shouldShow && (React__default.createElement("div", { "data-testid": "dialog-wrapper", style: { position: 'absolute' } },
|
|
55
55
|
React__default.createElement(ScrollLock, null),
|
|
56
|
-
React__default.createElement(Dialog, { "data-dialog-type": "modal", displayMode: displayMode,
|
|
56
|
+
React__default.createElement(Dialog, { "data-dialog-type": "modal", displayMode: displayMode, size: size, ref: modalRef, onClose: handleClose, onKeyDown: preventClose ? preventDefaultEventOnESC : handleKeyDown, onClick: handleBackdropClick, ...rest, "aria-describedby": "modal_title", appearance: (isSideDraw(props) && props.appearance) || 'primary' },
|
|
57
57
|
React__default.createElement(Card.Surface, null,
|
|
58
58
|
hasHeaderSlot(props) ? (props.headerSlot) : (React__default.createElement(CardHeader, { id: "modal_title", headerVariant: "headingLarge", title: props.headerTitle, subtitle: props.headerSubtitle, ...(showHeaderCloseButton && { onClickClose: handleClose }) })),
|
|
59
59
|
React__default.createElement("section", { onScroll: onScroll, ref: setMainSectionRef, className: buildClassnames([
|
|
@@ -63,9 +63,9 @@ const Modal = (props) => {
|
|
|
63
63
|
]) }, children),
|
|
64
64
|
hasFooterSlot(props) && props.footerSlot,
|
|
65
65
|
!hasFooterSlot(props) && (props.leftActions || props.rightActions) && (React__default.createElement(Card.Footer, null,
|
|
66
|
-
React__default.createElement(
|
|
67
|
-
props.leftActions && (React__default.createElement(
|
|
68
|
-
props.rightActions && (React__default.createElement(
|
|
66
|
+
React__default.createElement(FlexRow, { justifyContent: props.leftActions ? 'space-between' : 'flex-end' },
|
|
67
|
+
props.leftActions && (React__default.createElement(FlexRow, { justifyContent: "flex-start", "data-testid": "left-actions-container" }, props.leftActions.map(({ label, ...actionProps }) => (React__default.createElement(Action, { key: label, type: "button", ...actionProps }, label))))),
|
|
68
|
+
props.rightActions && (React__default.createElement(FlexRow, { justifyContent: "flex-end", "data-testid": "right-actions-container" }, props.rightActions.map(({ label, ...actionProps }) => (React__default.createElement(Action, { key: label, type: "button", ...actionProps }, label))))))))))))));
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
export { Modal };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\nimport React, { useEffect, useRef, useState } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\nimport { AnimatePresence } from 'framer-motion';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Dialog } from './components/Dialog/Dialog';\nimport { ModalProps, hasFooterSlot, hasHeaderSlot, isSideDraw } from './types';\n\nimport { useIsOverflowing } from '../../hooks/useIsOverflowing';\nimport { buildClassnames } from '../../utils';\nimport { Action } from '../Action';\nimport { Card } from '../Card';\nimport { CardHeader } from '../CardHeader';\nimport { FlexRow } from '../Flex/FlexRow';\nimport { ScrollLock } from '../ScrollLock';\nimport modalStyles from './Modal.module.scss';\nimport { preventDefaultEventOnESC } from './utils';\n\nexport const Modal = (props: ModalProps) => {\n const {\n shouldShow,\n showHeaderCloseButton = true,\n preventClose = false,\n displayMode = 'modal',\n fullBleed = false,\n size = 'base',\n onClose: parentOnClose,\n children,\n ...rest\n } = props;\n\n const modalRef = useRef<HTMLDialogElement | null>(null);\n const [mainSectionRef, setMainSectionRef] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n if (shouldShow) {\n modalRef.current?.removeAttribute('open'); // Allows for conditional rendering.\n modalRef.current?.showModal();\n }\n }, [shouldShow]);\n\n const { isOverflowing: isContentOverflowing, onScroll } = useIsOverflowing(mainSectionRef);\n\n const handleClose = () => {\n if (preventClose) return;\n\n const result = parentOnClose();\n if (result === false) return; // Otherwise close on void, or true.\n\n modalRef.current?.close();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDialogElement>) => {\n if (e.key === 'Escape') {\n e.preventDefault(); // Prevent default ESC behavior\n\n // Don't close if this is the top level and there are other dialogs open\n const openDialogs = document.querySelectorAll('dialog[open]');\n if (openDialogs.length > 1 && modalRef.current === openDialogs[0]) return;\n\n handleClose();\n }\n };\n\n const handleBackdropClick = async (e: React.MouseEvent<HTMLDialogElement>) => {\n if (displayMode === 'modal') return;\n if (e.target === modalRef.current) handleClose();\n };\n\n return (\n <AnimatePresence>\n {shouldShow && (\n <div data-testid=\"dialog-wrapper\" style={{ position: 'absolute' }}>\n <ScrollLock />\n <Dialog\n data-dialog-type=\"modal\"\n displayMode={displayMode}\n size={size}\n ref={modalRef}\n onClose={handleClose}\n onKeyDown={preventClose ? preventDefaultEventOnESC : handleKeyDown}\n onClick={handleBackdropClick}\n {...rest}\n aria-describedby=\"modal_title\"\n appearance={(isSideDraw(props) && props.appearance) || 'primary'}\n >\n <Card.Surface>\n {hasHeaderSlot(props) ? (\n props.headerSlot\n ) : (\n <CardHeader\n id=\"modal_title\"\n headerVariant=\"headingLarge\"\n title={props.headerTitle}\n subtitle={props.headerSubtitle}\n {...(showHeaderCloseButton && { onClickClose: handleClose })}\n />\n )}\n\n <section\n onScroll={onScroll}\n ref={setMainSectionRef}\n className={buildClassnames([\n modalStyles.mainSection,\n fullBleed && modalStyles.fullBleed,\n isContentOverflowing && modalStyles.scrollable,\n ])}\n >\n {children}\n </section>\n\n {hasFooterSlot(props) && props.footerSlot}\n\n {!hasFooterSlot(props) && (props.leftActions || props.rightActions) && (\n <Card.Footer>\n <FlexRow justifyContent={props.leftActions ? 'space-between' : 'flex-end'}>\n {props.leftActions && (\n <FlexRow justifyContent=\"flex-start\" data-testid=\"left-actions-container\">\n {props.leftActions.map(({ label, ...actionProps }) => (\n <Action key={label} type=\"button\" {...actionProps}>\n {label}\n </Action>\n ))}\n </FlexRow>\n )}\n {props.rightActions && (\n <FlexRow justifyContent=\"flex-end\" data-testid=\"right-actions-container\">\n {props.rightActions.map(({ label, ...actionProps }) => (\n <Action key={label} type=\"button\" {...actionProps}>\n {label}\n </Action>\n ))}\n </FlexRow>\n )}\n </FlexRow>\n </Card.Footer>\n )}\n </Card.Surface>\n </Dialog>\n </div>\n )}\n </AnimatePresence>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var ___$insertStyle = require('../../_virtual/____insertStyle.cjs');
|
|
4
4
|
|
|
5
|
-
___$insertStyle("/* Scroll-lock: prevents body scrolling when modal is open.\n The class persists through AnimatePresence exit animations because\n it's managed by the ScrollLock component mounted inside AnimatePresence. */\nbody.veeqo-modal-open {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n@keyframes
|
|
6
|
-
var modalStyles = {"dialog":"
|
|
5
|
+
___$insertStyle("/* Scroll-lock: prevents body scrolling when modal is open.\n The class persists through AnimatePresence exit animations because\n it's managed by the ScrollLock component mounted inside AnimatePresence. */\nbody.veeqo-modal-open {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n@keyframes _fadeIn_sccv3_1 {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n._dialog_sccv3_17 {\n padding: 0;\n border: none;\n border-radius: var(--sizes-sm);\n box-shadow: var(--shadows-lg);\n z-index: var(--layers-modal);\n /* Targets Card.Surface: the sole direct child of dialog.\n Wave 3 (Card migration) can update to CSS Module class reference. */\n /* Targets Card.Footer */\n}\n._dialog_sccv3_17::backdrop {\n animation: _fadeIn_sccv3_1 0.25s ease forwards;\n background-color: rgba(55, 66, 77, 0.5);\n width: 100%;\n height: 100%;\n}\n._dialog_sccv3_17 > :first-child {\n display: flex;\n flex-direction: column;\n}\n._dialog_sccv3_17 > :first-child ._mainSection_sccv3_37 {\n padding-bottom: var(--sizes-md);\n}\n._dialog_sccv3_17 > :first-child footer {\n margin-top: 0;\n}\n\n._secondaryAppearance_sccv3_44::backdrop {\n animation: none;\n opacity: 0;\n}\n\n/* ---------- MainSection ---------- */\n._mainSection_sccv3_37 {\n flex: 1;\n overflow-y: auto;\n}\n\n._mainSection_sccv3_37:not(._fullBleed_sccv3_55) {\n padding: 0 var(--sizes-md);\n}\n\n/* Scrollable shadow on Card.Footer when content overflows */\n._mainSection_sccv3_37._scrollable_sccv3_60 + footer {\n box-shadow: 0px 10px 15px 0px var(--colors-neutral-ink-dark);\n}\n\n/* ---------- Modal display mode ---------- */\n._modal_sccv3_65 {\n min-width: 464px;\n /* Critical for framer-motion exit animations: prevents HTML dialog from\n hiding via UA stylesheet when 'open' attribute is removed. */\n}\n._modal_sccv3_65 > :first-child {\n border: none;\n}\n._modal_sccv3_65:not([open]) {\n display: block;\n position: fixed;\n inset: 0;\n transform: translate(-50%, -50%);\n}\n\n/* ---------- Side drawer shared base ---------- */\n._leftDrawer_sccv3_81,\n._rightDrawer_sccv3_82 {\n height: 100%;\n max-height: 100%;\n min-width: 320px;\n width: 400px;\n margin: 0;\n position: fixed;\n transform: none;\n border-radius: 0;\n overflow: visible;\n /* Critical for framer-motion exit animations */\n}\n._leftDrawer_sccv3_81 > :first-child,\n._rightDrawer_sccv3_82 > :first-child {\n border-radius: 0;\n height: 100%;\n}\n._leftDrawer_sccv3_81:not([open]),\n._rightDrawer_sccv3_82:not([open]) {\n display: block;\n}\n\n._leftDrawer_sccv3_81 {\n inset: 0 auto 0 0;\n}\n\n._rightDrawer_sccv3_82 {\n inset: 0 0 0 auto;\n}\n\n/* ---------- Size-specific responsive widths ---------- */\n/* Values hardcoded from constants.ts (heightMap, widthMap, fullScreenBreakpointMap) */\n._xs-size_sccv3_114 {\n /* fullScreenBreakpointMap['xs'] = 640px (breakpoints.mobile) */\n}\n._xs-size_sccv3_114 > :first-child {\n max-height: 84vh;\n}\n@media (width <= 640px) {\n ._xs-size_sccv3_114 {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n }\n ._xs-size_sccv3_114, ._xs-size_sccv3_114 > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n}\n@media (width >= 641px) and (width <= 720px) {\n ._xs-size_sccv3_114 {\n max-width: 60vw;\n }\n}\n@media (width >= 720px) and (width <= 960px) {\n ._xs-size_sccv3_114 {\n max-width: 48vw;\n }\n}\n@media (width >= 960px) and (width <= 1280px) {\n ._xs-size_sccv3_114 {\n max-width: 36vw;\n }\n}\n@media (width >= 1280px) {\n ._xs-size_sccv3_114 {\n max-width: 32vw;\n }\n}\n\n._sm-size_sccv3_155 {\n /* fullScreenBreakpointMap['sm'] = 640px (breakpoints.mobile) */\n}\n._sm-size_sccv3_155 > :first-child {\n max-height: 72vh;\n}\n@media (width <= 640px) {\n ._sm-size_sccv3_155 {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n }\n ._sm-size_sccv3_155, ._sm-size_sccv3_155 > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n}\n@media (width >= 641px) and (width <= 720px) {\n ._sm-size_sccv3_155 {\n max-width: 72vw;\n }\n}\n@media (width >= 720px) and (width <= 960px) {\n ._sm-size_sccv3_155 {\n max-width: 56vw;\n }\n}\n@media (width >= 960px) and (width <= 1280px) {\n ._sm-size_sccv3_155 {\n max-width: 44vw;\n }\n}\n@media (width >= 1280px) {\n ._sm-size_sccv3_155 {\n max-width: 40vw;\n }\n}\n\n._base-size_sccv3_196 {\n /* fullScreenBreakpointMap['base'] = 720px (breakpoints.tablet) */\n}\n._base-size_sccv3_196 > :first-child {\n max-height: 84vh;\n}\n@media (width <= 720px) {\n ._base-size_sccv3_196 {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n }\n ._base-size_sccv3_196, ._base-size_sccv3_196 > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n}\n@media (width >= 720px) and (width <= 960px) {\n ._base-size_sccv3_196 {\n max-width: 88vw;\n }\n}\n@media (width >= 960px) and (width <= 1280px) {\n ._base-size_sccv3_196 {\n max-width: 72vw;\n }\n}\n@media (width >= 1280px) {\n ._base-size_sccv3_196 {\n max-width: 52vw;\n }\n}\n\n._lg-size_sccv3_232 {\n /* fullScreenBreakpointMap['lg'] = 960px (breakpoints.lgTablet) */\n}\n._lg-size_sccv3_232 > :first-child {\n max-height: 96vh;\n}\n@media (width <= 960px) {\n ._lg-size_sccv3_232 {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n }\n ._lg-size_sccv3_232, ._lg-size_sccv3_232 > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n}\n@media (width >= 960px) and (width <= 1280px) {\n ._lg-size_sccv3_232 {\n max-width: 88vw;\n }\n}\n@media (width >= 1280px) {\n ._lg-size_sccv3_232 {\n max-width: 80vw;\n }\n}");
|
|
6
|
+
var modalStyles = {"dialog":"_dialog_sccv3_17","fadeIn":"_fadeIn_sccv3_1","mainSection":"_mainSection_sccv3_37","secondaryAppearance":"_secondaryAppearance_sccv3_44","fullBleed":"_fullBleed_sccv3_55","scrollable":"_scrollable_sccv3_60","modal":"_modal_sccv3_65","leftDrawer":"_leftDrawer_sccv3_81","rightDrawer":"_rightDrawer_sccv3_82","xs-size":"_xs-size_sccv3_114","sm-size":"_sm-size_sccv3_155","base-size":"_base-size_sccv3_196","lg-size":"_lg-size_sccv3_232"};
|
|
7
7
|
|
|
8
8
|
module.exports = modalStyles;
|
|
9
9
|
//# sourceMappingURL=Modal.module.scss.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.module.scss.cjs","sources":["../../../src/components/Modal/Modal.module.scss"],"sourcesContent":["/* Scroll-lock: prevents body scrolling when modal is open.\n The class persists through AnimatePresence exit animations because\n it's managed by the ScrollLock component mounted inside AnimatePresence. */\n:global(body.veeqo-modal-open) {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n.dialog {\n padding: 0;\n border: none;\n border-radius: var(--sizes-sm);\n box-shadow: var(--shadows-lg);\n z-index: var(--layers-modal);\n\n &::backdrop {\n animation: fadeIn 0.25s ease forwards;\n background-color: rgba(55, 66, 77, 0.5);\n width: 100%;\n height: 100%;\n }\n\n /* Targets Card.Surface: the sole direct child of dialog.\n Wave 3 (Card migration) can update to CSS Module class reference. */\n & > :first-child {\n display: flex;\n flex-direction: column;\n }\n\n & > :first-child .mainSection {\n padding-bottom: var(--sizes-md);\n }\n\n /* Targets Card.Footer */\n & > :first-child footer {\n margin-top: 0;\n }\n}\n\n.secondaryAppearance {\n &::backdrop {\n animation: none;\n opacity: 0;\n }\n}\n\n/* ---------- MainSection ---------- */\n\n.mainSection {\n flex: 1;\n overflow-y: auto;\n}\n\n.mainSection:not(.fullBleed) {\n padding: 0 var(--sizes-md);\n}\n\n/* Scrollable shadow on Card.Footer when content overflows */\n.mainSection.scrollable + footer {\n box-shadow: 0px 10px 15px 0px var(--colors-neutral-ink-dark);\n}\n\n/* ---------- Modal display mode ---------- */\n\n.modal {\n min-width: 464px;\n\n /* Critical for framer-motion exit animations: prevents HTML dialog from\n hiding via UA stylesheet when 'open' attribute is removed. */\n &:not([open]) {\n display: block;\n position: fixed;\n inset: 0;\n transform: translate(-50%, -50%);\n }\n}\n\n/* ---------- Side drawer shared base ---------- */\n\n.leftDrawer,\n.rightDrawer {\n height: 100%;\n max-height: 100%;\n min-width: 320px;\n width: 400px;\n margin: 0;\n position: fixed;\n transform: none;\n border-radius: 0;\n overflow: visible;\n\n & > :first-child {\n border-radius: 0;\n height: 100%;\n }\n\n /* Critical for framer-motion exit animations */\n &:not([open]) {\n display: block;\n }\n}\n\n.leftDrawer {\n inset: 0 auto 0 0;\n}\n\n.rightDrawer {\n inset: 0 0 0 auto;\n}\n\n/* ----------
|
|
1
|
+
{"version":3,"file":"Modal.module.scss.cjs","sources":["../../../src/components/Modal/Modal.module.scss"],"sourcesContent":["/* Scroll-lock: prevents body scrolling when modal is open.\n The class persists through AnimatePresence exit animations because\n it's managed by the ScrollLock component mounted inside AnimatePresence. */\n:global(body.veeqo-modal-open) {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n.dialog {\n padding: 0;\n border: none;\n border-radius: var(--sizes-sm);\n box-shadow: var(--shadows-lg);\n z-index: var(--layers-modal);\n\n &::backdrop {\n animation: fadeIn 0.25s ease forwards;\n background-color: rgba(55, 66, 77, 0.5);\n width: 100%;\n height: 100%;\n }\n\n /* Targets Card.Surface: the sole direct child of dialog.\n Wave 3 (Card migration) can update to CSS Module class reference. */\n & > :first-child {\n display: flex;\n flex-direction: column;\n }\n\n & > :first-child .mainSection {\n padding-bottom: var(--sizes-md);\n }\n\n /* Targets Card.Footer */\n & > :first-child footer {\n margin-top: 0;\n }\n}\n\n.secondaryAppearance {\n &::backdrop {\n animation: none;\n opacity: 0;\n }\n}\n\n/* ---------- MainSection ---------- */\n\n.mainSection {\n flex: 1;\n overflow-y: auto;\n}\n\n.mainSection:not(.fullBleed) {\n padding: 0 var(--sizes-md);\n}\n\n/* Scrollable shadow on Card.Footer when content overflows */\n.mainSection.scrollable + footer {\n box-shadow: 0px 10px 15px 0px var(--colors-neutral-ink-dark);\n}\n\n/* ---------- Modal display mode ---------- */\n\n.modal {\n min-width: 464px;\n \n & > :first-child {\n border: none;\n }\n\n /* Critical for framer-motion exit animations: prevents HTML dialog from\n hiding via UA stylesheet when 'open' attribute is removed. */\n &:not([open]) {\n display: block;\n position: fixed;\n inset: 0;\n transform: translate(-50%, -50%);\n }\n}\n\n/* ---------- Side drawer shared base ---------- */\n\n.leftDrawer,\n.rightDrawer {\n height: 100%;\n max-height: 100%;\n min-width: 320px;\n width: 400px;\n margin: 0;\n position: fixed;\n transform: none;\n border-radius: 0;\n overflow: visible;\n\n & > :first-child {\n border-radius: 0;\n height: 100%;\n }\n\n /* Critical for framer-motion exit animations */\n &:not([open]) {\n display: block;\n }\n}\n\n.leftDrawer {\n inset: 0 auto 0 0;\n}\n\n.rightDrawer {\n inset: 0 0 0 auto;\n}\n\n/* ---------- Size-specific responsive widths ---------- */\n/* Values hardcoded from constants.ts (heightMap, widthMap, fullScreenBreakpointMap) */\n\n.xs-size {\n & > :first-child {\n max-height: 84vh;\n }\n\n /* fullScreenBreakpointMap['xs'] = 640px (breakpoints.mobile) */\n @media (width <= 640px) {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n\n &,\n & > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n }\n\n @media (width >= 641px) and (width <= 720px) {\n max-width: 60vw;\n }\n\n @media (width >= 720px) and (width <= 960px) {\n max-width: 48vw;\n }\n\n @media (width >= 960px) and (width <= 1280px) {\n max-width: 36vw;\n }\n\n @media (width >= 1280px) {\n max-width: 32vw;\n }\n}\n\n.sm-size {\n & > :first-child {\n max-height: 72vh;\n }\n\n /* fullScreenBreakpointMap['sm'] = 640px (breakpoints.mobile) */\n @media (width <= 640px) {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n\n &,\n & > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n }\n\n @media (width >= 641px) and (width <= 720px) {\n max-width: 72vw;\n }\n\n @media (width >= 720px) and (width <= 960px) {\n max-width: 56vw;\n }\n\n @media (width >= 960px) and (width <= 1280px) {\n max-width: 44vw;\n }\n\n @media (width >= 1280px) {\n max-width: 40vw;\n }\n}\n\n.base-size {\n & > :first-child {\n max-height: 84vh;\n }\n\n /* fullScreenBreakpointMap['base'] = 720px (breakpoints.tablet) */\n @media (width <= 720px) {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n\n &,\n & > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n }\n\n @media (width >= 720px) and (width <= 960px) {\n max-width: 88vw;\n }\n\n @media (width >= 960px) and (width <= 1280px) {\n max-width: 72vw;\n }\n\n @media (width >= 1280px) {\n max-width: 52vw;\n }\n}\n\n.lg-size {\n & > :first-child {\n max-height: 96vh;\n }\n\n /* fullScreenBreakpointMap['lg'] = 960px (breakpoints.lgTablet) */\n @media (width <= 960px) {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n\n &,\n & > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n }\n\n @media (width >= 960px) and (width <= 1280px) {\n max-width: 88vw;\n }\n\n @media (width >= 1280px) {\n max-width: 80vw;\n }\n}\n"],"names":[],"mappings":";;;;AAAA,eAAA,CAAA,6vLAAA;AAAA,kBAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,uBAAA,CAAA,qBAAA,CAAA,+BAAA,CAAA,WAAA,CAAA,qBAAA,CAAA,YAAA,CAAA,sBAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,sBAAA,CAAA,aAAA,CAAA,uBAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,sBAAA,CAAA,SAAA,CAAA,oBAAA;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import insertStyle from '../../_virtual/____insertStyle.js';
|
|
2
2
|
|
|
3
|
-
insertStyle("/* Scroll-lock: prevents body scrolling when modal is open.\n The class persists through AnimatePresence exit animations because\n it's managed by the ScrollLock component mounted inside AnimatePresence. */\nbody.veeqo-modal-open {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n@keyframes
|
|
4
|
-
var modalStyles = {"dialog":"
|
|
3
|
+
insertStyle("/* Scroll-lock: prevents body scrolling when modal is open.\n The class persists through AnimatePresence exit animations because\n it's managed by the ScrollLock component mounted inside AnimatePresence. */\nbody.veeqo-modal-open {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n@keyframes _fadeIn_sccv3_1 {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n._dialog_sccv3_17 {\n padding: 0;\n border: none;\n border-radius: var(--sizes-sm);\n box-shadow: var(--shadows-lg);\n z-index: var(--layers-modal);\n /* Targets Card.Surface: the sole direct child of dialog.\n Wave 3 (Card migration) can update to CSS Module class reference. */\n /* Targets Card.Footer */\n}\n._dialog_sccv3_17::backdrop {\n animation: _fadeIn_sccv3_1 0.25s ease forwards;\n background-color: rgba(55, 66, 77, 0.5);\n width: 100%;\n height: 100%;\n}\n._dialog_sccv3_17 > :first-child {\n display: flex;\n flex-direction: column;\n}\n._dialog_sccv3_17 > :first-child ._mainSection_sccv3_37 {\n padding-bottom: var(--sizes-md);\n}\n._dialog_sccv3_17 > :first-child footer {\n margin-top: 0;\n}\n\n._secondaryAppearance_sccv3_44::backdrop {\n animation: none;\n opacity: 0;\n}\n\n/* ---------- MainSection ---------- */\n._mainSection_sccv3_37 {\n flex: 1;\n overflow-y: auto;\n}\n\n._mainSection_sccv3_37:not(._fullBleed_sccv3_55) {\n padding: 0 var(--sizes-md);\n}\n\n/* Scrollable shadow on Card.Footer when content overflows */\n._mainSection_sccv3_37._scrollable_sccv3_60 + footer {\n box-shadow: 0px 10px 15px 0px var(--colors-neutral-ink-dark);\n}\n\n/* ---------- Modal display mode ---------- */\n._modal_sccv3_65 {\n min-width: 464px;\n /* Critical for framer-motion exit animations: prevents HTML dialog from\n hiding via UA stylesheet when 'open' attribute is removed. */\n}\n._modal_sccv3_65 > :first-child {\n border: none;\n}\n._modal_sccv3_65:not([open]) {\n display: block;\n position: fixed;\n inset: 0;\n transform: translate(-50%, -50%);\n}\n\n/* ---------- Side drawer shared base ---------- */\n._leftDrawer_sccv3_81,\n._rightDrawer_sccv3_82 {\n height: 100%;\n max-height: 100%;\n min-width: 320px;\n width: 400px;\n margin: 0;\n position: fixed;\n transform: none;\n border-radius: 0;\n overflow: visible;\n /* Critical for framer-motion exit animations */\n}\n._leftDrawer_sccv3_81 > :first-child,\n._rightDrawer_sccv3_82 > :first-child {\n border-radius: 0;\n height: 100%;\n}\n._leftDrawer_sccv3_81:not([open]),\n._rightDrawer_sccv3_82:not([open]) {\n display: block;\n}\n\n._leftDrawer_sccv3_81 {\n inset: 0 auto 0 0;\n}\n\n._rightDrawer_sccv3_82 {\n inset: 0 0 0 auto;\n}\n\n/* ---------- Size-specific responsive widths ---------- */\n/* Values hardcoded from constants.ts (heightMap, widthMap, fullScreenBreakpointMap) */\n._xs-size_sccv3_114 {\n /* fullScreenBreakpointMap['xs'] = 640px (breakpoints.mobile) */\n}\n._xs-size_sccv3_114 > :first-child {\n max-height: 84vh;\n}\n@media (width <= 640px) {\n ._xs-size_sccv3_114 {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n }\n ._xs-size_sccv3_114, ._xs-size_sccv3_114 > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n}\n@media (width >= 641px) and (width <= 720px) {\n ._xs-size_sccv3_114 {\n max-width: 60vw;\n }\n}\n@media (width >= 720px) and (width <= 960px) {\n ._xs-size_sccv3_114 {\n max-width: 48vw;\n }\n}\n@media (width >= 960px) and (width <= 1280px) {\n ._xs-size_sccv3_114 {\n max-width: 36vw;\n }\n}\n@media (width >= 1280px) {\n ._xs-size_sccv3_114 {\n max-width: 32vw;\n }\n}\n\n._sm-size_sccv3_155 {\n /* fullScreenBreakpointMap['sm'] = 640px (breakpoints.mobile) */\n}\n._sm-size_sccv3_155 > :first-child {\n max-height: 72vh;\n}\n@media (width <= 640px) {\n ._sm-size_sccv3_155 {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n }\n ._sm-size_sccv3_155, ._sm-size_sccv3_155 > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n}\n@media (width >= 641px) and (width <= 720px) {\n ._sm-size_sccv3_155 {\n max-width: 72vw;\n }\n}\n@media (width >= 720px) and (width <= 960px) {\n ._sm-size_sccv3_155 {\n max-width: 56vw;\n }\n}\n@media (width >= 960px) and (width <= 1280px) {\n ._sm-size_sccv3_155 {\n max-width: 44vw;\n }\n}\n@media (width >= 1280px) {\n ._sm-size_sccv3_155 {\n max-width: 40vw;\n }\n}\n\n._base-size_sccv3_196 {\n /* fullScreenBreakpointMap['base'] = 720px (breakpoints.tablet) */\n}\n._base-size_sccv3_196 > :first-child {\n max-height: 84vh;\n}\n@media (width <= 720px) {\n ._base-size_sccv3_196 {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n }\n ._base-size_sccv3_196, ._base-size_sccv3_196 > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n}\n@media (width >= 720px) and (width <= 960px) {\n ._base-size_sccv3_196 {\n max-width: 88vw;\n }\n}\n@media (width >= 960px) and (width <= 1280px) {\n ._base-size_sccv3_196 {\n max-width: 72vw;\n }\n}\n@media (width >= 1280px) {\n ._base-size_sccv3_196 {\n max-width: 52vw;\n }\n}\n\n._lg-size_sccv3_232 {\n /* fullScreenBreakpointMap['lg'] = 960px (breakpoints.lgTablet) */\n}\n._lg-size_sccv3_232 > :first-child {\n max-height: 96vh;\n}\n@media (width <= 960px) {\n ._lg-size_sccv3_232 {\n margin: 0;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n }\n ._lg-size_sccv3_232, ._lg-size_sccv3_232 > :first-child {\n border-radius: 0;\n height: 100%;\n width: 100%;\n max-height: unset;\n }\n}\n@media (width >= 960px) and (width <= 1280px) {\n ._lg-size_sccv3_232 {\n max-width: 88vw;\n }\n}\n@media (width >= 1280px) {\n ._lg-size_sccv3_232 {\n max-width: 80vw;\n }\n}");
|
|
4
|
+
var modalStyles = {"dialog":"_dialog_sccv3_17","fadeIn":"_fadeIn_sccv3_1","mainSection":"_mainSection_sccv3_37","secondaryAppearance":"_secondaryAppearance_sccv3_44","fullBleed":"_fullBleed_sccv3_55","scrollable":"_scrollable_sccv3_60","modal":"_modal_sccv3_65","leftDrawer":"_leftDrawer_sccv3_81","rightDrawer":"_rightDrawer_sccv3_82","xs-size":"_xs-size_sccv3_114","sm-size":"_sm-size_sccv3_155","base-size":"_base-size_sccv3_196","lg-size":"_lg-size_sccv3_232"};
|
|
5
5
|
|
|
6
6
|
export { modalStyles as default };
|
|
7
7
|
//# sourceMappingURL=Modal.module.scss.js.map
|