@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.
@@ -17,10 +17,11 @@ const useDialog = () => {
17
17
  },
18
18
  [closeDialog]
19
19
  );
20
- const dialog = dialogState ? /* @__PURE__ */ jsxRuntime.jsxs(core.Dialog, { className: "vuuDialog", open: true, onOpenChange: handleOpenChange, children: [
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
- return /* @__PURE__ */ jsxRuntime.jsxs(DialogContext.Provider, { value: { showDialog }, children: [
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 useShowDialog = () => {
58
+ const useDialogContext = () => {
50
59
  const { showDialog } = React.useContext(DialogContext);
51
- return showDialog;
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.useShowDialog = useShowDialog;
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 interface DialogContextProps {\n showDialog: (dialogContent: ReactElement, title: string) => 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 className=\"vuuDialog\" 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 </Dialog>\n ) : null;\n\n return {\n dialog,\n setDialogState,\n };\n};\n\nconst defaultShowDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\n\nconst DialogContext = createContext<DialogContextProps>({\n showDialog: defaultShowDialog,\n});\n\nexport const DialogProvider = ({ children }: { children: ReactNode }) => {\n const { dialog, setDialogState } = useDialog();\n const showDialog = (dialogContent: ReactElement, title: string) => {\n setDialogState({\n content: dialogContent,\n title,\n });\n };\n return (\n <DialogContext.Provider value={{ showDialog }}>\n {children}\n {dialog}\n </DialogContext.Provider>\n );\n};\n\nexport const useShowDialog = () => {\n const { showDialog } = useContext(DialogContext);\n return showDialog;\n};\n"],"names":["useState","useCallback","jsxs","Dialog","jsx","DialogHeader","DialogContent","DialogCloseButton","createContext","useContext"],"mappings":";;;;;;AA2BO,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,EAAM,MAAA,MAAA,GAAS,8BACZC,eAAA,CAAAC,WAAA,EAAA,EAAO,WAAU,WAAY,EAAA,IAAA,EAAM,IAAM,EAAA,YAAA,EAAc,gBACtD,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,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;AAEA,MAAM,gBAAgBC,mBAAkC,CAAA;AAAA,EACtD,UAAY,EAAA,iBAAA;AACd,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,EAAM,MAAA,UAAA,GAAa,CAAC,aAAA,EAA6B,KAAkB,KAAA;AACjE,IAAe,cAAA,CAAA;AAAA,MACb,OAAS,EAAA,aAAA;AAAA,MACT,KAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AACA,EAAA,uCACG,aAAc,CAAA,QAAA,EAAd,EAAuB,KAAO,EAAA,EAAE,YAC9B,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,MAAA;AAAA,GACH,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,EAAE,UAAA,EAAe,GAAAC,gBAAA,CAAW,aAAa,CAAA,CAAA;AAC/C,EAAO,OAAA,UAAA,CAAA;AACT;;;;;;"}
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.useShowDialog = useDialog.useShowDialog;
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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, { className: "vuuDialog", open: true, onOpenChange: handleOpenChange, children: [
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
- return /* @__PURE__ */ jsxs(DialogContext.Provider, { value: { showDialog }, children: [
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 useShowDialog = () => {
56
+ const useDialogContext = () => {
48
57
  const { showDialog } = useContext(DialogContext);
49
- return showDialog;
58
+ const { closeDialog } = useContext(DialogContext);
59
+ return { showDialog, closeDialog };
50
60
  };
51
61
 
52
- export { DialogProvider, useDialog, useShowDialog };
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 interface DialogContextProps {\n showDialog: (dialogContent: ReactElement, title: string) => 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 className=\"vuuDialog\" 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 </Dialog>\n ) : null;\n\n return {\n dialog,\n setDialogState,\n };\n};\n\nconst defaultShowDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\n\nconst DialogContext = createContext<DialogContextProps>({\n showDialog: defaultShowDialog,\n});\n\nexport const DialogProvider = ({ children }: { children: ReactNode }) => {\n const { dialog, setDialogState } = useDialog();\n const showDialog = (dialogContent: ReactElement, title: string) => {\n setDialogState({\n content: dialogContent,\n title,\n });\n };\n return (\n <DialogContext.Provider value={{ showDialog }}>\n {children}\n {dialog}\n </DialogContext.Provider>\n );\n};\n\nexport const useShowDialog = () => {\n const { showDialog } = useContext(DialogContext);\n return showDialog;\n};\n"],"names":[],"mappings":";;;;AA2BO,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,EAAM,MAAA,MAAA,GAAS,8BACZ,IAAA,CAAA,MAAA,EAAA,EAAO,WAAU,WAAY,EAAA,IAAA,EAAM,IAAM,EAAA,YAAA,EAAc,gBACtD,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,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;AAEA,MAAM,gBAAgB,aAAkC,CAAA;AAAA,EACtD,UAAY,EAAA,iBAAA;AACd,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,EAAM,MAAA,UAAA,GAAa,CAAC,aAAA,EAA6B,KAAkB,KAAA;AACjE,IAAe,cAAA,CAAA;AAAA,MACb,OAAS,EAAA,aAAA;AAAA,MACT,KAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AACA,EAAA,4BACG,aAAc,CAAA,QAAA,EAAd,EAAuB,KAAO,EAAA,EAAE,YAC9B,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,MAAA;AAAA,GACH,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,EAAE,UAAA,EAAe,GAAA,UAAA,CAAW,aAAa,CAAA,CAAA;AAC/C,EAAO,OAAA,UAAA,CAAA;AACT;;;;"}
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 { Dialog } from './dialog/Dialog.js';
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.60",
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.60",
11
- "@vuu-ui/vuu-layout": "0.8.60",
12
- "@vuu-ui/vuu-utils": "0.8.60",
13
- "@vuu-ui/vuu-ui-controls": "0.8.60"
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",
@@ -1,2 +1 @@
1
- export * from "./Dialog";
2
1
  export * from "./useDialog";
@@ -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: (dialogContent: ReactElement, title: string) => void;
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 useShowDialog: () => (dialogContent: ReactElement, title: string) => void;
21
+ export declare const useDialogContext: () => {
22
+ showDialog: ShowDialog;
23
+ closeDialog: () => void;
24
+ };
@@ -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":";;;;;;"}
@@ -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
@@ -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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"}
@@ -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":";;;;"}
@@ -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
@@ -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;;;;"}
@@ -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;