@vuu-ui/vuu-ui-controls 0.13.31 → 0.13.34
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/index.js +3 -0
- package/cjs/index.js.map +1 -1
- package/cjs/modal-provider/ModalProvider.js +143 -0
- package/cjs/modal-provider/ModalProvider.js.map +1 -0
- package/cjs/prompt/Prompt.css.js +1 -1
- package/cjs/prompt/Prompt.js +2 -0
- package/cjs/prompt/Prompt.js.map +1 -1
- package/cjs/time-input/MaskedInput.js +139 -196
- package/cjs/time-input/MaskedInput.js.map +1 -1
- package/cjs/time-input/TimeInput.css.js +1 -1
- package/cjs/time-input/TimeInput.js +5 -3
- package/cjs/time-input/TimeInput.js.map +1 -1
- package/cjs/time-input/useTimeInput.js +60 -79
- package/cjs/time-input/useTimeInput.js.map +1 -1
- package/cjs/vuu-time-picker/VuuTimePicker.js +6 -10
- package/cjs/vuu-time-picker/VuuTimePicker.js.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/modal-provider/ModalProvider.js +140 -0
- package/esm/modal-provider/ModalProvider.js.map +1 -0
- package/esm/prompt/Prompt.css.js +1 -1
- package/esm/prompt/Prompt.js +2 -0
- package/esm/prompt/Prompt.js.map +1 -1
- package/esm/time-input/MaskedInput.js +140 -197
- package/esm/time-input/MaskedInput.js.map +1 -1
- package/esm/time-input/TimeInput.css.js +1 -1
- package/esm/time-input/TimeInput.js +5 -3
- package/esm/time-input/TimeInput.js.map +1 -1
- package/esm/time-input/useTimeInput.js +61 -80
- package/esm/time-input/useTimeInput.js.map +1 -1
- package/esm/vuu-time-picker/VuuTimePicker.js +6 -10
- package/esm/vuu-time-picker/VuuTimePicker.js.map +1 -1
- package/package.json +10 -10
- package/types/index.d.ts +1 -0
- package/types/modal-provider/ModalProvider.d.ts +13 -0
- package/types/prompt/Prompt.d.ts +6 -2
- package/types/time-input/MaskedInput.d.ts +22 -14
- package/types/time-input/useTimeInput.d.ts +8 -11
- package/types/vuu-time-picker/VuuTimePicker.d.ts +4 -4
package/cjs/index.js
CHANGED
|
@@ -28,6 +28,7 @@ var ToggleIconButton = require('./icon-button/ToggleIconButton.js');
|
|
|
28
28
|
var TablePicker = require('./instrument-picker/TablePicker.js');
|
|
29
29
|
var MeasuredContainer = require('./measured-container/MeasuredContainer.js');
|
|
30
30
|
var useMeasuredContainer = require('./measured-container/useMeasuredContainer.js');
|
|
31
|
+
var ModalProvider = require('./modal-provider/ModalProvider.js');
|
|
31
32
|
var OverflowContainer = require('./overflow-container/OverflowContainer.js');
|
|
32
33
|
var overflowUtils = require('./overflow-container/overflow-utils.js');
|
|
33
34
|
var PriceTicker = require('./price-ticker/PriceTicker.js');
|
|
@@ -120,6 +121,8 @@ exports.TablePicker = TablePicker.TablePicker;
|
|
|
120
121
|
exports.MeasuredContainer = MeasuredContainer.MeasuredContainer;
|
|
121
122
|
exports.reduceSizeHeight = useMeasuredContainer.reduceSizeHeight;
|
|
122
123
|
exports.useMeasuredContainer = useMeasuredContainer.useMeasuredContainer;
|
|
124
|
+
exports.ModalProvider = ModalProvider.ModalProvider;
|
|
125
|
+
exports.useModal = ModalProvider.useModal;
|
|
123
126
|
exports.OverflowContainer = OverflowContainer.OverflowContainer;
|
|
124
127
|
exports.NO_WRAPPED_ITEMS = overflowUtils.NO_WRAPPED_ITEMS;
|
|
125
128
|
exports.applyOverflowClassToWrappedItems = overflowUtils.applyOverflowClassToWrappedItems;
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var Prompt = require('../prompt/Prompt.js');
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
11
|
+
const useDialogHost = () => {
|
|
12
|
+
const [dialogState, setDialogState] = React.useState();
|
|
13
|
+
const [promptState, setPromptState] = React.useState();
|
|
14
|
+
const closePrompt = React.useCallback(() => {
|
|
15
|
+
setPromptState(void 0);
|
|
16
|
+
}, []);
|
|
17
|
+
const closeDialog = React.useCallback(() => {
|
|
18
|
+
setDialogState(void 0);
|
|
19
|
+
}, []);
|
|
20
|
+
const handleOpenChange = React.useCallback(
|
|
21
|
+
(open) => {
|
|
22
|
+
if (open !== true) {
|
|
23
|
+
closeDialog();
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
[closeDialog]
|
|
27
|
+
);
|
|
28
|
+
const dialog = dialogState ? /* @__PURE__ */ jsxRuntime.jsxs(core.Dialog, { open: true, onOpenChange: handleOpenChange, children: [
|
|
29
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.DialogHeader, { header: dialogState.title }),
|
|
30
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.DialogContent, { children: dialogState.content }),
|
|
31
|
+
dialogState.hideCloseButton !== true ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
32
|
+
core.DialogCloseButton,
|
|
33
|
+
{
|
|
34
|
+
"data-embedded": true,
|
|
35
|
+
"data-icon": "close",
|
|
36
|
+
onClick: closeDialog
|
|
37
|
+
}
|
|
38
|
+
) : null,
|
|
39
|
+
dialogState.actions ? /* @__PURE__ */ jsxRuntime.jsx(core.DialogActions, { children: dialogState.actions }) : null
|
|
40
|
+
] }) : null;
|
|
41
|
+
const handleOpenChangePrompt = React.useCallback(
|
|
42
|
+
(open) => {
|
|
43
|
+
if (open !== true) {
|
|
44
|
+
closePrompt();
|
|
45
|
+
}
|
|
46
|
+
promptState?.promptProps.onOpenChange?.(open);
|
|
47
|
+
},
|
|
48
|
+
[closePrompt, promptState]
|
|
49
|
+
);
|
|
50
|
+
const prompt = promptState ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
51
|
+
Prompt.Prompt,
|
|
52
|
+
{
|
|
53
|
+
...promptState.promptProps,
|
|
54
|
+
onClose: closePrompt,
|
|
55
|
+
onOpenChange: handleOpenChangePrompt,
|
|
56
|
+
open: true,
|
|
57
|
+
children: promptState.content
|
|
58
|
+
}
|
|
59
|
+
) : null;
|
|
60
|
+
return {
|
|
61
|
+
dialog,
|
|
62
|
+
prompt,
|
|
63
|
+
setDialogState,
|
|
64
|
+
setPromptState
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
const defaultShowDialog = () => {
|
|
68
|
+
console.warn("No DialogProvider in place");
|
|
69
|
+
};
|
|
70
|
+
const defaultCloseDialog = () => {
|
|
71
|
+
console.warn("No DialogProvider in place");
|
|
72
|
+
};
|
|
73
|
+
const defaultShowPrompt = () => {
|
|
74
|
+
console.warn("No DialogProvider in place");
|
|
75
|
+
};
|
|
76
|
+
const defaultClosePrompt = () => {
|
|
77
|
+
console.warn("No DialogProvider in place");
|
|
78
|
+
};
|
|
79
|
+
class DialogContextObject {
|
|
80
|
+
constructor() {
|
|
81
|
+
__publicField(this, "showDialog", defaultShowDialog);
|
|
82
|
+
__publicField(this, "closeDialog", defaultCloseDialog);
|
|
83
|
+
__publicField(this, "showPrompt", defaultShowPrompt);
|
|
84
|
+
__publicField(this, "closePrompt", defaultClosePrompt);
|
|
85
|
+
__publicField(this, "setDispatchers", (showDialog, closeDialog, showPrompt, closePrompt) => {
|
|
86
|
+
this.showDialog = showDialog;
|
|
87
|
+
this.closeDialog = closeDialog;
|
|
88
|
+
this.showPrompt = showPrompt;
|
|
89
|
+
this.closePrompt = closePrompt;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const DialogContext = React.createContext(
|
|
94
|
+
new DialogContextObject()
|
|
95
|
+
);
|
|
96
|
+
const DialogHost = ({ context }) => {
|
|
97
|
+
const { dialog, setDialogState, prompt, setPromptState } = useDialogHost();
|
|
98
|
+
const showDialog = React.useCallback(
|
|
99
|
+
(dialogContent, title, actionButtons, hideCloseButton) => {
|
|
100
|
+
setDialogState({
|
|
101
|
+
actions: actionButtons,
|
|
102
|
+
content: dialogContent,
|
|
103
|
+
title,
|
|
104
|
+
hideCloseButton
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
[setDialogState]
|
|
108
|
+
);
|
|
109
|
+
const closeDialog = React.useCallback(() => {
|
|
110
|
+
setDialogState(void 0);
|
|
111
|
+
}, [setDialogState]);
|
|
112
|
+
const showPrompt = React.useCallback(
|
|
113
|
+
(content, promptProps) => {
|
|
114
|
+
setPromptState({
|
|
115
|
+
content,
|
|
116
|
+
promptProps
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
[setPromptState]
|
|
120
|
+
);
|
|
121
|
+
const closePrompt = React.useCallback(() => {
|
|
122
|
+
setPromptState(void 0);
|
|
123
|
+
}, [setPromptState]);
|
|
124
|
+
React.useMemo(() => {
|
|
125
|
+
context.setDispatchers(showDialog, closeDialog, showPrompt, closePrompt);
|
|
126
|
+
}, [closeDialog, closePrompt, context, showDialog, showPrompt]);
|
|
127
|
+
return dialog ?? prompt;
|
|
128
|
+
};
|
|
129
|
+
const ModalProvider = ({ children }) => {
|
|
130
|
+
const context = React.useContext(DialogContext);
|
|
131
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(DialogContext.Provider, { value: context, children: [
|
|
132
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogHost, { context }),
|
|
133
|
+
children
|
|
134
|
+
] });
|
|
135
|
+
};
|
|
136
|
+
const useModal = () => {
|
|
137
|
+
const { closeDialog, closePrompt, showDialog, showPrompt } = React.useContext(DialogContext);
|
|
138
|
+
return { showDialog, closeDialog, showPrompt, closePrompt };
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
exports.ModalProvider = ModalProvider;
|
|
142
|
+
exports.useModal = useModal;
|
|
143
|
+
//# sourceMappingURL=ModalProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalProvider.js","sources":["../../../../packages/vuu-ui-controls/src/modal-provider/ModalProvider.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\";\nimport { Prompt, PromptProps } from \"../prompt/Prompt\";\n\nexport type ShowDialog = (\n dialogContent: ReactElement,\n title: string,\n dialogActionButtons?: ReactElement[],\n hideCloseButton?: boolean,\n) => void;\n\nexport type ShowPrompt = (\n promptContent: ReactElement,\n promptProps: PromptProps,\n) => void;\n\ntype DialogState = {\n actions?: ReactElement[];\n content: ReactElement;\n title: string;\n hideCloseButton?: boolean;\n};\n\ntype PromptState = {\n content: ReactElement;\n promptProps: PromptProps;\n};\n\ntype SetDispatchers = (\n showDialog: ShowDialog,\n closeDialog: () => void,\n showPrompt: ShowPrompt,\n closePrompt: () => void,\n) => void;\n\ninterface DialogContextProps {\n closeDialog: () => void;\n closePrompt: () => void;\n showDialog: ShowDialog;\n showPrompt: ShowPrompt;\n setDispatchers: SetDispatchers;\n}\n\nconst useDialogHost = () => {\n const [dialogState, setDialogState] = useState<DialogState>();\n const [promptState, setPromptState] = useState<PromptState>();\n\n const closePrompt = useCallback(() => {\n setPromptState(undefined);\n }, []);\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 const handleOpenChangePrompt = useCallback(\n (open: boolean) => {\n if (open !== true) {\n closePrompt();\n }\n promptState?.promptProps.onOpenChange?.(open);\n },\n [closePrompt, promptState],\n );\n\n const prompt = promptState ? (\n <Prompt\n {...promptState.promptProps}\n onClose={closePrompt}\n onOpenChange={handleOpenChangePrompt}\n open\n >\n {promptState.content}\n </Prompt>\n ) : null;\n\n return {\n dialog,\n prompt,\n setDialogState,\n setPromptState,\n };\n};\n\nconst defaultShowDialog: ShowDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\nconst defaultCloseDialog = () => {\n console.warn(\"No DialogProvider in place\");\n};\nconst defaultShowPrompt: ShowPrompt = () => {\n console.warn(\"No DialogProvider in place\");\n};\nconst defaultClosePrompt = () => {\n console.warn(\"No DialogProvider in place\");\n};\n\nclass DialogContextObject implements DialogContextProps {\n showDialog = defaultShowDialog;\n closeDialog = defaultCloseDialog;\n showPrompt = defaultShowPrompt;\n closePrompt = defaultClosePrompt;\n setDispatchers: SetDispatchers = (\n showDialog,\n closeDialog,\n showPrompt,\n closePrompt,\n ) => {\n this.showDialog = showDialog;\n this.closeDialog = closeDialog;\n this.showPrompt = showPrompt;\n this.closePrompt = closePrompt;\n };\n}\n\nconst DialogContext = createContext<DialogContextProps>(\n new DialogContextObject(),\n);\n\nconst DialogHost = ({ context }: { context: DialogContextProps }) => {\n const { dialog, setDialogState, prompt, setPromptState } = useDialogHost();\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 const showPrompt: ShowPrompt = useCallback(\n (content, promptProps) => {\n setPromptState({\n content,\n promptProps,\n });\n },\n [setPromptState],\n );\n const closePrompt = useCallback(() => {\n setPromptState(undefined);\n }, [setPromptState]);\n\n useMemo(() => {\n context.setDispatchers(showDialog, closeDialog, showPrompt, closePrompt);\n }, [closeDialog, closePrompt, context, showDialog, showPrompt]);\n return dialog ?? prompt;\n};\n\nexport const ModalProvider = ({ 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 useModal = () => {\n const { closeDialog, closePrompt, showDialog, showPrompt } =\n useContext(DialogContext);\n return { showDialog, closeDialog, showPrompt, closePrompt };\n};\n"],"names":["useState","useCallback","jsxs","Dialog","jsx","DialogHeader","DialogContent","DialogCloseButton","DialogActions","Prompt","createContext","useMemo","useContext"],"mappings":"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"}
|
package/cjs/prompt/Prompt.css.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var promptCss = ".vuuPrompt {\n min-height: var(--vuuPrompt-minHeight, 257px);\n min-width: var(--vuuPrompt-minWidth,380px);\n\n .saltDialogHeader {\n .vuuIcon {\n width: 24px;\n --vuu-icon-size: 20px;\n }\n }\n\n .vuuPromptConfirmButton:focus {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n }\n}\n\n.vuuPrompt.saltDialog-warning {\n --salt-status-warning-borderColor: var(--vuu-color-yellow-20); \n --variant-color: var(--vuu-color-yellow-20);\n\n border-radius: 4px !important;\n min-height: var(--vuuPrompt-minHeight, 150px);\n min-width: var(--vuuPrompt-minWidth, 280px);\n padding-top:0 !important;\n\n .saltDialogHeader {\n background-color: var(--variant-color);\n padding-left: var(--salt-spacing-100);\n padding-bottom: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n\n .saltDialogHeader-header {\n align-items: end;\n display: flex;\n gap: var(--salt-spacing-100);\n }\n }\n\n .saltDialogContent {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n } \n}\n\n";
|
|
3
|
+
var promptCss = ".vuuPrompt {\n min-height: var(--vuuPrompt-minHeight, 257px);\n min-width: var(--vuuPrompt-minWidth,380px);\n\n .saltDialogHeader {\n .vuuIcon {\n width: 24px;\n --vuu-icon-size: 20px;\n }\n }\n\n .saltDialogActions {\n align-items: center;\n }\n\n .vuuPromptConfirmButton:focus {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n }\n}\n\n.vuuPrompt.saltDialog-warning {\n --salt-status-warning-borderColor: var(--vuu-color-yellow-20); \n --variant-color: var(--vuu-color-yellow-20);\n\n border-radius: 4px !important;\n min-height: var(--vuuPrompt-minHeight, 150px);\n min-width: var(--vuuPrompt-minWidth, 280px);\n padding-top:0 !important;\n\n .saltDialogHeader {\n background-color: var(--variant-color);\n padding-left: var(--salt-spacing-100);\n padding-bottom: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n\n .saltDialogHeader-header {\n align-items: end;\n display: flex;\n gap: var(--salt-spacing-100);\n }\n }\n\n .saltDialogContent {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n } \n}\n\n";
|
|
4
4
|
|
|
5
5
|
module.exports = promptCss;
|
|
6
6
|
//# sourceMappingURL=Prompt.css.js.map
|
package/cjs/prompt/Prompt.js
CHANGED
|
@@ -18,6 +18,7 @@ const Prompt = ({
|
|
|
18
18
|
cancelButtonProps,
|
|
19
19
|
confirmButtonLabel = "Confirm",
|
|
20
20
|
confirmButtonProps,
|
|
21
|
+
customAction = null,
|
|
21
22
|
disableAccent,
|
|
22
23
|
icon,
|
|
23
24
|
initialFocusedItem,
|
|
@@ -105,6 +106,7 @@ const Prompt = ({
|
|
|
105
106
|
),
|
|
106
107
|
/* @__PURE__ */ jsxRuntime.jsx(core.DialogContent, { children }),
|
|
107
108
|
/* @__PURE__ */ jsxRuntime.jsxs(core.DialogActions, { children: [
|
|
109
|
+
customAction,
|
|
108
110
|
showCancelButton ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
109
111
|
core.Button,
|
|
110
112
|
{
|
package/cjs/prompt/Prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Prompt.js","sources":["../../../../packages/vuu-ui-controls/src/prompt/Prompt.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogHeader,\n DialogHeaderProps,\n DialogProps,\n} from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n HTMLAttributes,\n MouseEventHandler,\n RefCallback,\n RefObject,\n useCallback,\n} from \"react\";\nimport { Icon, IconButton } from \"../icon-button\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport promptCss from \"./Prompt.css\";\n\nconst classBase = \"vuuPrompt\";\n\n/**\n * Allow fine grained configuration of Prompt buttons\n * The ref is provided to facilitate programmatic focus.\n */\nexport interface PromptButtonProps {\n disabled?: boolean;\n label?: string;\n ref?: RefObject<HTMLButtonElement | null>;\n}\n\nexport interface PromptProps\n extends Pick<DialogProps, \"onOpenChange\" | \"open\" | \"status\">,\n Pick<DialogHeaderProps, \"disableAccent\">,\n Omit<HTMLAttributes<HTMLDivElement>, \"content\" | \"title\"> {\n /**\n * For simple configuration, where just a cancel button label is required.\n */\n cancelButtonLabel?: string;\n /**\n * Allow fine grained configuration of cancel button\n */\n cancelButtonProps?: PromptButtonProps;\n /**\n * For simple configuration, where just a confirm button label is required.\n */\n confirmButtonLabel?: string;\n /**\n * Allow fine grained configuration of confirm button\n */\n confirmButtonProps?: PromptButtonProps;\n icon?: string;\n /**\n * Set this prop if one of the three built-in buttons should receive initial focus.\n * Allows user to quickly dismiss/confirm prompt from keyboard. If the prompt content\n * contains focusable item(s), focus should be controlled by caller.\n */\n initialFocusedItem?: \"confirm\" | \"cancel\" | \"close\";\n onCancel?: () => void;\n onConfirm?: () => void;\n onClose?: () => void;\n showCancelButton?: boolean;\n showCloseButton?: boolean;\n showConfirmButton?: boolean;\n title: string;\n}\n\nexport const Prompt = ({\n children,\n className,\n cancelButtonLabel = \"Cancel\",\n cancelButtonProps,\n confirmButtonLabel = \"Confirm\",\n confirmButtonProps,\n disableAccent,\n icon,\n initialFocusedItem,\n onCancel,\n onClose,\n onConfirm,\n onOpenChange,\n open,\n showCancelButton = true,\n showCloseButton = true,\n showConfirmButton = true,\n status,\n title,\n\n ...htmlAttributes\n}: PromptProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-prompt-next\",\n css: promptCss,\n window: targetWindow,\n });\n\n const close = useCallback(() => {\n onClose?.();\n onOpenChange?.(false);\n }, [onClose, onOpenChange]);\n\n const callbackRef = useCallback<RefCallback<HTMLDivElement>>(\n (el) => {\n if (el) {\n let target: HTMLButtonElement | null = null;\n if (initialFocusedItem === \"confirm\" && showConfirmButton) {\n target = el.querySelector(\".vuuPromptConfirmButton\");\n } else if (initialFocusedItem === \"cancel\" && showCancelButton) {\n target = el.querySelector(\".vuuPromptCancelButton\");\n } else if (initialFocusedItem === \"close\" && showCloseButton) {\n target = el.querySelector(\".vuuPromptCloseButton\");\n }\n\n if (target) {\n setTimeout(() => {\n target.focus();\n }, 200);\n }\n }\n },\n [initialFocusedItem, showCancelButton, showCloseButton, showConfirmButton],\n );\n\n const handleCancel = useCallback<MouseEventHandler<HTMLButtonElement>>(() => {\n onCancel?.();\n close();\n }, [close, onCancel]);\n\n const handleConfirm = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(() => {\n onConfirm?.();\n close();\n }, [close, onConfirm]);\n\n const actions = showCloseButton ? (\n <IconButton\n appearance=\"transparent\"\n className=\"vuuPromptCloseButton\"\n data-embedded\n icon=\"close\"\n onClick={close}\n />\n ) : null;\n\n const header = icon ? (\n <>\n <Icon name={icon} />\n <span>{title}</span>\n </>\n ) : (\n title\n );\n\n return (\n <Dialog\n {...htmlAttributes}\n className={cx(classBase, className)}\n onOpenChange={onOpenChange}\n open={open}\n ref={callbackRef}\n status={status}\n >\n <DialogHeader\n disableAccent={disableAccent}\n header={header}\n actions={actions}\n />\n <DialogContent>{children}</DialogContent>\n <DialogActions>\n {showCancelButton ? (\n <Button\n className=\"vuuPromptCancelButton\"\n disabled={cancelButtonProps?.disabled}\n onClick={handleCancel}\n ref={cancelButtonProps?.ref}\n >\n {cancelButtonProps?.label ?? cancelButtonLabel}\n </Button>\n ) : null}\n {showConfirmButton ? (\n <Button\n className=\"vuuPromptConfirmButton\"\n disabled={confirmButtonProps?.disabled}\n sentiment=\"accented\"\n onClick={handleConfirm}\n ref={confirmButtonProps?.ref}\n >\n {confirmButtonProps?.label ?? confirmButtonLabel}\n </Button>\n ) : null}\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","promptCss","useCallback","jsx","IconButton","jsxs","Fragment","Icon","Dialog","DialogHeader","DialogContent","DialogActions","Button"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Prompt.js","sources":["../../../../packages/vuu-ui-controls/src/prompt/Prompt.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogHeader,\n DialogHeaderProps,\n DialogProps,\n} from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n HTMLAttributes,\n MouseEventHandler,\n ReactNode,\n RefCallback,\n RefObject,\n useCallback,\n} from \"react\";\nimport { Icon, IconButton } from \"../icon-button\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport promptCss from \"./Prompt.css\";\n\nconst classBase = \"vuuPrompt\";\n\n/**\n * Allow fine grained configuration of Prompt buttons\n * The ref is provided to facilitate programmatic focus.\n */\nexport interface PromptButtonProps {\n disabled?: boolean;\n label?: string;\n ref?: RefObject<HTMLButtonElement | null>;\n}\n\nexport interface PromptProps\n extends Pick<DialogProps, \"onOpenChange\" | \"open\" | \"status\">,\n Pick<DialogHeaderProps, \"disableAccent\">,\n Omit<HTMLAttributes<HTMLDivElement>, \"content\" | \"title\"> {\n /**\n * For simple configuration, where just a cancel button label is required.\n */\n cancelButtonLabel?: string;\n /**\n * Allow fine grained configuration of cancel button\n */\n cancelButtonProps?: PromptButtonProps;\n /**\n * For simple configuration, where just a confirm button label is required.\n */\n confirmButtonLabel?: string;\n /**\n * Allow fine grained configuration of confirm button\n */\n confirmButtonProps?: PromptButtonProps;\n\n /**\n * A custom action will be displayed in Prompt button bar, before cancel/confirm buttons.\n */\n customAction?: ReactNode;\n icon?: string;\n /**\n * Set this prop if one of the three built-in buttons should receive initial focus.\n * Allows user to quickly dismiss/confirm prompt from keyboard. If the prompt content\n * contains focusable item(s), focus should be controlled by caller.\n */\n initialFocusedItem?: \"confirm\" | \"cancel\" | \"close\";\n onCancel?: () => void;\n onConfirm?: () => void;\n onClose?: () => void;\n showCancelButton?: boolean;\n showCloseButton?: boolean;\n showConfirmButton?: boolean;\n title: string;\n}\n\nexport const Prompt = ({\n children,\n className,\n cancelButtonLabel = \"Cancel\",\n cancelButtonProps,\n confirmButtonLabel = \"Confirm\",\n confirmButtonProps,\n customAction = null,\n disableAccent,\n icon,\n initialFocusedItem,\n onCancel,\n onClose,\n onConfirm,\n onOpenChange,\n open,\n showCancelButton = true,\n showCloseButton = true,\n showConfirmButton = true,\n status,\n title,\n\n ...htmlAttributes\n}: PromptProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-prompt-next\",\n css: promptCss,\n window: targetWindow,\n });\n\n const close = useCallback(() => {\n onClose?.();\n onOpenChange?.(false);\n }, [onClose, onOpenChange]);\n\n const callbackRef = useCallback<RefCallback<HTMLDivElement>>(\n (el) => {\n if (el) {\n let target: HTMLButtonElement | null = null;\n if (initialFocusedItem === \"confirm\" && showConfirmButton) {\n target = el.querySelector(\".vuuPromptConfirmButton\");\n } else if (initialFocusedItem === \"cancel\" && showCancelButton) {\n target = el.querySelector(\".vuuPromptCancelButton\");\n } else if (initialFocusedItem === \"close\" && showCloseButton) {\n target = el.querySelector(\".vuuPromptCloseButton\");\n }\n\n if (target) {\n setTimeout(() => {\n target.focus();\n }, 200);\n }\n }\n },\n [initialFocusedItem, showCancelButton, showCloseButton, showConfirmButton],\n );\n\n const handleCancel = useCallback<MouseEventHandler<HTMLButtonElement>>(() => {\n onCancel?.();\n close();\n }, [close, onCancel]);\n\n const handleConfirm = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(() => {\n onConfirm?.();\n close();\n }, [close, onConfirm]);\n\n const actions = showCloseButton ? (\n <IconButton\n appearance=\"transparent\"\n className=\"vuuPromptCloseButton\"\n data-embedded\n icon=\"close\"\n onClick={close}\n />\n ) : null;\n\n const header = icon ? (\n <>\n <Icon name={icon} />\n <span>{title}</span>\n </>\n ) : (\n title\n );\n\n return (\n <Dialog\n {...htmlAttributes}\n className={cx(classBase, className)}\n onOpenChange={onOpenChange}\n open={open}\n ref={callbackRef}\n status={status}\n >\n <DialogHeader\n disableAccent={disableAccent}\n header={header}\n actions={actions}\n />\n <DialogContent>{children}</DialogContent>\n <DialogActions>\n {customAction}\n {showCancelButton ? (\n <Button\n className=\"vuuPromptCancelButton\"\n disabled={cancelButtonProps?.disabled}\n onClick={handleCancel}\n ref={cancelButtonProps?.ref}\n >\n {cancelButtonProps?.label ?? cancelButtonLabel}\n </Button>\n ) : null}\n {showConfirmButton ? (\n <Button\n className=\"vuuPromptConfirmButton\"\n disabled={confirmButtonProps?.disabled}\n sentiment=\"accented\"\n onClick={handleConfirm}\n ref={confirmButtonProps?.ref}\n >\n {confirmButtonProps?.label ?? confirmButtonLabel}\n </Button>\n ) : null}\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","promptCss","useCallback","jsx","IconButton","jsxs","Fragment","Icon","Dialog","DialogHeader","DialogContent","DialogActions","Button"],"mappings":"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"}
|