@vuu-ui/vuu-popups 0.13.8 → 0.13.10

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.
Files changed (93) hide show
  1. package/cjs/dialog/useDialog.js +96 -0
  2. package/cjs/dialog/useDialog.js.map +1 -0
  3. package/cjs/dialog-header/DialogHeader.css.js +6 -0
  4. package/cjs/dialog-header/DialogHeader.css.js.map +1 -0
  5. package/cjs/dialog-header/DialogHeader.js +38 -0
  6. package/cjs/dialog-header/DialogHeader.js.map +1 -0
  7. package/cjs/index.js +28 -941
  8. package/cjs/index.js.map +1 -1
  9. package/cjs/notifications/NotificationsCenter.js +43 -0
  10. package/cjs/notifications/NotificationsCenter.js.map +1 -0
  11. package/cjs/notifications/NotificationsProvider.js +46 -0
  12. package/cjs/notifications/NotificationsProvider.js.map +1 -0
  13. package/cjs/notifications/ToastNotification.css.js +6 -0
  14. package/cjs/notifications/ToastNotification.css.js.map +1 -0
  15. package/cjs/notifications/ToastNotification.js +66 -0
  16. package/cjs/notifications/ToastNotification.js.map +1 -0
  17. package/cjs/popup/Popup.css.js +6 -0
  18. package/cjs/popup/Popup.css.js.map +1 -0
  19. package/cjs/popup/Popup.js +38 -0
  20. package/cjs/popup/Popup.js.map +1 -0
  21. package/cjs/popup/getPositionRelativeToAnchor.js +43 -0
  22. package/cjs/popup/getPositionRelativeToAnchor.js.map +1 -0
  23. package/cjs/popup/useAnchoredPosition.js +58 -0
  24. package/cjs/popup/useAnchoredPosition.js.map +1 -0
  25. package/cjs/popup-menu/PopupMenu.css.js +6 -0
  26. package/cjs/popup-menu/PopupMenu.css.js.map +1 -0
  27. package/cjs/popup-menu/PopupMenu.js +95 -0
  28. package/cjs/popup-menu/PopupMenu.js.map +1 -0
  29. package/cjs/popup-menu/usePopupMenu.js +89 -0
  30. package/cjs/popup-menu/usePopupMenu.js.map +1 -0
  31. package/cjs/portal/Portal.css.js +6 -0
  32. package/cjs/portal/Portal.css.js.map +1 -0
  33. package/cjs/portal/Portal.js +73 -0
  34. package/cjs/portal/Portal.js.map +1 -0
  35. package/cjs/prompt/Prompt.css.js +6 -0
  36. package/cjs/prompt/Prompt.css.js.map +1 -0
  37. package/cjs/prompt/Prompt.js +83 -0
  38. package/cjs/prompt/Prompt.js.map +1 -0
  39. package/cjs/tooltip/Tooltip.css.js +6 -0
  40. package/cjs/tooltip/Tooltip.css.js.map +1 -0
  41. package/cjs/tooltip/Tooltip.js +56 -0
  42. package/cjs/tooltip/Tooltip.js.map +1 -0
  43. package/cjs/tooltip/useTooltip.js +106 -0
  44. package/cjs/tooltip/useTooltip.js.map +1 -0
  45. package/cjs/tooltip/useTooltipAnchoredPosition.js +117 -0
  46. package/cjs/tooltip/useTooltipAnchoredPosition.js.map +1 -0
  47. package/esm/dialog/useDialog.js +92 -0
  48. package/esm/dialog/useDialog.js.map +1 -0
  49. package/esm/dialog-header/DialogHeader.css.js +4 -0
  50. package/esm/dialog-header/DialogHeader.css.js.map +1 -0
  51. package/esm/dialog-header/DialogHeader.js +36 -0
  52. package/esm/dialog-header/DialogHeader.js.map +1 -0
  53. package/esm/index.js +11 -928
  54. package/esm/index.js.map +1 -1
  55. package/esm/notifications/NotificationsCenter.js +41 -0
  56. package/esm/notifications/NotificationsCenter.js.map +1 -0
  57. package/esm/notifications/NotificationsProvider.js +43 -0
  58. package/esm/notifications/NotificationsProvider.js.map +1 -0
  59. package/esm/notifications/ToastNotification.css.js +4 -0
  60. package/esm/notifications/ToastNotification.css.js.map +1 -0
  61. package/esm/notifications/ToastNotification.js +64 -0
  62. package/esm/notifications/ToastNotification.js.map +1 -0
  63. package/esm/popup/Popup.css.js +4 -0
  64. package/esm/popup/Popup.css.js.map +1 -0
  65. package/esm/popup/Popup.js +36 -0
  66. package/esm/popup/Popup.js.map +1 -0
  67. package/esm/popup/getPositionRelativeToAnchor.js +41 -0
  68. package/esm/popup/getPositionRelativeToAnchor.js.map +1 -0
  69. package/esm/popup/useAnchoredPosition.js +56 -0
  70. package/esm/popup/useAnchoredPosition.js.map +1 -0
  71. package/esm/popup-menu/PopupMenu.css.js +4 -0
  72. package/esm/popup-menu/PopupMenu.css.js.map +1 -0
  73. package/esm/popup-menu/PopupMenu.js +93 -0
  74. package/esm/popup-menu/PopupMenu.js.map +1 -0
  75. package/esm/popup-menu/usePopupMenu.js +87 -0
  76. package/esm/popup-menu/usePopupMenu.js.map +1 -0
  77. package/esm/portal/Portal.css.js +4 -0
  78. package/esm/portal/Portal.css.js.map +1 -0
  79. package/esm/portal/Portal.js +71 -0
  80. package/esm/portal/Portal.js.map +1 -0
  81. package/esm/prompt/Prompt.css.js +4 -0
  82. package/esm/prompt/Prompt.css.js.map +1 -0
  83. package/esm/prompt/Prompt.js +81 -0
  84. package/esm/prompt/Prompt.js.map +1 -0
  85. package/esm/tooltip/Tooltip.css.js +4 -0
  86. package/esm/tooltip/Tooltip.css.js.map +1 -0
  87. package/esm/tooltip/Tooltip.js +54 -0
  88. package/esm/tooltip/Tooltip.js.map +1 -0
  89. package/esm/tooltip/useTooltip.js +104 -0
  90. package/esm/tooltip/useTooltip.js.map +1 -0
  91. package/esm/tooltip/useTooltipAnchoredPosition.js +115 -0
  92. package/esm/tooltip/useTooltipAnchoredPosition.js.map +1 -0
  93. package/package.json +6 -6
@@ -0,0 +1,96 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var React = require('react');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
+ const useDialog = () => {
11
+ const [dialogState, setDialogState] = React.useState();
12
+ const closeDialog = React.useCallback(() => {
13
+ setDialogState(void 0);
14
+ }, []);
15
+ const handleOpenChange = React.useCallback(
16
+ (open) => {
17
+ if (open !== true) {
18
+ closeDialog();
19
+ }
20
+ },
21
+ [closeDialog]
22
+ );
23
+ const dialog = dialogState ? /* @__PURE__ */ jsxRuntime.jsxs(core.Dialog, { open: true, onOpenChange: handleOpenChange, children: [
24
+ /* @__PURE__ */ jsxRuntime.jsx(core.DialogHeader, { header: dialogState.title }),
25
+ /* @__PURE__ */ jsxRuntime.jsx(core.DialogContent, { children: dialogState.content }),
26
+ dialogState.hideCloseButton !== true ? /* @__PURE__ */ jsxRuntime.jsx(
27
+ core.DialogCloseButton,
28
+ {
29
+ "data-embedded": true,
30
+ "data-icon": "close",
31
+ onClick: closeDialog
32
+ }
33
+ ) : null,
34
+ dialogState.actions ? /* @__PURE__ */ jsxRuntime.jsx(core.DialogActions, { children: dialogState.actions }) : null
35
+ ] }) : null;
36
+ return {
37
+ dialog,
38
+ setDialogState
39
+ };
40
+ };
41
+ const defaultShowDialog = () => {
42
+ console.warn("No DialogProvider in place");
43
+ };
44
+ const defaultCloseDialog = () => {
45
+ console.warn("No DialogProvider in place");
46
+ };
47
+ class DialogContextObject {
48
+ constructor() {
49
+ __publicField(this, "showDialog", defaultShowDialog);
50
+ __publicField(this, "closeDialog", defaultCloseDialog);
51
+ }
52
+ setDialogDispatchers(showDialog, closeDialog) {
53
+ this.showDialog = showDialog;
54
+ this.closeDialog = closeDialog;
55
+ }
56
+ }
57
+ const DialogContext = React.createContext(
58
+ new DialogContextObject()
59
+ );
60
+ const DialogHost = ({ context }) => {
61
+ const { dialog, setDialogState } = useDialog();
62
+ const showDialog = React.useCallback(
63
+ (dialogContent, title, actionButtons, hideCloseButton) => {
64
+ setDialogState({
65
+ actions: actionButtons,
66
+ content: dialogContent,
67
+ title,
68
+ hideCloseButton
69
+ });
70
+ },
71
+ [setDialogState]
72
+ );
73
+ const closeDialog = React.useCallback(() => {
74
+ setDialogState(void 0);
75
+ }, [setDialogState]);
76
+ React.useMemo(() => {
77
+ context.setDialogDispatchers(showDialog, closeDialog);
78
+ }, [closeDialog, context, showDialog]);
79
+ return dialog;
80
+ };
81
+ const DialogProvider = ({ children }) => {
82
+ const context = React.useContext(DialogContext);
83
+ return /* @__PURE__ */ jsxRuntime.jsxs(DialogContext.Provider, { value: context, children: [
84
+ /* @__PURE__ */ jsxRuntime.jsx(DialogHost, { context }),
85
+ children
86
+ ] });
87
+ };
88
+ const useDialogContext = () => {
89
+ const { closeDialog, showDialog } = React.useContext(DialogContext);
90
+ return { showDialog, closeDialog };
91
+ };
92
+
93
+ exports.DialogProvider = DialogProvider;
94
+ exports.useDialog = useDialog;
95
+ exports.useDialogContext = useDialogContext;
96
+ //# sourceMappingURL=useDialog.js.map
@@ -0,0 +1 @@
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 useMemo,\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 hideCloseButton?: boolean\n) => void;\n\nexport interface DialogContextProps {\n showDialog: ShowDialog;\n closeDialog: () => void;\n setDialogDispatchers: (\n showDialog: ShowDialog,\n closeDialog: () => void\n ) => 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\n data-embedded\n data-icon=\"close\"\n onClick={closeDialog}\n />\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: ShowDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\nconst defaultCloseDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\n\nclass DialogContextObject implements DialogContextProps {\n showDialog = defaultShowDialog;\n closeDialog = defaultCloseDialog;\n setDialogDispatchers(showDialog: ShowDialog, closeDialog: () => void) {\n this.showDialog = showDialog;\n this.closeDialog = closeDialog;\n }\n}\n\nconst DialogContext = createContext<DialogContextProps>(\n new DialogContextObject()\n);\n\nconst DialogHost = ({ context }: { context: DialogContextProps }) => {\n const { dialog, setDialogState } = useDialog();\n const showDialog: ShowDialog = useCallback(\n (dialogContent, title, actionButtons, hideCloseButton) => {\n setDialogState({\n actions: actionButtons,\n content: dialogContent,\n title,\n hideCloseButton,\n });\n },\n [setDialogState]\n );\n const closeDialog = useCallback(() => {\n setDialogState(undefined);\n }, [setDialogState]);\n\n useMemo(() => {\n context.setDialogDispatchers(showDialog, closeDialog);\n }, [closeDialog, context, showDialog]);\n return dialog;\n};\n\nexport const DialogProvider = ({ children }: { children: ReactNode }) => {\n const context = useContext(DialogContext);\n return (\n <DialogContext.Provider value={context}>\n <DialogHost context={context} />\n {children}\n </DialogContext.Provider>\n );\n};\n\nexport const useDialogContext = () => {\n const { closeDialog, showDialog } = useContext(DialogContext);\n return { showDialog, closeDialog };\n};\n"],"names":["useState","useCallback","jsxs","Dialog","jsx","DialogHeader","DialogContent","DialogCloseButton","DialogActions","createContext","useMemo","useContext"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var dialogHeaderCss = ".vuuDialogHeader {\n --saltButton-height: 28px;\n --saltButton-width: 28px;\n --saltToolbar-background: transparent;\n --saltToolbar-height: calc(var(--salt-size-base) + 5px);\n --vuuToolbarProxy-height: 22px;\n --salt-text-fontFamily: Nunito Sans A-Variant, sans-serif;\n\n align-items: center;\n display: flex;\n color: var(--light-text-primary, #15171B);\n flex: 0 0 var(--vuuDialogHeader-height, var()--salt-size-base);\n font-feature-settings: 'ss02' on, 'ss01' on, 'salt' on, 'liga' off;\n font-size: 16px;\n font-weight: 600;\n justify-content: space-between;\n}\n \n.vuuDialogHeader > .Responsive-inner {\n align-items: center;\n}\n \n.vuuDialogHeader > .Responsive-inner > :last-child{\n right: 2px;\n}\n \n ";
4
+
5
+ module.exports = dialogHeaderCss;
6
+ //# sourceMappingURL=DialogHeader.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogHeader.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var DialogHeader$1 = require('./DialogHeader.css.js');
8
+
9
+ const classBase = "vuuDialogHeader";
10
+ const DialogHeader = ({
11
+ hideCloseButton = false,
12
+ title,
13
+ onClose,
14
+ ...htmlAttributes
15
+ }) => {
16
+ const targetWindow = window.useWindow();
17
+ styles.useComponentCssInjection({
18
+ testId: "vuu-dialoh-header",
19
+ css: DialogHeader$1,
20
+ window: targetWindow
21
+ });
22
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...htmlAttributes, className: classBase, children: [
23
+ /* @__PURE__ */ jsxRuntime.jsx(core.Text, { className: "dialogHeader", children: title }),
24
+ !hideCloseButton && /* @__PURE__ */ jsxRuntime.jsx(
25
+ core.Button,
26
+ {
27
+ onClick: onClose,
28
+ "data-align": "end",
29
+ "data-icon": "close",
30
+ variant: "secondary"
31
+ },
32
+ "close"
33
+ )
34
+ ] });
35
+ };
36
+
37
+ exports.DialogHeader = DialogHeader;
38
+ //# sourceMappingURL=DialogHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogHeader.js","sources":["../../src/dialog-header/DialogHeader.tsx"],"sourcesContent":["import { Button, Text } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes } from \"react\";\n\nimport dialogHeaderCss from \"./DialogHeader.css\";\n\nconst classBase = \"vuuDialogHeader\";\n\nexport interface DialogHeaderProps extends HTMLAttributes<HTMLDivElement> {\n hideCloseButton?: boolean;\n onClose: () => void;\n}\n\nexport const DialogHeader = ({\n hideCloseButton = false,\n title,\n onClose,\n ...htmlAttributes\n}: DialogHeaderProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-dialoh-header\",\n css: dialogHeaderCss,\n window: targetWindow,\n });\n\n return (\n <div {...htmlAttributes} className={classBase}>\n <Text className=\"dialogHeader\">{title}</Text>\n {!hideCloseButton && (\n <Button\n key=\"close\"\n onClick={onClose}\n data-align=\"end\"\n data-icon=\"close\"\n variant=\"secondary\"\n />\n )}\n </div>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","dialogHeaderCss","jsxs","jsx","Text","Button"],"mappings":";;;;;;;;AAOA,MAAM,SAAY,GAAA,iBAAA;AAOX,MAAM,eAAe,CAAC;AAAA,EAC3B,eAAkB,GAAA,KAAA;AAAA,EAClB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAyB,KAAA;AACvB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAC,cAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,uBACGC,eAAA,CAAA,KAAA,EAAA,EAAK,GAAG,cAAA,EAAgB,WAAW,SAClC,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAAC,SAAA,EAAA,EAAK,SAAU,EAAA,cAAA,EAAgB,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,IACrC,CAAC,eACA,oBAAAD,cAAA;AAAA,MAACE,WAAA;AAAA,MAAA;AAAA,QAEC,OAAS,EAAA,OAAA;AAAA,QACT,YAAW,EAAA,KAAA;AAAA,QACX,WAAU,EAAA,OAAA;AAAA,QACV,OAAQ,EAAA;AAAA,OAAA;AAAA,MAJJ;AAAA;AAKN,GAEJ,EAAA,CAAA;AAEJ;;;;"}