@veeqo/ui 14.12.0 → 14.13.1
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/DataGrid/components/Body/BodyCell/BodyCell.cjs +0 -1
- package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs.map +1 -1
- package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js +0 -1
- package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js.map +1 -1
- package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs +0 -1
- package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs.map +1 -1
- package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js +0 -1
- package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js.map +1 -1
- package/dist/components/DataTable/DataTable.cjs +0 -1
- package/dist/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.js +0 -1
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/DataTable/renderers/renderHeader.cjs +0 -1
- package/dist/components/DataTable/renderers/renderHeader.cjs.map +1 -1
- package/dist/components/DataTable/renderers/renderHeader.js +0 -1
- package/dist/components/DataTable/renderers/renderHeader.js.map +1 -1
- package/dist/components/LegacyDataTable/StickyHeader.cjs +22 -4
- package/dist/components/LegacyDataTable/StickyHeader.cjs.map +1 -1
- package/dist/components/LegacyDataTable/StickyHeader.js +23 -5
- package/dist/components/LegacyDataTable/StickyHeader.js.map +1 -1
- package/dist/components/Loader/Loader.cjs +4 -4
- package/dist/components/Loader/Loader.cjs.map +1 -1
- package/dist/components/Loader/Loader.d.ts +1 -1
- package/dist/components/Loader/Loader.js +4 -4
- package/dist/components/Loader/Loader.js.map +1 -1
- package/dist/components/Loader/TailSpin.cjs +3 -5
- package/dist/components/Loader/TailSpin.cjs.map +1 -1
- package/dist/components/Loader/TailSpin.js +3 -5
- package/dist/components/Loader/TailSpin.js.map +1 -1
- package/dist/components/Loader/loader.module.scss.cjs +2 -2
- package/dist/components/Loader/loader.module.scss.cjs.map +1 -1
- package/dist/components/Loader/loader.module.scss.js +2 -2
- package/dist/components/Loader/loader.module.scss.js.map +1 -1
- package/dist/components/Loader/loaderTypes.d.ts +5 -0
- package/dist/components/Modal/Modal.cjs +2 -20
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.js +1 -19
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Popup/Popup.cjs +28 -0
- package/dist/components/Popup/Popup.cjs.map +1 -0
- package/dist/components/Popup/Popup.d.ts +3 -0
- package/dist/components/Popup/Popup.js +22 -0
- package/dist/components/Popup/Popup.js.map +1 -0
- package/dist/components/Popup/Popup.module.scss.cjs +9 -0
- package/dist/components/Popup/Popup.module.scss.cjs.map +1 -0
- package/dist/components/Popup/Popup.module.scss.js +7 -0
- package/dist/components/Popup/Popup.module.scss.js.map +1 -0
- package/dist/components/Popup/index.d.ts +2 -0
- package/dist/components/{VideoModal/components/Popup.d.ts → Popup/types.d.ts} +1 -2
- package/dist/components/ScrollLock/ScrollLock.cjs +26 -0
- package/dist/components/ScrollLock/ScrollLock.cjs.map +1 -0
- package/dist/components/ScrollLock/ScrollLock.d.ts +1 -0
- package/dist/components/ScrollLock/ScrollLock.js +24 -0
- package/dist/components/ScrollLock/ScrollLock.js.map +1 -0
- package/dist/components/ScrollLock/index.d.ts +1 -0
- package/dist/components/ViewsContainer/hooks/useSetScrollPosition.cjs +8 -2
- package/dist/components/ViewsContainer/hooks/useSetScrollPosition.cjs.map +1 -1
- package/dist/components/ViewsContainer/hooks/useSetScrollPosition.js +8 -2
- package/dist/components/ViewsContainer/hooks/useSetScrollPosition.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/index.cjs +2 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/theme/index.cjs +0 -1
- package/dist/theme/index.cjs.map +1 -1
- package/dist/theme/index.d.ts +0 -1
- package/dist/theme/index.js +0 -1
- package/dist/theme/index.js.map +1 -1
- package/package.json +2 -14
- package/dist/components/VideoModal/VideoModal.cjs +0 -26
- package/dist/components/VideoModal/VideoModal.cjs.map +0 -1
- package/dist/components/VideoModal/VideoModal.d.ts +0 -3
- package/dist/components/VideoModal/VideoModal.js +0 -20
- package/dist/components/VideoModal/VideoModal.js.map +0 -1
- package/dist/components/VideoModal/VideoModalDemo.d.ts +0 -2
- package/dist/components/VideoModal/components/Popup.cjs +0 -24
- package/dist/components/VideoModal/components/Popup.cjs.map +0 -1
- package/dist/components/VideoModal/components/Popup.js +0 -17
- package/dist/components/VideoModal/components/Popup.js.map +0 -1
- package/dist/components/VideoModal/components/styled.cjs +0 -26
- package/dist/components/VideoModal/components/styled.cjs.map +0 -1
- package/dist/components/VideoModal/components/styled.d.ts +0 -8
- package/dist/components/VideoModal/components/styled.js +0 -18
- package/dist/components/VideoModal/components/styled.js.map +0 -1
- package/dist/components/VideoModal/index.d.ts +0 -2
- package/dist/components/VideoModal/styled.cjs +0 -17
- package/dist/components/VideoModal/styled.cjs.map +0 -1
- package/dist/components/VideoModal/styled.d.ts +0 -11
- package/dist/components/VideoModal/styled.js +0 -9
- package/dist/components/VideoModal/styled.js.map +0 -1
- package/dist/components/VideoModal/types.d.ts +0 -9
- package/dist/theme/utils.cjs +0 -8
- package/dist/theme/utils.cjs.map +0 -1
- package/dist/theme/utils.d.ts +0 -2
- package/dist/theme/utils.js +0 -6
- package/dist/theme/utils.js.map +0 -1
- package/dist/utils/forms/inputStyles.d.ts +0 -22
- package/dist/utils/forms/variables.d.ts +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickyHeader.js","sources":["../../../src/components/LegacyDataTable/StickyHeader.tsx"],"sourcesContent":["import React, {
|
|
1
|
+
{"version":3,"file":"StickyHeader.js","sources":["../../../src/components/LegacyDataTable/StickyHeader.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FakeHeaderTable, StickyHeaderWrapper } from './styled';\nimport { useStickyHeader } from './utils/hooks';\n\ntype StickyHeaderPropTypes = {\n tableRef: React.RefObject<HTMLTableElement>;\n wrapperRef: React.RefObject<HTMLDivElement>;\n isFixedLayout: boolean;\n renderHeader: (offset?: number) => React.ReactNode;\n wrapperStyle?: React.CSSProperties;\n};\n\nexport const StickyHeader = ({\n renderHeader,\n tableRef,\n wrapperRef,\n isFixedLayout,\n wrapperStyle,\n}: StickyHeaderPropTypes) => {\n const [headerWrapperRef, setHeaderWrapperRef] = useState<HTMLDivElement | null>(null);\n const { isSticky } = useStickyHeader(\n tableRef,\n parseInt(\n typeof wrapperStyle?.top === 'string' ? wrapperStyle?.top : `${wrapperStyle?.top}`,\n 10,\n ),\n );\n\n // here we use 2, because we also have borders on each side by 1 px\n const wrapperWidth = (wrapperRef.current?.getBoundingClientRect().width || 0) - 2;\n\n // Re-render when the wrapper scrolls so the sticky header stays in sync.\n // This replaces the previous `useScroll(wrapperRef)` from react-use which\n // was only used for its re-render side effect (return value was discarded).\n const [, setScrollTick] = useState(0);\n const frameRef = useRef(0);\n\n useEffect(() => {\n const el = wrapperRef.current;\n if (!el) return;\n\n const handler = () => {\n cancelAnimationFrame(frameRef.current);\n frameRef.current = requestAnimationFrame(() => {\n setScrollTick((t) => t + 1);\n });\n };\n\n el.addEventListener('scroll', handler, { passive: true });\n // eslint-disable-next-line consistent-return\n return () => {\n el.removeEventListener('scroll', handler);\n cancelAnimationFrame(frameRef.current);\n };\n }, [wrapperRef]);\n\n const updateScroll = (ref?: HTMLDivElement | null) => {\n const scrollLeft = wrapperRef.current?.scrollLeft || 0;\n\n if (ref) {\n // eslint-disable-next-line no-param-reassign\n ref.scrollLeft = scrollLeft;\n return;\n }\n\n if (headerWrapperRef) headerWrapperRef.scrollLeft = scrollLeft;\n };\n\n updateScroll();\n\n return isSticky ? (\n <StickyHeaderWrapper\n ref={(ref: HTMLDivElement | null) => {\n setHeaderWrapperRef(ref);\n updateScroll(ref);\n }}\n style={{ width: wrapperWidth, ...wrapperStyle }}\n >\n <FakeHeaderTable style={{ tableLayout: isFixedLayout ? 'fixed' : 'auto' }}>\n {renderHeader()}\n </FakeHeaderTable>\n </StickyHeaderWrapper>\n ) : null;\n};\n"],"names":["React"],"mappings":";;;;AAYO,MAAM,YAAY,GAAG,CAAC,EAC3B,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,YAAY,GACU,KAAI;;IAC1B,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC;IACrF,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAClC,QAAQ,EACR,QAAQ,CACN,QAAO,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZ,YAAY,CAAE,GAAG,CAAA,KAAK,QAAQ,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZ,YAAY,CAAE,GAAG,GAAG,CAAA,EAAG,YAAY,aAAZ,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZ,YAAY,CAAE,GAAG,EAAE,EAClF,EAAE,CACH,CACF;;AAGD,IAAA,MAAM,YAAY,GAAG,CAAC,CAAA,CAAA,EAAA,GAAA,UAAU,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,qBAAqB,GAAG,KAAK,KAAI,CAAC,IAAI,CAAC;;;;IAKjF,MAAM,GAAG,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;IAE1B,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO;AAC7B,QAAA,IAAI,CAAC,EAAE;YAAE;QAET,MAAM,OAAO,GAAG,MAAK;AACnB,YAAA,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtC,YAAA,QAAQ,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAK;gBAC5C,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AAED,QAAA,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;AAEzD,QAAA,OAAO,MAAK;AACV,YAAA,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC;AACzC,YAAA,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxC,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,YAAY,GAAG,CAAC,GAA2B,KAAI;;QACnD,MAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,UAAU,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,UAAU,KAAI,CAAC;AAEtD,QAAA,IAAI,GAAG,EAAE;;AAEP,YAAA,GAAG,CAAC,UAAU,GAAG,UAAU;YAC3B;AACD,QAAA;AAED,QAAA,IAAI,gBAAgB;AAAE,YAAA,gBAAgB,CAAC,UAAU,GAAG,UAAU;AAChE,IAAA,CAAC;AAED,IAAA,YAAY,EAAE;AAEd,IAAA,OAAO,QAAQ,IACbA,cAAA,CAAA,aAAA,CAAC,mBAAmB,EAAA,EAClB,GAAG,EAAE,CAAC,GAA0B,KAAI;YAClC,mBAAmB,CAAC,GAAG,CAAC;YACxB,YAAY,CAAC,GAAG,CAAC;QACnB,CAAC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,EAAA;QAE/CA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,GAAG,OAAO,GAAG,MAAM,EAAE,EAAA,EACtE,YAAY,EAAE,CACC,CACE,IACpB,IAAI;AACV;;;;"}
|
|
@@ -12,18 +12,18 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
|
|
|
12
12
|
|
|
13
13
|
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
14
14
|
|
|
15
|
-
const Loader = ({ className, height = 24, width = 24, type = 'TailSpin', }) => {
|
|
15
|
+
const Loader = ({ className, height = 24, width = 24, type = 'TailSpin', label, }) => {
|
|
16
16
|
const classNames = buildClassnames.buildClassnames([loader_module.loader, className]);
|
|
17
17
|
switch (type) {
|
|
18
18
|
case 'Grid': {
|
|
19
|
-
return React__default.default.createElement(Grid.Grid, { className: classNames, height: height, width: width });
|
|
19
|
+
return React__default.default.createElement(Grid.Grid, { className: classNames, height: height, width: width, label: label });
|
|
20
20
|
}
|
|
21
21
|
case 'ThreeDots': {
|
|
22
|
-
return React__default.default.createElement(ThreeDots.ThreeDots, { className: classNames, height: height, width: width });
|
|
22
|
+
return React__default.default.createElement(ThreeDots.ThreeDots, { className: classNames, height: height, width: width, label: label });
|
|
23
23
|
}
|
|
24
24
|
case 'TailSpin':
|
|
25
25
|
default: {
|
|
26
|
-
return React__default.default.createElement(TailSpin.TailSpin, { className: classNames, height: height, width: width });
|
|
26
|
+
return React__default.default.createElement(TailSpin.TailSpin, { className: classNames, height: height, width: width, label: label });
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.cjs","sources":["../../../src/components/Loader/Loader.tsx"],"sourcesContent":["import React from 'react';\n\nimport { buildClassnames } from '../../utils';\nimport { Grid } from './Grid';\nimport { TailSpin } from './TailSpin';\nimport { ThreeDots } from './ThreeDots';\nimport styles from './loader.module.scss';\n\nimport { LoaderProps } from './loaderTypes';\n\nexport const Loader = ({\n className,\n height = 24,\n width = 24,\n type = 'TailSpin',\n}: LoaderProps) => {\n const classNames = buildClassnames([styles.loader, className]);\n\n switch (type) {\n case 'Grid': {\n return <Grid className={classNames} height={height} width={width} />;\n }\n case 'ThreeDots': {\n return <ThreeDots className={classNames} height={height} width={width} />;\n }\n case 'TailSpin':\n default: {\n return <TailSpin className={classNames} height={height} width={width} />;\n }\n }\n};\n"],"names":["buildClassnames","styles","React","Grid","ThreeDots","TailSpin"],"mappings":";;;;;;;;;;;;;;MAUa,MAAM,GAAG,CAAC,EACrB,SAAS,EACT,MAAM,GAAG,EAAE,EACX,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"Loader.cjs","sources":["../../../src/components/Loader/Loader.tsx"],"sourcesContent":["import React from 'react';\n\nimport { buildClassnames } from '../../utils';\nimport { Grid } from './Grid';\nimport { TailSpin } from './TailSpin';\nimport { ThreeDots } from './ThreeDots';\nimport styles from './loader.module.scss';\n\nimport { LoaderProps } from './loaderTypes';\n\nexport const Loader = ({\n className,\n height = 24,\n width = 24,\n type = 'TailSpin',\n label,\n}: LoaderProps) => {\n const classNames = buildClassnames([styles.loader, className]);\n\n switch (type) {\n case 'Grid': {\n return <Grid className={classNames} height={height} width={width} label={label} />;\n }\n case 'ThreeDots': {\n return <ThreeDots className={classNames} height={height} width={width} label={label} />;\n }\n case 'TailSpin':\n default: {\n return <TailSpin className={classNames} height={height} width={width} label={label} />;\n }\n }\n};\n"],"names":["buildClassnames","styles","React","Grid","ThreeDots","TailSpin"],"mappings":";;;;;;;;;;;;;;MAUa,MAAM,GAAG,CAAC,EACrB,SAAS,EACT,MAAM,GAAG,EAAE,EACX,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,UAAU,EACjB,KAAK,GACO,KAAI;AAChB,IAAA,MAAM,UAAU,GAAGA,+BAAe,CAAC,CAACC,aAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE9D,IAAA,QAAQ,IAAI;QACV,KAAK,MAAM,EAAE;AACX,YAAA,OAAOC,qCAACC,SAAI,EAAA,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI;AACnF,QAAA;QACD,KAAK,WAAW,EAAE;AAChB,YAAA,OAAOD,qCAACE,mBAAS,EAAA,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI;AACxF,QAAA;AACD,QAAA,KAAK,UAAU;AACf,QAAA,SAAS;AACP,YAAA,OAAOF,qCAACG,iBAAQ,EAAA,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI;AACvF,QAAA;AACF;AACH;;;;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { LoaderProps } from './loaderTypes';
|
|
3
|
-
export declare const Loader: ({ className, height, width, type, }: LoaderProps) => React.JSX.Element;
|
|
3
|
+
export declare const Loader: ({ className, height, width, type, label, }: LoaderProps) => React.JSX.Element;
|
|
@@ -6,18 +6,18 @@ import { TailSpin } from './TailSpin.js';
|
|
|
6
6
|
import { ThreeDots } from './ThreeDots.js';
|
|
7
7
|
import styles from './loader.module.scss.js';
|
|
8
8
|
|
|
9
|
-
const Loader = ({ className, height = 24, width = 24, type = 'TailSpin', }) => {
|
|
9
|
+
const Loader = ({ className, height = 24, width = 24, type = 'TailSpin', label, }) => {
|
|
10
10
|
const classNames = buildClassnames([styles.loader, className]);
|
|
11
11
|
switch (type) {
|
|
12
12
|
case 'Grid': {
|
|
13
|
-
return React__default.createElement(Grid, { className: classNames, height: height, width: width });
|
|
13
|
+
return React__default.createElement(Grid, { className: classNames, height: height, width: width, label: label });
|
|
14
14
|
}
|
|
15
15
|
case 'ThreeDots': {
|
|
16
|
-
return React__default.createElement(ThreeDots, { className: classNames, height: height, width: width });
|
|
16
|
+
return React__default.createElement(ThreeDots, { className: classNames, height: height, width: width, label: label });
|
|
17
17
|
}
|
|
18
18
|
case 'TailSpin':
|
|
19
19
|
default: {
|
|
20
|
-
return React__default.createElement(TailSpin, { className: classNames, height: height, width: width });
|
|
20
|
+
return React__default.createElement(TailSpin, { className: classNames, height: height, width: width, label: label });
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.js","sources":["../../../src/components/Loader/Loader.tsx"],"sourcesContent":["import React from 'react';\n\nimport { buildClassnames } from '../../utils';\nimport { Grid } from './Grid';\nimport { TailSpin } from './TailSpin';\nimport { ThreeDots } from './ThreeDots';\nimport styles from './loader.module.scss';\n\nimport { LoaderProps } from './loaderTypes';\n\nexport const Loader = ({\n className,\n height = 24,\n width = 24,\n type = 'TailSpin',\n}: LoaderProps) => {\n const classNames = buildClassnames([styles.loader, className]);\n\n switch (type) {\n case 'Grid': {\n return <Grid className={classNames} height={height} width={width} />;\n }\n case 'ThreeDots': {\n return <ThreeDots className={classNames} height={height} width={width} />;\n }\n case 'TailSpin':\n default: {\n return <TailSpin className={classNames} height={height} width={width} />;\n }\n }\n};\n"],"names":["React"],"mappings":";;;;;;;;MAUa,MAAM,GAAG,CAAC,EACrB,SAAS,EACT,MAAM,GAAG,EAAE,EACX,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"Loader.js","sources":["../../../src/components/Loader/Loader.tsx"],"sourcesContent":["import React from 'react';\n\nimport { buildClassnames } from '../../utils';\nimport { Grid } from './Grid';\nimport { TailSpin } from './TailSpin';\nimport { ThreeDots } from './ThreeDots';\nimport styles from './loader.module.scss';\n\nimport { LoaderProps } from './loaderTypes';\n\nexport const Loader = ({\n className,\n height = 24,\n width = 24,\n type = 'TailSpin',\n label,\n}: LoaderProps) => {\n const classNames = buildClassnames([styles.loader, className]);\n\n switch (type) {\n case 'Grid': {\n return <Grid className={classNames} height={height} width={width} label={label} />;\n }\n case 'ThreeDots': {\n return <ThreeDots className={classNames} height={height} width={width} label={label} />;\n }\n case 'TailSpin':\n default: {\n return <TailSpin className={classNames} height={height} width={width} label={label} />;\n }\n }\n};\n"],"names":["React"],"mappings":";;;;;;;;MAUa,MAAM,GAAG,CAAC,EACrB,SAAS,EACT,MAAM,GAAG,EAAE,EACX,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,UAAU,EACjB,KAAK,GACO,KAAI;AAChB,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE9D,IAAA,QAAQ,IAAI;QACV,KAAK,MAAM,EAAE;AACX,YAAA,OAAOA,6BAAC,IAAI,EAAA,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI;AACnF,QAAA;QACD,KAAK,WAAW,EAAE;AAChB,YAAA,OAAOA,6BAAC,SAAS,EAAA,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI;AACxF,QAAA;AACD,QAAA,KAAK,UAAU;AACf,QAAA,SAAS;AACP,YAAA,OAAOA,6BAAC,QAAQ,EAAA,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI;AACvF,QAAA;AACF;AACH;;;;"}
|
|
@@ -6,11 +6,9 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
|
|
|
6
6
|
|
|
7
7
|
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
8
8
|
|
|
9
|
-
const TailSpin = ({ width, height, className, label }) => (React__default.default.createElement("svg", { width: width, height: height, className: className, viewBox: "
|
|
10
|
-
React__default.default.createElement("
|
|
11
|
-
React__default.default.createElement("
|
|
12
|
-
React__default.default.createElement("path", { d: "M36 18c0-9.94-8.06-18-18-18", id: "Oval-2", stroke: "currentColor", strokeWidth: "3" },
|
|
13
|
-
React__default.default.createElement("animateTransform", { attributeName: "transform", type: "rotate", from: "0 18 18", to: "360 18 18", dur: "0.9s", repeatCount: "indefinite" }))))));
|
|
9
|
+
const TailSpin = ({ width, height, className, label }) => (React__default.default.createElement("svg", { width: width, height: height, className: className, viewBox: "-2.5 -2.5 41 41", xmlns: "http://www.w3.org/2000/svg", role: label ? 'img' : undefined, "aria-label": label || undefined, "aria-hidden": !label || undefined },
|
|
10
|
+
React__default.default.createElement("path", { d: "M18 0 A18 18 0 1 1 0 18", fill: "none", stroke: "currentColor", strokeWidth: "3.3", strokeLinecap: "round" },
|
|
11
|
+
React__default.default.createElement("animateTransform", { attributeName: "transform", type: "rotate", from: "0 18 18", to: "360 18 18", dur: "0.9s", repeatCount: "indefinite" }))));
|
|
14
12
|
|
|
15
13
|
exports.TailSpin = TailSpin;
|
|
16
14
|
//# sourceMappingURL=TailSpin.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailSpin.cjs","sources":["../../../src/components/Loader/TailSpin.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface TailSpinProps {\n width?: number;\n height?: number;\n className?: string;\n label?: string;\n}\n\nexport const TailSpin = ({ width, height, className, label }: TailSpinProps) => (\n <svg\n width={width}\n height={height}\n className={className}\n viewBox=\"
|
|
1
|
+
{"version":3,"file":"TailSpin.cjs","sources":["../../../src/components/Loader/TailSpin.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface TailSpinProps {\n width?: number;\n height?: number;\n className?: string;\n label?: string;\n}\n\nexport const TailSpin = ({ width, height, className, label }: TailSpinProps) => (\n <svg\n width={width}\n height={height}\n className={className}\n viewBox=\"-2.5 -2.5 41 41\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role={label ? 'img' : undefined}\n aria-label={label || undefined}\n aria-hidden={!label || undefined}\n >\n <path\n d=\"M18 0 A18 18 0 1 1 0 18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3.3\"\n strokeLinecap=\"round\"\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"0.9s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n);\n"],"names":["React"],"mappings":";;;;;;;;AASO,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAiB,MACzEA,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAC,iBAAiB,EACzB,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,EAAA,YAAA,EACnB,KAAK,IAAI,SAAS,EAAA,aAAA,EACjB,CAAC,KAAK,IAAI,SAAS,EAAA;AAEhC,IAAAA,sBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,yBAAyB,EAC3B,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EAAA;QAErBA,sBAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EACE,aAAa,EAAC,WAAW,EACzB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,SAAS,EACd,EAAE,EAAC,WAAW,EACd,GAAG,EAAC,MAAM,EACV,WAAW,EAAC,YAAY,EAAA,CACxB,CACG,CACH;;;;"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
2
|
|
|
3
|
-
const TailSpin = ({ width, height, className, label }) => (React__default.createElement("svg", { width: width, height: height, className: className, viewBox: "
|
|
4
|
-
React__default.createElement("
|
|
5
|
-
React__default.createElement("
|
|
6
|
-
React__default.createElement("path", { d: "M36 18c0-9.94-8.06-18-18-18", id: "Oval-2", stroke: "currentColor", strokeWidth: "3" },
|
|
7
|
-
React__default.createElement("animateTransform", { attributeName: "transform", type: "rotate", from: "0 18 18", to: "360 18 18", dur: "0.9s", repeatCount: "indefinite" }))))));
|
|
3
|
+
const TailSpin = ({ width, height, className, label }) => (React__default.createElement("svg", { width: width, height: height, className: className, viewBox: "-2.5 -2.5 41 41", xmlns: "http://www.w3.org/2000/svg", role: label ? 'img' : undefined, "aria-label": label || undefined, "aria-hidden": !label || undefined },
|
|
4
|
+
React__default.createElement("path", { d: "M18 0 A18 18 0 1 1 0 18", fill: "none", stroke: "currentColor", strokeWidth: "3.3", strokeLinecap: "round" },
|
|
5
|
+
React__default.createElement("animateTransform", { attributeName: "transform", type: "rotate", from: "0 18 18", to: "360 18 18", dur: "0.9s", repeatCount: "indefinite" }))));
|
|
8
6
|
|
|
9
7
|
export { TailSpin };
|
|
10
8
|
//# sourceMappingURL=TailSpin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailSpin.js","sources":["../../../src/components/Loader/TailSpin.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface TailSpinProps {\n width?: number;\n height?: number;\n className?: string;\n label?: string;\n}\n\nexport const TailSpin = ({ width, height, className, label }: TailSpinProps) => (\n <svg\n width={width}\n height={height}\n className={className}\n viewBox=\"
|
|
1
|
+
{"version":3,"file":"TailSpin.js","sources":["../../../src/components/Loader/TailSpin.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface TailSpinProps {\n width?: number;\n height?: number;\n className?: string;\n label?: string;\n}\n\nexport const TailSpin = ({ width, height, className, label }: TailSpinProps) => (\n <svg\n width={width}\n height={height}\n className={className}\n viewBox=\"-2.5 -2.5 41 41\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role={label ? 'img' : undefined}\n aria-label={label || undefined}\n aria-hidden={!label || undefined}\n >\n <path\n d=\"M18 0 A18 18 0 1 1 0 18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3.3\"\n strokeLinecap=\"round\"\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"0.9s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n);\n"],"names":["React"],"mappings":";;AASO,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAiB,MACzEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAC,iBAAiB,EACzB,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,EAAA,YAAA,EACnB,KAAK,IAAI,SAAS,EAAA,aAAA,EACjB,CAAC,KAAK,IAAI,SAAS,EAAA;AAEhC,IAAAA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,yBAAyB,EAC3B,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EAAA;QAErBA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EACE,aAAa,EAAC,WAAW,EACzB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,SAAS,EACd,EAAE,EAAC,WAAW,EACd,GAAG,EAAC,MAAM,EACV,WAAW,EAAC,YAAY,EAAA,CACxB,CACG,CACH;;;;"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var ___$insertStyle = require('../../_virtual/____insertStyle.cjs');
|
|
4
4
|
|
|
5
|
-
___$insertStyle(":where(.
|
|
6
|
-
var styles = {"loader":"
|
|
5
|
+
___$insertStyle(":where(._loader_17d16_1) {\n color: var(--colors-secondary-blue-base);\n}\n\n._white_17d16_5 {\n color: white;\n}");
|
|
6
|
+
var styles = {"loader":"_loader_17d16_1"};
|
|
7
7
|
|
|
8
8
|
module.exports = styles;
|
|
9
9
|
//# sourceMappingURL=loader.module.scss.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.module.scss.cjs","sources":["../../../src/components/Loader/loader.module.scss"],"sourcesContent":[":where(.loader) {\n color: var(--colors-secondary-blue-base);\n}\n"],"names":[],"mappings":";;;;AACE,eAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"loader.module.scss.cjs","sources":["../../../src/components/Loader/loader.module.scss"],"sourcesContent":[":where(.loader) {\n color: var(--colors-secondary-blue-base);\n}\n\n.white {\n color: white;\n}\n"],"names":[],"mappings":";;;;AACE,eAAA,CAAA,qHAAA;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import insertStyle from '../../_virtual/____insertStyle.js';
|
|
2
2
|
|
|
3
|
-
insertStyle(":where(.
|
|
4
|
-
var styles = {"loader":"
|
|
3
|
+
insertStyle(":where(._loader_17d16_1) {\n color: var(--colors-secondary-blue-base);\n}\n\n._white_17d16_5 {\n color: white;\n}");
|
|
4
|
+
var styles = {"loader":"_loader_17d16_1"};
|
|
5
5
|
|
|
6
6
|
export { styles as default };
|
|
7
7
|
//# sourceMappingURL=loader.module.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.module.scss.js","sources":["../../../src/components/Loader/loader.module.scss"],"sourcesContent":[":where(.loader) {\n color: var(--colors-secondary-blue-base);\n}\n"],"names":["___$insertStyle"],"mappings":";;AACEA,WAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"loader.module.scss.js","sources":["../../../src/components/Loader/loader.module.scss"],"sourcesContent":[":where(.loader) {\n color: var(--colors-secondary-blue-base);\n}\n\n.white {\n color: white;\n}\n"],"names":["___$insertStyle"],"mappings":";;AACEA,WAAA,CAAA,qHAAA;;;;;"}
|
|
@@ -10,6 +10,7 @@ var useIsOverflowing = require('../../hooks/useIsOverflowing.cjs');
|
|
|
10
10
|
var Button = require('../Button/Button.cjs');
|
|
11
11
|
var Card = require('../Card/Card.cjs');
|
|
12
12
|
var CardHeader = require('../CardHeader/CardHeader.cjs');
|
|
13
|
+
var ScrollLock = require('../ScrollLock/ScrollLock.cjs');
|
|
13
14
|
var Stack = require('../Stack/Stack.cjs');
|
|
14
15
|
var utils = require('./utils.cjs');
|
|
15
16
|
var Modal_module = require('./Modal.module.scss.cjs');
|
|
@@ -19,25 +20,6 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
|
|
|
19
20
|
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
20
21
|
|
|
21
22
|
/* eslint-disable react/destructuring-assignment */
|
|
22
|
-
/**
|
|
23
|
-
* Manages body scroll-lock as a component mounted inside AnimatePresence.
|
|
24
|
-
* Reference-counted so multiple simultaneous modals don't conflict:
|
|
25
|
-
* the class only removes when the last modal unmounts.
|
|
26
|
-
*/
|
|
27
|
-
let scrollLockCount = 0;
|
|
28
|
-
const ScrollLock = () => {
|
|
29
|
-
React.useEffect(() => {
|
|
30
|
-
scrollLockCount += 1;
|
|
31
|
-
document.body.classList.add('veeqo-modal-open');
|
|
32
|
-
return () => {
|
|
33
|
-
scrollLockCount -= 1;
|
|
34
|
-
if (scrollLockCount === 0) {
|
|
35
|
-
document.body.classList.remove('veeqo-modal-open');
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
}, []);
|
|
39
|
-
return null;
|
|
40
|
-
};
|
|
41
23
|
const Modal = (props) => {
|
|
42
24
|
const { shouldShow, showHeaderCloseButton = true, preventClose = false, displayMode = 'modal', fullBleed = false, variant = 'base', onClose: parentOnClose, children, ...rest } = props;
|
|
43
25
|
const modalRef = React.useRef(null);
|
|
@@ -76,7 +58,7 @@ const Modal = (props) => {
|
|
|
76
58
|
handleClose();
|
|
77
59
|
};
|
|
78
60
|
return (React__default.default.createElement(framerMotion.AnimatePresence, null, shouldShow && (React__default.default.createElement("div", { "data-testid": "dialog-wrapper", style: { position: 'absolute' } },
|
|
79
|
-
React__default.default.createElement(ScrollLock, null),
|
|
61
|
+
React__default.default.createElement(ScrollLock.ScrollLock, null),
|
|
80
62
|
React__default.default.createElement(Dialog.Dialog, { "data-dialog-type": "modal", displayMode: displayMode, variant: variant, ref: modalRef, onClose: handleClose, onKeyDown: preventClose ? utils.preventDefaultEventOnESC : handleKeyDown, onClick: handleBackdropClick, ...rest, "aria-describedby": "modal_title", appearance: (types.isSideDraw(props) && props.appearance) || 'primary' },
|
|
81
63
|
React__default.default.createElement(Card.Card.Surface, null,
|
|
82
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 }) })),
|
|
@@ -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 { AnimatePresence } from 'framer-motion';\n\nimport { ModalProps, hasFooterSlot, hasHeaderSlot, isSideDraw } from './types';\nimport { Dialog } from './components/Dialog/Dialog';\n\nimport { buildClassnames } from '../../utils';\nimport { useIsOverflowing } from '../../hooks/useIsOverflowing';\nimport { Button } from '../Button';\nimport { Card } from '../Card';\nimport { CardHeader } from '../CardHeader';\nimport { Stack } from '../Stack';\nimport { preventDefaultEventOnESC } from './utils';\nimport modalStyles from './Modal.module.scss';\n\n/**\n * Manages body scroll-lock as a component mounted inside AnimatePresence.\n * Reference-counted so multiple simultaneous modals don't conflict:\n * the class only removes when the last modal unmounts.\n */\nlet scrollLockCount = 0;\n\nconst ScrollLock = () => {\n useEffect(() => {\n scrollLockCount += 1;\n document.body.classList.add('veeqo-modal-open');\n return () => {\n scrollLockCount -= 1;\n if (scrollLockCount === 0) {\n document.body.classList.remove('veeqo-modal-open');\n }\n };\n }, []);\n return null;\n};\n\nexport const Modal = (props: ModalProps) => {\n const {\n shouldShow,\n showHeaderCloseButton = true,\n preventClose = false,\n displayMode = 'modal',\n fullBleed = false,\n variant = '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 variant={variant}\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 <Stack direction=\"horizontal\" alignX={props.leftActions ? 'between' : 'end'}>\n {props.leftActions && (\n <Stack\n direction=\"horizontal\"\n alignX=\"start\"\n data-testid=\"left-actions-container\"\n >\n {props.leftActions.map(({ label, ...actionProps }) => (\n <Button key={label} type=\"button\" {...actionProps}>\n {label}\n </Button>\n ))}\n </Stack>\n )}\n {props.rightActions && (\n <Stack\n direction=\"horizontal\"\n alignX=\"end\"\n data-testid=\"right-actions-container\"\n >\n {props.rightActions.map(({ label, ...actionProps }) => (\n <Button key={label} type=\"button\" {...actionProps}>\n {label}\n </Button>\n ))}\n </Stack>\n )}\n </Stack>\n </Card.Footer>\n )}\n </Card.Surface>\n </Dialog>\n </div>\n )}\n </AnimatePresence>\n );\n};\n"],"names":["useEffect","useRef","useState","useIsOverflowing","React","AnimatePresence","Dialog","preventDefaultEventOnESC","isSideDraw","Card","hasHeaderSlot","CardHeader","buildClassnames","modalStyles","hasFooterSlot","Stack","Button"],"mappings":"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"}
|
|
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 { AnimatePresence } from 'framer-motion';\n\nimport { ModalProps, hasFooterSlot, hasHeaderSlot, isSideDraw } from './types';\nimport { Dialog } from './components/Dialog/Dialog';\n\nimport { buildClassnames } from '../../utils';\nimport { useIsOverflowing } from '../../hooks/useIsOverflowing';\nimport { Button } from '../Button';\nimport { Card } from '../Card';\nimport { CardHeader } from '../CardHeader';\nimport { ScrollLock } from '../ScrollLock';\nimport { Stack } from '../Stack';\nimport { preventDefaultEventOnESC } from './utils';\nimport modalStyles from './Modal.module.scss';\n\nexport const Modal = (props: ModalProps) => {\n const {\n shouldShow,\n showHeaderCloseButton = true,\n preventClose = false,\n displayMode = 'modal',\n fullBleed = false,\n variant = '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 variant={variant}\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 <Stack direction=\"horizontal\" alignX={props.leftActions ? 'between' : 'end'}>\n {props.leftActions && (\n <Stack\n direction=\"horizontal\"\n alignX=\"start\"\n data-testid=\"left-actions-container\"\n >\n {props.leftActions.map(({ label, ...actionProps }) => (\n <Button key={label} type=\"button\" {...actionProps}>\n {label}\n </Button>\n ))}\n </Stack>\n )}\n {props.rightActions && (\n <Stack\n direction=\"horizontal\"\n alignX=\"end\"\n data-testid=\"right-actions-container\"\n >\n {props.rightActions.map(({ label, ...actionProps }) => (\n <Button key={label} type=\"button\" {...actionProps}>\n {label}\n </Button>\n ))}\n </Stack>\n )}\n </Stack>\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","Stack","Button"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAiBO,MAAM,KAAK,GAAG,CAAC,KAAiB,KAAI;AACzC,IAAA,MAAM,EACJ,UAAU,EACV,qBAAqB,GAAG,IAAI,EAC5B,YAAY,GAAG,KAAK,EACpB,WAAW,GAAG,OAAO,EACrB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,MAAM,EAChB,OAAO,EAAE,aAAa,EACtB,QAAQ,EACR,GAAG,IAAI,EACR,GAAG,KAAK;AAET,IAAA,MAAM,QAAQ,GAAGA,YAAM,CAA2B,IAAI,CAAC;IACvD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGC,cAAQ,CAAqB,IAAI,CAAC;IAE9EC,eAAS,CAAC,MAAK;;AACb,QAAA,IAAI,UAAU,EAAE;YACd,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1C,YAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAS,EAAE;AAC9B,QAAA;AACH,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAGC,iCAAgB,CAAC,cAAc,CAAC;IAE1F,MAAM,WAAW,GAAG,MAAK;;AACvB,QAAA,IAAI,YAAY;YAAE;AAElB,QAAA,MAAM,MAAM,GAAG,aAAa,EAAE;QAC9B,IAAI,MAAM,KAAK,KAAK;AAAE,YAAA,OAAO;AAE7B,QAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE;AAC3B,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,CAAyC,KAAI;AAClE,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;AACtB,YAAA,CAAC,CAAC,cAAc,EAAE,CAAC;;YAGnB,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC;AAC7D,YAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC;gBAAE;AAEnE,YAAA,WAAW,EAAE;AACd,QAAA;AACH,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,OAAO,CAAsC,KAAI;QAC3E,IAAI,WAAW,KAAK,OAAO;YAAE;AAC7B,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO;AAAE,YAAA,WAAW,EAAE;AAClD,IAAA,CAAC;AAED,IAAA,QACEC,sBAAA,CAAA,aAAA,CAACC,4BAAe,EAAA,IAAA,EACb,UAAU,KACTD,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EAAiB,gBAAgB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAA;AAC/D,QAAAA,sBAAA,CAAA,aAAA,CAACE,qBAAU,EAAA,IAAA,CAAG;QACdF,sBAAA,CAAA,aAAA,CAACG,aAAM,EAAA,EAAA,kBAAA,EACY,OAAO,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,YAAY,GAAGC,8BAAwB,GAAG,aAAa,EAClE,OAAO,EAAE,mBAAmB,EAAA,GACxB,IAAI,EAAA,kBAAA,EACS,aAAa,EAC9B,UAAU,EAAE,CAACC,gBAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAA;YAEhEL,sBAAA,CAAA,aAAA,CAACM,SAAI,CAAC,OAAO,EAAA,IAAA;gBACVC,mBAAa,CAAC,KAAK,CAAC,IACnB,KAAK,CAAC,UAAU,KAEhBP,sBAAA,CAAA,aAAA,CAACQ,qBAAU,IACT,EAAE,EAAC,aAAa,EAChB,aAAa,EAAC,cAAc,EAC5B,KAAK,EAAE,KAAK,CAAC,WAAW,EACxB,QAAQ,EAAE,KAAK,CAAC,cAAc,MACzB,qBAAqB,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,EAAA,CAC5D,CACH;gBAEDR,sBAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EACE,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,iBAAiB,EACtB,SAAS,EAAES,+BAAe,CAAC;AACzB,wBAAAC,YAAW,CAAC,WAAW;wBACvB,SAAS,IAAIA,YAAW,CAAC,SAAS;wBAClC,oBAAoB,IAAIA,YAAW,CAAC,UAAU;qBAC/C,CAAC,EAAA,EAED,QAAQ,CACD;AAET,gBAAAC,mBAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU;AAExC,gBAAA,CAACA,mBAAa,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC,KACjEX,sBAAA,CAAA,aAAA,CAACM,SAAI,CAAC,MAAM,EAAA,IAAA;AACV,oBAAAN,sBAAA,CAAA,aAAA,CAACY,WAAK,EAAA,EAAC,SAAS,EAAC,YAAY,EAAC,MAAM,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,GAAG,KAAK,EAAA;wBACxE,KAAK,CAAC,WAAW,KAChBZ,sBAAA,CAAA,aAAA,CAACY,WAAK,EAAA,EACJ,SAAS,EAAC,YAAY,EACtB,MAAM,EAAC,OAAO,EAAA,aAAA,EACF,wBAAwB,EAAA,EAEnC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,MAC/CZ,sBAAA,CAAA,aAAA,CAACa,aAAM,EAAA,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,QAAQ,EAAA,GAAK,WAAW,EAAA,EAC9C,KAAK,CACC,CACV,CAAC,CACI,CACT;AACA,wBAAA,KAAK,CAAC,YAAY,KACjBb,sBAAA,CAAA,aAAA,CAACY,WAAK,EAAA,EACJ,SAAS,EAAC,YAAY,EACtB,MAAM,EAAC,KAAK,EAAA,aAAA,EACA,yBAAyB,EAAA,EAEpC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,MAChDZ,sBAAA,CAAA,aAAA,CAACa,aAAM,EAAA,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,QAAQ,EAAA,GAAK,WAAW,EAAA,EAC9C,KAAK,CACC,CACV,CAAC,CACI,CACT,CACK,CACI,CACf,CACY,CACR,CACL,CACP,CACe;AAEtB;;;;"}
|
|
@@ -8,30 +8,12 @@ import { useIsOverflowing } from '../../hooks/useIsOverflowing.js';
|
|
|
8
8
|
import { Button } from '../Button/Button.js';
|
|
9
9
|
import { Card } from '../Card/Card.js';
|
|
10
10
|
import { CardHeader } from '../CardHeader/CardHeader.js';
|
|
11
|
+
import { ScrollLock } from '../ScrollLock/ScrollLock.js';
|
|
11
12
|
import { Stack } from '../Stack/Stack.js';
|
|
12
13
|
import { preventDefaultEventOnESC } from './utils.js';
|
|
13
14
|
import modalStyles from './Modal.module.scss.js';
|
|
14
15
|
|
|
15
16
|
/* eslint-disable react/destructuring-assignment */
|
|
16
|
-
/**
|
|
17
|
-
* Manages body scroll-lock as a component mounted inside AnimatePresence.
|
|
18
|
-
* Reference-counted so multiple simultaneous modals don't conflict:
|
|
19
|
-
* the class only removes when the last modal unmounts.
|
|
20
|
-
*/
|
|
21
|
-
let scrollLockCount = 0;
|
|
22
|
-
const ScrollLock = () => {
|
|
23
|
-
useEffect(() => {
|
|
24
|
-
scrollLockCount += 1;
|
|
25
|
-
document.body.classList.add('veeqo-modal-open');
|
|
26
|
-
return () => {
|
|
27
|
-
scrollLockCount -= 1;
|
|
28
|
-
if (scrollLockCount === 0) {
|
|
29
|
-
document.body.classList.remove('veeqo-modal-open');
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
}, []);
|
|
33
|
-
return null;
|
|
34
|
-
};
|
|
35
17
|
const Modal = (props) => {
|
|
36
18
|
const { shouldShow, showHeaderCloseButton = true, preventClose = false, displayMode = 'modal', fullBleed = false, variant = 'base', onClose: parentOnClose, children, ...rest } = props;
|
|
37
19
|
const modalRef = useRef(null);
|
|
@@ -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 { AnimatePresence } from 'framer-motion';\n\nimport { ModalProps, hasFooterSlot, hasHeaderSlot, isSideDraw } from './types';\nimport { Dialog } from './components/Dialog/Dialog';\n\nimport { buildClassnames } from '../../utils';\nimport { useIsOverflowing } from '../../hooks/useIsOverflowing';\nimport { Button } from '../Button';\nimport { Card } from '../Card';\nimport { CardHeader } from '../CardHeader';\nimport { Stack } from '../Stack';\nimport { preventDefaultEventOnESC } from './utils';\nimport modalStyles from './Modal.module.scss';\n\n/**\n * Manages body scroll-lock as a component mounted inside AnimatePresence.\n * Reference-counted so multiple simultaneous modals don't conflict:\n * the class only removes when the last modal unmounts.\n */\nlet scrollLockCount = 0;\n\nconst ScrollLock = () => {\n useEffect(() => {\n scrollLockCount += 1;\n document.body.classList.add('veeqo-modal-open');\n return () => {\n scrollLockCount -= 1;\n if (scrollLockCount === 0) {\n document.body.classList.remove('veeqo-modal-open');\n }\n };\n }, []);\n return null;\n};\n\nexport const Modal = (props: ModalProps) => {\n const {\n shouldShow,\n showHeaderCloseButton = true,\n preventClose = false,\n displayMode = 'modal',\n fullBleed = false,\n variant = '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 variant={variant}\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 <Stack direction=\"horizontal\" alignX={props.leftActions ? 'between' : 'end'}>\n {props.leftActions && (\n <Stack\n direction=\"horizontal\"\n alignX=\"start\"\n data-testid=\"left-actions-container\"\n >\n {props.leftActions.map(({ label, ...actionProps }) => (\n <Button key={label} type=\"button\" {...actionProps}>\n {label}\n </Button>\n ))}\n </Stack>\n )}\n {props.rightActions && (\n <Stack\n direction=\"horizontal\"\n alignX=\"end\"\n data-testid=\"right-actions-container\"\n >\n {props.rightActions.map(({ label, ...actionProps }) => (\n <Button key={label} type=\"button\" {...actionProps}>\n {label}\n </Button>\n ))}\n </Stack>\n )}\n </Stack>\n </Card.Footer>\n )}\n </Card.Surface>\n </Dialog>\n </div>\n )}\n </AnimatePresence>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;AAAA;AAgBA;;;;AAIG;AACH,IAAI,eAAe,GAAG,CAAC;AAEvB,MAAM,UAAU,GAAG,MAAK;IACtB,SAAS,CAAC,MAAK;QACb,eAAe,IAAI,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC/C,QAAA,OAAO,MAAK;YACV,eAAe,IAAI,CAAC;YACpB,IAAI,eAAe,KAAK,CAAC,EAAE;gBACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACnD,YAAA;AACH,QAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AACN,IAAA,OAAO,IAAI;AACb,CAAC;AAEM,MAAM,KAAK,GAAG,CAAC,KAAiB,KAAI;AACzC,IAAA,MAAM,EACJ,UAAU,EACV,qBAAqB,GAAG,IAAI,EAC5B,YAAY,GAAG,KAAK,EACpB,WAAW,GAAG,OAAO,EACrB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,MAAM,EAChB,OAAO,EAAE,aAAa,EACtB,QAAQ,EACR,GAAG,IAAI,EACR,GAAG,KAAK;AAET,IAAA,MAAM,QAAQ,GAAG,MAAM,CAA2B,IAAI,CAAC;IACvD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC;IAE9E,SAAS,CAAC,MAAK;;AACb,QAAA,IAAI,UAAU,EAAE;YACd,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1C,YAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAS,EAAE;AAC9B,QAAA;AACH,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,cAAc,CAAC;IAE1F,MAAM,WAAW,GAAG,MAAK;;AACvB,QAAA,IAAI,YAAY;YAAE;AAElB,QAAA,MAAM,MAAM,GAAG,aAAa,EAAE;QAC9B,IAAI,MAAM,KAAK,KAAK;AAAE,YAAA,OAAO;AAE7B,QAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE;AAC3B,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,CAAyC,KAAI;AAClE,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;AACtB,YAAA,CAAC,CAAC,cAAc,EAAE,CAAC;;YAGnB,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC;AAC7D,YAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC;gBAAE;AAEnE,YAAA,WAAW,EAAE;AACd,QAAA;AACH,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,OAAO,CAAsC,KAAI;QAC3E,IAAI,WAAW,KAAK,OAAO;YAAE;AAC7B,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO;AAAE,YAAA,WAAW,EAAE;AAClD,IAAA,CAAC;AAED,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,IAAA,EACb,UAAU,KACTA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EAAiB,gBAAgB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAA;AAC/D,QAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,IAAA,CAAG;QACdA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAA,kBAAA,EACY,OAAO,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,YAAY,GAAG,wBAAwB,GAAG,aAAa,EAClE,OAAO,EAAE,mBAAmB,EAAA,GACxB,IAAI,EAAA,kBAAA,EACS,aAAa,EAC9B,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAA;YAEhEA,cAAA,CAAA,aAAA,CAAC,IAAI,CAAC,OAAO,EAAA,IAAA;gBACV,aAAa,CAAC,KAAK,CAAC,IACnB,KAAK,CAAC,UAAU,KAEhBA,cAAA,CAAA,aAAA,CAAC,UAAU,IACT,EAAE,EAAC,aAAa,EAChB,aAAa,EAAC,cAAc,EAC5B,KAAK,EAAE,KAAK,CAAC,WAAW,EACxB,QAAQ,EAAE,KAAK,CAAC,cAAc,MACzB,qBAAqB,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,EAAA,CAC5D,CACH;gBAEDA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EACE,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,iBAAiB,EACtB,SAAS,EAAE,eAAe,CAAC;AACzB,wBAAA,WAAW,CAAC,WAAW;wBACvB,SAAS,IAAI,WAAW,CAAC,SAAS;wBAClC,oBAAoB,IAAI,WAAW,CAAC,UAAU;qBAC/C,CAAC,EAAA,EAED,QAAQ,CACD;AAET,gBAAA,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU;AAExC,gBAAA,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC,KACjEA,cAAA,CAAA,aAAA,CAAC,IAAI,CAAC,MAAM,EAAA,IAAA;AACV,oBAAAA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,YAAY,EAAC,MAAM,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,GAAG,KAAK,EAAA;wBACxE,KAAK,CAAC,WAAW,KAChBA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACJ,SAAS,EAAC,YAAY,EACtB,MAAM,EAAC,OAAO,EAAA,aAAA,EACF,wBAAwB,EAAA,EAEnC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,MAC/CA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,QAAQ,EAAA,GAAK,WAAW,EAAA,EAC9C,KAAK,CACC,CACV,CAAC,CACI,CACT;AACA,wBAAA,KAAK,CAAC,YAAY,KACjBA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACJ,SAAS,EAAC,YAAY,EACtB,MAAM,EAAC,KAAK,EAAA,aAAA,EACA,yBAAyB,EAAA,EAEpC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,MAChDA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,QAAQ,EAAA,GAAK,WAAW,EAAA,EAC9C,KAAK,CACC,CACV,CAAC,CACI,CACT,CACK,CACI,CACf,CACY,CACR,CACL,CACP,CACe;AAEtB;;;;"}
|
|
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 { AnimatePresence } from 'framer-motion';\n\nimport { ModalProps, hasFooterSlot, hasHeaderSlot, isSideDraw } from './types';\nimport { Dialog } from './components/Dialog/Dialog';\n\nimport { buildClassnames } from '../../utils';\nimport { useIsOverflowing } from '../../hooks/useIsOverflowing';\nimport { Button } from '../Button';\nimport { Card } from '../Card';\nimport { CardHeader } from '../CardHeader';\nimport { ScrollLock } from '../ScrollLock';\nimport { Stack } from '../Stack';\nimport { preventDefaultEventOnESC } from './utils';\nimport modalStyles from './Modal.module.scss';\n\nexport const Modal = (props: ModalProps) => {\n const {\n shouldShow,\n showHeaderCloseButton = true,\n preventClose = false,\n displayMode = 'modal',\n fullBleed = false,\n variant = '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 variant={variant}\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 <Stack direction=\"horizontal\" alignX={props.leftActions ? 'between' : 'end'}>\n {props.leftActions && (\n <Stack\n direction=\"horizontal\"\n alignX=\"start\"\n data-testid=\"left-actions-container\"\n >\n {props.leftActions.map(({ label, ...actionProps }) => (\n <Button key={label} type=\"button\" {...actionProps}>\n {label}\n </Button>\n ))}\n </Stack>\n )}\n {props.rightActions && (\n <Stack\n direction=\"horizontal\"\n alignX=\"end\"\n data-testid=\"right-actions-container\"\n >\n {props.rightActions.map(({ label, ...actionProps }) => (\n <Button key={label} type=\"button\" {...actionProps}>\n {label}\n </Button>\n ))}\n </Stack>\n )}\n </Stack>\n </Card.Footer>\n )}\n </Card.Surface>\n </Dialog>\n </div>\n )}\n </AnimatePresence>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var Portal = require('../Portal/Portal.cjs');
|
|
5
|
+
var ScrollLock = require('../ScrollLock/ScrollLock.cjs');
|
|
6
|
+
var buildClassnames = require('../../utils/buildClassnames.cjs');
|
|
7
|
+
var Popup_module = require('./Popup.module.scss.cjs');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
12
|
+
|
|
13
|
+
const WithPortal = ({ usePortal, children }) => (
|
|
14
|
+
// eslint-disable-next-line react/jsx-no-useless-fragment
|
|
15
|
+
React__default.default.createElement(React__default.default.Fragment, null, usePortal ? React__default.default.createElement(Portal.Portal, null, children) : children));
|
|
16
|
+
const Popup = ({ className, children = null, shouldShow = false, usePortal = true, }) => (React__default.default.createElement(WithPortal, { usePortal: usePortal },
|
|
17
|
+
React__default.default.createElement("div", { className: buildClassnames.buildClassnames([
|
|
18
|
+
Popup_module.container,
|
|
19
|
+
shouldShow && Popup_module.visible,
|
|
20
|
+
className && `${className}-container`,
|
|
21
|
+
className,
|
|
22
|
+
]) },
|
|
23
|
+
React__default.default.createElement("div", { className: Popup_module.shadow }),
|
|
24
|
+
shouldShow && React__default.default.createElement(ScrollLock.ScrollLock, null),
|
|
25
|
+
React__default.default.createElement("div", { className: buildClassnames.buildClassnames([Popup_module.wrap, className && `${className}-wrap`, className]) }, children))));
|
|
26
|
+
|
|
27
|
+
exports.Popup = Popup;
|
|
28
|
+
//# sourceMappingURL=Popup.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popup.cjs","sources":["../../../src/components/Popup/Popup.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\n\nimport { Portal } from '../Portal';\nimport { ScrollLock } from '../ScrollLock';\nimport { buildClassnames } from '../../utils/buildClassnames';\nimport { PopupProps } from './types';\nimport styles from './Popup.module.scss';\n\ninterface WithPortalProps {\n usePortal?: boolean;\n children: ReactNode;\n}\n\nconst WithPortal = ({ usePortal, children }: WithPortalProps) => (\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{usePortal ? <Portal>{children}</Portal> : children}</>\n);\n\nexport const Popup = ({\n className,\n children = null,\n shouldShow = false,\n usePortal = true,\n}: PopupProps) => (\n <WithPortal usePortal={usePortal}>\n <div\n className={buildClassnames([\n styles.container,\n shouldShow && styles.visible,\n className && `${className}-container`,\n className,\n ])}\n >\n <div className={styles.shadow} />\n {shouldShow && <ScrollLock />}\n <div className={buildClassnames([styles.wrap, className && `${className}-wrap`, className])}>\n {children}\n </div>\n </div>\n </WithPortal>\n);\n"],"names":["React","Portal","buildClassnames","styles","ScrollLock"],"mappings":";;;;;;;;;;;;AAaA,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAmB;AAC1D;AACAA,sBAAA,CAAA,aAAA,CAAAA,sBAAA,CAAA,QAAA,EAAA,IAAA,EAAG,SAAS,GAAGA,qCAACC,aAAM,EAAA,IAAA,EAAE,QAAQ,CAAU,GAAG,QAAQ,CAAI,CAC1D;AAEM,MAAM,KAAK,GAAG,CAAC,EACpB,SAAS,EACT,QAAQ,GAAG,IAAI,EACf,UAAU,GAAG,KAAK,EAClB,SAAS,GAAG,IAAI,GACL,MACXD,sBAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,SAAS,EAAE,SAAS,EAAA;IAC9BA,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAEE,+BAAe,CAAC;AACzB,YAAAC,YAAM,CAAC,SAAS;YAChB,UAAU,IAAIA,YAAM,CAAC,OAAO;YAC5B,SAAS,IAAI,CAAA,EAAG,SAAS,CAAA,UAAA,CAAY;YACrC,SAAS;SACV,CAAC,EAAA;AAEF,QAAAH,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEG,YAAM,CAAC,MAAM,EAAA,CAAI;QAChC,UAAU,IAAIH,sBAAA,CAAA,aAAA,CAACI,qBAAU,EAAA,IAAA,CAAG;QAC7BJ,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEE,+BAAe,CAAC,CAACC,YAAM,CAAC,IAAI,EAAE,SAAS,IAAI,CAAA,EAAG,SAAS,CAAA,KAAA,CAAO,EAAE,SAAS,CAAC,CAAC,EAAA,EACxF,QAAQ,CACL,CACF,CACK;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { Portal } from '../Portal/Portal.js';
|
|
3
|
+
import { ScrollLock } from '../ScrollLock/ScrollLock.js';
|
|
4
|
+
import { buildClassnames } from '../../utils/buildClassnames.js';
|
|
5
|
+
import styles from './Popup.module.scss.js';
|
|
6
|
+
|
|
7
|
+
const WithPortal = ({ usePortal, children }) => (
|
|
8
|
+
// eslint-disable-next-line react/jsx-no-useless-fragment
|
|
9
|
+
React__default.createElement(React__default.Fragment, null, usePortal ? React__default.createElement(Portal, null, children) : children));
|
|
10
|
+
const Popup = ({ className, children = null, shouldShow = false, usePortal = true, }) => (React__default.createElement(WithPortal, { usePortal: usePortal },
|
|
11
|
+
React__default.createElement("div", { className: buildClassnames([
|
|
12
|
+
styles.container,
|
|
13
|
+
shouldShow && styles.visible,
|
|
14
|
+
className && `${className}-container`,
|
|
15
|
+
className,
|
|
16
|
+
]) },
|
|
17
|
+
React__default.createElement("div", { className: styles.shadow }),
|
|
18
|
+
shouldShow && React__default.createElement(ScrollLock, null),
|
|
19
|
+
React__default.createElement("div", { className: buildClassnames([styles.wrap, className && `${className}-wrap`, className]) }, children))));
|
|
20
|
+
|
|
21
|
+
export { Popup };
|
|
22
|
+
//# sourceMappingURL=Popup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popup.js","sources":["../../../src/components/Popup/Popup.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\n\nimport { Portal } from '../Portal';\nimport { ScrollLock } from '../ScrollLock';\nimport { buildClassnames } from '../../utils/buildClassnames';\nimport { PopupProps } from './types';\nimport styles from './Popup.module.scss';\n\ninterface WithPortalProps {\n usePortal?: boolean;\n children: ReactNode;\n}\n\nconst WithPortal = ({ usePortal, children }: WithPortalProps) => (\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{usePortal ? <Portal>{children}</Portal> : children}</>\n);\n\nexport const Popup = ({\n className,\n children = null,\n shouldShow = false,\n usePortal = true,\n}: PopupProps) => (\n <WithPortal usePortal={usePortal}>\n <div\n className={buildClassnames([\n styles.container,\n shouldShow && styles.visible,\n className && `${className}-container`,\n className,\n ])}\n >\n <div className={styles.shadow} />\n {shouldShow && <ScrollLock />}\n <div className={buildClassnames([styles.wrap, className && `${className}-wrap`, className])}>\n {children}\n </div>\n </div>\n </WithPortal>\n);\n"],"names":["React"],"mappings":";;;;;;AAaA,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAmB;AAC1D;AACAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAG,SAAS,GAAGA,6BAAC,MAAM,EAAA,IAAA,EAAE,QAAQ,CAAU,GAAG,QAAQ,CAAI,CAC1D;AAEM,MAAM,KAAK,GAAG,CAAC,EACpB,SAAS,EACT,QAAQ,GAAG,IAAI,EACf,UAAU,GAAG,KAAK,EAClB,SAAS,GAAG,IAAI,GACL,MACXA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,SAAS,EAAE,SAAS,EAAA;IAC9BA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,eAAe,CAAC;AACzB,YAAA,MAAM,CAAC,SAAS;YAChB,UAAU,IAAI,MAAM,CAAC,OAAO;YAC5B,SAAS,IAAI,CAAA,EAAG,SAAS,CAAA,UAAA,CAAY;YACrC,SAAS;SACV,CAAC,EAAA;AAEF,QAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,MAAM,EAAA,CAAI;QAChC,UAAU,IAAIA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,IAAA,CAAG;QAC7BA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,IAAI,CAAA,EAAG,SAAS,CAAA,KAAA,CAAO,EAAE,SAAS,CAAC,CAAC,EAAA,EACxF,QAAQ,CACL,CACF,CACK;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ___$insertStyle = require('../../_virtual/____insertStyle.cjs');
|
|
4
|
+
|
|
5
|
+
___$insertStyle("body.veeqo-modal-open {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n._container_1llaq_6 {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n z-index: var(--layers-modal);\n display: none;\n}\n\n._visible_1llaq_17 {\n display: initial;\n}\n\n._shadow_1llaq_21 {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n background-color: rgba(55, 66, 77, 0.5);\n}\n\n._wrap_1llaq_31 {\n position: relative;\n height: 100%;\n width: 100%;\n z-index: 1;\n}");
|
|
6
|
+
var styles = {"container":"_container_1llaq_6","visible":"_visible_1llaq_17","shadow":"_shadow_1llaq_21","wrap":"_wrap_1llaq_31"};
|
|
7
|
+
|
|
8
|
+
module.exports = styles;
|
|
9
|
+
//# sourceMappingURL=Popup.module.scss.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popup.module.scss.cjs","sources":["../../../src/components/Popup/Popup.module.scss"],"sourcesContent":[":global(body.veeqo-modal-open) {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n.container {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n z-index: var(--layers-modal);\n display: none;\n}\n\n.visible {\n display: initial;\n}\n\n.shadow {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n background-color: rgba(55, 66, 77, 0.5);\n}\n\n.wrap {\n position: relative;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n"],"names":[],"mappings":";;;;AACE,eAAA,CAAA,giBAAA;AACA,aAAA,CAAA,WAAA,CAAA,oBAAA,CAAA,SAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,gBAAA;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import insertStyle from '../../_virtual/____insertStyle.js';
|
|
2
|
+
|
|
3
|
+
insertStyle("body.veeqo-modal-open {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n._container_1llaq_6 {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n z-index: var(--layers-modal);\n display: none;\n}\n\n._visible_1llaq_17 {\n display: initial;\n}\n\n._shadow_1llaq_21 {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n background-color: rgba(55, 66, 77, 0.5);\n}\n\n._wrap_1llaq_31 {\n position: relative;\n height: 100%;\n width: 100%;\n z-index: 1;\n}");
|
|
4
|
+
var styles = {"container":"_container_1llaq_6","visible":"_visible_1llaq_17","shadow":"_shadow_1llaq_21","wrap":"_wrap_1llaq_31"};
|
|
5
|
+
|
|
6
|
+
export { styles as default };
|
|
7
|
+
//# sourceMappingURL=Popup.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popup.module.scss.js","sources":["../../../src/components/Popup/Popup.module.scss"],"sourcesContent":[":global(body.veeqo-modal-open) {\n overflow: hidden;\n scrollbar-gutter: stable;\n}\n\n.container {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n z-index: var(--layers-modal);\n display: none;\n}\n\n.visible {\n display: initial;\n}\n\n.shadow {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n background-color: rgba(55, 66, 77, 0.5);\n}\n\n.wrap {\n position: relative;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n"],"names":["___$insertStyle"],"mappings":";;AACEA,WAAA,CAAA,giBAAA;AACA,aAAA,CAAA,WAAA,CAAA,oBAAA,CAAA,SAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,gBAAA;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Reference-counted scroll lock for the document body.
|
|
7
|
+
* Adds `veeqo-modal-open` class when mounted, removes it only when
|
|
8
|
+
* the last instance unmounts. Safe with multiple simultaneous modals/popups.
|
|
9
|
+
*/
|
|
10
|
+
let scrollLockCount = 0;
|
|
11
|
+
const ScrollLock = () => {
|
|
12
|
+
React.useEffect(() => {
|
|
13
|
+
scrollLockCount += 1;
|
|
14
|
+
document.body.classList.add('veeqo-modal-open');
|
|
15
|
+
return () => {
|
|
16
|
+
scrollLockCount -= 1;
|
|
17
|
+
if (scrollLockCount === 0) {
|
|
18
|
+
document.body.classList.remove('veeqo-modal-open');
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}, []);
|
|
22
|
+
return null;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
exports.ScrollLock = ScrollLock;
|
|
26
|
+
//# sourceMappingURL=ScrollLock.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollLock.cjs","sources":["../../../src/components/ScrollLock/ScrollLock.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Reference-counted scroll lock for the document body.\n * Adds `veeqo-modal-open` class when mounted, removes it only when\n * the last instance unmounts. Safe with multiple simultaneous modals/popups.\n */\nlet scrollLockCount = 0;\n\nexport const ScrollLock = () => {\n useEffect(() => {\n scrollLockCount += 1;\n document.body.classList.add('veeqo-modal-open');\n return () => {\n scrollLockCount -= 1;\n if (scrollLockCount === 0) {\n document.body.classList.remove('veeqo-modal-open');\n }\n };\n }, []);\n return null;\n};\n"],"names":["useEffect"],"mappings":";;;;AAEA;;;;AAIG;AACH,IAAI,eAAe,GAAG,CAAC;AAEhB,MAAM,UAAU,GAAG,MAAK;IAC7BA,eAAS,CAAC,MAAK;QACb,eAAe,IAAI,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC/C,QAAA,OAAO,MAAK;YACV,eAAe,IAAI,CAAC;YACpB,IAAI,eAAe,KAAK,CAAC,EAAE;gBACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACnD,YAAA;AACH,QAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AACN,IAAA,OAAO,IAAI;AACb;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ScrollLock: () => null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Reference-counted scroll lock for the document body.
|
|
5
|
+
* Adds `veeqo-modal-open` class when mounted, removes it only when
|
|
6
|
+
* the last instance unmounts. Safe with multiple simultaneous modals/popups.
|
|
7
|
+
*/
|
|
8
|
+
let scrollLockCount = 0;
|
|
9
|
+
const ScrollLock = () => {
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
scrollLockCount += 1;
|
|
12
|
+
document.body.classList.add('veeqo-modal-open');
|
|
13
|
+
return () => {
|
|
14
|
+
scrollLockCount -= 1;
|
|
15
|
+
if (scrollLockCount === 0) {
|
|
16
|
+
document.body.classList.remove('veeqo-modal-open');
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}, []);
|
|
20
|
+
return null;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { ScrollLock };
|
|
24
|
+
//# sourceMappingURL=ScrollLock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollLock.js","sources":["../../../src/components/ScrollLock/ScrollLock.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Reference-counted scroll lock for the document body.\n * Adds `veeqo-modal-open` class when mounted, removes it only when\n * the last instance unmounts. Safe with multiple simultaneous modals/popups.\n */\nlet scrollLockCount = 0;\n\nexport const ScrollLock = () => {\n useEffect(() => {\n scrollLockCount += 1;\n document.body.classList.add('veeqo-modal-open');\n return () => {\n scrollLockCount -= 1;\n if (scrollLockCount === 0) {\n document.body.classList.remove('veeqo-modal-open');\n }\n };\n }, []);\n return null;\n};\n"],"names":[],"mappings":";;AAEA;;;;AAIG;AACH,IAAI,eAAe,GAAG,CAAC;AAEhB,MAAM,UAAU,GAAG,MAAK;IAC7B,SAAS,CAAC,MAAK;QACb,eAAe,IAAI,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC/C,QAAA,OAAO,MAAK;YACV,eAAe,IAAI,CAAC;YACpB,IAAI,eAAe,KAAK,CAAC,EAAE;gBACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACnD,YAAA;AACH,QAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AACN,IAAA,OAAO,IAAI;AACb;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ScrollLock } from './ScrollLock';
|