no-frills-ui 0.0.14-alpha.8 → 0.0.14-rc.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/README.md +2 -3
- package/dist/index.js +841 -710
- package/dist/index.js.map +1 -1
- package/lib-esm/components/Accordion/Accordion.d.ts +9 -13
- package/lib-esm/components/Accordion/Accordion.js +3 -10
- package/lib-esm/components/Accordion/Accordion.js.map +1 -1
- package/lib-esm/components/Accordion/AccordionStep.d.ts +22 -22
- package/lib-esm/components/Accordion/AccordionStep.js +33 -28
- package/lib-esm/components/Accordion/AccordionStep.js.map +1 -1
- package/lib-esm/components/Badge/Badge.d.ts +13 -16
- package/lib-esm/components/Badge/Badge.js +10 -20
- package/lib-esm/components/Badge/Badge.js.map +1 -1
- package/lib-esm/components/Button/ActionButton.d.ts +9 -5
- package/lib-esm/components/Button/ActionButton.js +18 -3
- package/lib-esm/components/Button/ActionButton.js.map +1 -1
- package/lib-esm/components/Button/Button.d.ts +9 -5
- package/lib-esm/components/Button/Button.js +17 -5
- package/lib-esm/components/Button/Button.js.map +1 -1
- package/lib-esm/components/Button/IconButton.d.ts +9 -5
- package/lib-esm/components/Button/IconButton.js +18 -3
- package/lib-esm/components/Button/IconButton.js.map +1 -1
- package/lib-esm/components/Button/LinkButton.d.ts +9 -5
- package/lib-esm/components/Button/LinkButton.js +18 -3
- package/lib-esm/components/Button/LinkButton.js.map +1 -1
- package/lib-esm/components/Button/RaisedButton.d.ts +9 -5
- package/lib-esm/components/Button/RaisedButton.js +18 -3
- package/lib-esm/components/Button/RaisedButton.js.map +1 -1
- package/lib-esm/components/Card/Card.d.ts +4 -6
- package/lib-esm/components/Card/Card.js +16 -3
- package/lib-esm/components/Card/Card.js.map +1 -1
- package/lib-esm/components/Chip/Chip.d.ts +2 -2
- package/lib-esm/components/Chip/Chip.js +14 -8
- package/lib-esm/components/Chip/Chip.js.map +1 -1
- package/lib-esm/components/ChipInput/ChipInput.d.ts +28 -39
- package/lib-esm/components/ChipInput/ChipInput.js +35 -36
- package/lib-esm/components/ChipInput/ChipInput.js.map +1 -1
- package/lib-esm/components/Dialog/AlertDialog.d.ts +11 -12
- package/lib-esm/components/Dialog/AlertDialog.js +4 -11
- package/lib-esm/components/Dialog/AlertDialog.js.map +1 -1
- package/lib-esm/components/Dialog/ConfirmDialog.d.ts +13 -14
- package/lib-esm/components/Dialog/ConfirmDialog.js +4 -12
- package/lib-esm/components/Dialog/ConfirmDialog.js.map +1 -1
- package/lib-esm/components/Dialog/Dialog.d.ts +8 -14
- package/lib-esm/components/Dialog/Dialog.js +11 -9
- package/lib-esm/components/Dialog/Dialog.js.map +1 -1
- package/lib-esm/components/Dialog/PromptDialog.d.ts +18 -19
- package/lib-esm/components/Dialog/PromptDialog.js +10 -18
- package/lib-esm/components/Dialog/PromptDialog.js.map +1 -1
- package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts +37 -59
- package/lib-esm/components/DragAndDrop/DragAndDrop.js +23 -26
- package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +1 -1
- package/lib-esm/components/DragAndDrop/DragItem.d.ts +2 -2
- package/lib-esm/components/DragAndDrop/DragItem.js +40 -38
- package/lib-esm/components/DragAndDrop/DragItem.js.map +1 -1
- package/lib-esm/components/DragAndDrop/types.d.ts +3 -3
- package/lib-esm/components/DragAndDrop/types.js.map +1 -1
- package/lib-esm/components/Drawer/Drawer.d.ts +24 -31
- package/lib-esm/components/Drawer/Drawer.js +49 -45
- package/lib-esm/components/Drawer/Drawer.js.map +1 -1
- package/lib-esm/components/Groups/Group.d.ts +6 -8
- package/lib-esm/components/Groups/Group.js +12 -10
- package/lib-esm/components/Groups/Group.js.map +1 -1
- package/lib-esm/components/Input/Checkbox.d.ts +12 -15
- package/lib-esm/components/Input/Checkbox.js +30 -26
- package/lib-esm/components/Input/Checkbox.js.map +1 -1
- package/lib-esm/components/Input/Dropdown.d.ts +8 -18
- package/lib-esm/components/Input/Dropdown.js +42 -17
- package/lib-esm/components/Input/Dropdown.js.map +1 -1
- package/lib-esm/components/Input/Input.d.ts +8 -3
- package/lib-esm/components/Input/Input.js +20 -19
- package/lib-esm/components/Input/Input.js.map +1 -1
- package/lib-esm/components/Input/Radio.d.ts +4 -8
- package/lib-esm/components/Input/Radio.js +16 -13
- package/lib-esm/components/Input/Radio.js.map +1 -1
- package/lib-esm/components/Input/RadioButton.d.ts +4 -8
- package/lib-esm/components/Input/RadioButton.js +15 -12
- package/lib-esm/components/Input/RadioButton.js.map +1 -1
- package/lib-esm/components/Input/Select.d.ts +6 -13
- package/lib-esm/components/Input/Select.js +21 -18
- package/lib-esm/components/Input/Select.js.map +1 -1
- package/lib-esm/components/Input/TextArea.d.ts +6 -13
- package/lib-esm/components/Input/TextArea.js +29 -24
- package/lib-esm/components/Input/TextArea.js.map +1 -1
- package/lib-esm/components/Input/Toggle.d.ts +4 -9
- package/lib-esm/components/Input/Toggle.js +12 -10
- package/lib-esm/components/Input/Toggle.js.map +1 -1
- package/lib-esm/components/Menu/Menu.d.ts +4 -14
- package/lib-esm/components/Menu/Menu.js +24 -16
- package/lib-esm/components/Menu/Menu.js.map +1 -1
- package/lib-esm/components/Menu/MenuContext.d.ts +4 -4
- package/lib-esm/components/Menu/MenuContext.js +1 -0
- package/lib-esm/components/Menu/MenuContext.js.map +1 -1
- package/lib-esm/components/Menu/MenuItem.d.ts +10 -4
- package/lib-esm/components/Menu/MenuItem.js +19 -5
- package/lib-esm/components/Menu/MenuItem.js.map +1 -1
- package/lib-esm/components/Modal/Modal.d.ts +17 -23
- package/lib-esm/components/Modal/Modal.js +37 -34
- package/lib-esm/components/Modal/Modal.js.map +1 -1
- package/lib-esm/components/Notification/Notification.d.ts +39 -34
- package/lib-esm/components/Notification/Notification.js +16 -39
- package/lib-esm/components/Notification/Notification.js.map +1 -1
- package/lib-esm/components/Notification/NotificationManager.d.ts +4 -4
- package/lib-esm/components/Notification/NotificationManager.js +18 -14
- package/lib-esm/components/Notification/NotificationManager.js.map +1 -1
- package/lib-esm/components/Notification/index.d.ts +1 -0
- package/lib-esm/components/Notification/style.d.ts +2 -3
- package/lib-esm/components/Notification/style.js +11 -11
- package/lib-esm/components/Notification/style.js.map +1 -1
- package/lib-esm/components/Popover/Popover.d.ts +21 -20
- package/lib-esm/components/Popover/Popover.js +42 -44
- package/lib-esm/components/Popover/Popover.js.map +1 -1
- package/lib-esm/components/Spinner/Spinner.d.ts +14 -15
- package/lib-esm/components/Spinner/Spinner.js +12 -13
- package/lib-esm/components/Spinner/Spinner.js.map +1 -1
- package/lib-esm/components/Stepper/Step.d.ts +15 -12
- package/lib-esm/components/Stepper/Step.js +10 -8
- package/lib-esm/components/Stepper/Step.js.map +1 -1
- package/lib-esm/components/Stepper/Stepper.d.ts +11 -17
- package/lib-esm/components/Stepper/Stepper.js +25 -23
- package/lib-esm/components/Stepper/Stepper.js.map +1 -1
- package/lib-esm/components/Tabs/Tab.d.ts +10 -16
- package/lib-esm/components/Tabs/Tab.js +0 -8
- package/lib-esm/components/Tabs/Tab.js.map +1 -1
- package/lib-esm/components/Tabs/Tabs.d.ts +11 -22
- package/lib-esm/components/Tabs/Tabs.js +39 -31
- package/lib-esm/components/Tabs/Tabs.js.map +1 -1
- package/lib-esm/components/Toast/Toast.d.ts +7 -7
- package/lib-esm/components/Toast/Toast.js +13 -12
- package/lib-esm/components/Toast/Toast.js.map +1 -1
- package/lib-esm/components/Toast/ToastStory.d.ts +21 -24
- package/lib-esm/components/Tooltip/Tooltip.d.ts +11 -14
- package/lib-esm/components/Tooltip/Tooltip.js +11 -21
- package/lib-esm/components/Tooltip/Tooltip.js.map +1 -1
- package/lib-esm/icons/CheckCircle.js +2 -2
- package/lib-esm/icons/CheckCircle.js.map +1 -1
- package/lib-esm/icons/ErrorOutline.js +2 -2
- package/lib-esm/icons/ErrorOutline.js.map +1 -1
- package/lib-esm/icons/Info.js +2 -2
- package/lib-esm/icons/Info.js.map +1 -1
- package/lib-esm/icons/ReportProblem.js +2 -2
- package/lib-esm/icons/ReportProblem.js.map +1 -1
- package/lib-esm/index.js +43 -0
- package/lib-esm/shared/LayerManager.d.ts +5 -4
- package/lib-esm/shared/LayerManager.js +123 -111
- package/lib-esm/shared/LayerManager.js.map +1 -1
- package/lib-esm/shared/styles.js +4 -4
- package/lib-esm/shared/styles.js.map +1 -1
- package/package.json +66 -31
- package/lib-esm/components/index.js +0 -43
- /package/lib-esm/{components/index.js.map → index.js.map} +0 -0
package/lib-esm/icons/Info.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from '@emotion/react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
function CheckCircle(props) {
|
|
3
|
+
function CheckCircle$3(props) {
|
|
4
4
|
return /*#__PURE__*/ jsxs("svg", {
|
|
5
5
|
height: "24",
|
|
6
6
|
viewBox: "0 0 24 24",
|
|
@@ -19,5 +19,5 @@ function CheckCircle(props) {
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export { CheckCircle as default };
|
|
22
|
+
export { CheckCircle$3 as default };
|
|
23
23
|
//# sourceMappingURL=Info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Info.js","sources":["../../src/icons/Info.tsx"],"sourcesContent":["export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </svg>\n );\n}\n"],"names":["CheckCircle","props","_jsxs","svg","height","viewBox","width","fill","_jsx","path","d"],"mappings":";;AAAe,SAASA,
|
|
1
|
+
{"version":3,"file":"Info.js","sources":["../../src/icons/Info.tsx"],"sourcesContent":["export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </svg>\n );\n}\n"],"names":["CheckCircle","props","_jsxs","svg","height","viewBox","width","fill","_jsx","path","d"],"mappings":";;AAAe,SAASA,cAAYC,KAAoC,EAAA;AACpE,IAAA,qBACIC,IAAA,CAACC,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGN,KAAK;;0BACzEO,GAAA,CAACC,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,iBAAA;gBAAkBH,IAAAA,EAAK;;0BAC/BC,GAAA,CAACC,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE;;;;AAGpB;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from '@emotion/react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
function CheckCircle(props) {
|
|
3
|
+
function CheckCircle$2(props) {
|
|
4
4
|
return /*#__PURE__*/ jsxs("svg", {
|
|
5
5
|
height: "24",
|
|
6
6
|
viewBox: "0 0 24 24",
|
|
@@ -19,5 +19,5 @@ function CheckCircle(props) {
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export { CheckCircle as default };
|
|
22
|
+
export { CheckCircle$2 as default };
|
|
23
23
|
//# sourceMappingURL=ReportProblem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportProblem.js","sources":["../../src/icons/ReportProblem.tsx"],"sourcesContent":["export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </svg>\n );\n}\n"],"names":["CheckCircle","props","_jsxs","svg","height","viewBox","width","fill","_jsx","path","d"],"mappings":";;AAAe,SAASA,
|
|
1
|
+
{"version":3,"file":"ReportProblem.js","sources":["../../src/icons/ReportProblem.tsx"],"sourcesContent":["export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </svg>\n );\n}\n"],"names":["CheckCircle","props","_jsxs","svg","height","viewBox","width","fill","_jsx","path","d"],"mappings":";;AAAe,SAASA,cAAYC,KAAoC,EAAA;AACpE,IAAA,qBACIC,IAAA,CAACC,KAAAA,EAAAA;QAAIC,MAAAA,EAAO,IAAA;QAAKC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,IAAA;QAAKC,IAAAA,EAAK,cAAA;AAAgB,QAAA,GAAGN,KAAK;;0BACzEO,GAAA,CAACC,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE,iBAAA;gBAAkBH,IAAAA,EAAK;;0BAC/BC,GAAA,CAACC,MAAAA,EAAAA;gBAAKC,CAAAA,EAAE;;;;AAGpB;;;;"}
|
package/lib-esm/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export { default as Accordion } from './components/Accordion/Accordion.js';
|
|
2
|
+
export { default as AccordionStep, AccordionStepBody, AccordionStepFooter } from './components/Accordion/AccordionStep.js';
|
|
3
|
+
export { BADGE_TYPE, default as Badge } from './components/Badge/Badge.js';
|
|
4
|
+
export { default as Button } from './components/Button/Button.js';
|
|
5
|
+
export { default as LinkButton } from './components/Button/LinkButton.js';
|
|
6
|
+
export { default as RaisedButton } from './components/Button/RaisedButton.js';
|
|
7
|
+
export { default as ActionButton } from './components/Button/ActionButton.js';
|
|
8
|
+
export { default as IconButton } from './components/Button/IconButton.js';
|
|
9
|
+
export { default as Card } from './components/Card/Card.js';
|
|
10
|
+
export { default as Chip } from './components/Chip/Chip.js';
|
|
11
|
+
export { default as ChipInput } from './components/ChipInput/ChipInput.js';
|
|
12
|
+
export { default as Dialog } from './components/Dialog/Dialog.js';
|
|
13
|
+
export { default as DragAndDrop } from './components/DragAndDrop/DragAndDrop.js';
|
|
14
|
+
export { default as Group } from './components/Groups/Group.js';
|
|
15
|
+
export { default as Input } from './components/Input/Input.js';
|
|
16
|
+
export { default as TextArea } from './components/Input/TextArea.js';
|
|
17
|
+
export { default as Select } from './components/Input/Select.js';
|
|
18
|
+
export { default as Checkbox } from './components/Input/Checkbox.js';
|
|
19
|
+
export { default as Toggle } from './components/Input/Toggle.js';
|
|
20
|
+
export { default as Radio } from './components/Input/Radio.js';
|
|
21
|
+
export { default as RadioButton, RadioGroup } from './components/Input/RadioButton.js';
|
|
22
|
+
export { default as Dropdown } from './components/Input/Dropdown.js';
|
|
23
|
+
export { default as Menu } from './components/Menu/Menu.js';
|
|
24
|
+
export { default as MenuItem } from './components/Menu/MenuItem.js';
|
|
25
|
+
export { POPOVER_POSITION, default as Popover } from './components/Popover/Popover.js';
|
|
26
|
+
export { default as Spinner } from './components/Spinner/Spinner.js';
|
|
27
|
+
export { default as Stepper } from './components/Stepper/Stepper.js';
|
|
28
|
+
export { default as Step } from './components/Stepper/Step.js';
|
|
29
|
+
export { default as Tabs } from './components/Tabs/Tabs.js';
|
|
30
|
+
export { default as Tab } from './components/Tabs/Tab.js';
|
|
31
|
+
export { TOOLTIP_POSITION, default as Tooltip } from './components/Tooltip/Tooltip.js';
|
|
32
|
+
export { Body as CardBody, Footer as CardFooter, Header as CardHeader, Body as DialogBody, Footer as DialogFooter, Header as DialogHeader, Body as DrawerBody, Footer as DrawerFooter, Header as DrawerHeader, Body as ModalBody, Footer as ModalFooter, Header as ModalHeader, Body as StepBody, Footer as StepFooter } from './shared/styles.js';
|
|
33
|
+
export { default as AlertDialog } from './components/Dialog/AlertDialog.js';
|
|
34
|
+
export { default as ConfirmDialog } from './components/Dialog/ConfirmDialog.js';
|
|
35
|
+
export { default as PromptDialog } from './components/Dialog/PromptDialog.js';
|
|
36
|
+
export { ORIENTATION } from './components/DragAndDrop/types.js';
|
|
37
|
+
export { DRAWER_POSITION, default as Drawer } from './components/Drawer/Drawer.js';
|
|
38
|
+
export { default as GroupLabel } from './components/Groups/GroupLabel.js';
|
|
39
|
+
export { default as Modal } from './components/Modal/Modal.js';
|
|
40
|
+
export { default as Notification } from './components/Notification/Notification.js';
|
|
41
|
+
export { NOTIFICATION_POSITION, NOTIFICATION_TYPE } from './components/Notification/types.js';
|
|
42
|
+
export { TOAST_TYPE, default as Toast } from './components/Toast/Toast.js';
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { ForwardRefExoticComponent, RefAttributes } from 'react';
|
|
2
2
|
/** Enums for layer position on screen. */
|
|
3
3
|
export declare enum LAYER_POSITION {
|
|
4
4
|
TOP_LEFT = 0,
|
|
@@ -13,7 +13,7 @@ interface LayerConfig {
|
|
|
13
13
|
/** Show an overlay */
|
|
14
14
|
overlay?: boolean;
|
|
15
15
|
/** Element to render inside the layer. */
|
|
16
|
-
component: JSX.Element;
|
|
16
|
+
component: React.JSX.Element | null;
|
|
17
17
|
/** Position of the layer */
|
|
18
18
|
position?: LAYER_POSITION;
|
|
19
19
|
/** Delay for exit */
|
|
@@ -23,7 +23,7 @@ interface LayerConfig {
|
|
|
23
23
|
/** Close layer overlay is clicked. */
|
|
24
24
|
closeOnOverlayClick?: boolean;
|
|
25
25
|
/** Callback called when modal closes */
|
|
26
|
-
closeCallback?:
|
|
26
|
+
closeCallback?: (resp?: unknown) => void;
|
|
27
27
|
/** Layer is created with max z-index */
|
|
28
28
|
alwaysOnTop?: boolean;
|
|
29
29
|
}
|
|
@@ -86,11 +86,12 @@ declare class LayerManager {
|
|
|
86
86
|
* @param layer
|
|
87
87
|
*/
|
|
88
88
|
private unmount;
|
|
89
|
+
private Empty;
|
|
89
90
|
/**
|
|
90
91
|
* Renders a layer.
|
|
91
92
|
* @param config
|
|
92
93
|
*/
|
|
93
|
-
renderLayer: (config: LayerConfig) => [
|
|
94
|
+
renderLayer: (config: LayerConfig) => [ForwardRefExoticComponent<RefAttributes<HTMLDivElement>>, (resp?: unknown) => void];
|
|
94
95
|
}
|
|
95
96
|
declare const _default: LayerManager;
|
|
96
97
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from '@emotion/react/jsx-runtime';
|
|
2
2
|
import React, { useEffect } from 'react';
|
|
3
|
-
import
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
4
4
|
import styled from '@emotion/styled';
|
|
5
5
|
import { getThemeValue, THEME_NAME } from './constants.js';
|
|
6
6
|
|
|
@@ -32,8 +32,8 @@ import { getThemeValue, THEME_NAME } from './constants.js';
|
|
|
32
32
|
[5]: 'bottom: 0; right: 0; justify-content: flex-end;',
|
|
33
33
|
[6]: 'top: 0; left: 0; justify-content: center; align-items: center;'
|
|
34
34
|
};
|
|
35
|
-
/** Layer container component. */ const Container = /*#__PURE__*/ styled("div", {
|
|
36
|
-
target: "
|
|
35
|
+
/** Layer container component. */ const Container$5 = /*#__PURE__*/ styled("div", {
|
|
36
|
+
target: "erw6k0c0",
|
|
37
37
|
label: "Container"
|
|
38
38
|
})("position:fixed;display:flex;opacity:0;transition:opacity 0.3s ease;", (props)=>POSITION_STYLE[props.position], " ", (props)=>props.overlay && `
|
|
39
39
|
width: 100%;
|
|
@@ -44,7 +44,7 @@ import { getThemeValue, THEME_NAME } from './constants.js';
|
|
|
44
44
|
`, " z-index:", (props)=>props.zIndex, ";.nf-layer-enter &{opacity:1;", (props)=>props.overlay && `
|
|
45
45
|
backdrop-filter: blur(3px);
|
|
46
46
|
`, "}");
|
|
47
|
-
/** Key code for different keys. */ const KEY_CODES = {
|
|
47
|
+
/** Key code for different keys. */ const KEY_CODES$1 = {
|
|
48
48
|
ESC: 27
|
|
49
49
|
};
|
|
50
50
|
/**
|
|
@@ -82,13 +82,13 @@ import { getThemeValue, THEME_NAME } from './constants.js';
|
|
|
82
82
|
* const { LayerComponent } = this.state;
|
|
83
83
|
* return LayerComponent ? <LayerComponent /> : null;
|
|
84
84
|
* }
|
|
85
|
-
*/ class LayerManager {
|
|
85
|
+
*/ let LayerManager$1 = class LayerManager {
|
|
86
86
|
/**
|
|
87
87
|
* Constructor simply registers a event listener on body to
|
|
88
88
|
* react to esc key press.
|
|
89
89
|
*/ constructor(){
|
|
90
90
|
/** Layer stack */ this.layers = [];
|
|
91
|
-
/** z-index of the next layer */ this.nextIndex =
|
|
91
|
+
/** z-index of the next layer */ this.nextIndex = 0;
|
|
92
92
|
this.timeoutIds = new Map(); // Track timeouts
|
|
93
93
|
// Add cleanup method
|
|
94
94
|
this.destroy = ()=>{
|
|
@@ -124,14 +124,21 @@ import { getThemeValue, THEME_NAME } from './constants.js';
|
|
|
124
124
|
this.timeoutIds.delete(layer.id);
|
|
125
125
|
try {
|
|
126
126
|
layer.config.closeCallback?.(resp);
|
|
127
|
-
} catch (
|
|
128
|
-
|
|
127
|
+
} catch (err) {
|
|
128
|
+
if (err instanceof Error) {
|
|
129
|
+
console.warn(err.message);
|
|
130
|
+
} else {
|
|
131
|
+
console.warn(err);
|
|
132
|
+
}
|
|
129
133
|
}
|
|
130
134
|
// Clear reference to help GC
|
|
131
135
|
layer.config.component = null;
|
|
132
136
|
}, layer.config.exitDelay);
|
|
133
137
|
this.timeoutIds.set(layer.id, timeoutId);
|
|
134
138
|
};
|
|
139
|
+
this.Empty = ()=>{
|
|
140
|
+
return null;
|
|
141
|
+
};
|
|
135
142
|
/**
|
|
136
143
|
* Renders a layer.
|
|
137
144
|
* @param config
|
|
@@ -139,7 +146,7 @@ import { getThemeValue, THEME_NAME } from './constants.js';
|
|
|
139
146
|
// SSR guard
|
|
140
147
|
if (typeof document === 'undefined') {
|
|
141
148
|
return [
|
|
142
|
-
()
|
|
149
|
+
/*#__PURE__*/ React.forwardRef(this.Empty),
|
|
143
150
|
()=>{}
|
|
144
151
|
];
|
|
145
152
|
}
|
|
@@ -149,10 +156,12 @@ import { getThemeValue, THEME_NAME } from './constants.js';
|
|
|
149
156
|
...config
|
|
150
157
|
};
|
|
151
158
|
// Get the z-index for the new layer
|
|
152
|
-
const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : this.nextIndex
|
|
159
|
+
const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : 10000 + this.nextIndex;
|
|
153
160
|
const className = layerConfig.alwaysOnTop ? 'nf-layer-manager-top' : 'nf-layer-manager';
|
|
154
161
|
// Create a unique ID for tracking this layer
|
|
155
|
-
const layerId =
|
|
162
|
+
const layerId = `${className}-${currentIndex + this.nextIndex}`;
|
|
163
|
+
// Always increment for next layer
|
|
164
|
+
this.nextIndex += 1;
|
|
156
165
|
const overlayClickHandler = ()=>{
|
|
157
166
|
const layer = this.layers.find((l)=>l.id === layerId);
|
|
158
167
|
if (layer && layer.config.closeOnOverlayClick !== false) {
|
|
@@ -165,112 +174,115 @@ import { getThemeValue, THEME_NAME } from './constants.js';
|
|
|
165
174
|
this.unmount(layer, resp);
|
|
166
175
|
}
|
|
167
176
|
};
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
()=>{
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
//
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
child
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
previousValue
|
|
212
|
-
});
|
|
213
|
-
}
|
|
177
|
+
const LayerContainer = (props, ref)=>{
|
|
178
|
+
const [divElement, setDivElement] = React.useState(null);
|
|
179
|
+
useEffect(()=>{
|
|
180
|
+
// Create the div element only once when component mounts
|
|
181
|
+
const div = document.createElement('div');
|
|
182
|
+
div.setAttribute('class', className);
|
|
183
|
+
div.setAttribute('id', layerId);
|
|
184
|
+
document.body.appendChild(div);
|
|
185
|
+
// Add layer to stack
|
|
186
|
+
const currentLayer = {
|
|
187
|
+
id: layerId,
|
|
188
|
+
config: layerConfig,
|
|
189
|
+
element: div
|
|
190
|
+
};
|
|
191
|
+
this.layers.push(currentLayer);
|
|
192
|
+
setDivElement(div);
|
|
193
|
+
// Add entry animation class after a short delay
|
|
194
|
+
setTimeout(()=>{
|
|
195
|
+
div.setAttribute('class', 'nf-layer-enter');
|
|
196
|
+
}, 10);
|
|
197
|
+
// Track elements modified for accessibility
|
|
198
|
+
const modifiedElements = [];
|
|
199
|
+
let originalBodyOverflow = null;
|
|
200
|
+
let originalBodyPosition = null;
|
|
201
|
+
let originalBodyWidth = null;
|
|
202
|
+
let originalBodyTop = null;
|
|
203
|
+
let scrollY = 0;
|
|
204
|
+
// Apply aria-hidden to siblings and body scroll lock for overlay modals
|
|
205
|
+
if (layerConfig.overlay) {
|
|
206
|
+
// Hide all body children except this layer portal, scripts, and styles
|
|
207
|
+
const bodyChildren = Array.from(document.body.children);
|
|
208
|
+
bodyChildren.forEach((child)=>{
|
|
209
|
+
if (child !== div && child.className !== 'nf-layer-manager-top' && child.tagName !== 'SCRIPT' && child.tagName !== 'STYLE') {
|
|
210
|
+
const hadAriaHidden = child.hasAttribute('aria-hidden');
|
|
211
|
+
const previousValue = child.getAttribute('aria-hidden');
|
|
212
|
+
// Only set aria-hidden if not already hidden
|
|
213
|
+
if (previousValue !== 'true') {
|
|
214
|
+
child.setAttribute('aria-hidden', 'true');
|
|
215
|
+
modifiedElements.push({
|
|
216
|
+
element: child,
|
|
217
|
+
hadAriaHidden,
|
|
218
|
+
previousValue
|
|
219
|
+
});
|
|
214
220
|
}
|
|
215
|
-
});
|
|
216
|
-
// Prevent body scroll on iOS
|
|
217
|
-
scrollY = window.scrollY;
|
|
218
|
-
originalBodyOverflow = document.body.style.overflow;
|
|
219
|
-
originalBodyPosition = document.body.style.position;
|
|
220
|
-
originalBodyWidth = document.body.style.width;
|
|
221
|
-
originalBodyTop = document.body.style.top;
|
|
222
|
-
document.body.style.overflow = 'hidden';
|
|
223
|
-
document.body.style.position = 'fixed';
|
|
224
|
-
document.body.style.width = '100%';
|
|
225
|
-
document.body.style.top = `-${scrollY}px`;
|
|
226
|
-
}
|
|
227
|
-
// Cleanup function - remove div when component unmounts
|
|
228
|
-
return ()=>{
|
|
229
|
-
// Restore aria-hidden attributes
|
|
230
|
-
modifiedElements.forEach(({ element, hadAriaHidden, previousValue })=>{
|
|
231
|
-
if (document.body.contains(element)) {
|
|
232
|
-
if (hadAriaHidden && previousValue !== null) {
|
|
233
|
-
element.setAttribute('aria-hidden', previousValue);
|
|
234
|
-
} else {
|
|
235
|
-
element.removeAttribute('aria-hidden');
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
// Restore body scroll
|
|
240
|
-
if (layerConfig.overlay) {
|
|
241
|
-
document.body.style.overflow = originalBodyOverflow || '';
|
|
242
|
-
document.body.style.position = originalBodyPosition || '';
|
|
243
|
-
document.body.style.width = originalBodyWidth || '';
|
|
244
|
-
document.body.style.top = originalBodyTop || '';
|
|
245
|
-
window.scrollTo(0, scrollY);
|
|
246
|
-
}
|
|
247
|
-
if (document.body.contains(div)) {
|
|
248
|
-
document.body.removeChild(div);
|
|
249
221
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
222
|
+
});
|
|
223
|
+
// Prevent body scroll on iOS
|
|
224
|
+
scrollY = window.scrollY;
|
|
225
|
+
originalBodyOverflow = document.body.style.overflow;
|
|
226
|
+
originalBodyPosition = document.body.style.position;
|
|
227
|
+
originalBodyWidth = document.body.style.width;
|
|
228
|
+
originalBodyTop = document.body.style.top;
|
|
229
|
+
document.body.style.overflow = 'hidden';
|
|
230
|
+
document.body.style.position = 'fixed';
|
|
231
|
+
document.body.style.width = '100%';
|
|
232
|
+
document.body.style.top = `-${scrollY}px`;
|
|
259
233
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
234
|
+
// Cleanup function - remove div when component unmounts
|
|
235
|
+
return ()=>{
|
|
236
|
+
// Restore aria-hidden attributes
|
|
237
|
+
modifiedElements.forEach(({ element, hadAriaHidden, previousValue })=>{
|
|
238
|
+
if (document.body.contains(element)) {
|
|
239
|
+
if (hadAriaHidden && previousValue !== null) {
|
|
240
|
+
element.setAttribute('aria-hidden', previousValue);
|
|
241
|
+
} else {
|
|
242
|
+
element.removeAttribute('aria-hidden');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
// Restore body scroll
|
|
247
|
+
if (layerConfig.overlay) {
|
|
248
|
+
document.body.style.overflow = originalBodyOverflow || '';
|
|
249
|
+
document.body.style.position = originalBodyPosition || '';
|
|
250
|
+
document.body.style.width = originalBodyWidth || '';
|
|
251
|
+
document.body.style.top = originalBodyTop || '';
|
|
252
|
+
window.scrollTo(0, scrollY);
|
|
253
|
+
}
|
|
254
|
+
if (document.body.contains(div)) {
|
|
255
|
+
document.body.removeChild(div);
|
|
256
|
+
}
|
|
257
|
+
// Remove from layers array
|
|
258
|
+
const index = this.layers.findIndex((layer)=>layer.id === layerId);
|
|
259
|
+
if (index !== -1) {
|
|
260
|
+
this.layers.splice(index, 1);
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
}, []); // Empty dependency array - run only once
|
|
264
|
+
if (!divElement) {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
return /*#__PURE__*/ createPortal(/*#__PURE__*/ jsx(Container$5, {
|
|
268
|
+
...props,
|
|
269
|
+
ref: ref,
|
|
270
|
+
onClick: overlayClickHandler,
|
|
271
|
+
zIndex: currentIndex,
|
|
272
|
+
...layerConfig,
|
|
273
|
+
children: layerConfig.component
|
|
274
|
+
}), divElement);
|
|
275
|
+
};
|
|
276
|
+
// Return callback which will trigger the un-mount.
|
|
277
|
+
return [
|
|
278
|
+
/*#__PURE__*/ React.forwardRef(LayerContainer),
|
|
267
279
|
closeFn
|
|
268
280
|
];
|
|
269
281
|
};
|
|
270
282
|
if (typeof document !== 'undefined') {
|
|
271
283
|
// Store handler reference for cleanup
|
|
272
284
|
this.keyupHandler = (e)=>{
|
|
273
|
-
if (this.layers.length && e.keyCode === KEY_CODES.ESC) {
|
|
285
|
+
if (this.layers.length && e.keyCode === KEY_CODES$1.ESC) {
|
|
274
286
|
const lastLayer = this.layers.slice(-1)[0];
|
|
275
287
|
if (lastLayer.config.closeOnEsc !== false) {
|
|
276
288
|
this.unmount(lastLayer);
|
|
@@ -280,9 +292,9 @@ import { getThemeValue, THEME_NAME } from './constants.js';
|
|
|
280
292
|
document.body.addEventListener('keyup', this.keyupHandler);
|
|
281
293
|
}
|
|
282
294
|
}
|
|
283
|
-
}
|
|
295
|
+
};
|
|
284
296
|
// Return the instance of the class to create a Singleton.
|
|
285
|
-
var LayerManager
|
|
297
|
+
var LayerManager = new LayerManager$1();
|
|
286
298
|
|
|
287
|
-
export { LAYER_POSITION, LayerManager
|
|
299
|
+
export { LAYER_POSITION, LayerManager as default };
|
|
288
300
|
//# sourceMappingURL=LayerManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayerManager.js","sources":["../../src/shared/LayerManager.tsx"],"sourcesContent":["import React, { ReactPortal, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\n/** Enums for layer position on screen. */\nexport enum LAYER_POSITION {\n TOP_LEFT,\n TOP_CENTER,\n TOP_RIGHT,\n BOTTOM_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n DIALOG,\n}\n\ninterface LayerConfig {\n /** Show an overlay */\n overlay?: boolean;\n /** Element to render inside the layer. */\n component: JSX.Element;\n /** Position of the layer */\n position?: LAYER_POSITION;\n /** Delay for exit */\n exitDelay?: number;\n /** Close layer on `esc` key press. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. */\n closeOnOverlayClick?: boolean;\n /** Callback called when modal closes */\n closeCallback?: <T>(resp: T) => void;\n /** Layer is created with max z-index */\n alwaysOnTop?: boolean;\n}\n\n/** Default value of config */\nconst defaultConfig: LayerConfig = {\n closeOnEsc: true,\n overlay: false,\n position: LAYER_POSITION.TOP_LEFT,\n component: null,\n exitDelay: 0,\n closeOnOverlayClick: true,\n alwaysOnTop: false,\n};\n\n/** Metadata of each layer */\ninterface Layer {\n id: string;\n config: LayerConfig;\n element: HTMLDivElement;\n}\n\n/** Styles for each position */\nconst POSITION_STYLE = {\n [LAYER_POSITION.TOP_LEFT]: 'top: 0; left: 0;',\n [LAYER_POSITION.TOP_CENTER]: 'top: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.TOP_RIGHT]: 'top: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.BOTTOM_LEFT]: 'bottom: 0; left: 0;',\n [LAYER_POSITION.BOTTOM_CENTER]: 'bottom: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.BOTTOM_RIGHT]: 'bottom: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.DIALOG]: 'top: 0; left: 0; justify-content: center; align-items: center;',\n};\n\n/** Layer container component. */\nconst Container = styled.div<LayerConfig & { zIndex: number }>`\n position: fixed;\n display: flex;\n opacity: 0;\n transition: opacity 0.3s ease;\n ${(props) => POSITION_STYLE[props.position]}\n ${(props) =>\n props.overlay &&\n `\n width: 100%;\n height: 100vh;\n background-color: ${getThemeValue(THEME_NAME.BACKDROP_COLOR)};\n backdrop-filter: blur(0px);\n pointer-events: all;\n `}\n z-index: ${(props) => props.zIndex};\n\n .nf-layer-enter & {\n opacity: 1;\n ${(props) =>\n props.overlay &&\n `\n backdrop-filter: blur(3px);\n `}\n }\n`;\n\n/** Key code for different keys. */\nconst KEY_CODES = {\n ESC: 27,\n};\n\n/**\n * This is a shared helper class which manages the z-index of each layer.\n * If a component needs to be rendered in a different layer then this class\n * should be used. It internally maintains the stack of opened layer and each\n * `renderLayer` call will push a new layer in stack.\n *\n * This way we need not worry about the z-index and can freely keep on creating\n * new layers. The staring layer z-index is 10000. Leaving enough z-index for the\n * user if they desires so.\n *\n * @important Usage Pattern\n * To avoid creating duplicate layers (especially in React Strict Mode or Next.js),\n * always call `renderLayer` only once - either in a lifecycle method (like `componentDidUpdate`)\n * or in an imperative method (like `open()`).\n *\n * @example\n * // ❌ Don't call renderLayer in render() method\n * render() {\n * if (this.state.show) {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... }); // Creates new layer on every render\n * return <Component />;\n * }\n * }\n *\n * @example\n * // ✅ Do call renderLayer once in a method and store the component\n * open() {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... });\n * this.setState({ LayerComponent: Component });\n * }\n *\n * render() {\n * const { LayerComponent } = this.state;\n * return LayerComponent ? <LayerComponent /> : null;\n * }\n */\nclass LayerManager {\n /** Layer stack */\n private layers: Layer[] = [];\n /** z-index of the next layer */\n private nextIndex = 10000;\n private keyupHandler: (e: KeyboardEvent) => void;\n private timeoutIds = new Map<string, number>(); // Track timeouts\n\n /**\n * Constructor simply registers a event listener on body to\n * react to esc key press.\n */\n constructor() {\n if (typeof document !== 'undefined') {\n // Store handler reference for cleanup\n this.keyupHandler = (e) => {\n if (this.layers.length && e.keyCode === KEY_CODES.ESC) {\n const lastLayer = this.layers.slice(-1)[0];\n if (lastLayer.config.closeOnEsc !== false) {\n this.unmount(lastLayer);\n }\n }\n };\n document.body.addEventListener('keyup', this.keyupHandler);\n }\n }\n\n // Add cleanup method\n public destroy = () => {\n if (typeof document !== 'undefined' && this.keyupHandler) {\n document.body.removeEventListener('keyup', this.keyupHandler);\n }\n // Clear all pending timeouts\n this.timeoutIds.forEach((id) => clearTimeout(id));\n this.timeoutIds.clear();\n // Clean up remaining layers\n this.layers.forEach((layer) => {\n if (document.body.contains(layer.element)) {\n document.body.removeChild(layer.element);\n }\n });\n this.layers = [];\n };\n\n /**\n * Un-mounts a layer.\n *\n * It first adds a class 'nf-layer-exit' and then un-mounts the\n * layer after the `exitDelay` mentioned in the layer config.\n * This class will help component in triggering the entry animation.\n *\n * @param layer\n */\n private unmount = (layer: Layer, resp?: unknown) => {\n layer.element.setAttribute('class', 'nf-layer-exit');\n const index = this.layers.findIndex((item) => item === layer);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n\n const timeoutId = window.setTimeout(() => {\n this.timeoutIds.delete(layer.id);\n try {\n layer.config.closeCallback?.(resp);\n } catch (e) {\n console.warn(e.message);\n }\n // Clear reference to help GC\n layer.config.component = null;\n }, layer.config.exitDelay);\n\n this.timeoutIds.set(layer.id, timeoutId);\n };\n\n /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (\n config: LayerConfig,\n ): [() => React.ReactPortal | null, (resp?: unknown) => void] => {\n // SSR guard\n if (typeof document === 'undefined') {\n return [() => null, () => {}];\n }\n\n // Merge default config with the provided config.\n const layerConfig = {\n ...defaultConfig,\n ...config,\n };\n\n // Get the z-index for the new layer\n const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : this.nextIndex++;\n const className = layerConfig.alwaysOnTop ? 'nf-layer-manager-top' : 'nf-layer-manager';\n\n // Create a unique ID for tracking this layer\n const layerId = `nf-layer-manager-${currentIndex}`;\n\n const overlayClickHandler = () => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer && layer.config.closeOnOverlayClick !== false) {\n this.unmount(layer);\n }\n };\n\n const closeFn = (resp?: unknown) => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer) {\n this.unmount(layer, resp);\n }\n };\n\n // Return callback which will trigger the un-mount.\n return [\n (): ReactPortal | null => {\n const [divElement, setDivElement] = React.useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n // Create the div element only once when component mounts\n const div = document.createElement('div');\n div.setAttribute('class', className);\n div.setAttribute('id', layerId);\n document.body.appendChild(div);\n\n // Add layer to stack\n const currentLayer = {\n id: layerId,\n config: layerConfig,\n element: div,\n };\n this.layers.push(currentLayer);\n\n setDivElement(div);\n // Add entry animation class after a short delay\n setTimeout(() => {\n div.setAttribute('class', 'nf-layer-enter');\n }, 10);\n\n // Track elements modified for accessibility\n const modifiedElements: Array<{\n element: Element;\n hadAriaHidden: boolean;\n previousValue: string | null;\n }> = [];\n let originalBodyOverflow: string | null = null;\n let originalBodyPosition: string | null = null;\n let originalBodyWidth: string | null = null;\n let originalBodyTop: string | null = null;\n let scrollY = 0;\n\n // Apply aria-hidden to siblings and body scroll lock for overlay modals\n if (layerConfig.overlay) {\n // Hide all body children except this layer portal, scripts, and styles\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach((child) => {\n if (\n child !== div &&\n child.className !== 'nf-layer-manager-top' &&\n child.tagName !== 'SCRIPT' &&\n child.tagName !== 'STYLE'\n ) {\n const hadAriaHidden = child.hasAttribute('aria-hidden');\n const previousValue = child.getAttribute('aria-hidden');\n\n // Only set aria-hidden if not already hidden\n if (previousValue !== 'true') {\n child.setAttribute('aria-hidden', 'true');\n modifiedElements.push({\n element: child,\n hadAriaHidden,\n previousValue,\n });\n }\n }\n });\n\n // Prevent body scroll on iOS\n scrollY = window.scrollY;\n originalBodyOverflow = document.body.style.overflow;\n originalBodyPosition = document.body.style.position;\n originalBodyWidth = document.body.style.width;\n originalBodyTop = document.body.style.top;\n\n document.body.style.overflow = 'hidden';\n document.body.style.position = 'fixed';\n document.body.style.width = '100%';\n document.body.style.top = `-${scrollY}px`;\n }\n\n // Cleanup function - remove div when component unmounts\n return () => {\n // Restore aria-hidden attributes\n modifiedElements.forEach(({ element, hadAriaHidden, previousValue }) => {\n if (document.body.contains(element)) {\n if (hadAriaHidden && previousValue !== null) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n // Restore body scroll\n if (layerConfig.overlay) {\n document.body.style.overflow = originalBodyOverflow || '';\n document.body.style.position = originalBodyPosition || '';\n document.body.style.width = originalBodyWidth || '';\n document.body.style.top = originalBodyTop || '';\n window.scrollTo(0, scrollY);\n }\n\n if (document.body.contains(div)) {\n document.body.removeChild(div);\n }\n // Remove from layers array\n const index = this.layers.findIndex((layer) => layer.id === layerId);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n };\n }, []); // Empty dependency array - run only once\n\n if (!divElement) {\n return null;\n }\n\n return ReactDOM.createPortal(\n <Container onClick={overlayClickHandler} zIndex={currentIndex} {...layerConfig}>\n {layerConfig.component}\n </Container>,\n divElement,\n );\n },\n closeFn,\n ];\n };\n}\n\n// Return the instance of the class to create a Singleton.\nexport default new LayerManager();\n"],"names":["LAYER_POSITION","defaultConfig","closeOnEsc","overlay","position","component","exitDelay","closeOnOverlayClick","alwaysOnTop","POSITION_STYLE","Container","styled","props","getThemeValue","THEME_NAME","BACKDROP_COLOR","zIndex","KEY_CODES","ESC","LayerManager","layers","nextIndex","timeoutIds","Map","destroy","document","keyupHandler","body","removeEventListener","forEach","id","clearTimeout","clear","layer","contains","element","removeChild","unmount","resp","setAttribute","index","findIndex","item","splice","timeoutId","window","setTimeout","delete","config","closeCallback","e","console","warn","message","set","renderLayer","layerConfig","currentIndex","className","layerId","overlayClickHandler","find","l","closeFn","divElement","setDivElement","React","useState","useEffect","div","createElement","appendChild","currentLayer","push","modifiedElements","originalBodyOverflow","originalBodyPosition","originalBodyWidth","originalBodyTop","scrollY","bodyChildren","Array","from","children","child","tagName","hadAriaHidden","hasAttribute","previousValue","getAttribute","style","overflow","width","top","removeAttribute","scrollTo","ReactDOM","createPortal","_jsx","onClick","length","keyCode","lastLayer","slice","addEventListener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LayerManager.js","sources":["../../src/shared/LayerManager.tsx"],"sourcesContent":["import React, { ForwardRefExoticComponent, RefAttributes, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\n/** Enums for layer position on screen. */\nexport enum LAYER_POSITION {\n TOP_LEFT,\n TOP_CENTER,\n TOP_RIGHT,\n BOTTOM_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n DIALOG,\n}\n\ninterface LayerConfig {\n /** Show an overlay */\n overlay?: boolean;\n /** Element to render inside the layer. */\n component: React.JSX.Element | null;\n /** Position of the layer */\n position?: LAYER_POSITION;\n /** Delay for exit */\n exitDelay?: number;\n /** Close layer on `esc` key press. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. */\n closeOnOverlayClick?: boolean;\n /** Callback called when modal closes */\n closeCallback?: (resp?: unknown) => void;\n /** Layer is created with max z-index */\n alwaysOnTop?: boolean;\n}\n\n/** Default value of config */\nconst defaultConfig: LayerConfig = {\n closeOnEsc: true,\n overlay: false,\n position: LAYER_POSITION.TOP_LEFT,\n component: null,\n exitDelay: 0,\n closeOnOverlayClick: true,\n alwaysOnTop: false,\n};\n\n/** Metadata of each layer */\ninterface Layer {\n id: string;\n config: LayerConfig;\n element: HTMLDivElement;\n}\n\n/** Styles for each position */\nconst POSITION_STYLE: Record<LAYER_POSITION, string> = {\n [LAYER_POSITION.TOP_LEFT]: 'top: 0; left: 0;',\n [LAYER_POSITION.TOP_CENTER]: 'top: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.TOP_RIGHT]: 'top: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.BOTTOM_LEFT]: 'bottom: 0; left: 0;',\n [LAYER_POSITION.BOTTOM_CENTER]: 'bottom: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.BOTTOM_RIGHT]: 'bottom: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.DIALOG]: 'top: 0; left: 0; justify-content: center; align-items: center;',\n};\n\n/** Layer container component. */\nconst Container = styled.div<LayerConfig & { zIndex: number }>`\n position: fixed;\n display: flex;\n opacity: 0;\n transition: opacity 0.3s ease;\n ${(props) => POSITION_STYLE[props.position as LAYER_POSITION]}\n ${(props) =>\n props.overlay &&\n `\n width: 100%;\n height: 100vh;\n background-color: ${getThemeValue(THEME_NAME.BACKDROP_COLOR)};\n backdrop-filter: blur(0px);\n pointer-events: all;\n `}\n z-index: ${(props) => props.zIndex};\n\n .nf-layer-enter & {\n opacity: 1;\n ${(props) =>\n props.overlay &&\n `\n backdrop-filter: blur(3px);\n `}\n }\n`;\n\n/** Key code for different keys. */\nconst KEY_CODES = {\n ESC: 27,\n};\n\n/**\n * This is a shared helper class which manages the z-index of each layer.\n * If a component needs to be rendered in a different layer then this class\n * should be used. It internally maintains the stack of opened layer and each\n * `renderLayer` call will push a new layer in stack.\n *\n * This way we need not worry about the z-index and can freely keep on creating\n * new layers. The staring layer z-index is 10000. Leaving enough z-index for the\n * user if they desires so.\n *\n * @important Usage Pattern\n * To avoid creating duplicate layers (especially in React Strict Mode or Next.js),\n * always call `renderLayer` only once - either in a lifecycle method (like `componentDidUpdate`)\n * or in an imperative method (like `open()`).\n *\n * @example\n * // ❌ Don't call renderLayer in render() method\n * render() {\n * if (this.state.show) {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... }); // Creates new layer on every render\n * return <Component />;\n * }\n * }\n *\n * @example\n * // ✅ Do call renderLayer once in a method and store the component\n * open() {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... });\n * this.setState({ LayerComponent: Component });\n * }\n *\n * render() {\n * const { LayerComponent } = this.state;\n * return LayerComponent ? <LayerComponent /> : null;\n * }\n */\nclass LayerManager {\n /** Layer stack */\n private layers: Layer[] = [];\n /** z-index of the next layer */\n private nextIndex = 0;\n private keyupHandler!: (e: KeyboardEvent) => void;\n private timeoutIds = new Map<string, number>(); // Track timeouts\n\n /**\n * Constructor simply registers a event listener on body to\n * react to esc key press.\n */\n constructor() {\n if (typeof document !== 'undefined') {\n // Store handler reference for cleanup\n this.keyupHandler = (e) => {\n if (this.layers.length && e.keyCode === KEY_CODES.ESC) {\n const lastLayer = this.layers.slice(-1)[0];\n if (lastLayer.config.closeOnEsc !== false) {\n this.unmount(lastLayer);\n }\n }\n };\n document.body.addEventListener('keyup', this.keyupHandler);\n }\n }\n\n // Add cleanup method\n public destroy = () => {\n if (typeof document !== 'undefined' && this.keyupHandler) {\n document.body.removeEventListener('keyup', this.keyupHandler);\n }\n // Clear all pending timeouts\n this.timeoutIds.forEach((id) => clearTimeout(id));\n this.timeoutIds.clear();\n // Clean up remaining layers\n this.layers.forEach((layer) => {\n if (document.body.contains(layer.element)) {\n document.body.removeChild(layer.element);\n }\n });\n this.layers = [];\n };\n\n /**\n * Un-mounts a layer.\n *\n * It first adds a class 'nf-layer-exit' and then un-mounts the\n * layer after the `exitDelay` mentioned in the layer config.\n * This class will help component in triggering the entry animation.\n *\n * @param layer\n */\n private unmount = (layer: Layer, resp?: unknown) => {\n layer.element.setAttribute('class', 'nf-layer-exit');\n const index = this.layers.findIndex((item) => item === layer);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n\n const timeoutId = window.setTimeout(() => {\n this.timeoutIds.delete(layer.id);\n try {\n layer.config.closeCallback?.(resp);\n } catch (err) {\n if (err instanceof Error) {\n console.warn(err.message);\n } else {\n console.warn(err);\n }\n }\n // Clear reference to help GC\n layer.config.component = null;\n }, layer.config.exitDelay);\n\n this.timeoutIds.set(layer.id, timeoutId);\n };\n\n private Empty = () => {\n return null;\n };\n\n /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (\n config: LayerConfig,\n ): [ForwardRefExoticComponent<RefAttributes<HTMLDivElement>>, (resp?: unknown) => void] => {\n // SSR guard\n if (typeof document === 'undefined') {\n return [React.forwardRef(this.Empty), () => {}];\n }\n\n // Merge default config with the provided config.\n const layerConfig = {\n ...defaultConfig,\n ...config,\n };\n\n // Get the z-index for the new layer\n const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : 10000 + this.nextIndex;\n const className = layerConfig.alwaysOnTop ? 'nf-layer-manager-top' : 'nf-layer-manager';\n\n // Create a unique ID for tracking this layer\n const layerId = `${className}-${currentIndex + this.nextIndex}`;\n\n // Always increment for next layer\n this.nextIndex += 1;\n\n const overlayClickHandler = () => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer && layer.config.closeOnOverlayClick !== false) {\n this.unmount(layer);\n }\n };\n\n const closeFn = (resp?: unknown) => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer) {\n this.unmount(layer, resp);\n }\n };\n\n const LayerContainer = (\n props: React.HTMLAttributes<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const [divElement, setDivElement] = React.useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n // Create the div element only once when component mounts\n const div = document.createElement('div');\n div.setAttribute('class', className);\n div.setAttribute('id', layerId);\n document.body.appendChild(div);\n\n // Add layer to stack\n const currentLayer = {\n id: layerId,\n config: layerConfig,\n element: div,\n };\n this.layers.push(currentLayer);\n\n setDivElement(div);\n // Add entry animation class after a short delay\n setTimeout(() => {\n div.setAttribute('class', 'nf-layer-enter');\n }, 10);\n\n // Track elements modified for accessibility\n const modifiedElements: Array<{\n element: Element;\n hadAriaHidden: boolean;\n previousValue: string | null;\n }> = [];\n let originalBodyOverflow: string | null = null;\n let originalBodyPosition: string | null = null;\n let originalBodyWidth: string | null = null;\n let originalBodyTop: string | null = null;\n let scrollY = 0;\n\n // Apply aria-hidden to siblings and body scroll lock for overlay modals\n if (layerConfig.overlay) {\n // Hide all body children except this layer portal, scripts, and styles\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach((child) => {\n if (\n child !== div &&\n child.className !== 'nf-layer-manager-top' &&\n child.tagName !== 'SCRIPT' &&\n child.tagName !== 'STYLE'\n ) {\n const hadAriaHidden = child.hasAttribute('aria-hidden');\n const previousValue = child.getAttribute('aria-hidden');\n\n // Only set aria-hidden if not already hidden\n if (previousValue !== 'true') {\n child.setAttribute('aria-hidden', 'true');\n modifiedElements.push({\n element: child,\n hadAriaHidden,\n previousValue,\n });\n }\n }\n });\n\n // Prevent body scroll on iOS\n scrollY = window.scrollY;\n originalBodyOverflow = document.body.style.overflow;\n originalBodyPosition = document.body.style.position;\n originalBodyWidth = document.body.style.width;\n originalBodyTop = document.body.style.top;\n\n document.body.style.overflow = 'hidden';\n document.body.style.position = 'fixed';\n document.body.style.width = '100%';\n document.body.style.top = `-${scrollY}px`;\n }\n\n // Cleanup function - remove div when component unmounts\n return () => {\n // Restore aria-hidden attributes\n modifiedElements.forEach(({ element, hadAriaHidden, previousValue }) => {\n if (document.body.contains(element)) {\n if (hadAriaHidden && previousValue !== null) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n // Restore body scroll\n if (layerConfig.overlay) {\n document.body.style.overflow = originalBodyOverflow || '';\n document.body.style.position = originalBodyPosition || '';\n document.body.style.width = originalBodyWidth || '';\n document.body.style.top = originalBodyTop || '';\n window.scrollTo(0, scrollY);\n }\n\n if (document.body.contains(div)) {\n document.body.removeChild(div);\n }\n // Remove from layers array\n const index = this.layers.findIndex((layer) => layer.id === layerId);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n };\n }, []); // Empty dependency array - run only once\n\n if (!divElement) {\n return null;\n }\n\n return createPortal(\n <Container\n {...props}\n ref={ref}\n onClick={overlayClickHandler}\n zIndex={currentIndex}\n {...layerConfig}\n >\n {layerConfig.component}\n </Container>,\n divElement,\n );\n };\n\n // Return callback which will trigger the un-mount.\n return [\n React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(LayerContainer),\n closeFn,\n ];\n };\n}\n\n// Return the instance of the class to create a Singleton.\nexport default new LayerManager();\n"],"names":["LAYER_POSITION","defaultConfig","closeOnEsc","overlay","position","component","exitDelay","closeOnOverlayClick","alwaysOnTop","POSITION_STYLE","Container","styled","props","getThemeValue","THEME_NAME","BACKDROP_COLOR","zIndex","KEY_CODES","ESC","LayerManager","layers","nextIndex","timeoutIds","Map","destroy","document","keyupHandler","body","removeEventListener","forEach","id","clearTimeout","clear","layer","contains","element","removeChild","unmount","resp","setAttribute","index","findIndex","item","splice","timeoutId","window","setTimeout","delete","config","closeCallback","err","Error","console","warn","message","set","Empty","renderLayer","React","forwardRef","layerConfig","currentIndex","className","layerId","overlayClickHandler","find","l","closeFn","LayerContainer","ref","divElement","setDivElement","useState","useEffect","div","createElement","appendChild","currentLayer","push","modifiedElements","originalBodyOverflow","originalBodyPosition","originalBodyWidth","originalBodyTop","scrollY","bodyChildren","Array","from","children","child","tagName","hadAriaHidden","hasAttribute","previousValue","getAttribute","style","overflow","width","top","removeAttribute","scrollTo","createPortal","_jsx","onClick","e","length","keyCode","lastLayer","slice","addEventListener"],"mappings":"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"}
|
package/lib-esm/shared/styles.js
CHANGED
|
@@ -5,18 +5,18 @@ const Ellipsis = /*#__PURE__*/ styled("span", {
|
|
|
5
5
|
target: "e126ntv90",
|
|
6
6
|
label: "Ellipsis"
|
|
7
7
|
})("white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:1;");
|
|
8
|
-
const Header = /*#__PURE__*/ styled("h1", {
|
|
8
|
+
const Header$1 = /*#__PURE__*/ styled("h1", {
|
|
9
9
|
target: "e126ntv91",
|
|
10
10
|
label: "Header"
|
|
11
11
|
})("padding:10px 15px;line-height:26px;border-bottom:1px solid ", getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR), ";font-size:16px;font-weight:bold;");
|
|
12
|
-
const Body = /*#__PURE__*/ styled("div", {
|
|
12
|
+
const Body$1 = /*#__PURE__*/ styled("div", {
|
|
13
13
|
target: "e126ntv92",
|
|
14
14
|
label: "Body"
|
|
15
15
|
})("padding:20px 15px;flex:1;overflow:auto;");
|
|
16
|
-
const Footer = /*#__PURE__*/ styled("div", {
|
|
16
|
+
const Footer$1 = /*#__PURE__*/ styled("div", {
|
|
17
17
|
target: "e126ntv93",
|
|
18
18
|
label: "Footer"
|
|
19
19
|
})("padding:10px 15px;border-top:1px solid ", getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR), ";display:flex;justify-content:flex-end;");
|
|
20
20
|
|
|
21
|
-
export { Body, Ellipsis, Footer, Header };
|
|
21
|
+
export { Body$1 as Body, Ellipsis, Footer$1 as Footer, Header$1 as Header };
|
|
22
22
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../src/shared/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\nexport const Ellipsis = styled.span`\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n`;\n\nexport const Header = styled.h1`\n padding: 10px 15px;\n line-height: 26px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n font-size: 16px;\n font-weight: bold;\n`;\n\nexport const Body = styled.div`\n padding: 20px 15px;\n flex: 1;\n overflow: auto;\n`;\n\nexport const Footer = styled.div`\n padding: 10px 15px;\n border-top: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n display: flex;\n justify-content: flex-end;\n`;\n"],"names":["Ellipsis","styled","Header","getThemeValue","THEME_NAME","BORDER_LIGHT_COLOR","Body","Footer"],"mappings":";;;MAGaA,QAAAA,iBAAWC,MAAAA,CAAAA,MAAAA,EAAAA;;;AAKtB,CAAA,CAAA,CAAA,mEAAA;MAEWC,
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../src/shared/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\nexport const Ellipsis = styled.span`\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n`;\n\nexport const Header = styled.h1`\n padding: 10px 15px;\n line-height: 26px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n font-size: 16px;\n font-weight: bold;\n`;\n\nexport const Body = styled.div`\n padding: 20px 15px;\n flex: 1;\n overflow: auto;\n`;\n\nexport const Footer = styled.div`\n padding: 10px 15px;\n border-top: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n display: flex;\n justify-content: flex-end;\n`;\n"],"names":["Ellipsis","styled","Header","getThemeValue","THEME_NAME","BORDER_LIGHT_COLOR","Body","Footer"],"mappings":";;;MAGaA,QAAAA,iBAAWC,MAAAA,CAAAA,MAAAA,EAAAA;;;AAKtB,CAAA,CAAA,CAAA,mEAAA;MAEWC,QAAAA,iBAASD,MAAAA,CAAAA,IAAAA,EAAAA;;;kEAGSE,aAAAA,CAAcC,UAAAA,CAAWC,kBAAkB,CAAA,EAAA,mCAAA;MAK7DC,MAAAA,iBAAOL,MAAAA,CAAAA,KAAAA,EAAAA;;;AAIlB,CAAA,CAAA,CAAA,yCAAA;MAEWM,QAAAA,iBAASN,MAAAA,CAAAA,KAAAA,EAAAA;;;8CAEME,aAAAA,CAAcC,UAAAA,CAAWC,kBAAkB,CAAA,EAAA,yCAAA;;;;"}
|