@vuu-ui/vuu-popups 0.8.60 → 0.8.61
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/cjs/dialog/useDialog.js +18 -8
- package/cjs/dialog/useDialog.js.map +1 -1
- package/cjs/index.js +1 -3
- package/cjs/index.js.map +1 -1
- package/esm/dialog/useDialog.js +19 -9
- package/esm/dialog/useDialog.js.map +1 -1
- package/esm/index.js +1 -2
- package/esm/index.js.map +1 -1
- package/package.json +5 -5
- package/types/dialog/index.d.ts +0 -1
- package/types/dialog/useDialog.d.ts +8 -2
- package/cjs/dialog/Dialog.css.js +0 -6
- package/cjs/dialog/Dialog.css.js.map +0 -1
- package/cjs/dialog/Dialog.js +0 -96
- package/cjs/dialog/Dialog.js.map +0 -1
- package/esm/dialog/Dialog.css.js +0 -4
- package/esm/dialog/Dialog.css.js.map +0 -1
- package/esm/dialog/Dialog.js +0 -94
- package/esm/dialog/Dialog.js.map +0 -1
- package/types/dialog/Dialog.d.ts +0 -9
package/cjs/dialog/useDialog.js
CHANGED
|
@@ -17,10 +17,11 @@ const useDialog = () => {
|
|
|
17
17
|
},
|
|
18
18
|
[closeDialog]
|
|
19
19
|
);
|
|
20
|
-
const dialog = dialogState ? /* @__PURE__ */ jsxRuntime.jsxs(core.Dialog, {
|
|
20
|
+
const dialog = dialogState ? /* @__PURE__ */ jsxRuntime.jsxs(core.Dialog, { open: true, onOpenChange: handleOpenChange, children: [
|
|
21
21
|
/* @__PURE__ */ jsxRuntime.jsx(core.DialogHeader, { header: dialogState.title }),
|
|
22
22
|
/* @__PURE__ */ jsxRuntime.jsx(core.DialogContent, { children: dialogState.content }),
|
|
23
|
-
dialogState.hideCloseButton !== true ? /* @__PURE__ */ jsxRuntime.jsx(core.DialogCloseButton, { onClick: closeDialog }) : null
|
|
23
|
+
dialogState.hideCloseButton !== true ? /* @__PURE__ */ jsxRuntime.jsx(core.DialogCloseButton, { onClick: closeDialog }) : null,
|
|
24
|
+
dialogState.actions ? /* @__PURE__ */ jsxRuntime.jsx(core.DialogActions, { children: dialogState.actions }) : null
|
|
24
25
|
] }) : null;
|
|
25
26
|
return {
|
|
26
27
|
dialog,
|
|
@@ -30,28 +31,37 @@ const useDialog = () => {
|
|
|
30
31
|
const defaultShowDialog = () => {
|
|
31
32
|
console.warn("No DialogProvider in place");
|
|
32
33
|
};
|
|
34
|
+
const defaultCloseDialog = () => {
|
|
35
|
+
console.warn("No DialogProvider in place");
|
|
36
|
+
};
|
|
33
37
|
const DialogContext = React.createContext({
|
|
34
|
-
showDialog: defaultShowDialog
|
|
38
|
+
showDialog: defaultShowDialog,
|
|
39
|
+
closeDialog: defaultCloseDialog
|
|
35
40
|
});
|
|
36
41
|
const DialogProvider = ({ children }) => {
|
|
37
42
|
const { dialog, setDialogState } = useDialog();
|
|
38
|
-
const showDialog = (dialogContent, title) => {
|
|
43
|
+
const showDialog = (dialogContent, title, actionButtons) => {
|
|
39
44
|
setDialogState({
|
|
45
|
+
actions: actionButtons,
|
|
40
46
|
content: dialogContent,
|
|
41
47
|
title
|
|
42
48
|
});
|
|
43
49
|
};
|
|
44
|
-
|
|
50
|
+
const closeDialog = () => {
|
|
51
|
+
setDialogState(void 0);
|
|
52
|
+
};
|
|
53
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(DialogContext.Provider, { value: { showDialog, closeDialog }, children: [
|
|
45
54
|
children,
|
|
46
55
|
dialog
|
|
47
56
|
] });
|
|
48
57
|
};
|
|
49
|
-
const
|
|
58
|
+
const useDialogContext = () => {
|
|
50
59
|
const { showDialog } = React.useContext(DialogContext);
|
|
51
|
-
|
|
60
|
+
const { closeDialog } = React.useContext(DialogContext);
|
|
61
|
+
return { showDialog, closeDialog };
|
|
52
62
|
};
|
|
53
63
|
|
|
54
64
|
exports.DialogProvider = DialogProvider;
|
|
55
65
|
exports.useDialog = useDialog;
|
|
56
|
-
exports.
|
|
66
|
+
exports.useDialogContext = useDialogContext;
|
|
57
67
|
//# sourceMappingURL=useDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDialog.js","sources":["../../src/dialog/useDialog.tsx"],"sourcesContent":["import {\n Dialog,\n DialogCloseButton,\n DialogContent,\n DialogHeader,\n} from \"@salt-ds/core\";\nimport {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\n\nexport type DialogState = {\n content: ReactElement;\n title: string;\n hideCloseButton?: boolean;\n};\n\nexport type SetDialog = (dialogState?: DialogState) => void;\n\nexport
|
|
1
|
+
{"version":3,"file":"useDialog.js","sources":["../../src/dialog/useDialog.tsx"],"sourcesContent":["import {\n Dialog,\n DialogActions,\n DialogCloseButton,\n DialogContent,\n DialogHeader,\n} from \"@salt-ds/core\";\nimport {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\n\nexport type DialogState = {\n actions?: ReactElement[];\n content: ReactElement;\n title: string;\n hideCloseButton?: boolean;\n};\n\nexport type SetDialog = (dialogState?: DialogState) => void;\n\nexport type ShowDialog = (\n dialogContent: ReactElement,\n title: string,\n dialogActionButtons?: ReactElement[]\n) => void;\n\nexport interface DialogContextProps {\n showDialog: ShowDialog;\n closeDialog: () => void;\n}\n\nexport const useDialog = () => {\n const [dialogState, setDialogState] = useState<DialogState>();\n\n const closeDialog = useCallback(() => {\n setDialogState(undefined);\n }, []);\n\n const handleOpenChange = useCallback(\n (open?: boolean) => {\n if (open !== true) {\n closeDialog();\n }\n },\n [closeDialog]\n );\n\n const dialog = dialogState ? (\n <Dialog open={true} onOpenChange={handleOpenChange}>\n <DialogHeader header={dialogState.title} />\n <DialogContent>{dialogState.content}</DialogContent>\n {dialogState.hideCloseButton !== true ? (\n <DialogCloseButton onClick={closeDialog} />\n ) : null}\n {dialogState.actions ? (\n <DialogActions>{dialogState.actions}</DialogActions>\n ) : null}\n </Dialog>\n ) : null;\n\n return {\n dialog,\n setDialogState,\n };\n};\n\nconst defaultShowDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\nconst defaultCloseDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\n\nconst DialogContext = createContext<DialogContextProps>({\n showDialog: defaultShowDialog,\n closeDialog: defaultCloseDialog,\n});\n\nexport const DialogProvider = ({ children }: { children: ReactNode }) => {\n const { dialog, setDialogState } = useDialog();\n const showDialog: ShowDialog = (dialogContent, title, actionButtons) => {\n setDialogState({\n actions: actionButtons,\n content: dialogContent,\n title,\n });\n };\n const closeDialog = () => {\n setDialogState(undefined);\n };\n return (\n <DialogContext.Provider value={{ showDialog, closeDialog }}>\n {children}\n {dialog}\n </DialogContext.Provider>\n );\n};\n\nexport const useDialogContext = () => {\n const { showDialog } = useContext(DialogContext);\n const { closeDialog } = useContext(DialogContext);\n return { showDialog, closeDialog };\n};\n"],"names":["useState","useCallback","jsxs","Dialog","jsx","DialogHeader","DialogContent","DialogCloseButton","DialogActions","createContext","useContext"],"mappings":";;;;;;AAoCO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,cAAsB,EAAA,CAAA;AAE5D,EAAM,MAAA,WAAA,GAAcC,kBAAY,MAAM;AACpC,IAAA,cAAA,CAAe,KAAS,CAAA,CAAA,CAAA;AAAA,GAC1B,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,gBAAmB,GAAAA,iBAAA;AAAA,IACvB,CAAC,IAAmB,KAAA;AAClB,MAAA,IAAI,SAAS,IAAM,EAAA;AACjB,QAAY,WAAA,EAAA,CAAA;AAAA,OACd;AAAA,KACF;AAAA,IACA,CAAC,WAAW,CAAA;AAAA,GACd,CAAA;AAEA,EAAA,MAAM,SAAS,WACb,mBAAAC,eAAA,CAACC,eAAO,IAAM,EAAA,IAAA,EAAM,cAAc,gBAChC,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAAC,iBAAA,EAAA,EAAa,MAAQ,EAAA,WAAA,CAAY,KAAO,EAAA,CAAA;AAAA,oBACzCD,cAAA,CAACE,kBAAe,EAAA,EAAA,QAAA,EAAA,WAAA,CAAY,OAAQ,EAAA,CAAA;AAAA,IACnC,YAAY,eAAoB,KAAA,IAAA,kCAC9BC,sBAAkB,EAAA,EAAA,OAAA,EAAS,aAAa,CACvC,GAAA,IAAA;AAAA,IACH,YAAY,OACX,mBAAAH,cAAA,CAACI,kBAAe,EAAA,EAAA,QAAA,EAAA,WAAA,CAAY,SAAQ,CAClC,GAAA,IAAA;AAAA,GAAA,EACN,CACE,GAAA,IAAA,CAAA;AAEJ,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,cAAA;AAAA,GACF,CAAA;AACF,EAAA;AAEA,MAAM,oBAAoB,MAAM;AAC9B,EAAA,OAAA,CAAQ,KAAK,4BAA4B,CAAA,CAAA;AAC3C,CAAA,CAAA;AACA,MAAM,qBAAqB,MAAM;AAC/B,EAAA,OAAA,CAAQ,KAAK,4BAA4B,CAAA,CAAA;AAC3C,CAAA,CAAA;AAEA,MAAM,gBAAgBC,mBAAkC,CAAA;AAAA,EACtD,UAAY,EAAA,iBAAA;AAAA,EACZ,WAAa,EAAA,kBAAA;AACf,CAAC,CAAA,CAAA;AAEM,MAAM,cAAiB,GAAA,CAAC,EAAE,QAAA,EAAwC,KAAA;AACvE,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAe,EAAA,GAAI,SAAU,EAAA,CAAA;AAC7C,EAAA,MAAM,UAAyB,GAAA,CAAC,aAAe,EAAA,KAAA,EAAO,aAAkB,KAAA;AACtE,IAAe,cAAA,CAAA;AAAA,MACb,OAAS,EAAA,aAAA;AAAA,MACT,OAAS,EAAA,aAAA;AAAA,MACT,KAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AACA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,cAAA,CAAe,KAAS,CAAA,CAAA,CAAA;AAAA,GAC1B,CAAA;AACA,EACE,uBAAAP,eAAA,CAAC,cAAc,QAAd,EAAA,EAAuB,OAAO,EAAE,UAAA,EAAY,aAC1C,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,MAAA;AAAA,GACH,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEO,MAAM,mBAAmB,MAAM;AACpC,EAAA,MAAM,EAAE,UAAA,EAAe,GAAAQ,gBAAA,CAAW,aAAa,CAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,WAAA,EAAgB,GAAAA,gBAAA,CAAW,aAAa,CAAA,CAAA;AAChD,EAAO,OAAA,EAAE,YAAY,WAAY,EAAA,CAAA;AACnC;;;;;;"}
|
package/cjs/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var Dialog = require('./dialog/Dialog.js');
|
|
4
3
|
var useDialog = require('./dialog/useDialog.js');
|
|
5
4
|
var DialogHeader = require('./dialog-header/DialogHeader.js');
|
|
6
5
|
var ContextMenu = require('./menu/ContextMenu.js');
|
|
@@ -21,10 +20,9 @@ var ToastNotification = require('./notifications/ToastNotification.js');
|
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
|
|
24
|
-
exports.Dialog = Dialog.Dialog;
|
|
25
23
|
exports.DialogProvider = useDialog.DialogProvider;
|
|
26
24
|
exports.useDialog = useDialog.useDialog;
|
|
27
|
-
exports.
|
|
25
|
+
exports.useDialogContext = useDialog.useDialogContext;
|
|
28
26
|
exports.DialogHeader = DialogHeader.DialogHeader;
|
|
29
27
|
exports.ContextMenu = ContextMenu.ContextMenu;
|
|
30
28
|
exports.MenuItem = MenuList.MenuItem;
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/esm/dialog/useDialog.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { Dialog, DialogHeader, DialogContent, DialogCloseButton } from '@salt-ds/core';
|
|
2
|
+
import { Dialog, DialogHeader, DialogContent, DialogCloseButton, DialogActions } from '@salt-ds/core';
|
|
3
3
|
import { createContext, useState, useCallback, useContext } from 'react';
|
|
4
4
|
|
|
5
5
|
const useDialog = () => {
|
|
@@ -15,10 +15,11 @@ const useDialog = () => {
|
|
|
15
15
|
},
|
|
16
16
|
[closeDialog]
|
|
17
17
|
);
|
|
18
|
-
const dialog = dialogState ? /* @__PURE__ */ jsxs(Dialog, {
|
|
18
|
+
const dialog = dialogState ? /* @__PURE__ */ jsxs(Dialog, { open: true, onOpenChange: handleOpenChange, children: [
|
|
19
19
|
/* @__PURE__ */ jsx(DialogHeader, { header: dialogState.title }),
|
|
20
20
|
/* @__PURE__ */ jsx(DialogContent, { children: dialogState.content }),
|
|
21
|
-
dialogState.hideCloseButton !== true ? /* @__PURE__ */ jsx(DialogCloseButton, { onClick: closeDialog }) : null
|
|
21
|
+
dialogState.hideCloseButton !== true ? /* @__PURE__ */ jsx(DialogCloseButton, { onClick: closeDialog }) : null,
|
|
22
|
+
dialogState.actions ? /* @__PURE__ */ jsx(DialogActions, { children: dialogState.actions }) : null
|
|
22
23
|
] }) : null;
|
|
23
24
|
return {
|
|
24
25
|
dialog,
|
|
@@ -28,26 +29,35 @@ const useDialog = () => {
|
|
|
28
29
|
const defaultShowDialog = () => {
|
|
29
30
|
console.warn("No DialogProvider in place");
|
|
30
31
|
};
|
|
32
|
+
const defaultCloseDialog = () => {
|
|
33
|
+
console.warn("No DialogProvider in place");
|
|
34
|
+
};
|
|
31
35
|
const DialogContext = createContext({
|
|
32
|
-
showDialog: defaultShowDialog
|
|
36
|
+
showDialog: defaultShowDialog,
|
|
37
|
+
closeDialog: defaultCloseDialog
|
|
33
38
|
});
|
|
34
39
|
const DialogProvider = ({ children }) => {
|
|
35
40
|
const { dialog, setDialogState } = useDialog();
|
|
36
|
-
const showDialog = (dialogContent, title) => {
|
|
41
|
+
const showDialog = (dialogContent, title, actionButtons) => {
|
|
37
42
|
setDialogState({
|
|
43
|
+
actions: actionButtons,
|
|
38
44
|
content: dialogContent,
|
|
39
45
|
title
|
|
40
46
|
});
|
|
41
47
|
};
|
|
42
|
-
|
|
48
|
+
const closeDialog = () => {
|
|
49
|
+
setDialogState(void 0);
|
|
50
|
+
};
|
|
51
|
+
return /* @__PURE__ */ jsxs(DialogContext.Provider, { value: { showDialog, closeDialog }, children: [
|
|
43
52
|
children,
|
|
44
53
|
dialog
|
|
45
54
|
] });
|
|
46
55
|
};
|
|
47
|
-
const
|
|
56
|
+
const useDialogContext = () => {
|
|
48
57
|
const { showDialog } = useContext(DialogContext);
|
|
49
|
-
|
|
58
|
+
const { closeDialog } = useContext(DialogContext);
|
|
59
|
+
return { showDialog, closeDialog };
|
|
50
60
|
};
|
|
51
61
|
|
|
52
|
-
export { DialogProvider, useDialog,
|
|
62
|
+
export { DialogProvider, useDialog, useDialogContext };
|
|
53
63
|
//# sourceMappingURL=useDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDialog.js","sources":["../../src/dialog/useDialog.tsx"],"sourcesContent":["import {\n Dialog,\n DialogCloseButton,\n DialogContent,\n DialogHeader,\n} from \"@salt-ds/core\";\nimport {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\n\nexport type DialogState = {\n content: ReactElement;\n title: string;\n hideCloseButton?: boolean;\n};\n\nexport type SetDialog = (dialogState?: DialogState) => void;\n\nexport
|
|
1
|
+
{"version":3,"file":"useDialog.js","sources":["../../src/dialog/useDialog.tsx"],"sourcesContent":["import {\n Dialog,\n DialogActions,\n DialogCloseButton,\n DialogContent,\n DialogHeader,\n} from \"@salt-ds/core\";\nimport {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\n\nexport type DialogState = {\n actions?: ReactElement[];\n content: ReactElement;\n title: string;\n hideCloseButton?: boolean;\n};\n\nexport type SetDialog = (dialogState?: DialogState) => void;\n\nexport type ShowDialog = (\n dialogContent: ReactElement,\n title: string,\n dialogActionButtons?: ReactElement[]\n) => void;\n\nexport interface DialogContextProps {\n showDialog: ShowDialog;\n closeDialog: () => void;\n}\n\nexport const useDialog = () => {\n const [dialogState, setDialogState] = useState<DialogState>();\n\n const closeDialog = useCallback(() => {\n setDialogState(undefined);\n }, []);\n\n const handleOpenChange = useCallback(\n (open?: boolean) => {\n if (open !== true) {\n closeDialog();\n }\n },\n [closeDialog]\n );\n\n const dialog = dialogState ? (\n <Dialog open={true} onOpenChange={handleOpenChange}>\n <DialogHeader header={dialogState.title} />\n <DialogContent>{dialogState.content}</DialogContent>\n {dialogState.hideCloseButton !== true ? (\n <DialogCloseButton onClick={closeDialog} />\n ) : null}\n {dialogState.actions ? (\n <DialogActions>{dialogState.actions}</DialogActions>\n ) : null}\n </Dialog>\n ) : null;\n\n return {\n dialog,\n setDialogState,\n };\n};\n\nconst defaultShowDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\nconst defaultCloseDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\n\nconst DialogContext = createContext<DialogContextProps>({\n showDialog: defaultShowDialog,\n closeDialog: defaultCloseDialog,\n});\n\nexport const DialogProvider = ({ children }: { children: ReactNode }) => {\n const { dialog, setDialogState } = useDialog();\n const showDialog: ShowDialog = (dialogContent, title, actionButtons) => {\n setDialogState({\n actions: actionButtons,\n content: dialogContent,\n title,\n });\n };\n const closeDialog = () => {\n setDialogState(undefined);\n };\n return (\n <DialogContext.Provider value={{ showDialog, closeDialog }}>\n {children}\n {dialog}\n </DialogContext.Provider>\n );\n};\n\nexport const useDialogContext = () => {\n const { showDialog } = useContext(DialogContext);\n const { closeDialog } = useContext(DialogContext);\n return { showDialog, closeDialog };\n};\n"],"names":[],"mappings":";;;;AAoCO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAsB,EAAA,CAAA;AAE5D,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,cAAA,CAAe,KAAS,CAAA,CAAA,CAAA;AAAA,GAC1B,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,gBAAmB,GAAA,WAAA;AAAA,IACvB,CAAC,IAAmB,KAAA;AAClB,MAAA,IAAI,SAAS,IAAM,EAAA;AACjB,QAAY,WAAA,EAAA,CAAA;AAAA,OACd;AAAA,KACF;AAAA,IACA,CAAC,WAAW,CAAA;AAAA,GACd,CAAA;AAEA,EAAA,MAAM,SAAS,WACb,mBAAA,IAAA,CAAC,UAAO,IAAM,EAAA,IAAA,EAAM,cAAc,gBAChC,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,YAAA,EAAA,EAAa,MAAQ,EAAA,WAAA,CAAY,KAAO,EAAA,CAAA;AAAA,oBACzC,GAAA,CAAC,aAAe,EAAA,EAAA,QAAA,EAAA,WAAA,CAAY,OAAQ,EAAA,CAAA;AAAA,IACnC,YAAY,eAAoB,KAAA,IAAA,uBAC9B,iBAAkB,EAAA,EAAA,OAAA,EAAS,aAAa,CACvC,GAAA,IAAA;AAAA,IACH,YAAY,OACX,mBAAA,GAAA,CAAC,aAAe,EAAA,EAAA,QAAA,EAAA,WAAA,CAAY,SAAQ,CAClC,GAAA,IAAA;AAAA,GAAA,EACN,CACE,GAAA,IAAA,CAAA;AAEJ,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,cAAA;AAAA,GACF,CAAA;AACF,EAAA;AAEA,MAAM,oBAAoB,MAAM;AAC9B,EAAA,OAAA,CAAQ,KAAK,4BAA4B,CAAA,CAAA;AAC3C,CAAA,CAAA;AACA,MAAM,qBAAqB,MAAM;AAC/B,EAAA,OAAA,CAAQ,KAAK,4BAA4B,CAAA,CAAA;AAC3C,CAAA,CAAA;AAEA,MAAM,gBAAgB,aAAkC,CAAA;AAAA,EACtD,UAAY,EAAA,iBAAA;AAAA,EACZ,WAAa,EAAA,kBAAA;AACf,CAAC,CAAA,CAAA;AAEM,MAAM,cAAiB,GAAA,CAAC,EAAE,QAAA,EAAwC,KAAA;AACvE,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAe,EAAA,GAAI,SAAU,EAAA,CAAA;AAC7C,EAAA,MAAM,UAAyB,GAAA,CAAC,aAAe,EAAA,KAAA,EAAO,aAAkB,KAAA;AACtE,IAAe,cAAA,CAAA;AAAA,MACb,OAAS,EAAA,aAAA;AAAA,MACT,OAAS,EAAA,aAAA;AAAA,MACT,KAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AACA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,cAAA,CAAe,KAAS,CAAA,CAAA,CAAA;AAAA,GAC1B,CAAA;AACA,EACE,uBAAA,IAAA,CAAC,cAAc,QAAd,EAAA,EAAuB,OAAO,EAAE,UAAA,EAAY,aAC1C,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,MAAA;AAAA,GACH,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEO,MAAM,mBAAmB,MAAM;AACpC,EAAA,MAAM,EAAE,UAAA,EAAe,GAAA,UAAA,CAAW,aAAa,CAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,WAAA,EAAgB,GAAA,UAAA,CAAW,aAAa,CAAA,CAAA;AAChD,EAAO,OAAA,EAAE,YAAY,WAAY,EAAA,CAAA;AACnC;;;;"}
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { DialogProvider, useDialog, useShowDialog } from './dialog/useDialog.js';
|
|
1
|
+
export { DialogProvider, useDialog, useDialogContext } from './dialog/useDialog.js';
|
|
3
2
|
export { DialogHeader } from './dialog-header/DialogHeader.js';
|
|
4
3
|
export { ContextMenu } from './menu/ContextMenu.js';
|
|
5
4
|
export { MenuItem, MenuItemGroup, MenuList, Separator, isMenuItemGroup, isMenuItemLabel } from './menu/MenuList.js';
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.61",
|
|
3
3
|
"description": "VUU popup components - Context Menu, Dialog etc",
|
|
4
4
|
"author": "heswell",
|
|
5
5
|
"license": "Apache-2.0",
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
"@salt-ds/core": "1.27.1",
|
|
8
8
|
"@salt-ds/styles": "0.2.1",
|
|
9
9
|
"@salt-ds/window": "0.1.1",
|
|
10
|
-
"@vuu-ui/vuu-data-types": "0.8.
|
|
11
|
-
"@vuu-ui/vuu-layout": "0.8.
|
|
12
|
-
"@vuu-ui/vuu-utils": "0.8.
|
|
13
|
-
"@vuu-ui/vuu-ui-controls": "0.8.
|
|
10
|
+
"@vuu-ui/vuu-data-types": "0.8.61",
|
|
11
|
+
"@vuu-ui/vuu-layout": "0.8.61",
|
|
12
|
+
"@vuu-ui/vuu-utils": "0.8.61",
|
|
13
|
+
"@vuu-ui/vuu-ui-controls": "0.8.61"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
16
|
"clsx": "^2.0.0",
|
package/types/dialog/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { ReactElement, ReactNode } from "react";
|
|
2
2
|
export type DialogState = {
|
|
3
|
+
actions?: ReactElement[];
|
|
3
4
|
content: ReactElement;
|
|
4
5
|
title: string;
|
|
5
6
|
hideCloseButton?: boolean;
|
|
6
7
|
};
|
|
7
8
|
export type SetDialog = (dialogState?: DialogState) => void;
|
|
9
|
+
export type ShowDialog = (dialogContent: ReactElement, title: string, dialogActionButtons?: ReactElement[]) => void;
|
|
8
10
|
export interface DialogContextProps {
|
|
9
|
-
showDialog:
|
|
11
|
+
showDialog: ShowDialog;
|
|
12
|
+
closeDialog: () => void;
|
|
10
13
|
}
|
|
11
14
|
export declare const useDialog: () => {
|
|
12
15
|
dialog: JSX.Element | null;
|
|
@@ -15,4 +18,7 @@ export declare const useDialog: () => {
|
|
|
15
18
|
export declare const DialogProvider: ({ children }: {
|
|
16
19
|
children: ReactNode;
|
|
17
20
|
}) => JSX.Element;
|
|
18
|
-
export declare const
|
|
21
|
+
export declare const useDialogContext: () => {
|
|
22
|
+
showDialog: ShowDialog;
|
|
23
|
+
closeDialog: () => void;
|
|
24
|
+
};
|
package/cjs/dialog/Dialog.css.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var dialogCss = ".vuuDialog {\n background: var(--salt-container-primary-background);\n border: var(--vuuDialog-border, solid 1px #ccc);\n border-radius: 5px;\n display: var(--vuuDialog-display, flex);\n flex-direction: column;;\n padding: var(--vuuDialog-padding, 16px);\n position: relative;\n box-shadow: var(--salt-overlayable-shadow, none);\n height: var(--vuuDialog-height, fit-content);\n overflow: visible;\n width: var(--vuuDialog-width, fit-content);\n}\n\n.vuuDialog-body {\n flex: 1 1 auto;\n}\n\n";
|
|
4
|
-
|
|
5
|
-
module.exports = dialogCss;
|
|
6
|
-
//# sourceMappingURL=Dialog.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/cjs/dialog/Dialog.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var cx = require('clsx');
|
|
5
|
-
var styles = require('@salt-ds/styles');
|
|
6
|
-
var window = require('@salt-ds/window');
|
|
7
|
-
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
8
|
-
var React = require('react');
|
|
9
|
-
var DialogHeader = require('../dialog-header/DialogHeader.js');
|
|
10
|
-
require('react-dom');
|
|
11
|
-
var useAnchoredPosition = require('../popup/useAnchoredPosition.js');
|
|
12
|
-
var Dialog$1 = require('./Dialog.css.js');
|
|
13
|
-
|
|
14
|
-
const classBase = "vuuDialog";
|
|
15
|
-
const AnchorBody = { current: document.body };
|
|
16
|
-
const EMPTY_PROPS = {};
|
|
17
|
-
const Dialog = ({
|
|
18
|
-
PopupProps = EMPTY_PROPS,
|
|
19
|
-
children,
|
|
20
|
-
className,
|
|
21
|
-
isOpen = false,
|
|
22
|
-
onClose,
|
|
23
|
-
style,
|
|
24
|
-
title,
|
|
25
|
-
hideCloseButton = false,
|
|
26
|
-
...htmlAttributes
|
|
27
|
-
}) => {
|
|
28
|
-
const targetWindow = window.useWindow();
|
|
29
|
-
styles.useComponentCssInjection({
|
|
30
|
-
testId: "vuu-dialog",
|
|
31
|
-
css: Dialog$1,
|
|
32
|
-
window: targetWindow
|
|
33
|
-
});
|
|
34
|
-
const {
|
|
35
|
-
anchorElement = AnchorBody,
|
|
36
|
-
offsetLeft = 0,
|
|
37
|
-
offsetTop = 0,
|
|
38
|
-
placement = "auto"
|
|
39
|
-
} = PopupProps;
|
|
40
|
-
const rootRef = React.useRef(null);
|
|
41
|
-
const portalRef = React.useRef(null);
|
|
42
|
-
const [themeClass, _, dataMode] = vuuUtils.useThemeAttributes();
|
|
43
|
-
const { position } = useAnchoredPosition.useAnchoredPosition({
|
|
44
|
-
anchorElement,
|
|
45
|
-
offsetLeft,
|
|
46
|
-
offsetTop,
|
|
47
|
-
placement
|
|
48
|
-
});
|
|
49
|
-
const close = React.useCallback(() => {
|
|
50
|
-
onClose?.();
|
|
51
|
-
}, [onClose]);
|
|
52
|
-
React.useLayoutEffect(() => {
|
|
53
|
-
if (rootRef.current) {
|
|
54
|
-
if (isOpen) {
|
|
55
|
-
rootRef.current.show();
|
|
56
|
-
const { left, top } = rootRef.current.getBoundingClientRect();
|
|
57
|
-
if (portalRef.current) {
|
|
58
|
-
portalRef.current.style.cssText = `left:-${left}px;position:absolute;top:-${top}px;`;
|
|
59
|
-
}
|
|
60
|
-
} else {
|
|
61
|
-
rootRef.current.close();
|
|
62
|
-
}
|
|
63
|
-
if (placement.endsWith("center")) {
|
|
64
|
-
const { width } = rootRef.current.getBoundingClientRect();
|
|
65
|
-
rootRef.current.style.marginLeft = `-${width / 2}px`;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}, [isOpen, placement]);
|
|
69
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
70
|
-
"dialog",
|
|
71
|
-
{
|
|
72
|
-
...htmlAttributes,
|
|
73
|
-
className: cx(classBase, themeClass),
|
|
74
|
-
"data-mode": dataMode,
|
|
75
|
-
onClose: close,
|
|
76
|
-
id: "vuu-dialog",
|
|
77
|
-
ref: rootRef,
|
|
78
|
-
style: { ...style, ...position },
|
|
79
|
-
children: [
|
|
80
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
81
|
-
DialogHeader.DialogHeader,
|
|
82
|
-
{
|
|
83
|
-
hideCloseButton,
|
|
84
|
-
onClose: close,
|
|
85
|
-
title
|
|
86
|
-
}
|
|
87
|
-
),
|
|
88
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `${classBase}-body`, children }),
|
|
89
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { id: "vuu-dialog-portal-root", ref: portalRef })
|
|
90
|
-
]
|
|
91
|
-
}
|
|
92
|
-
);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
exports.Dialog = Dialog;
|
|
96
|
-
//# sourceMappingURL=Dialog.js.map
|
package/cjs/dialog/Dialog.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../../src/dialog/Dialog.tsx"],"sourcesContent":["import cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useThemeAttributes } from \"@vuu-ui/vuu-utils\";\nimport { HTMLAttributes, useCallback, useLayoutEffect, useRef } from \"react\";\nimport { DialogHeader } from \"../dialog-header\";\nimport { PopupComponentProps, useAnchoredPosition } from \"../popup\";\n\nimport dialogCss from \"./Dialog.css\";\n\nconst classBase = \"vuuDialog\";\n\nconst AnchorBody = { current: document.body };\nconst EMPTY_PROPS = {};\n\nexport interface DialogProps extends HTMLAttributes<HTMLDialogElement> {\n PopupProps?: Partial<PopupComponentProps>;\n isOpen?: boolean;\n onClose?: () => void;\n hideCloseButton?: boolean;\n}\n\nexport const Dialog = ({\n PopupProps = EMPTY_PROPS,\n children,\n className,\n isOpen = false,\n onClose,\n style,\n title,\n hideCloseButton = false,\n ...htmlAttributes\n}: DialogProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-dialog\",\n css: dialogCss,\n window: targetWindow,\n });\n\n const {\n anchorElement = AnchorBody,\n offsetLeft = 0,\n offsetTop = 0,\n placement = \"auto\",\n } = PopupProps;\n\n const rootRef = useRef<HTMLDialogElement>(null);\n const portalRef = useRef<HTMLDivElement>(null);\n const [themeClass, _, dataMode] = useThemeAttributes();\n const { position } = useAnchoredPosition({\n anchorElement,\n offsetLeft,\n offsetTop,\n placement,\n });\n\n const close = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n // if (!isOpen) {\n // return null;\n // }\n\n useLayoutEffect(() => {\n if (rootRef.current) {\n if (isOpen) {\n // rootRef.current.showModal();\n rootRef.current.show();\n\n const { left, top } = rootRef.current.getBoundingClientRect();\n if (portalRef.current) {\n portalRef.current.style.cssText = `left:-${left}px;position:absolute;top:-${top}px;`;\n }\n } else {\n rootRef.current.close();\n }\n if (placement.endsWith(\"center\")) {\n const { width } = rootRef.current.getBoundingClientRect();\n rootRef.current.style.marginLeft = `-${width / 2}px`;\n }\n }\n }, [isOpen, placement]);\n\n return (\n <dialog\n {...htmlAttributes}\n className={cx(classBase, themeClass)}\n data-mode={dataMode}\n onClose={close}\n id=\"vuu-dialog\"\n ref={rootRef}\n style={{ ...style, ...position }}\n >\n <DialogHeader\n hideCloseButton={hideCloseButton}\n onClose={close}\n title={title}\n />\n <div className={`${classBase}-body`}>{children}</div>\n <div id=\"vuu-dialog-portal-root\" ref={portalRef} />\n </dialog>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","dialogCss","useRef","useThemeAttributes","useAnchoredPosition","useCallback","useLayoutEffect","jsxs","jsx","DialogHeader"],"mappings":"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"}
|
package/esm/dialog/Dialog.css.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var dialogCss = ".vuuDialog {\n background: var(--salt-container-primary-background);\n border: var(--vuuDialog-border, solid 1px #ccc);\n border-radius: 5px;\n display: var(--vuuDialog-display, flex);\n flex-direction: column;;\n padding: var(--vuuDialog-padding, 16px);\n position: relative;\n box-shadow: var(--salt-overlayable-shadow, none);\n height: var(--vuuDialog-height, fit-content);\n overflow: visible;\n width: var(--vuuDialog-width, fit-content);\n}\n\n.vuuDialog-body {\n flex: 1 1 auto;\n}\n\n";
|
|
2
|
-
|
|
3
|
-
export { dialogCss as default };
|
|
4
|
-
//# sourceMappingURL=Dialog.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/esm/dialog/Dialog.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import cx from 'clsx';
|
|
3
|
-
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
-
import { useWindow } from '@salt-ds/window';
|
|
5
|
-
import { useThemeAttributes } from '@vuu-ui/vuu-utils';
|
|
6
|
-
import { useRef, useCallback, useLayoutEffect } from 'react';
|
|
7
|
-
import { DialogHeader } from '../dialog-header/DialogHeader.js';
|
|
8
|
-
import 'react-dom';
|
|
9
|
-
import { useAnchoredPosition } from '../popup/useAnchoredPosition.js';
|
|
10
|
-
import dialogCss from './Dialog.css.js';
|
|
11
|
-
|
|
12
|
-
const classBase = "vuuDialog";
|
|
13
|
-
const AnchorBody = { current: document.body };
|
|
14
|
-
const EMPTY_PROPS = {};
|
|
15
|
-
const Dialog = ({
|
|
16
|
-
PopupProps = EMPTY_PROPS,
|
|
17
|
-
children,
|
|
18
|
-
className,
|
|
19
|
-
isOpen = false,
|
|
20
|
-
onClose,
|
|
21
|
-
style,
|
|
22
|
-
title,
|
|
23
|
-
hideCloseButton = false,
|
|
24
|
-
...htmlAttributes
|
|
25
|
-
}) => {
|
|
26
|
-
const targetWindow = useWindow();
|
|
27
|
-
useComponentCssInjection({
|
|
28
|
-
testId: "vuu-dialog",
|
|
29
|
-
css: dialogCss,
|
|
30
|
-
window: targetWindow
|
|
31
|
-
});
|
|
32
|
-
const {
|
|
33
|
-
anchorElement = AnchorBody,
|
|
34
|
-
offsetLeft = 0,
|
|
35
|
-
offsetTop = 0,
|
|
36
|
-
placement = "auto"
|
|
37
|
-
} = PopupProps;
|
|
38
|
-
const rootRef = useRef(null);
|
|
39
|
-
const portalRef = useRef(null);
|
|
40
|
-
const [themeClass, _, dataMode] = useThemeAttributes();
|
|
41
|
-
const { position } = useAnchoredPosition({
|
|
42
|
-
anchorElement,
|
|
43
|
-
offsetLeft,
|
|
44
|
-
offsetTop,
|
|
45
|
-
placement
|
|
46
|
-
});
|
|
47
|
-
const close = useCallback(() => {
|
|
48
|
-
onClose?.();
|
|
49
|
-
}, [onClose]);
|
|
50
|
-
useLayoutEffect(() => {
|
|
51
|
-
if (rootRef.current) {
|
|
52
|
-
if (isOpen) {
|
|
53
|
-
rootRef.current.show();
|
|
54
|
-
const { left, top } = rootRef.current.getBoundingClientRect();
|
|
55
|
-
if (portalRef.current) {
|
|
56
|
-
portalRef.current.style.cssText = `left:-${left}px;position:absolute;top:-${top}px;`;
|
|
57
|
-
}
|
|
58
|
-
} else {
|
|
59
|
-
rootRef.current.close();
|
|
60
|
-
}
|
|
61
|
-
if (placement.endsWith("center")) {
|
|
62
|
-
const { width } = rootRef.current.getBoundingClientRect();
|
|
63
|
-
rootRef.current.style.marginLeft = `-${width / 2}px`;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}, [isOpen, placement]);
|
|
67
|
-
return /* @__PURE__ */ jsxs(
|
|
68
|
-
"dialog",
|
|
69
|
-
{
|
|
70
|
-
...htmlAttributes,
|
|
71
|
-
className: cx(classBase, themeClass),
|
|
72
|
-
"data-mode": dataMode,
|
|
73
|
-
onClose: close,
|
|
74
|
-
id: "vuu-dialog",
|
|
75
|
-
ref: rootRef,
|
|
76
|
-
style: { ...style, ...position },
|
|
77
|
-
children: [
|
|
78
|
-
/* @__PURE__ */ jsx(
|
|
79
|
-
DialogHeader,
|
|
80
|
-
{
|
|
81
|
-
hideCloseButton,
|
|
82
|
-
onClose: close,
|
|
83
|
-
title
|
|
84
|
-
}
|
|
85
|
-
),
|
|
86
|
-
/* @__PURE__ */ jsx("div", { className: `${classBase}-body`, children }),
|
|
87
|
-
/* @__PURE__ */ jsx("div", { id: "vuu-dialog-portal-root", ref: portalRef })
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
export { Dialog };
|
|
94
|
-
//# sourceMappingURL=Dialog.js.map
|
package/esm/dialog/Dialog.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../../src/dialog/Dialog.tsx"],"sourcesContent":["import cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useThemeAttributes } from \"@vuu-ui/vuu-utils\";\nimport { HTMLAttributes, useCallback, useLayoutEffect, useRef } from \"react\";\nimport { DialogHeader } from \"../dialog-header\";\nimport { PopupComponentProps, useAnchoredPosition } from \"../popup\";\n\nimport dialogCss from \"./Dialog.css\";\n\nconst classBase = \"vuuDialog\";\n\nconst AnchorBody = { current: document.body };\nconst EMPTY_PROPS = {};\n\nexport interface DialogProps extends HTMLAttributes<HTMLDialogElement> {\n PopupProps?: Partial<PopupComponentProps>;\n isOpen?: boolean;\n onClose?: () => void;\n hideCloseButton?: boolean;\n}\n\nexport const Dialog = ({\n PopupProps = EMPTY_PROPS,\n children,\n className,\n isOpen = false,\n onClose,\n style,\n title,\n hideCloseButton = false,\n ...htmlAttributes\n}: DialogProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-dialog\",\n css: dialogCss,\n window: targetWindow,\n });\n\n const {\n anchorElement = AnchorBody,\n offsetLeft = 0,\n offsetTop = 0,\n placement = \"auto\",\n } = PopupProps;\n\n const rootRef = useRef<HTMLDialogElement>(null);\n const portalRef = useRef<HTMLDivElement>(null);\n const [themeClass, _, dataMode] = useThemeAttributes();\n const { position } = useAnchoredPosition({\n anchorElement,\n offsetLeft,\n offsetTop,\n placement,\n });\n\n const close = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n // if (!isOpen) {\n // return null;\n // }\n\n useLayoutEffect(() => {\n if (rootRef.current) {\n if (isOpen) {\n // rootRef.current.showModal();\n rootRef.current.show();\n\n const { left, top } = rootRef.current.getBoundingClientRect();\n if (portalRef.current) {\n portalRef.current.style.cssText = `left:-${left}px;position:absolute;top:-${top}px;`;\n }\n } else {\n rootRef.current.close();\n }\n if (placement.endsWith(\"center\")) {\n const { width } = rootRef.current.getBoundingClientRect();\n rootRef.current.style.marginLeft = `-${width / 2}px`;\n }\n }\n }, [isOpen, placement]);\n\n return (\n <dialog\n {...htmlAttributes}\n className={cx(classBase, themeClass)}\n data-mode={dataMode}\n onClose={close}\n id=\"vuu-dialog\"\n ref={rootRef}\n style={{ ...style, ...position }}\n >\n <DialogHeader\n hideCloseButton={hideCloseButton}\n onClose={close}\n title={title}\n />\n <div className={`${classBase}-body`}>{children}</div>\n <div id=\"vuu-dialog-portal-root\" ref={portalRef} />\n </dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAUA,MAAM,SAAY,GAAA,WAAA,CAAA;AAElB,MAAM,UAAa,GAAA,EAAE,OAAS,EAAA,QAAA,CAAS,IAAK,EAAA,CAAA;AAC5C,MAAM,cAAc,EAAC,CAAA;AASd,MAAM,SAAS,CAAC;AAAA,EACrB,UAAa,GAAA,WAAA;AAAA,EACb,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAS,GAAA,KAAA;AAAA,EACT,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,eAAkB,GAAA,KAAA;AAAA,EAClB,GAAG,cAAA;AACL,CAAmB,KAAA;AACjB,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,YAAA;AAAA,IACR,GAAK,EAAA,SAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA;AAAA,IACJ,aAAgB,GAAA,UAAA;AAAA,IAChB,UAAa,GAAA,CAAA;AAAA,IACb,SAAY,GAAA,CAAA;AAAA,IACZ,SAAY,GAAA,MAAA;AAAA,GACV,GAAA,UAAA,CAAA;AAEJ,EAAM,MAAA,OAAA,GAAU,OAA0B,IAAI,CAAA,CAAA;AAC9C,EAAM,MAAA,SAAA,GAAY,OAAuB,IAAI,CAAA,CAAA;AAC7C,EAAA,MAAM,CAAC,UAAA,EAAY,CAAG,EAAA,QAAQ,IAAI,kBAAmB,EAAA,CAAA;AACrD,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,mBAAoB,CAAA;AAAA,IACvC,aAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAU,OAAA,IAAA,CAAA;AAAA,GACZ,EAAG,CAAC,OAAO,CAAC,CAAA,CAAA;AAMZ,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,QAAQ,OAAS,EAAA;AACnB,MAAA,IAAI,MAAQ,EAAA;AAEV,QAAA,OAAA,CAAQ,QAAQ,IAAK,EAAA,CAAA;AAErB,QAAA,MAAM,EAAE,IAAM,EAAA,GAAA,EAAQ,GAAA,OAAA,CAAQ,QAAQ,qBAAsB,EAAA,CAAA;AAC5D,QAAA,IAAI,UAAU,OAAS,EAAA;AACrB,UAAA,SAAA,CAAU,QAAQ,KAAM,CAAA,OAAA,GAAU,CAAS,MAAA,EAAA,IAAI,6BAA6B,GAAG,CAAA,GAAA,CAAA,CAAA;AAAA,SACjF;AAAA,OACK,MAAA;AACL,QAAA,OAAA,CAAQ,QAAQ,KAAM,EAAA,CAAA;AAAA,OACxB;AACA,MAAI,IAAA,SAAA,CAAU,QAAS,CAAA,QAAQ,CAAG,EAAA;AAChC,QAAA,MAAM,EAAE,KAAA,EAAU,GAAA,OAAA,CAAQ,QAAQ,qBAAsB,EAAA,CAAA;AACxD,QAAA,OAAA,CAAQ,OAAQ,CAAA,KAAA,CAAM,UAAa,GAAA,CAAA,CAAA,EAAI,QAAQ,CAAC,CAAA,EAAA,CAAA,CAAA;AAAA,OAClD;AAAA,KACF;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,SAAS,CAAC,CAAA,CAAA;AAEtB,EACE,uBAAA,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,UAAU,CAAA;AAAA,MACnC,WAAW,EAAA,QAAA;AAAA,MACX,OAAS,EAAA,KAAA;AAAA,MACT,EAAG,EAAA,YAAA;AAAA,MACH,GAAK,EAAA,OAAA;AAAA,MACL,KAAO,EAAA,EAAE,GAAG,KAAA,EAAO,GAAG,QAAS,EAAA;AAAA,MAE/B,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,eAAA;AAAA,YACA,OAAS,EAAA,KAAA;AAAA,YACT,KAAA;AAAA,WAAA;AAAA,SACF;AAAA,4BACC,KAAI,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,SAAU,QAAS,EAAA,CAAA;AAAA,wBAC9C,GAAA,CAAA,KAAA,EAAA,EAAI,EAAG,EAAA,wBAAA,EAAyB,KAAK,SAAW,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACnD,CAAA;AAEJ;;;;"}
|
package/types/dialog/Dialog.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { HTMLAttributes } from "react";
|
|
2
|
-
import { PopupComponentProps } from "../popup";
|
|
3
|
-
export interface DialogProps extends HTMLAttributes<HTMLDialogElement> {
|
|
4
|
-
PopupProps?: Partial<PopupComponentProps>;
|
|
5
|
-
isOpen?: boolean;
|
|
6
|
-
onClose?: () => void;
|
|
7
|
-
hideCloseButton?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare const Dialog: ({ PopupProps, children, className, isOpen, onClose, style, title, hideCloseButton, ...htmlAttributes }: DialogProps) => JSX.Element;
|