@toptal/picasso-modal 2.0.10 → 3.0.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 (50) hide show
  1. package/dist-package/src/Modal/Modal.d.ts +5 -5
  2. package/dist-package/src/Modal/Modal.d.ts.map +1 -1
  3. package/dist-package/src/Modal/Modal.js +22 -21
  4. package/dist-package/src/Modal/Modal.js.map +1 -1
  5. package/dist-package/src/ModalActions/ModalActions.d.ts.map +1 -1
  6. package/dist-package/src/ModalActions/ModalActions.js +1 -7
  7. package/dist-package/src/ModalActions/ModalActions.js.map +1 -1
  8. package/dist-package/src/ModalCompound/index.d.ts +1 -1
  9. package/dist-package/src/ModalContent/ModalContent.d.ts.map +1 -1
  10. package/dist-package/src/ModalContent/ModalContent.js +6 -10
  11. package/dist-package/src/ModalContent/ModalContent.js.map +1 -1
  12. package/dist-package/src/ModalPaper/ModalPaper.d.ts +13 -0
  13. package/dist-package/src/ModalPaper/ModalPaper.d.ts.map +1 -0
  14. package/dist-package/src/ModalPaper/ModalPaper.js +43 -0
  15. package/dist-package/src/ModalPaper/ModalPaper.js.map +1 -0
  16. package/dist-package/src/ModalPaper/index.d.ts +2 -0
  17. package/dist-package/src/ModalPaper/index.d.ts.map +1 -0
  18. package/dist-package/src/ModalPaper/index.js +2 -0
  19. package/dist-package/src/ModalPaper/index.js.map +1 -0
  20. package/dist-package/src/ModalTitle/ModalTitle.d.ts.map +1 -1
  21. package/dist-package/src/ModalTitle/ModalTitle.js +1 -5
  22. package/dist-package/src/ModalTitle/ModalTitle.js.map +1 -1
  23. package/package.json +9 -5
  24. package/src/Modal/Modal.tsx +57 -48
  25. package/src/Modal/__snapshots__/test.tsx.snap +111 -134
  26. package/src/ModalActions/ModalActions.tsx +1 -10
  27. package/src/ModalContent/ModalContent.tsx +24 -13
  28. package/src/ModalPaper/ModalPaper.tsx +70 -0
  29. package/src/ModalPaper/index.ts +1 -0
  30. package/src/ModalTitle/ModalTitle.tsx +1 -9
  31. package/dist-package/src/Modal/styles.d.ts +0 -4
  32. package/dist-package/src/Modal/styles.d.ts.map +0 -1
  33. package/dist-package/src/Modal/styles.js +0 -67
  34. package/dist-package/src/Modal/styles.js.map +0 -1
  35. package/dist-package/src/ModalActions/styles.d.ts +0 -3
  36. package/dist-package/src/ModalActions/styles.d.ts.map +0 -1
  37. package/dist-package/src/ModalActions/styles.js +0 -8
  38. package/dist-package/src/ModalActions/styles.js.map +0 -1
  39. package/dist-package/src/ModalContent/styles.d.ts +0 -4
  40. package/dist-package/src/ModalContent/styles.d.ts.map +0 -1
  41. package/dist-package/src/ModalContent/styles.js +0 -31
  42. package/dist-package/src/ModalContent/styles.js.map +0 -1
  43. package/dist-package/src/ModalTitle/styles.d.ts +0 -3
  44. package/dist-package/src/ModalTitle/styles.d.ts.map +0 -1
  45. package/dist-package/src/ModalTitle/styles.js +0 -8
  46. package/dist-package/src/ModalTitle/styles.js.map +0 -1
  47. package/src/Modal/styles.ts +0 -75
  48. package/src/ModalActions/styles.ts +0 -9
  49. package/src/ModalContent/styles.ts +0 -43
  50. package/src/ModalTitle/styles.ts +0 -9
@@ -1,10 +1,9 @@
1
1
  import type { ReactNode, HTMLAttributes } from 'react';
2
2
  import React from 'react';
3
- import type { PaperProps } from '@material-ui/core/Paper';
4
- import type { StandardProps, SizeType, TransitionProps } from '@toptal/picasso-shared';
3
+ import type { BaseProps, SizeType, TransitionProps } from '@toptal/picasso-shared';
5
4
  declare type ContainerValue = HTMLElement | (() => HTMLElement);
6
5
  declare type Alignment = 'top' | 'centered';
7
- export interface Props extends StandardProps, HTMLAttributes<HTMLDivElement> {
6
+ export interface Props extends BaseProps, HTMLAttributes<HTMLDivElement> {
8
7
  /** Content of Modal component */
9
8
  children: ReactNode;
10
9
  /** Whether modal should be displayed */
@@ -28,11 +27,12 @@ export interface Props extends StandardProps, HTMLAttributes<HTMLDivElement> {
28
27
  /** Animation lifecycle callbacks. Backed by [react-transition-group/Transition](https://reactcommunity.org/react-transition-group/transition#Transition-props) */
29
28
  transitionProps?: TransitionProps;
30
29
  transitionDuration?: number;
31
- paperProps?: PaperProps;
30
+ /** used for specifying aria attributes, changing role, or customizing styles */
31
+ paperProps?: React.HTMLAttributes<HTMLDivElement>;
32
32
  testIds?: {
33
33
  closeButton?: string;
34
34
  };
35
35
  }
36
- export declare const Modal: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLElement>>;
36
+ export declare const Modal: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
37
37
  export default Modal;
38
38
  //# sourceMappingURL=Modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAMN,MAAM,OAAO,CAAA;AAId,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,eAAe,EAChB,MAAM,wBAAwB,CAAA;AAiB/B,aAAK,cAAc,GAAG,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAA;AACvD,aAAK,SAAS,GAAG,KAAK,GAAG,UAAU,CAAA;AAEnC,MAAM,WAAW,KAAM,SAAQ,aAAa,EAAE,cAAc,CAAC,cAAc,CAAC;IAC1E,iCAAiC;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAA;IACb,qBAAqB;IACrB,IAAI,CAAC,EACD,QAAQ,CAAC,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,GAC5D,aAAa,CAAA;IACjB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,2GAA2G;IAC3G,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,kKAAkK;IAClK,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAwDD,eAAO,MAAM,KAAK,2EAyIhB,CAAA;AAYF,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtD,OAAO,KAMN,MAAM,OAAO,CAAA;AAEd,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,eAAe,EAChB,MAAM,wBAAwB,CAAA;AAe/B,aAAK,cAAc,GAAG,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAA;AACvD,aAAK,SAAS,GAAG,KAAK,GAAG,UAAU,CAAA;AAEnC,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;IACtE,iCAAiC;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAA;IACb,qBAAqB;IACrB,IAAI,CAAC,EACD,QAAQ,CAAC,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,GAC5D,aAAa,CAAA;IACjB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,2GAA2G;IAC3G,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,kKAAkK;IAClK,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gFAAgF;IAChF,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;IACjD,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAuDD,eAAO,MAAM,KAAK,8EAuJhB,CAAA;AAYF,eAAe,KAAK,CAAA"}
@@ -9,19 +9,17 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
+ import { Modal as Dialog } from '@mui/base/Modal';
12
13
  import React, { forwardRef, useEffect, useRef, useCallback, useContext, } from 'react';
13
- import { makeStyles } from '@material-ui/core/styles';
14
- import { Dialog } from '@material-ui/core';
15
14
  import cx from 'classnames';
16
- import { usePicassoRoot, useBreakpoint, RootContext, } from '@toptal/picasso-provider';
15
+ import { usePicassoRoot, RootContext } from '@toptal/picasso-provider';
17
16
  import { CloseMinor16 } from '@toptal/picasso-icons';
18
17
  import { useCombinedRefs, ModalManager, usePageScrollLock, } from '@toptal/picasso-utils';
19
18
  import { ButtonCircular } from '@toptal/picasso-button';
19
+ import { Fade } from '@toptal/picasso-fade';
20
+ import { Backdrop } from '@toptal/picasso-backdrop';
20
21
  import ModalContext from '@toptal/picasso-modal-context';
21
- import styles from './styles';
22
- const useStyles = makeStyles(styles, {
23
- name: 'PicassoModal',
24
- });
22
+ import { ModalPaper } from '../ModalPaper';
25
23
  const defaultManager = new ModalManager();
26
24
  // https://github.com/udacity/ud891/blob/gh-pages/lesson2-focus/07-modals-and-keyboard-traps/solution/modal.js#L25
27
25
  // found in https://developers.google.com/web/fundamentals/accessibility/focus/using-tabindex
@@ -31,7 +29,9 @@ const focusFirstFocusableElement = (node) => {
31
29
  const elements = node.querySelectorAll(focusableElementsString);
32
30
  // Convert NodeList to Array
33
31
  const focusableElements = Array.prototype.slice.call(elements);
34
- focusableElements[0].focus();
32
+ if (focusableElements.length > 0) {
33
+ focusableElements[0].focus();
34
+ }
35
35
  };
36
36
  const isFocusInsideModal = (modalNode) => {
37
37
  const modalContainsFocusedElement = modalNode.contains(document.activeElement);
@@ -58,7 +58,6 @@ const generateKey = (() => {
58
58
  // eslint-disable-next-line react/display-name
59
59
  export const Modal = forwardRef(function Modal(props, ref) {
60
60
  const { children, open, size = 'medium', onBackdropClick, onClose, onOpen, className, style, container, hideBackdrop = false, transitionDuration = 300, paperProps, align = 'centered', testIds, transitionProps, disableBackdropClick = false } = props, rest = __rest(props, ["children", "open", "size", "onBackdropClick", "onClose", "onOpen", "className", "style", "container", "hideBackdrop", "transitionDuration", "paperProps", "align", "testIds", "transitionProps", "disableBackdropClick"]);
61
- const classes = useStyles(props);
62
61
  const picassoRootContainer = usePicassoRoot();
63
62
  const modalRef = useCombinedRefs(ref, useRef(null));
64
63
  const modalId = useRef(generateKey());
@@ -100,7 +99,6 @@ export const Modal = forwardRef(function Modal(props, ref) {
100
99
  };
101
100
  }, [open]);
102
101
  usePageScrollLock(open);
103
- const isExtraSmall = useBreakpoint('xs');
104
102
  const handleClose = useCallback((_event, reason) => {
105
103
  if (reason === 'escapeKeyDown' && onClose) {
106
104
  onClose();
@@ -114,17 +112,20 @@ export const Modal = forwardRef(function Modal(props, ref) {
114
112
  }
115
113
  }
116
114
  }, [disableBackdropClick, onBackdropClick, onClose]);
117
- return (React.createElement(Dialog, Object.assign({}, rest, { ref: modalRef, classes: {
118
- root: classes.root,
119
- container: classes.container,
120
- paper: cx(classes.paper, classes[size], {
121
- [classes.topAlignedDialog]: align === 'top',
122
- }),
123
- }, className: className, style: style, fullScreen: isExtraSmall, container: container || picassoRootContainer, PaperProps: Object.assign(Object.assign({}, paperProps), { elevation: 2 }), hideBackdrop: hideBackdrop, onClose: handleClose, onEnter: onOpen, open: open, transitionDuration: transitionDuration, maxWidth: false, disableEnforceFocus // we need our own mechanism to keep focus inside the Modals
124
- : true, TransitionProps: transitionProps, disableScrollLock: true }),
125
- React.createElement(ModalContext.Provider, { value: true }, children),
126
- onClose && (React.createElement(ButtonCircular, { variant: 'flat', className: 'absolute right-[2em] top-[2em]', onClick: onClose, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.closeButton },
127
- React.createElement(CloseMinor16, null)))));
115
+ const duration = (transitionProps === null || transitionProps === void 0 ? void 0 : transitionProps.timeout) || transitionDuration;
116
+ const backdropProps = { transitionDuration: duration };
117
+ return (React.createElement(Dialog, Object.assign({}, rest, { ref: modalRef, className: cx(className, 'fixed z-modal inset-0 flex flex-col text-lg leading-[normal] justify-center items-center'), style: style, slots: {
118
+ backdrop: Backdrop,
119
+ }, closeAfterTransition: true, slotProps: {
120
+ backdrop: backdropProps,
121
+ }, container: container || picassoRootContainer, hideBackdrop: hideBackdrop, onClose: handleClose, open: open, disableEnforceFocus // we need our own mechanism to keep focus inside the Modals
122
+ : true, disableScrollLock: true }),
123
+ React.createElement(Fade, { in: open, onEnter: onOpen, onExited: transitionProps === null || transitionProps === void 0 ? void 0 : transitionProps.onExited, timeout: transitionDuration },
124
+ React.createElement(ModalPaper, Object.assign({ size: size, align: align, tabIndex: -1 }, paperProps),
125
+ React.createElement(ModalContext.Provider, { value: true },
126
+ children,
127
+ onClose && (React.createElement(ButtonCircular, { "aria-label": 'Close', variant: 'flat', className: 'absolute top-8 right-8', onClick: onClose, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.closeButton },
128
+ React.createElement(CloseMinor16, null))))))));
128
129
  });
129
130
  Modal.defaultProps = {
130
131
  hideBackdrop: false,
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/Modal/Modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/Modal/Modal.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModalActions.d.ts","sourceRoot":"","sources":["../../../src/ModalActions/ModalActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAIvD,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;IACtE,oCAAoC;IACpC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAMD,eAAO,MAAM,YAAY,8EAgBxB,CAAA;AAID,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"ModalActions.d.ts","sourceRoot":"","sources":["../../../src/ModalActions/ModalActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;IACtE,oCAAoC;IACpC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,YAAY,8EAexB,CAAA;AAID,eAAe,YAAY,CAAA"}
@@ -10,16 +10,10 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import React, { forwardRef } from 'react';
13
- import { makeStyles } from '@material-ui/core/styles';
14
13
  import cx from 'classnames';
15
- import styles from './styles';
16
- const useStyles = makeStyles(styles, {
17
- name: 'PicassoModalAction',
18
- });
19
14
  export const ModalActions = forwardRef(function ModalActions(props, ref) {
20
15
  const { children, className, style } = props, rest = __rest(props, ["children", "className", "style"]);
21
- const classes = useStyles();
22
- return (React.createElement("div", Object.assign({}, rest, { ref: ref, className: cx(classes.root, className), style: style }), children));
16
+ return (React.createElement("div", Object.assign({}, rest, { ref: ref, className: cx('mt-0 mx-8 mb-8 text-right', className), style: style }), children));
23
17
  });
24
18
  ModalActions.displayName = 'ModalActions';
25
19
  export default ModalActions;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalActions.js","sourceRoot":"","sources":["../../../src/ModalActions/ModalActions.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,MAAM,YAAY,CAAA;AAG3B,OAAO,MAAM,MAAM,UAAU,CAAA;AAO7B,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE;IAC1C,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG;IAC9B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA/C,kCAAuC,CAAQ,CAAA;IACrD,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,OAAO,CACL,6CACM,IAAI,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EACtC,KAAK,EAAE,KAAK,KAEX,QAAQ,CACL,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAED,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAEzC,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"ModalActions.js","sourceRoot":"","sources":["../../../src/ModalActions/ModalActions.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;AAQ3B,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG;IAC9B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA/C,kCAAuC,CAAQ,CAAA;IAErD,OAAO,CACL,6CACM,IAAI,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,EACrD,KAAK,EAAE,KAAK,KAEX,QAAQ,CACL,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAED,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAEzC,eAAe,YAAY,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- export declare const ModalCompound: import("react").ForwardRefExoticComponent<import("../Modal").Props & import("react").RefAttributes<HTMLElement>> & {
2
+ export declare const ModalCompound: import("react").ForwardRefExoticComponent<import("../Modal").Props & import("react").RefAttributes<HTMLDivElement>> & {
3
3
  Content: import("react").ForwardRefExoticComponent<import("../ModalContent/ModalContent").Props & import("react").RefAttributes<HTMLDivElement>>;
4
4
  Actions: import("react").ForwardRefExoticComponent<import("../ModalActions/ModalActions").Props & import("react").RefAttributes<HTMLDivElement>>;
5
5
  Title: import("react").ForwardRefExoticComponent<import("../ModalTitle/ModalTitle").Props & import("react").RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalContent.d.ts","sourceRoot":"","sources":["../../../src/ModalContent/ModalContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAMvD,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;IACtE,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAMD,eAAO,MAAM,YAAY,8EA6BxB,CAAA;AAID,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"ModalContent.d.ts","sourceRoot":"","sources":["../../../src/ModalContent/ModalContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAKvD,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;IACtE,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAA;CACpB;AACD,eAAO,MAAM,YAAY,8EAgDxB,CAAA;AAID,eAAe,YAAY,CAAA"}
@@ -10,14 +10,9 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import React, { forwardRef } from 'react';
13
- import { makeStyles } from '@material-ui/core/styles';
14
13
  import cx from 'classnames';
15
14
  import { useCombinedRefs } from '@toptal/picasso-utils';
16
- import styles from './styles';
17
15
  import useScrollableShades from './hooks/use-scrollable-shades';
18
- const useStyles = makeStyles(styles, {
19
- name: 'PicassoModalContent',
20
- });
21
16
  export const ModalContent = forwardRef(function ModalContent(props, ref) {
22
17
  const { children, className, style } = props, rest = __rest(props
23
18
  /**
@@ -31,11 +26,12 @@ export const ModalContent = forwardRef(function ModalContent(props, ref) {
31
26
  */
32
27
  const modalContentRef = useCombinedRefs(ref);
33
28
  const { top, bottom } = useScrollableShades(modalContentRef);
34
- const classes = useStyles();
35
- return (React.createElement("div", { className: cx(classes.wrapper) },
36
- top && React.createElement("div", { className: cx(classes.topShade) }),
37
- bottom && React.createElement("div", { className: cx(classes.bottomShade) }),
38
- React.createElement("div", Object.assign({}, rest, { style: style, ref: modalContentRef, className: cx(classes.modalContent, className) }), children)));
29
+ const shadeClasses = 'z-[1] absolute pointer-events-none right-8 left-8 h-[112px]';
30
+ const gradientClasses = 'from-white to-transparent to-100% from-0% via-[2rem] via-white';
31
+ return (React.createElement("div", { className: 'flex relative flex-auto overflow-y-hidden' },
32
+ top && (React.createElement("div", { className: cx(shadeClasses, gradientClasses, 'top-0 bg-gradient-to-b') })),
33
+ bottom && (React.createElement("div", { className: cx(shadeClasses, gradientClasses, 'bottom-0 bg-gradient-to-t') })),
34
+ React.createElement("div", Object.assign({}, rest, { style: style, ref: modalContentRef, className: cx('pt-6 px-8 pb-8 overflow-auto flex-auto', className) }), children)));
39
35
  });
40
36
  ModalContent.displayName = 'ModalContent';
41
37
  export default ModalContent;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalContent.js","sourceRoot":"","sources":["../../../src/ModalContent/ModalContent.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,mBAAmB,MAAM,+BAA+B,CAAA;AAO/D,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE;IAC1C,IAAI,EAAE,qBAAqB;CAC5B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG;IAC9B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK;IAErD;;;OAGG;MALG,kCAAuC,CAAQ,CAAA;IAErD;;;OAGG;IACH,MAAM,eAAe,GAAG,eAAe,CAAiB,GAAG,CAAC,CAAA;IAE5D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAA;IAE5D,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,OAAO,CACL,6BAAK,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QAChC,GAAG,IAAI,6BAAK,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAI;QAC/C,MAAM,IAAI,6BAAK,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAI;QACtD,6CACM,IAAI,IACR,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,KAE7C,QAAQ,CACL,CACF,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAED,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAEzC,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"ModalContent.js","sourceRoot":"","sources":["../../../src/ModalContent/ModalContent.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,mBAAmB,MAAM,+BAA+B,CAAA;AAM/D,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG;IAC9B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK;IAErD;;;OAGG;MALG,kCAAuC,CAAQ,CAAA;IAErD;;;OAGG;IACH,MAAM,eAAe,GAAG,eAAe,CAAiB,GAAG,CAAC,CAAA;IAE5D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAA;IAE5D,MAAM,YAAY,GAChB,6DAA6D,CAAA;IAC/D,MAAM,eAAe,GACnB,gEAAgE,CAAA;IAElE,OAAO,CACL,6BAAK,SAAS,EAAC,2CAA2C;QACvD,GAAG,IAAI,CACN,6BACE,SAAS,EAAE,EAAE,CACX,YAAY,EACZ,eAAe,EACf,wBAAwB,CACzB,GACD,CACH;QACA,MAAM,IAAI,CACT,6BACE,SAAS,EAAE,EAAE,CACX,YAAY,EACZ,eAAe,EACf,2BAA2B,CAC5B,GACD,CACH;QACD,6CACM,IAAI,IACR,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,EAAE,CAAC,wCAAwC,EAAE,SAAS,CAAC,KAEjE,QAAQ,CACL,CACF,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAED,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAEzC,eAAe,YAAY,CAAA"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { SizeType } from '@toptal/picasso-shared';
3
+ declare type PaperSize = SizeType<'xsmall' | 'small' | 'medium' | 'large' | 'xlarge'> | 'full-screen';
4
+ declare type Alignment = 'top' | 'centered';
5
+ interface Props extends React.HTMLAttributes<HTMLDivElement> {
6
+ align: Alignment;
7
+ children: React.ReactNode;
8
+ /** Width of modal */
9
+ size: PaperSize;
10
+ }
11
+ export declare const ModalPaper: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
12
+ export default ModalPaper;
13
+ //# sourceMappingURL=ModalPaper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalPaper.d.ts","sourceRoot":"","sources":["../../../src/ModalPaper/ModalPaper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGtD,aAAK,SAAS,GACV,QAAQ,CAAC,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,GAC5D,aAAa,CAAA;AACjB,aAAK,SAAS,GAAG,KAAK,GAAG,UAAU,CAAA;AAEnC,UAAU,KAAM,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1D,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,qBAAqB;IACrB,IAAI,EAAE,SAAS,CAAA;CAChB;AA+BD,eAAO,MAAM,UAAU,8EAqBtB,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,43 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React from 'react';
13
+ import cx from 'classnames';
14
+ import { Paper } from '@toptal/picasso-paper';
15
+ const fullscreenClasses = `h-full w-full max-h-full max-w-full`;
16
+ const defaultClasses = `m-4 sm:h-auto sm:m-8 max-w-[calc(100%_-_2rem)] sm:max-w-[calc(100%_-_6rem)] rounded-md`;
17
+ const sizeBasedClasses = {
18
+ xsmall: `${defaultClasses} w-[20.5rem]`,
19
+ small: `${defaultClasses} w-[32.5rem]`,
20
+ medium: `${defaultClasses} w-[40.625rem]`,
21
+ large: `${defaultClasses} w-[50rem]`,
22
+ xlarge: `${defaultClasses} w-[75rem]`,
23
+ 'full-screen': fullscreenClasses,
24
+ };
25
+ const alignBasedClasses = {
26
+ centered: 'relative',
27
+ top: 'absolute top-0',
28
+ };
29
+ const getMaxHeightClass = (size, align) => {
30
+ if (size === 'full-screen') {
31
+ return 'max-h-full';
32
+ }
33
+ if (align === 'top') {
34
+ return `max-h-[calc(100%_-_2rem)] sm:max-h-[calc(100%_-_4rem)]`;
35
+ }
36
+ return `max-h-[calc(100%_-_2rem)] sm:max-h-[calc(100%_-_6rem)]`;
37
+ };
38
+ export const ModalPaper = React.forwardRef(function ModalPaper(_a, ref) {
39
+ var { children, size, align, className } = _a, props = __rest(_a, ["children", "size", "align", "className"]);
40
+ return (React.createElement(Paper, Object.assign({ ref: ref, role: 'dialog', elevation: 2, className: cx(className, 'outline-none overflow-y-auto', 'flex flex-col', sizeBasedClasses[size], alignBasedClasses[align], getMaxHeightClass(size, align)) }, props), children));
41
+ });
42
+ export default ModalPaper;
43
+ //# sourceMappingURL=ModalPaper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalPaper.js","sourceRoot":"","sources":["../../../src/ModalPaper/ModalPaper.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAc7C,MAAM,iBAAiB,GAAG,qCAAqC,CAAA;AAC/D,MAAM,cAAc,GAAG,wFAAwF,CAAA;AAE/G,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE,GAAG,cAAc,cAAc;IACvC,KAAK,EAAE,GAAG,cAAc,cAAc;IACtC,MAAM,EAAE,GAAG,cAAc,gBAAgB;IACzC,KAAK,EAAE,GAAG,cAAc,YAAY;IACpC,MAAM,EAAE,GAAG,cAAc,YAAY;IACrC,aAAa,EAAE,iBAAiB;CACjC,CAAA;AAED,MAAM,iBAAiB,GAAG;IACxB,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,gBAAgB;CACtB,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,IAAe,EAAE,KAAgB,EAAE,EAAE;IAC9D,IAAI,IAAI,KAAK,aAAa,EAAE;QAC1B,OAAO,YAAY,CAAA;KACpB;IAED,IAAI,KAAK,KAAK,KAAK,EAAE;QACnB,OAAO,wDAAwD,CAAA;KAChE;IAED,OAAO,wDAAwD,CAAA;AACjE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACxC,SAAS,UAAU,CAAC,EAA8C,EAAE,GAAG;QAAnD,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,OAAY,EAAP,KAAK,cAA5C,0CAA8C,CAAF;IAC9D,OAAO,CACL,oBAAC,KAAK,kBACJ,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,EACZ,SAAS,EAAE,EAAE,CACX,SAAS,EACT,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,CAAC,IAAI,CAAC,EACtB,iBAAiB,CAAC,KAAK,CAAC,EACxB,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAC/B,IACG,KAAK,GAER,QAAQ,CACH,CACT,CAAA;AACH,CAAC,CACF,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { ModalPaper } from './ModalPaper';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ModalPaper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { ModalPaper } from './ModalPaper';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ModalPaper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModalTitle.d.ts","sourceRoot":"","sources":["../../../src/ModalTitle/ModalTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAKvD,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;IACtE,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAID,eAAO,MAAM,UAAU,8EAoBrB,CAAA;AAIF,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"ModalTitle.d.ts","sourceRoot":"","sources":["../../../src/ModalTitle/ModalTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGvD,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,cAAc,CAAC;IACtE,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,UAAU,8EAkBrB,CAAA;AAIF,eAAe,UAAU,CAAA"}
@@ -10,15 +10,11 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import React, { forwardRef } from 'react';
13
- import { makeStyles } from '@material-ui/core/styles';
14
13
  import cx from 'classnames';
15
14
  import { Typography } from '@toptal/picasso-typography';
16
- import styles from './styles';
17
- const useStyles = makeStyles(styles, { name: 'PicassoModalTitle' });
18
15
  export const ModalTitle = forwardRef(function ModalTitle(props, ref) {
19
16
  const { children, className, style } = props, rest = __rest(props, ["children", "className", "style"]);
20
- const classes = useStyles();
21
- return (React.createElement("div", Object.assign({}, rest, { ref: ref, className: cx(classes.root, className), style: style }),
17
+ return (React.createElement("div", Object.assign({}, rest, { ref: ref, className: cx('pr-6 mt-8 mx-8 mb-0', className), style: style }),
22
18
  React.createElement(Typography, { variant: 'heading', size: 'large' }, children)));
23
19
  });
24
20
  ModalTitle.displayName = 'ModalTitle';
@@ -1 +1 @@
1
- {"version":3,"file":"ModalTitle.js","sourceRoot":"","sources":["../../../src/ModalTitle/ModalTitle.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,MAAM,MAAM,UAAU,CAAA;AAO7B,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAwB,SAAS,UAAU,CAC7E,KAAK,EACL,GAAG;IAEH,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA/C,kCAAuC,CAAQ,CAAA;IAErD,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,OAAO,CACL,6CACM,IAAI,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EACtC,KAAK,EAAE,KAAK;QAEZ,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,IACvC,QAAQ,CACE,CACT,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"ModalTitle.js","sourceRoot":"","sources":["../../../src/ModalTitle/ModalTitle.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAOvD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAwB,SAAS,UAAU,CAC7E,KAAK,EACL,GAAG;IAEH,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA/C,kCAAuC,CAAQ,CAAA;IAErD,OAAO,CACL,6CACM,IAAI,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,EAC/C,KAAK,EAAE,KAAK;QAEZ,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,IACvC,QAAQ,CACE,CACT,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,eAAe,UAAU,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso-modal",
3
- "version": "2.0.10",
3
+ "version": "3.0.0",
4
4
  "description": "Toptal UI components library - Modal",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -22,9 +22,14 @@
22
22
  },
23
23
  "homepage": "https://github.com/toptal/picasso/tree/master/packages/picasso#readme",
24
24
  "dependencies": {
25
- "@toptal/picasso-button": "2.1.1",
25
+ "@mui/base": "5.0.0-beta.40",
26
+ "@toptal/picasso-backdrop": "1.0.5",
27
+ "@toptal/picasso-fade": "1.0.5",
28
+ "@toptal/picasso-paper": "3.0.0",
29
+ "@toptal/picasso-shared": "15.0.0",
30
+ "@toptal/picasso-button": "3.0.0",
26
31
  "@toptal/picasso-icons": "1.5.0",
27
- "@toptal/picasso-typography": "2.0.2",
32
+ "@toptal/picasso-typography": "3.0.0",
28
33
  "@toptal/picasso-utils": "1.0.3",
29
34
  "@toptal/picasso-modal-context": "1.0.1",
30
35
  "classnames": "^2.5.1",
@@ -35,7 +40,6 @@
35
40
  "**/styles.js"
36
41
  ],
37
42
  "peerDependencies": {
38
- "@material-ui/core": "4.12.4",
39
43
  "@toptal/picasso-provider": "*",
40
44
  "react": ">=16.12.0 < 19.0.0",
41
45
  "@toptal/picasso-tailwind": ">=2.5.0"
@@ -44,7 +48,7 @@
44
48
  ".": "./dist-package/src/index.js"
45
49
  },
46
50
  "devDependencies": {
47
- "@toptal/picasso-provider": "4.2.1",
51
+ "@toptal/picasso-provider": "5.0.0",
48
52
  "@toptal/picasso-test-utils": "1.1.1"
49
53
  },
50
54
  "files": [
@@ -1,4 +1,5 @@
1
1
  import type { ReactNode, HTMLAttributes } from 'react'
2
+ import { Modal as Dialog } from '@mui/base/Modal'
2
3
  import React, {
3
4
  forwardRef,
4
5
  useEffect,
@@ -6,21 +7,13 @@ import React, {
6
7
  useCallback,
7
8
  useContext,
8
9
  } from 'react'
9
- import type { Theme } from '@material-ui/core/styles'
10
- import { makeStyles } from '@material-ui/core/styles'
11
- import { Dialog } from '@material-ui/core'
12
- import type { PaperProps } from '@material-ui/core/Paper'
13
10
  import cx from 'classnames'
14
11
  import type {
15
- StandardProps,
12
+ BaseProps,
16
13
  SizeType,
17
14
  TransitionProps,
18
15
  } from '@toptal/picasso-shared'
19
- import {
20
- usePicassoRoot,
21
- useBreakpoint,
22
- RootContext,
23
- } from '@toptal/picasso-provider'
16
+ import { usePicassoRoot, RootContext } from '@toptal/picasso-provider'
24
17
  import { CloseMinor16 } from '@toptal/picasso-icons'
25
18
  import {
26
19
  useCombinedRefs,
@@ -28,14 +21,16 @@ import {
28
21
  usePageScrollLock,
29
22
  } from '@toptal/picasso-utils'
30
23
  import { ButtonCircular } from '@toptal/picasso-button'
24
+ import { Fade } from '@toptal/picasso-fade'
25
+ import { Backdrop } from '@toptal/picasso-backdrop'
31
26
  import ModalContext from '@toptal/picasso-modal-context'
32
27
 
33
- import styles from './styles'
28
+ import { ModalPaper } from '../ModalPaper'
34
29
 
35
30
  type ContainerValue = HTMLElement | (() => HTMLElement)
36
31
  type Alignment = 'top' | 'centered'
37
32
 
38
- export interface Props extends StandardProps, HTMLAttributes<HTMLDivElement> {
33
+ export interface Props extends BaseProps, HTMLAttributes<HTMLDivElement> {
39
34
  /** Content of Modal component */
40
35
  children: ReactNode
41
36
  /** Whether modal should be displayed */
@@ -61,15 +56,13 @@ export interface Props extends StandardProps, HTMLAttributes<HTMLDivElement> {
61
56
  /** Animation lifecycle callbacks. Backed by [react-transition-group/Transition](https://reactcommunity.org/react-transition-group/transition#Transition-props) */
62
57
  transitionProps?: TransitionProps
63
58
  transitionDuration?: number
64
- paperProps?: PaperProps
59
+ /** used for specifying aria attributes, changing role, or customizing styles */
60
+ paperProps?: React.HTMLAttributes<HTMLDivElement>
65
61
  testIds?: {
66
62
  closeButton?: string
67
63
  }
68
64
  }
69
65
 
70
- const useStyles = makeStyles<Theme, Props>(styles, {
71
- name: 'PicassoModal',
72
- })
73
66
  const defaultManager = new ModalManager()
74
67
 
75
68
  // https://github.com/udacity/ud891/blob/gh-pages/lesson2-focus/07-modals-and-keyboard-traps/solution/modal.js#L25
@@ -83,7 +76,9 @@ const focusFirstFocusableElement = (node: Element) => {
83
76
  // Convert NodeList to Array
84
77
  const focusableElements = Array.prototype.slice.call(elements)
85
78
 
86
- focusableElements[0].focus()
79
+ if (focusableElements.length > 0) {
80
+ focusableElements[0].focus()
81
+ }
87
82
  }
88
83
 
89
84
  const isFocusInsideModal = (modalNode: Element) => {
@@ -121,7 +116,10 @@ const generateKey = (() => {
121
116
  })()
122
117
 
123
118
  // eslint-disable-next-line react/display-name
124
- export const Modal = forwardRef<HTMLElement, Props>(function Modal(props, ref) {
119
+ export const Modal = forwardRef<HTMLDivElement, Props>(function Modal(
120
+ props,
121
+ ref
122
+ ) {
125
123
  const {
126
124
  children,
127
125
  open,
@@ -141,9 +139,11 @@ export const Modal = forwardRef<HTMLElement, Props>(function Modal(props, ref) {
141
139
  disableBackdropClick = false,
142
140
  ...rest
143
141
  } = props
144
- const classes = useStyles(props)
145
142
  const picassoRootContainer = usePicassoRoot()
146
- const modalRef = useCombinedRefs<HTMLElement>(ref, useRef<HTMLElement>(null))
143
+ const modalRef = useCombinedRefs<HTMLDivElement>(
144
+ ref,
145
+ useRef<HTMLDivElement>(null)
146
+ )
147
147
  const modalId = useRef(generateKey())
148
148
  const { rootRef } = useContext(RootContext)
149
149
 
@@ -199,8 +199,6 @@ export const Modal = forwardRef<HTMLElement, Props>(function Modal(props, ref) {
199
199
 
200
200
  usePageScrollLock(open)
201
201
 
202
- const isExtraSmall = useBreakpoint('xs')
203
-
204
202
  const handleClose = useCallback(
205
203
  (_event, reason: 'backdropClick' | 'escapeKeyDown') => {
206
204
  if (reason === 'escapeKeyDown' && onClose) {
@@ -218,44 +216,55 @@ export const Modal = forwardRef<HTMLElement, Props>(function Modal(props, ref) {
218
216
  [disableBackdropClick, onBackdropClick, onClose]
219
217
  )
220
218
 
219
+ const duration = transitionProps?.timeout || transitionDuration
220
+ const backdropProps = { transitionDuration: duration }
221
+
221
222
  return (
222
223
  <Dialog
223
224
  {...rest}
224
225
  ref={modalRef}
225
- classes={{
226
- root: classes.root,
227
- container: classes.container,
228
- paper: cx(classes.paper, classes[size], {
229
- [classes.topAlignedDialog]: align === 'top',
230
- }),
231
- }}
232
- className={className}
226
+ className={cx(
227
+ className,
228
+ 'fixed z-modal inset-0 flex flex-col text-lg leading-[normal] justify-center items-center'
229
+ )}
233
230
  style={style}
234
- fullScreen={isExtraSmall}
231
+ slots={{
232
+ backdrop: Backdrop,
233
+ }}
234
+ closeAfterTransition
235
+ slotProps={{
236
+ backdrop: backdropProps,
237
+ }}
235
238
  container={container || picassoRootContainer}
236
- PaperProps={{ ...paperProps, elevation: 2 }}
237
239
  hideBackdrop={hideBackdrop}
238
240
  onClose={handleClose}
239
- onEnter={onOpen}
240
241
  open={open}
241
- transitionDuration={transitionDuration}
242
- maxWidth={false}
243
242
  disableEnforceFocus // we need our own mechanism to keep focus inside the Modals
244
- TransitionProps={transitionProps}
245
243
  disableScrollLock
246
244
  >
247
- <ModalContext.Provider value>{children}</ModalContext.Provider>
248
-
249
- {onClose && (
250
- <ButtonCircular
251
- variant='flat'
252
- className='absolute right-[2em] top-[2em]'
253
- onClick={onClose}
254
- data-testid={testIds?.closeButton}
255
- >
256
- <CloseMinor16 />
257
- </ButtonCircular>
258
- )}
245
+ <Fade
246
+ in={open}
247
+ onEnter={onOpen}
248
+ onExited={transitionProps?.onExited}
249
+ timeout={transitionDuration}
250
+ >
251
+ <ModalPaper size={size} align={align} tabIndex={-1} {...paperProps}>
252
+ <ModalContext.Provider value>
253
+ {children}
254
+ {onClose && (
255
+ <ButtonCircular
256
+ aria-label='Close'
257
+ variant='flat'
258
+ className='absolute top-8 right-8'
259
+ onClick={onClose}
260
+ data-testid={testIds?.closeButton}
261
+ >
262
+ <CloseMinor16 />
263
+ </ButtonCircular>
264
+ )}
265
+ </ModalContext.Provider>
266
+ </ModalPaper>
267
+ </Fade>
259
268
  </Dialog>
260
269
  )
261
270
  })