@veracity/vui 1.2.0-beta.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/cjs/core/types.d.ts +10 -1
  2. package/dist/cjs/core/types.d.ts.map +1 -1
  3. package/dist/cjs/core/vuiProvider/context.d.ts +2 -1
  4. package/dist/cjs/core/vuiProvider/context.d.ts.map +1 -1
  5. package/dist/cjs/core/vuiProvider/reducers.d.ts +3 -2
  6. package/dist/cjs/core/vuiProvider/reducers.d.ts.map +1 -1
  7. package/dist/cjs/core/vuiProvider/reducers.js +5 -3
  8. package/dist/cjs/core/vuiProvider/vuiProvider.d.ts.map +1 -1
  9. package/dist/cjs/core/vuiProvider/vuiProvider.js +6 -4
  10. package/dist/cjs/dialog/index.d.ts +1 -2
  11. package/dist/cjs/dialog/index.d.ts.map +1 -1
  12. package/dist/cjs/dialog/index.js +1 -2
  13. package/dist/cjs/dialog/useDialog.d.ts +5 -0
  14. package/dist/cjs/dialog/useDialog.d.ts.map +1 -0
  15. package/dist/cjs/dialog/useDialog.js +46 -0
  16. package/dist/cjs/toast/useToast.d.ts +1 -1
  17. package/dist/cjs/utils/dom.d.ts +0 -5
  18. package/dist/cjs/utils/dom.d.ts.map +1 -1
  19. package/dist/cjs/utils/dom.js +1 -28
  20. package/dist/cjs/utils/react.d.ts +1 -3
  21. package/dist/cjs/utils/react.d.ts.map +1 -1
  22. package/dist/cjs/utils/react.js +1 -13
  23. package/dist/esm/core/types.d.ts +10 -1
  24. package/dist/esm/core/types.d.ts.map +1 -1
  25. package/dist/esm/core/vuiProvider/context.d.ts +2 -1
  26. package/dist/esm/core/vuiProvider/context.d.ts.map +1 -1
  27. package/dist/esm/core/vuiProvider/reducers.d.ts +3 -2
  28. package/dist/esm/core/vuiProvider/reducers.d.ts.map +1 -1
  29. package/dist/esm/core/vuiProvider/reducers.js +3 -2
  30. package/dist/esm/core/vuiProvider/vuiProvider.d.ts.map +1 -1
  31. package/dist/esm/core/vuiProvider/vuiProvider.js +7 -5
  32. package/dist/esm/dialog/index.d.ts +1 -2
  33. package/dist/esm/dialog/index.d.ts.map +1 -1
  34. package/dist/esm/dialog/index.js +1 -2
  35. package/dist/esm/dialog/useDialog.d.ts +5 -0
  36. package/dist/esm/dialog/useDialog.d.ts.map +1 -0
  37. package/dist/esm/dialog/useDialog.js +39 -0
  38. package/dist/esm/toast/useToast.d.ts +1 -1
  39. package/dist/esm/utils/dom.d.ts +0 -5
  40. package/dist/esm/utils/dom.d.ts.map +1 -1
  41. package/dist/esm/utils/dom.js +0 -19
  42. package/dist/esm/utils/react.d.ts +1 -3
  43. package/dist/esm/utils/react.d.ts.map +1 -1
  44. package/dist/esm/utils/react.js +0 -8
  45. package/package.json +1 -1
  46. package/src/core/types.ts +10 -1
  47. package/src/core/vuiProvider/context.ts +2 -1
  48. package/src/core/vuiProvider/reducers.ts +4 -2
  49. package/src/core/vuiProvider/vuiProvider.tsx +7 -5
  50. package/src/dialog/index.ts +1 -2
  51. package/src/dialog/useDialog.tsx +69 -0
  52. package/src/utils/dom.ts +0 -22
  53. package/src/utils/react.ts +0 -9
  54. package/dist/cjs/dialog/showConfirm.d.ts +0 -2
  55. package/dist/cjs/dialog/showConfirm.d.ts.map +0 -1
  56. package/dist/cjs/dialog/showConfirm.js +0 -37
  57. package/dist/cjs/dialog/showPrompt.d.ts +0 -2
  58. package/dist/cjs/dialog/showPrompt.d.ts.map +0 -1
  59. package/dist/cjs/dialog/showPrompt.js +0 -42
  60. package/dist/esm/dialog/showConfirm.d.ts +0 -2
  61. package/dist/esm/dialog/showConfirm.d.ts.map +0 -1
  62. package/dist/esm/dialog/showConfirm.js +0 -30
  63. package/dist/esm/dialog/showPrompt.d.ts +0 -2
  64. package/dist/esm/dialog/showPrompt.d.ts.map +0 -1
  65. package/dist/esm/dialog/showPrompt.js +0 -35
  66. package/src/dialog/showConfirm.tsx +0 -45
  67. package/src/dialog/showPrompt.tsx +0 -55
@@ -1,5 +1,14 @@
1
- import { ReactNode } from 'react';
1
+ import { Dispatch, ReactNode } from 'react';
2
+ import { ToastListItem } from '../toast/toast.types';
2
3
  export interface ChildrenProp {
3
4
  children?: ReactNode;
4
5
  }
6
+ export interface VuiContext {
7
+ toasts: {
8
+ list: ToastListItem[];
9
+ };
10
+ addToast: (toast: ToastListItem) => void;
11
+ removeToast: (id: string) => void;
12
+ setPortalSlot: Dispatch<ReactNode>;
13
+ }
5
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE;QAAE,IAAI,EAAE,aAAa,EAAE,CAAA;KAAE,CAAA;IACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACxC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CACnC"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
- declare const VuiContextProvider: import("react").Provider<any>, useVuiContext: () => any;
2
+ import { VuiContext } from '../types';
3
+ declare const VuiContextProvider: import("react").Provider<VuiContext>, useVuiContext: () => VuiContext;
3
4
  export { VuiContextProvider, useVuiContext };
4
5
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/context.ts"],"names":[],"mappings":";AAEA,QAAA,MAAO,kBAAkB,iCAAE,aAAa,WAA4C,CAAA;AAEpF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/context.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,QAAA,MAAO,kBAAkB,wCAAE,aAAa,kBAAmD,CAAA;AAE3F,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAA"}
@@ -1,10 +1,11 @@
1
1
  import { ToastListItem } from '../../toast/toast.types';
2
- export declare function toastsReducer(state: {
2
+ export declare const toastsReducer: (state: {
3
3
  list: ToastListItem[];
4
4
  }, action: {
5
5
  type: 'add' | 'remove';
6
6
  toast: ToastListItem;
7
- }): {
7
+ }) => {
8
8
  list: ToastListItem[];
9
9
  };
10
+ export declare const genericReducer: (state: any, action: any) => any;
10
11
  //# sourceMappingURL=reducers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducers.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/reducers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,wBAAgB,aAAa,CAC3B,KAAK,EAAE;IAAE,IAAI,EAAE,aAAa,EAAE,CAAA;CAAE,EAChC,MAAM,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE;;EAazD"}
1
+ {"version":3,"file":"reducers.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/reducers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,eAAO,MAAM,aAAa,UACjB;IAAE,IAAI,EAAE,aAAa,EAAE,CAAA;CAAE,UACxB;IAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE;;CAazD,CAAA;AAED,eAAO,MAAM,cAAc,UAAW,GAAG,UAAU,GAAG,QAAqB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toastsReducer = void 0;
4
- function toastsReducer(state, action) {
3
+ exports.genericReducer = exports.toastsReducer = void 0;
4
+ const toastsReducer = (state, action) => {
5
5
  switch (action.type) {
6
6
  case 'add': {
7
7
  return { list: [action.toast, ...state.list] };
@@ -13,5 +13,7 @@ function toastsReducer(state, action) {
13
13
  throw new Error(`Unhandled action type: ${action.type}`);
14
14
  }
15
15
  }
16
- }
16
+ };
17
17
  exports.toastsReducer = toastsReducer;
18
+ const genericReducer = (state, action) => (state = action);
19
+ exports.genericReducer = genericReducer;
@@ -1 +1 @@
1
- {"version":3,"file":"vuiProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/vuiProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAc,MAAM,OAAO,CAAA;AAM7C,OAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAMvC,aAAK,gBAAgB,GAAG;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,GAAG,YAAY,CA6BpD,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"vuiProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/vuiProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAc,MAAM,OAAO,CAAA;AAM7C,OAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAMvC,aAAK,gBAAgB,GAAG;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,GAAG,YAAY,CA+BpD,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -39,10 +39,11 @@ const reducers_1 = require("./reducers");
39
39
  const resetCSS_1 = __importDefault(require("./resetCSS"));
40
40
  /** Provides theme to all wrapped components and by default includes CSS reset and global styles. */
41
41
  const VuiProvider = ({ children, globalStyle = true, resetCSS = true, theme = theme_1.default }) => {
42
- const [toasts, dispatch] = (0, react_1.useReducer)(reducers_1.toastsReducer, { list: [] });
43
- const addToast = (toast) => dispatch({ type: 'add', toast });
44
- const removeToast = (id) => dispatch({ type: 'remove', toast: { id } });
45
- const context = { toasts, addToast, removeToast };
42
+ const [toasts, toastsDispatch] = (0, react_1.useReducer)(reducers_1.toastsReducer, { list: [] });
43
+ const [portalSlot, setPortalSlot] = (0, react_1.useReducer)(reducers_1.genericReducer, null);
44
+ const addToast = (toast) => toastsDispatch({ type: 'add', toast });
45
+ const removeToast = (id) => toastsDispatch({ type: 'remove', toast: { id } });
46
+ const context = { toasts, addToast, removeToast, setPortalSlot };
46
47
  return (react_1.default.createElement(context_1.VuiContextProvider, { value: context },
47
48
  react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme },
48
49
  react_1.default.createElement(react_1.default.Fragment, null,
@@ -52,6 +53,7 @@ const VuiProvider = ({ children, globalStyle = true, resetCSS = true, theme = th
52
53
  react_1.default.createElement(popoverStyle_1.default, null),
53
54
  children,
54
55
  react_1.default.createElement(portal_1.Portal, null,
56
+ portalSlot,
55
57
  react_1.default.createElement(toast_1.Toaster, null))))));
56
58
  };
57
59
  exports.default = VuiProvider;
@@ -11,6 +11,5 @@ export * from './dialogHeader';
11
11
  export * from './dialogIcon';
12
12
  export * from './dialogSubmitButton';
13
13
  export * from './dialogTitle';
14
- export * from './showConfirm';
15
- export * from './showPrompt';
14
+ export * from './useDialog';
16
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dialog/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dialog/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
@@ -32,5 +32,4 @@ __exportStar(require("./dialogHeader"), exports);
32
32
  __exportStar(require("./dialogIcon"), exports);
33
33
  __exportStar(require("./dialogSubmitButton"), exports);
34
34
  __exportStar(require("./dialogTitle"), exports);
35
- __exportStar(require("./showConfirm"), exports);
36
- __exportStar(require("./showPrompt"), exports);
35
+ __exportStar(require("./useDialog"), exports);
@@ -0,0 +1,5 @@
1
+ export declare const useDialog: () => {
2
+ showConfirm: (title: string, message: string) => Promise<boolean>;
3
+ showPrompt: (title: string, value?: string) => Promise<string | false>;
4
+ };
5
+ //# sourceMappingURL=useDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDialog.d.ts","sourceRoot":"","sources":["../../../src/dialog/useDialog.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,SAAS;yBAGQ,MAAM,WAAW,MAAM,KAAG,QAAQ,OAAO,CAAC;wBA0B3C,MAAM,qBAAe,QAAQ,MAAM,GAAG,KAAK,CAAC;CAgCxE,CAAA"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useDialog = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const box_1 = require("../box");
9
+ const core_1 = require("../core");
10
+ const dialog_1 = require("../dialog");
11
+ const input_1 = require("../input");
12
+ const useDialog = () => {
13
+ const { setPortalSlot } = (0, core_1.useVuiContext)();
14
+ const showConfirm = (title, message) => new Promise(resolve => setPortalSlot(react_1.default.createElement(dialog_1.Dialog, { body: message, cancelButton: {
15
+ onClick: () => {
16
+ resolve(false);
17
+ setPortalSlot(null);
18
+ },
19
+ text: 'Cancel'
20
+ }, closeButton: false, isOpen: true, submitButton: {
21
+ onClick: () => {
22
+ resolve(true);
23
+ setPortalSlot(null);
24
+ },
25
+ text: 'Confirm'
26
+ }, title: title })));
27
+ const showPrompt = (title, value = '') => new Promise(resolve => {
28
+ let inputValue = value;
29
+ setPortalSlot(react_1.default.createElement(dialog_1.Dialog, { body: react_1.default.createElement(box_1.Box, { px: 3, py: 2 },
30
+ react_1.default.createElement(input_1.Input, { defaultValue: value, onChange: e => (inputValue = e.target.value) })), cancelButton: {
31
+ onClick: () => {
32
+ resolve(false);
33
+ setPortalSlot(null);
34
+ },
35
+ text: 'Cancel'
36
+ }, closeButton: false, isOpen: true, submitButton: {
37
+ onClick: () => {
38
+ resolve(inputValue);
39
+ setPortalSlot(null);
40
+ },
41
+ text: 'Submit'
42
+ }, title: title }));
43
+ });
44
+ return { showConfirm, showPrompt };
45
+ };
46
+ exports.useDialog = useDialog;
@@ -2,7 +2,7 @@ import { ReactNode } from 'react';
2
2
  import { ToastOptions } from './toast.types';
3
3
  export declare const useToast: () => {
4
4
  showToast: (options?: ToastOptions | undefined) => void;
5
- hideToast: (id: string) => any;
5
+ hideToast: (id: string) => void;
6
6
  showInfo: (text: ReactNode) => void;
7
7
  showSuccess: (text: ReactNode) => void;
8
8
  showWarning: (text: ReactNode) => void;
@@ -2,9 +2,4 @@ export declare const addElement: (id: string) => HTMLElement;
2
2
  export declare const removeElement: (id: string) => void;
3
3
  export declare const addBodyClass: (className: string) => void;
4
4
  export declare const removeBodyClass: (className: string) => void;
5
- export declare const removeElements: (className: string) => void;
6
- export declare const addElementClass: (id: string, className: string) => void;
7
- export declare const removeElementClass: (id: string, className: string) => void;
8
- export declare const appendToBody: (rootElem: HTMLElement) => HTMLElement;
9
- export declare const addContainer: (id: string) => void;
10
5
  //# sourceMappingURL=dom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,OAAQ,MAAM,KAAG,WAIvC,CAAA;AAED,eAAO,MAAM,aAAa,OAAQ,MAAM,KAAG,IAG1C,CAAA;AAED,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,IAA8C,CAAA;AAE/F,eAAO,MAAM,eAAe,cAAe,MAAM,KAAG,IAAiD,CAAA;AAErG,eAAO,MAAM,cAAc,cAAe,MAAM,KAAG,IAGlD,CAAA;AAED,eAAO,MAAM,eAAe,OAAQ,MAAM,aAAa,MAAM,KAAG,IAG/D,CAAA;AAED,eAAO,MAAM,kBAAkB,OAAQ,MAAM,aAAa,MAAM,KAAG,IAGlE,CAAA;AAED,eAAO,MAAM,YAAY,aAAc,WAAW,gBAAwC,CAAA;AAE1F,eAAO,MAAM,YAAY,OAAQ,MAAM,KAAG,IAGzC,CAAA"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,OAAQ,MAAM,KAAG,WAIvC,CAAA;AAED,eAAO,MAAM,aAAa,OAAQ,MAAM,KAAG,IAG1C,CAAA;AAED,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,IAA8C,CAAA;AAE/F,eAAO,MAAM,eAAe,cAAe,MAAM,KAAG,IAAiD,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addContainer = exports.appendToBody = exports.removeElementClass = exports.addElementClass = exports.removeElements = exports.removeBodyClass = exports.addBodyClass = exports.removeElement = exports.addElement = void 0;
3
+ exports.removeBodyClass = exports.addBodyClass = exports.removeElement = exports.addElement = void 0;
4
4
  const addElement = (id) => {
5
5
  const element = document.createElement('div');
6
6
  element.setAttribute('id', id);
@@ -17,30 +17,3 @@ const addBodyClass = (className) => document.body.classList.add(className);
17
17
  exports.addBodyClass = addBodyClass;
18
18
  const removeBodyClass = (className) => document.body.classList.remove(className);
19
19
  exports.removeBodyClass = removeBodyClass;
20
- const removeElements = (className) => {
21
- var _a, _b;
22
- const elements = document.getElementsByClassName(className);
23
- for (let i = 0, len = elements.length; i < len; i++)
24
- (_b = (_a = elements[i]) === null || _a === void 0 ? void 0 : _a.remove) === null || _b === void 0 ? void 0 : _b.call(_a);
25
- };
26
- exports.removeElements = removeElements;
27
- const addElementClass = (id, className) => {
28
- var _a, _b;
29
- const element = document.getElementById(id);
30
- (_b = (_a = element === null || element === void 0 ? void 0 : element.classList) === null || _a === void 0 ? void 0 : _a.add) === null || _b === void 0 ? void 0 : _b.call(_a, className);
31
- };
32
- exports.addElementClass = addElementClass;
33
- const removeElementClass = (id, className) => {
34
- var _a, _b;
35
- const element = document.getElementById(id);
36
- (_b = (_a = element === null || element === void 0 ? void 0 : element.classList) === null || _a === void 0 ? void 0 : _a.remove) === null || _b === void 0 ? void 0 : _b.call(_a, className);
37
- };
38
- exports.removeElementClass = removeElementClass;
39
- const appendToBody = (rootElem) => document.body.appendChild(rootElem);
40
- exports.appendToBody = appendToBody;
41
- const addContainer = (id) => {
42
- const toastContainer = document.getElementById(id);
43
- if (!toastContainer)
44
- (0, exports.appendToBody)((0, exports.addElement)(id));
45
- };
46
- exports.addContainer = addContainer;
@@ -1,4 +1,4 @@
1
- import React, { DependencyList, ReactElement, RefObject } from 'react';
1
+ import React, { DependencyList, RefObject } from 'react';
2
2
  import { AnyFunction, CreateContextOptions, CreateContextReturn } from './types';
3
3
  declare type ReactRef<T> = React.Ref<T> | React.RefObject<T> | React.MutableRefObject<T>;
4
4
  /**
@@ -36,7 +36,5 @@ export declare function useIds(id: string, prefixes: string[]): string[];
36
36
  * Provides a function, which can be called to check if component using the hook is mounted or unmounted.
37
37
  */
38
38
  export declare function useIsMounted(): () => boolean;
39
- /** A resolver to render a DOM node depending on React major version. */
40
- export declare function reactDomRender(id: string, content: ReactElement): void;
41
39
  export {};
42
40
  //# sourceMappingURL=react.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/utils/react.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACZ,cAAc,EAEd,YAAY,EACZ,SAAS,EAMV,MAAM,OAAO,CAAA;AAKd,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEhF,aAAK,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAEhF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,QAcxE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAE,oBAAyB,oCAoB5E;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,UACjD,CAAC,GAAG,IAAI,UAGvB;AAGD,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,GAAE,cAAmB,KAM5F;AAKD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EACjC,MAAM,GAAE,MAAM,EAAkB,QAoBjC;AAED,oBAAY,kBAAkB,CAAC,CAAC,IAAI;IAClC,YAAY,CAAC,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IAC7B,KAAK,CAAC,EAAE,CAAC,CAAA;CACV,CAAA;AAGD,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;kBAwBzC,OAAO;WAAS,MAAM,IAAI;GAE7C;AAED,4GAA4G;AAC5G,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAEpD;AAGD;;GAEG;AACH,wBAAgB,YAAY,kBAY3B;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,QAI/D"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/utils/react.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACZ,cAAc,EAEd,SAAS,EAMV,MAAM,OAAO,CAAA;AAId,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEhF,aAAK,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAEhF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,QAcxE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAE,oBAAyB,oCAoB5E;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,UACjD,CAAC,GAAG,IAAI,UAGvB;AAGD,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,GAAE,cAAmB,KAM5F;AAKD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EACjC,MAAM,GAAE,MAAM,EAAkB,QAoBjC;AAED,oBAAY,kBAAkB,CAAC,CAAC,IAAI;IAClC,YAAY,CAAC,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IAC7B,KAAK,CAAC,EAAE,CAAC,CAAA;CACV,CAAA;AAGD,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;kBAwBzC,OAAO;WAAS,MAAM,IAAI;GAE7C;AAED,4GAA4G;AAC5G,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAEpD;AAGD;;GAEG;AACH,wBAAgB,YAAY,kBAY3B"}
@@ -23,13 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  __setModuleDefault(result, mod);
24
24
  return result;
25
25
  };
26
- var __importDefault = (this && this.__importDefault) || function (mod) {
27
- return (mod && mod.__esModule) ? mod : { "default": mod };
28
- };
29
26
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.reactDomRender = exports.useIsMounted = exports.useIds = exports.useControlled = exports.useClickOutside = exports.useCallbackRef = exports.mergeRefs = exports.createContext = exports.assignRef = void 0;
27
+ exports.useIsMounted = exports.useIds = exports.useControlled = exports.useClickOutside = exports.useCallbackRef = exports.mergeRefs = exports.createContext = exports.assignRef = void 0;
31
28
  const react_1 = __importStar(require("react"));
32
- const react_dom_1 = __importDefault(require("react-dom"));
33
29
  const assertion_1 = require("./assertion");
34
30
  const function_1 = require("./function");
35
31
  /**
@@ -148,11 +144,3 @@ function useIsMounted() {
148
144
  return (0, react_1.useCallback)(() => isMounted.current, []);
149
145
  }
150
146
  exports.useIsMounted = useIsMounted;
151
- /** A resolver to render a DOM node depending on React major version. */
152
- function reactDomRender(id, content) {
153
- const wrapper = document.getElementById(id);
154
- if (!wrapper)
155
- return;
156
- react_dom_1.default.render(content, wrapper);
157
- }
158
- exports.reactDomRender = reactDomRender;
@@ -1,5 +1,14 @@
1
- import { ReactNode } from 'react';
1
+ import { Dispatch, ReactNode } from 'react';
2
+ import { ToastListItem } from '../toast/toast.types';
2
3
  export interface ChildrenProp {
3
4
  children?: ReactNode;
4
5
  }
6
+ export interface VuiContext {
7
+ toasts: {
8
+ list: ToastListItem[];
9
+ };
10
+ addToast: (toast: ToastListItem) => void;
11
+ removeToast: (id: string) => void;
12
+ setPortalSlot: Dispatch<ReactNode>;
13
+ }
5
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE;QAAE,IAAI,EAAE,aAAa,EAAE,CAAA;KAAE,CAAA;IACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACxC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CACnC"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
- declare const VuiContextProvider: import("react").Provider<any>, useVuiContext: () => any;
2
+ import { VuiContext } from '../types';
3
+ declare const VuiContextProvider: import("react").Provider<VuiContext>, useVuiContext: () => VuiContext;
3
4
  export { VuiContextProvider, useVuiContext };
4
5
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/context.ts"],"names":[],"mappings":";AAEA,QAAA,MAAO,kBAAkB,iCAAE,aAAa,WAA4C,CAAA;AAEpF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/context.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,QAAA,MAAO,kBAAkB,wCAAE,aAAa,kBAAmD,CAAA;AAE3F,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAA"}
@@ -1,10 +1,11 @@
1
1
  import { ToastListItem } from '../../toast/toast.types';
2
- export declare function toastsReducer(state: {
2
+ export declare const toastsReducer: (state: {
3
3
  list: ToastListItem[];
4
4
  }, action: {
5
5
  type: 'add' | 'remove';
6
6
  toast: ToastListItem;
7
- }): {
7
+ }) => {
8
8
  list: ToastListItem[];
9
9
  };
10
+ export declare const genericReducer: (state: any, action: any) => any;
10
11
  //# sourceMappingURL=reducers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reducers.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/reducers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,wBAAgB,aAAa,CAC3B,KAAK,EAAE;IAAE,IAAI,EAAE,aAAa,EAAE,CAAA;CAAE,EAChC,MAAM,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE;;EAazD"}
1
+ {"version":3,"file":"reducers.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/reducers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,eAAO,MAAM,aAAa,UACjB;IAAE,IAAI,EAAE,aAAa,EAAE,CAAA;CAAE,UACxB;IAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE;;CAazD,CAAA;AAED,eAAO,MAAM,cAAc,UAAW,GAAG,UAAU,GAAG,QAAqB,CAAA"}
@@ -1,4 +1,4 @@
1
- export function toastsReducer(state, action) {
1
+ export const toastsReducer = (state, action) => {
2
2
  switch (action.type) {
3
3
  case 'add': {
4
4
  return { list: [action.toast, ...state.list] };
@@ -10,4 +10,5 @@ export function toastsReducer(state, action) {
10
10
  throw new Error(`Unhandled action type: ${action.type}`);
11
11
  }
12
12
  }
13
- }
13
+ };
14
+ export const genericReducer = (state, action) => (state = action);
@@ -1 +1 @@
1
- {"version":3,"file":"vuiProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/vuiProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAc,MAAM,OAAO,CAAA;AAM7C,OAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAMvC,aAAK,gBAAgB,GAAG;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,GAAG,YAAY,CA6BpD,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"vuiProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/vuiProvider/vuiProvider.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAc,MAAM,OAAO,CAAA;AAM7C,OAAqB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAMvC,aAAK,gBAAgB,GAAG;IACtB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,GAAG,YAAY,CA+BpD,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -7,14 +7,15 @@ import defaultTheme from '../../theme';
7
7
  import { Toaster } from '../../toast';
8
8
  import { VuiContextProvider } from './context';
9
9
  import GlobalStyle from './globalStyle';
10
- import { toastsReducer } from './reducers';
10
+ import { genericReducer, toastsReducer } from './reducers';
11
11
  import ResetCSS from './resetCSS';
12
12
  /** Provides theme to all wrapped components and by default includes CSS reset and global styles. */
13
13
  const VuiProvider = ({ children, globalStyle = true, resetCSS = true, theme = defaultTheme }) => {
14
- const [toasts, dispatch] = useReducer(toastsReducer, { list: [] });
15
- const addToast = (toast) => dispatch({ type: 'add', toast });
16
- const removeToast = (id) => dispatch({ type: 'remove', toast: { id } });
17
- const context = { toasts, addToast, removeToast };
14
+ const [toasts, toastsDispatch] = useReducer(toastsReducer, { list: [] });
15
+ const [portalSlot, setPortalSlot] = useReducer(genericReducer, null);
16
+ const addToast = (toast) => toastsDispatch({ type: 'add', toast });
17
+ const removeToast = (id) => toastsDispatch({ type: 'remove', toast: { id } });
18
+ const context = { toasts, addToast, removeToast, setPortalSlot };
18
19
  return (React.createElement(VuiContextProvider, { value: context },
19
20
  React.createElement(ThemeProvider, { theme: theme },
20
21
  React.createElement(React.Fragment, null,
@@ -24,6 +25,7 @@ const VuiProvider = ({ children, globalStyle = true, resetCSS = true, theme = de
24
25
  React.createElement(PopoverStyle, null),
25
26
  children,
26
27
  React.createElement(Portal, null,
28
+ portalSlot,
27
29
  React.createElement(Toaster, null))))));
28
30
  };
29
31
  export default VuiProvider;
@@ -11,6 +11,5 @@ export * from './dialogHeader';
11
11
  export * from './dialogIcon';
12
12
  export * from './dialogSubmitButton';
13
13
  export * from './dialogTitle';
14
- export * from './showConfirm';
15
- export * from './showPrompt';
14
+ export * from './useDialog';
16
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dialog/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dialog/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
@@ -11,5 +11,4 @@ export * from './dialogHeader';
11
11
  export * from './dialogIcon';
12
12
  export * from './dialogSubmitButton';
13
13
  export * from './dialogTitle';
14
- export * from './showConfirm';
15
- export * from './showPrompt';
14
+ export * from './useDialog';
@@ -0,0 +1,5 @@
1
+ export declare const useDialog: () => {
2
+ showConfirm: (title: string, message: string) => Promise<boolean>;
3
+ showPrompt: (title: string, value?: string) => Promise<string | false>;
4
+ };
5
+ //# sourceMappingURL=useDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDialog.d.ts","sourceRoot":"","sources":["../../../src/dialog/useDialog.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,SAAS;yBAGQ,MAAM,WAAW,MAAM,KAAG,QAAQ,OAAO,CAAC;wBA0B3C,MAAM,qBAAe,QAAQ,MAAM,GAAG,KAAK,CAAC;CAgCxE,CAAA"}
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { Box } from '../box';
3
+ import { useVuiContext } from '../core';
4
+ import { Dialog } from '../dialog';
5
+ import { Input } from '../input';
6
+ export const useDialog = () => {
7
+ const { setPortalSlot } = useVuiContext();
8
+ const showConfirm = (title, message) => new Promise(resolve => setPortalSlot(React.createElement(Dialog, { body: message, cancelButton: {
9
+ onClick: () => {
10
+ resolve(false);
11
+ setPortalSlot(null);
12
+ },
13
+ text: 'Cancel'
14
+ }, closeButton: false, isOpen: true, submitButton: {
15
+ onClick: () => {
16
+ resolve(true);
17
+ setPortalSlot(null);
18
+ },
19
+ text: 'Confirm'
20
+ }, title: title })));
21
+ const showPrompt = (title, value = '') => new Promise(resolve => {
22
+ let inputValue = value;
23
+ setPortalSlot(React.createElement(Dialog, { body: React.createElement(Box, { px: 3, py: 2 },
24
+ React.createElement(Input, { defaultValue: value, onChange: e => (inputValue = e.target.value) })), cancelButton: {
25
+ onClick: () => {
26
+ resolve(false);
27
+ setPortalSlot(null);
28
+ },
29
+ text: 'Cancel'
30
+ }, closeButton: false, isOpen: true, submitButton: {
31
+ onClick: () => {
32
+ resolve(inputValue);
33
+ setPortalSlot(null);
34
+ },
35
+ text: 'Submit'
36
+ }, title: title }));
37
+ });
38
+ return { showConfirm, showPrompt };
39
+ };
@@ -2,7 +2,7 @@ import { ReactNode } from 'react';
2
2
  import { ToastOptions } from './toast.types';
3
3
  export declare const useToast: () => {
4
4
  showToast: (options?: ToastOptions | undefined) => void;
5
- hideToast: (id: string) => any;
5
+ hideToast: (id: string) => void;
6
6
  showInfo: (text: ReactNode) => void;
7
7
  showSuccess: (text: ReactNode) => void;
8
8
  showWarning: (text: ReactNode) => void;
@@ -2,9 +2,4 @@ export declare const addElement: (id: string) => HTMLElement;
2
2
  export declare const removeElement: (id: string) => void;
3
3
  export declare const addBodyClass: (className: string) => void;
4
4
  export declare const removeBodyClass: (className: string) => void;
5
- export declare const removeElements: (className: string) => void;
6
- export declare const addElementClass: (id: string, className: string) => void;
7
- export declare const removeElementClass: (id: string, className: string) => void;
8
- export declare const appendToBody: (rootElem: HTMLElement) => HTMLElement;
9
- export declare const addContainer: (id: string) => void;
10
5
  //# sourceMappingURL=dom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,OAAQ,MAAM,KAAG,WAIvC,CAAA;AAED,eAAO,MAAM,aAAa,OAAQ,MAAM,KAAG,IAG1C,CAAA;AAED,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,IAA8C,CAAA;AAE/F,eAAO,MAAM,eAAe,cAAe,MAAM,KAAG,IAAiD,CAAA;AAErG,eAAO,MAAM,cAAc,cAAe,MAAM,KAAG,IAGlD,CAAA;AAED,eAAO,MAAM,eAAe,OAAQ,MAAM,aAAa,MAAM,KAAG,IAG/D,CAAA;AAED,eAAO,MAAM,kBAAkB,OAAQ,MAAM,aAAa,MAAM,KAAG,IAGlE,CAAA;AAED,eAAO,MAAM,YAAY,aAAc,WAAW,gBAAwC,CAAA;AAE1F,eAAO,MAAM,YAAY,OAAQ,MAAM,KAAG,IAGzC,CAAA"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,OAAQ,MAAM,KAAG,WAIvC,CAAA;AAED,eAAO,MAAM,aAAa,OAAQ,MAAM,KAAG,IAG1C,CAAA;AAED,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,IAA8C,CAAA;AAE/F,eAAO,MAAM,eAAe,cAAe,MAAM,KAAG,IAAiD,CAAA"}
@@ -9,22 +9,3 @@ export const removeElement = (id) => {
9
9
  };
10
10
  export const addBodyClass = (className) => document.body.classList.add(className);
11
11
  export const removeBodyClass = (className) => document.body.classList.remove(className);
12
- export const removeElements = (className) => {
13
- const elements = document.getElementsByClassName(className);
14
- for (let i = 0, len = elements.length; i < len; i++)
15
- elements[i]?.remove?.();
16
- };
17
- export const addElementClass = (id, className) => {
18
- const element = document.getElementById(id);
19
- element?.classList?.add?.(className);
20
- };
21
- export const removeElementClass = (id, className) => {
22
- const element = document.getElementById(id);
23
- element?.classList?.remove?.(className);
24
- };
25
- export const appendToBody = (rootElem) => document.body.appendChild(rootElem);
26
- export const addContainer = (id) => {
27
- const toastContainer = document.getElementById(id);
28
- if (!toastContainer)
29
- appendToBody(addElement(id));
30
- };
@@ -1,4 +1,4 @@
1
- import React, { DependencyList, ReactElement, RefObject } from 'react';
1
+ import React, { DependencyList, RefObject } from 'react';
2
2
  import { AnyFunction, CreateContextOptions, CreateContextReturn } from './types';
3
3
  declare type ReactRef<T> = React.Ref<T> | React.RefObject<T> | React.MutableRefObject<T>;
4
4
  /**
@@ -36,7 +36,5 @@ export declare function useIds(id: string, prefixes: string[]): string[];
36
36
  * Provides a function, which can be called to check if component using the hook is mounted or unmounted.
37
37
  */
38
38
  export declare function useIsMounted(): () => boolean;
39
- /** A resolver to render a DOM node depending on React major version. */
40
- export declare function reactDomRender(id: string, content: ReactElement): void;
41
39
  export {};
42
40
  //# sourceMappingURL=react.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/utils/react.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACZ,cAAc,EAEd,YAAY,EACZ,SAAS,EAMV,MAAM,OAAO,CAAA;AAKd,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEhF,aAAK,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAEhF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,QAcxE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAE,oBAAyB,oCAoB5E;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,UACjD,CAAC,GAAG,IAAI,UAGvB;AAGD,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,GAAE,cAAmB,KAM5F;AAKD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EACjC,MAAM,GAAE,MAAM,EAAkB,QAoBjC;AAED,oBAAY,kBAAkB,CAAC,CAAC,IAAI;IAClC,YAAY,CAAC,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IAC7B,KAAK,CAAC,EAAE,CAAC,CAAA;CACV,CAAA;AAGD,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;kBAwBzC,OAAO;WAAS,MAAM,IAAI;GAE7C;AAED,4GAA4G;AAC5G,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAEpD;AAGD;;GAEG;AACH,wBAAgB,YAAY,kBAY3B;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,QAI/D"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/utils/react.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACZ,cAAc,EAEd,SAAS,EAMV,MAAM,OAAO,CAAA;AAId,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEhF,aAAK,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAEhF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,QAcxE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAE,oBAAyB,oCAoB5E;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,UACjD,CAAC,GAAG,IAAI,UAGvB;AAGD,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,GAAE,cAAmB,KAM5F;AAKD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EACjC,MAAM,GAAE,MAAM,EAAkB,QAoBjC;AAED,oBAAY,kBAAkB,CAAC,CAAC,IAAI;IAClC,YAAY,CAAC,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IAC7B,KAAK,CAAC,EAAE,CAAC,CAAA;CACV,CAAA;AAGD,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;kBAwBzC,OAAO;WAAS,MAAM,IAAI;GAE7C;AAED,4GAA4G;AAC5G,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAEpD;AAGD;;GAEG;AACH,wBAAgB,YAAY,kBAY3B"}
@@ -1,6 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/ban-ts-comment */
2
2
  import React, { useCallback, useEffect, useRef, useState } from 'react';
3
- import ReactDOM from 'react-dom';
4
3
  import { isArray, isFunction } from './assertion';
5
4
  import { runIfFn } from './function';
6
5
  /**
@@ -111,10 +110,3 @@ export function useIsMounted() {
111
110
  }, []);
112
111
  return useCallback(() => isMounted.current, []);
113
112
  }
114
- /** A resolver to render a DOM node depending on React major version. */
115
- export function reactDomRender(id, content) {
116
- const wrapper = document.getElementById(id);
117
- if (!wrapper)
118
- return;
119
- ReactDOM.render(content, wrapper);
120
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veracity/vui",
3
- "version": "1.2.0-beta.2",
3
+ "version": "1.2.0",
4
4
  "description": "Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.",
5
5
  "module": "./dist/esm/index.js",
6
6
  "main": "./dist/cjs/index.js",
package/src/core/types.ts CHANGED
@@ -1,5 +1,14 @@
1
- import { ReactNode } from 'react'
1
+ import { Dispatch, ReactNode } from 'react'
2
+
3
+ import { ToastListItem } from '../toast/toast.types'
2
4
 
3
5
  export interface ChildrenProp {
4
6
  children?: ReactNode
5
7
  }
8
+
9
+ export interface VuiContext {
10
+ toasts: { list: ToastListItem[] }
11
+ addToast: (toast: ToastListItem) => void
12
+ removeToast: (id: string) => void
13
+ setPortalSlot: Dispatch<ReactNode>
14
+ }
@@ -1,5 +1,6 @@
1
1
  import { createContext } from '../../utils'
2
+ import { VuiContext } from '../types'
2
3
 
3
- const [VuiContextProvider, useVuiContext] = createContext<any>({ isOptional: true })
4
+ const [VuiContextProvider, useVuiContext] = createContext<VuiContext>({ isOptional: true })
4
5
 
5
6
  export { VuiContextProvider, useVuiContext }
@@ -1,9 +1,9 @@
1
1
  import { ToastListItem } from '../../toast/toast.types'
2
2
 
3
- export function toastsReducer(
3
+ export const toastsReducer = (
4
4
  state: { list: ToastListItem[] },
5
5
  action: { type: 'add' | 'remove'; toast: ToastListItem }
6
- ) {
6
+ ) => {
7
7
  switch (action.type) {
8
8
  case 'add': {
9
9
  return { list: [action.toast, ...state.list] }
@@ -16,3 +16,5 @@ export function toastsReducer(
16
16
  }
17
17
  }
18
18
  }
19
+
20
+ export const genericReducer = (state: any, action: any) => (state = action)
@@ -10,7 +10,7 @@ import { ToastListItem } from '../../toast/toast.types'
10
10
  import { ChildrenProp } from '../types'
11
11
  import { VuiContextProvider } from './context'
12
12
  import GlobalStyle from './globalStyle'
13
- import { toastsReducer } from './reducers'
13
+ import { genericReducer, toastsReducer } from './reducers'
14
14
  import ResetCSS from './resetCSS'
15
15
 
16
16
  type VuiProviderProps = {
@@ -29,12 +29,13 @@ const VuiProvider: FC<VuiProviderProps & ChildrenProp> = ({
29
29
  resetCSS = true,
30
30
  theme = defaultTheme as VuiTheme
31
31
  }) => {
32
- const [toasts, dispatch] = useReducer(toastsReducer, { list: [] })
32
+ const [toasts, toastsDispatch] = useReducer(toastsReducer, { list: [] })
33
+ const [portalSlot, setPortalSlot] = useReducer(genericReducer, null)
33
34
 
34
- const addToast = (toast: ToastListItem) => dispatch({ type: 'add', toast })
35
- const removeToast = (id: string) => dispatch({ type: 'remove', toast: { id } })
35
+ const addToast = (toast: ToastListItem) => toastsDispatch({ type: 'add', toast })
36
+ const removeToast = (id: string) => toastsDispatch({ type: 'remove', toast: { id } })
36
37
 
37
- const context = { toasts, addToast, removeToast }
38
+ const context = { toasts, addToast, removeToast, setPortalSlot }
38
39
 
39
40
  return (
40
41
  <VuiContextProvider value={context}>
@@ -46,6 +47,7 @@ const VuiProvider: FC<VuiProviderProps & ChildrenProp> = ({
46
47
  <PopoverStyle />
47
48
  {children}
48
49
  <Portal>
50
+ {portalSlot}
49
51
  <Toaster />
50
52
  </Portal>
51
53
  </>
@@ -11,5 +11,4 @@ export * from './dialogHeader'
11
11
  export * from './dialogIcon'
12
12
  export * from './dialogSubmitButton'
13
13
  export * from './dialogTitle'
14
- export * from './showConfirm'
15
- export * from './showPrompt'
14
+ export * from './useDialog'
@@ -0,0 +1,69 @@
1
+ import React from 'react'
2
+
3
+ import { Box } from '../box'
4
+ import { useVuiContext } from '../core'
5
+ import { Dialog } from '../dialog'
6
+ import { Input } from '../input'
7
+
8
+ export const useDialog = () => {
9
+ const { setPortalSlot } = useVuiContext()
10
+
11
+ const showConfirm = (title: string, message: string): Promise<boolean> =>
12
+ new Promise(resolve =>
13
+ setPortalSlot(
14
+ <Dialog
15
+ body={message}
16
+ cancelButton={{
17
+ onClick: () => {
18
+ resolve(false)
19
+ setPortalSlot(null)
20
+ },
21
+ text: 'Cancel'
22
+ }}
23
+ closeButton={false}
24
+ isOpen
25
+ submitButton={{
26
+ onClick: () => {
27
+ resolve(true)
28
+ setPortalSlot(null)
29
+ },
30
+ text: 'Confirm'
31
+ }}
32
+ title={title}
33
+ />
34
+ )
35
+ )
36
+
37
+ const showPrompt = (title: string, value = ''): Promise<string | false> =>
38
+ new Promise(resolve => {
39
+ let inputValue = value
40
+ setPortalSlot(
41
+ <Dialog
42
+ body={
43
+ <Box px={3} py={2}>
44
+ <Input defaultValue={value} onChange={e => (inputValue = e.target.value)} />
45
+ </Box>
46
+ }
47
+ cancelButton={{
48
+ onClick: () => {
49
+ resolve(false)
50
+ setPortalSlot(null)
51
+ },
52
+ text: 'Cancel'
53
+ }}
54
+ closeButton={false}
55
+ isOpen
56
+ submitButton={{
57
+ onClick: () => {
58
+ resolve(inputValue)
59
+ setPortalSlot(null)
60
+ },
61
+ text: 'Submit'
62
+ }}
63
+ title={title}
64
+ />
65
+ )
66
+ })
67
+
68
+ return { showConfirm, showPrompt }
69
+ }
package/src/utils/dom.ts CHANGED
@@ -12,25 +12,3 @@ export const removeElement = (id: string): void => {
12
12
  export const addBodyClass = (className: string): void => document.body.classList.add(className)
13
13
 
14
14
  export const removeBodyClass = (className: string): void => document.body.classList.remove(className)
15
-
16
- export const removeElements = (className: string): void => {
17
- const elements = document.getElementsByClassName(className)
18
- for (let i = 0, len = elements.length; i < len; i++) elements[i]?.remove?.()
19
- }
20
-
21
- export const addElementClass = (id: string, className: string): void => {
22
- const element = document.getElementById(id)
23
- element?.classList?.add?.(className)
24
- }
25
-
26
- export const removeElementClass = (id: string, className: string): void => {
27
- const element = document.getElementById(id)
28
- element?.classList?.remove?.(className)
29
- }
30
-
31
- export const appendToBody = (rootElem: HTMLElement) => document.body.appendChild(rootElem)
32
-
33
- export const addContainer = (id: string): void => {
34
- const toastContainer = document.getElementById(id)
35
- if (!toastContainer) appendToBody(addElement(id))
36
- }
@@ -3,7 +3,6 @@
3
3
  import React, {
4
4
  DependencyList,
5
5
  Dispatch,
6
- ReactElement,
7
6
  RefObject,
8
7
  SetStateAction,
9
8
  useCallback,
@@ -11,7 +10,6 @@ import React, {
11
10
  useRef,
12
11
  useState
13
12
  } from 'react'
14
- import ReactDOM from 'react-dom'
15
13
 
16
14
  import { isArray, isFunction } from './assertion'
17
15
  import { runIfFn } from './function'
@@ -172,10 +170,3 @@ export function useIsMounted() {
172
170
 
173
171
  return useCallback(() => isMounted.current, [])
174
172
  }
175
-
176
- /** A resolver to render a DOM node depending on React major version. */
177
- export function reactDomRender(id: string, content: ReactElement) {
178
- const wrapper = document.getElementById(id)
179
- if (!wrapper) return
180
- ReactDOM.render(content, wrapper)
181
- }
@@ -1,2 +0,0 @@
1
- export declare const showConfirm: (title: string, message: string) => Promise<boolean>;
2
- //# sourceMappingURL=showConfirm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"showConfirm.d.ts","sourceRoot":"","sources":["../../../src/dialog/showConfirm.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,UAAW,MAAM,WAAW,MAAM,KAAG,QAAQ,OAAO,CAqC3E,CAAA"}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.showConfirm = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const core_1 = require("../core");
9
- const dialog_1 = require("../dialog");
10
- const utils_1 = require("../utils");
11
- const consts_1 = require("./consts");
12
- const showConfirm = (title, message) => {
13
- (0, utils_1.addContainer)(consts_1.containerId);
14
- const hide = () => {
15
- (0, utils_1.removeElement)(consts_1.containerId);
16
- (0, utils_1.removeElements)(consts_1.modalClass);
17
- (0, utils_1.removeBodyClass)(consts_1.noScrollClass);
18
- };
19
- return new Promise(resolve => {
20
- const confirmDialog = (react_1.default.createElement(core_1.VuiProvider, null,
21
- react_1.default.createElement(dialog_1.Dialog, { body: message, cancelButton: {
22
- onClick: () => {
23
- resolve(false);
24
- hide();
25
- },
26
- text: 'Cancel'
27
- }, closeButton: false, isOpen: true, submitButton: {
28
- onClick: () => {
29
- resolve(true);
30
- hide();
31
- },
32
- text: 'Confirm'
33
- }, title: title })));
34
- (0, utils_1.reactDomRender)(consts_1.containerId, confirmDialog);
35
- });
36
- };
37
- exports.showConfirm = showConfirm;
@@ -1,2 +0,0 @@
1
- export declare const showPrompt: (title: string, value?: string) => Promise<string | false>;
2
- //# sourceMappingURL=showPrompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"showPrompt.d.ts","sourceRoot":"","sources":["../../../src/dialog/showPrompt.tsx"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU,UAAW,MAAM,qBAAe,QAAQ,MAAM,GAAG,KAAK,CA6C5E,CAAA"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.showPrompt = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const box_1 = require("../box");
9
- const core_1 = require("../core");
10
- const dialog_1 = require("../dialog");
11
- const input_1 = require("../input");
12
- const utils_1 = require("../utils");
13
- const consts_1 = require("./consts");
14
- const showPrompt = (title, value = '') => {
15
- const state = { value };
16
- const setValue = (value) => (state.value = value);
17
- (0, utils_1.addContainer)(consts_1.containerId);
18
- const hide = () => {
19
- (0, utils_1.removeElement)(consts_1.containerId);
20
- (0, utils_1.removeElements)(consts_1.modalClass);
21
- (0, utils_1.removeBodyClass)(consts_1.noScrollClass);
22
- };
23
- return new Promise(resolve => {
24
- const promptDialog = (react_1.default.createElement(core_1.VuiProvider, null,
25
- react_1.default.createElement(dialog_1.Dialog, { body: react_1.default.createElement(box_1.Box, { px: 3, py: 2 },
26
- react_1.default.createElement(input_1.Input, { defaultValue: value, onChange: e => setValue(e.target.value) })), cancelButton: {
27
- onClick: () => {
28
- resolve(false);
29
- hide();
30
- },
31
- text: 'Cancel'
32
- }, closeButton: false, isOpen: true, submitButton: {
33
- onClick: () => {
34
- resolve(state.value);
35
- hide();
36
- },
37
- text: 'Submit'
38
- }, title: title })));
39
- (0, utils_1.reactDomRender)(consts_1.containerId, promptDialog);
40
- });
41
- };
42
- exports.showPrompt = showPrompt;
@@ -1,2 +0,0 @@
1
- export declare const showConfirm: (title: string, message: string) => Promise<boolean>;
2
- //# sourceMappingURL=showConfirm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"showConfirm.d.ts","sourceRoot":"","sources":["../../../src/dialog/showConfirm.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,UAAW,MAAM,WAAW,MAAM,KAAG,QAAQ,OAAO,CAqC3E,CAAA"}
@@ -1,30 +0,0 @@
1
- import React from 'react';
2
- import { VuiProvider } from '../core';
3
- import { Dialog } from '../dialog';
4
- import { addContainer, reactDomRender, removeBodyClass, removeElement, removeElements } from '../utils';
5
- import { containerId, modalClass, noScrollClass } from './consts';
6
- export const showConfirm = (title, message) => {
7
- addContainer(containerId);
8
- const hide = () => {
9
- removeElement(containerId);
10
- removeElements(modalClass);
11
- removeBodyClass(noScrollClass);
12
- };
13
- return new Promise(resolve => {
14
- const confirmDialog = (React.createElement(VuiProvider, null,
15
- React.createElement(Dialog, { body: message, cancelButton: {
16
- onClick: () => {
17
- resolve(false);
18
- hide();
19
- },
20
- text: 'Cancel'
21
- }, closeButton: false, isOpen: true, submitButton: {
22
- onClick: () => {
23
- resolve(true);
24
- hide();
25
- },
26
- text: 'Confirm'
27
- }, title: title })));
28
- reactDomRender(containerId, confirmDialog);
29
- });
30
- };
@@ -1,2 +0,0 @@
1
- export declare const showPrompt: (title: string, value?: string) => Promise<string | false>;
2
- //# sourceMappingURL=showPrompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"showPrompt.d.ts","sourceRoot":"","sources":["../../../src/dialog/showPrompt.tsx"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU,UAAW,MAAM,qBAAe,QAAQ,MAAM,GAAG,KAAK,CA6C5E,CAAA"}
@@ -1,35 +0,0 @@
1
- import React from 'react';
2
- import { Box } from '../box';
3
- import { VuiProvider } from '../core';
4
- import { Dialog } from '../dialog';
5
- import { Input } from '../input';
6
- import { addContainer, reactDomRender, removeBodyClass, removeElement, removeElements } from '../utils';
7
- import { containerId, modalClass, noScrollClass } from './consts';
8
- export const showPrompt = (title, value = '') => {
9
- const state = { value };
10
- const setValue = (value) => (state.value = value);
11
- addContainer(containerId);
12
- const hide = () => {
13
- removeElement(containerId);
14
- removeElements(modalClass);
15
- removeBodyClass(noScrollClass);
16
- };
17
- return new Promise(resolve => {
18
- const promptDialog = (React.createElement(VuiProvider, null,
19
- React.createElement(Dialog, { body: React.createElement(Box, { px: 3, py: 2 },
20
- React.createElement(Input, { defaultValue: value, onChange: e => setValue(e.target.value) })), cancelButton: {
21
- onClick: () => {
22
- resolve(false);
23
- hide();
24
- },
25
- text: 'Cancel'
26
- }, closeButton: false, isOpen: true, submitButton: {
27
- onClick: () => {
28
- resolve(state.value);
29
- hide();
30
- },
31
- text: 'Submit'
32
- }, title: title })));
33
- reactDomRender(containerId, promptDialog);
34
- });
35
- };
@@ -1,45 +0,0 @@
1
- import React from 'react'
2
-
3
- import { VuiProvider } from '../core'
4
- import { Dialog } from '../dialog'
5
- import { addContainer, reactDomRender, removeBodyClass, removeElement, removeElements } from '../utils'
6
- import { containerId, modalClass, noScrollClass } from './consts'
7
-
8
- export const showConfirm = (title: string, message: string): Promise<boolean> => {
9
- addContainer(containerId)
10
-
11
- const hide = () => {
12
- removeElement(containerId)
13
- removeElements(modalClass)
14
- removeBodyClass(noScrollClass)
15
- }
16
-
17
- return new Promise(resolve => {
18
- const confirmDialog = (
19
- <VuiProvider>
20
- <Dialog
21
- body={message}
22
- cancelButton={{
23
- onClick: () => {
24
- resolve(false)
25
- hide()
26
- },
27
- text: 'Cancel'
28
- }}
29
- closeButton={false}
30
- isOpen
31
- submitButton={{
32
- onClick: () => {
33
- resolve(true)
34
- hide()
35
- },
36
- text: 'Confirm'
37
- }}
38
- title={title}
39
- />
40
- </VuiProvider>
41
- )
42
-
43
- reactDomRender(containerId, confirmDialog)
44
- })
45
- }
@@ -1,55 +0,0 @@
1
- import React from 'react'
2
-
3
- import { Box } from '../box'
4
- import { VuiProvider } from '../core'
5
- import { Dialog } from '../dialog'
6
- import { Input } from '../input'
7
- import { addContainer, reactDomRender, removeBodyClass, removeElement, removeElements } from '../utils'
8
- import { containerId, modalClass, noScrollClass } from './consts'
9
-
10
- export const showPrompt = (title: string, value = ''): Promise<string | false> => {
11
- const state = { value }
12
-
13
- const setValue = (value: string) => (state.value = value)
14
-
15
- addContainer(containerId)
16
-
17
- const hide = () => {
18
- removeElement(containerId)
19
- removeElements(modalClass)
20
- removeBodyClass(noScrollClass)
21
- }
22
-
23
- return new Promise(resolve => {
24
- const promptDialog = (
25
- <VuiProvider>
26
- <Dialog
27
- body={
28
- <Box px={3} py={2}>
29
- <Input defaultValue={value} onChange={e => setValue(e.target.value)} />
30
- </Box>
31
- }
32
- cancelButton={{
33
- onClick: () => {
34
- resolve(false)
35
- hide()
36
- },
37
- text: 'Cancel'
38
- }}
39
- closeButton={false}
40
- isOpen
41
- submitButton={{
42
- onClick: () => {
43
- resolve(state.value)
44
- hide()
45
- },
46
- text: 'Submit'
47
- }}
48
- title={title}
49
- />
50
- </VuiProvider>
51
- )
52
-
53
- reactDomRender(containerId, promptDialog)
54
- })
55
- }