@mezzanine-ui/react 0.7.1 → 0.8.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 (43) hide show
  1. package/Drawer/Drawer.d.ts +2 -7
  2. package/Drawer/Drawer.js +5 -21
  3. package/Form/useAutoCompleteValueControl.d.ts +2 -2
  4. package/Form/useAutoCompleteValueControl.js +9 -5
  5. package/Form/useSelectValueControl.d.ts +25 -8
  6. package/Form/useSelectValueControl.js +38 -20
  7. package/Icon/Icon.d.ts +4 -0
  8. package/Icon/Icon.js +3 -2
  9. package/Modal/Modal.d.ts +2 -7
  10. package/Modal/Modal.js +8 -57
  11. package/Modal/index.d.ts +1 -0
  12. package/Modal/index.js +1 -0
  13. package/Modal/useModalContainer.d.ts +6 -0
  14. package/Modal/useModalContainer.js +27 -0
  15. package/Select/AutoComplete.js +5 -3
  16. package/Select/Option.js +13 -1
  17. package/Select/Select.d.ts +90 -12
  18. package/Select/Select.js +8 -3
  19. package/Select/SelectTrigger.d.ts +37 -9
  20. package/Select/SelectTrigger.js +29 -5
  21. package/Select/typings.d.ts +2 -2
  22. package/Transition/Transition.d.ts +1 -1
  23. package/Upload/UploadInput.js +2 -0
  24. package/Upload/UploadPicture.d.ts +48 -0
  25. package/Upload/UploadPicture.js +52 -0
  26. package/Upload/UploadPictureBlock.d.ts +13 -0
  27. package/Upload/UploadPictureBlock.js +86 -0
  28. package/Upload/UploadPictureWall.d.ts +71 -0
  29. package/Upload/UploadPictureWall.js +156 -0
  30. package/Upload/UploadPictureWallItem.d.ts +13 -0
  31. package/Upload/UploadPictureWallItem.js +19 -0
  32. package/Upload/index.d.ts +3 -0
  33. package/Upload/index.js +3 -0
  34. package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +21 -0
  35. package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +66 -0
  36. package/_internal/SlideFadeOverlay/index.d.ts +1 -0
  37. package/_internal/SlideFadeOverlay/index.js +1 -0
  38. package/_internal/SlideFadeOverlay/useTopStack.d.ts +1 -0
  39. package/{Modal/useIsTopModal.js → _internal/SlideFadeOverlay/useTopStack.js} +3 -3
  40. package/index.d.ts +3 -4
  41. package/index.js +5 -1
  42. package/package.json +3 -3
  43. package/Modal/useIsTopModal.d.ts +0 -1
package/Upload/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
1
  export type { UploadResultSize, UploadResultStatus, } from '@mezzanine-ui/core/upload';
2
2
  export { UploadButtonProps, default as UploadButton } from './UploadButton';
3
+ export { UploadPictureControl, UploadPictureProps, default as UploadPicture } from './UploadPicture';
4
+ export { UploadPictureBlockProps, default as UploadPictureBlock } from './UploadPictureBlock';
5
+ export { UploadPictureWallControl, UploadPictureWallProps, default as UploadPictureWall } from './UploadPictureWall';
3
6
  export { UploadResultProps, default as UploadResult } from './UploadResult';
package/Upload/index.js CHANGED
@@ -1,2 +1,5 @@
1
1
  export { default as UploadButton } from './UploadButton.js';
2
+ export { default as UploadPicture } from './UploadPicture.js';
3
+ export { default as UploadPictureBlock } from './UploadPictureBlock.js';
4
+ export { default as UploadPictureWall } from './UploadPictureWall.js';
2
5
  export { default as UploadResult } from './UploadResult.js';
@@ -0,0 +1,21 @@
1
+ /// <reference types="react" />
2
+ import { NativeElementPropsWithoutKeyAndRef } from '../../utils/jsx-types';
3
+ import { OverlayProps } from '../../Overlay';
4
+ import { SlideFadeProps, SlideFadeDirection } from '../../Transition';
5
+ export interface SlideFadeOverlayProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'children'>, Pick<OverlayProps, 'container' | 'disableCloseOnBackdropClick' | 'disablePortal' | 'invisibleBackdrop' | 'hideBackdrop' | 'onBackdropClick' | 'onClose' | 'open'>, Pick<SlideFadeProps, 'children'> {
6
+ /**
7
+ * Control slide fade in direction
8
+ * @default 'down'
9
+ */
10
+ direction?: SlideFadeDirection;
11
+ /**
12
+ * Controls whether to disable closing modal while escape key down.
13
+ * @default false
14
+ */
15
+ disableCloseOnEscapeKeyDown?: boolean;
16
+ }
17
+ /**
18
+ * The react component for slide fade + overlay compose
19
+ */
20
+ declare const SlideFadeOverlay: import("react").ForwardRefExoticComponent<SlideFadeOverlayProps & import("react").RefAttributes<HTMLDivElement>>;
21
+ export default SlideFadeOverlay;
@@ -0,0 +1,66 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { overlayWithSlideFadeClasses } from '@mezzanine-ui/core/_internal/overlay-with-slide-fade';
3
+ import { forwardRef, useState, useLayoutEffect, useEffect } from 'react';
4
+ import { useDocumentEscapeKeyDown } from '../../hooks/useDocumentEscapeKeyDown.js';
5
+ import { lockBodyScroll, allowBodyScroll } from '../../utils/scroll-lock.js';
6
+ import useTopStack from './useTopStack.js';
7
+ import Overlay from '../../Overlay/Overlay.js';
8
+ import SlideFade from '../../Transition/SlideFade.js';
9
+ import cx from 'clsx';
10
+
11
+ /**
12
+ * The react component for slide fade + overlay compose
13
+ */
14
+ const SlideFadeOverlay = forwardRef(function SlideFadeOverlay(props, ref) {
15
+ const { children, className, container, direction = 'down', disableCloseOnBackdropClick = false, disableCloseOnEscapeKeyDown = false, disablePortal = false, hideBackdrop = false, invisibleBackdrop = false, onBackdropClick, onClose, open, } = props;
16
+ const [exited, setExited] = useState(true);
17
+ /**
18
+ * Escape keydown close: escape will only close the top modal
19
+ */
20
+ const checkIsOnTheTop = useTopStack(open);
21
+ useDocumentEscapeKeyDown(() => {
22
+ if (!open || disableCloseOnEscapeKeyDown || !onClose) {
23
+ return;
24
+ }
25
+ return (event) => {
26
+ if (checkIsOnTheTop()) {
27
+ event.stopPropagation();
28
+ onClose();
29
+ }
30
+ };
31
+ }, [
32
+ disableCloseOnEscapeKeyDown,
33
+ checkIsOnTheTop,
34
+ open,
35
+ onClose,
36
+ ]);
37
+ /** lock body scroll */
38
+ useLayoutEffect(() => {
39
+ if (open) {
40
+ lockBodyScroll();
41
+ }
42
+ }, [open]);
43
+ /** unlock body scroll */
44
+ useEffect(() => {
45
+ function checkAndAllowScroll() {
46
+ // wait until dom element unmount, and check if other modal existed
47
+ const allStacks = document.querySelectorAll('.mzn-overlay-with-slide-fade');
48
+ if (!allStacks.length) {
49
+ allowBodyScroll();
50
+ }
51
+ }
52
+ if (!open && exited) {
53
+ checkAndAllowScroll();
54
+ }
55
+ return (() => {
56
+ requestAnimationFrame(checkAndAllowScroll);
57
+ });
58
+ }, [open, exited]);
59
+ if (!open && exited) {
60
+ return null;
61
+ }
62
+ return (jsx(Overlay, Object.assign({ className: cx(overlayWithSlideFadeClasses.host, className), container: container, disableCloseOnBackdropClick: disableCloseOnBackdropClick, disablePortal: disablePortal, hideBackdrop: hideBackdrop, invisibleBackdrop: invisibleBackdrop, onBackdropClick: onBackdropClick, onClose: onClose, open: open, role: "presentation" }, { children: jsx(SlideFade, Object.assign({ ref: ref, in: open, direction: direction, onEntered: () => setExited(false), onExited: () => setExited(true) }, { children: children }), void 0) }), void 0));
63
+ });
64
+ var SlideFadeOverlay$1 = SlideFadeOverlay;
65
+
66
+ export { SlideFadeOverlay$1 as default };
@@ -0,0 +1 @@
1
+ export { SlideFadeOverlayProps, default, } from './SlideFadeOverlay';
@@ -0,0 +1 @@
1
+ export { default } from './SlideFadeOverlay.js';
@@ -0,0 +1 @@
1
+ export default function useTopStack(open?: boolean): () => boolean;
@@ -1,8 +1,8 @@
1
- import { useCallback, useMemo, useEffect } from 'react';
1
+ import { useMemo, useEffect, useCallback } from 'react';
2
2
 
3
3
  let seedStack = [];
4
4
  let seed = 1;
5
- function useIsTopModal(open) {
5
+ function useTopStack(open) {
6
6
  const modalSeed = useMemo(() => {
7
7
  seed += 1;
8
8
  return seed;
@@ -19,4 +19,4 @@ function useIsTopModal(open) {
19
19
  return useCallback(() => seedStack[seedStack.length - 1] === modalSeed, [modalSeed]);
20
20
  }
21
21
 
22
- export { useIsTopModal };
22
+ export { useTopStack as default };
package/index.d.ts CHANGED
@@ -43,8 +43,7 @@ export { DropdownProps, default as Dropdown, } from './Dropdown';
43
43
  export { NavigationItem, NavigationItemProps, NavigationSubMenu, NavigationSubMenuProps, NavigationSubMenuChild, NavigationSubMenuChildren, NavigationChild, NavigationChildren, NavigationProps, default as Navigation, } from './Navigation';
44
44
  export { AppBarChild, AppBarChildren, AppBarBrand, AppBarBrandProps, AppBarMain, AppBarMainProps, AppBarSupport, AppBarSupportProps, default as AppBar, } from './AppBar';
45
45
  export { PageFooterProps, default as PageFooter, } from './PageFooter';
46
- export { StepProps, default as Step, } from './Stepper';
47
- export { StepperProps, default as Stepper, } from './Stepper';
46
+ export { StepProps, StepperProps, Step, default as Stepper, } from './Stepper';
48
47
  /**
49
48
  * Data Display
50
49
  */
@@ -67,7 +66,7 @@ export { AutoComplete, AutoCompleteProps, SelectValue, TreeSelectOption, SelectC
67
66
  export { SwitchSize, SwitchProps, default as Switch, } from './Switch';
68
67
  export { TextareaSize, TextareaProps, default as Textarea, } from './Textarea';
69
68
  export { TextFieldSize, TextFieldProps, default as TextField, } from './TextField';
70
- export { UploadButtonProps, UploadButton, UploadResultProps, UploadResultSize, UploadResultStatus, UploadResult, } from './Upload';
69
+ export { UploadButtonProps, UploadButton, UploadPictureControl, UploadPictureProps, UploadPicture, UploadPictureWallControl, UploadPictureWallProps, UploadPictureWall, UploadResultProps, UploadResultSize, UploadResultStatus, UploadResult, } from './Upload';
71
70
  export { useTabKeyClose, UsePickerDocumentEventCloseProps, usePickerDocumentEventClose, UsePickerValueProps, usePickerValue, UseRangePickerValueProps, useRangePickerValue, PickerTriggerProps, PickerTrigger, RangePickerTriggerProps, RangePickerTrigger, } from './Picker';
72
71
  export { DatePickerCalendarProps, DatePickerCalendar, DatePickerProps, default as DatePicker, } from './DatePicker';
73
72
  export { useDateRangeCalendarControls, UseDateRangePickerValueProps, useDateRangePickerValue, DateRangePickerCalendarProps, DateRangePickerCalendar, DateRangePickerProps, default as DateRangePicker, } from './DateRangePicker';
@@ -81,7 +80,7 @@ export { AlertSeverity, AlertProps, default as Alert, } from './Alert';
81
80
  export { ConfirmActionsProps, default as ConfirmActions, } from './ConfirmActions';
82
81
  export { LoadingProps, default as Loading, } from './Loading';
83
82
  export { MessageData, MessageSeverity, MessageType, default as Message, } from './Message';
84
- export { ModalSeverity, ModalSize, ModalHeaderProps, ModalHeader, ModalBodyProps, ModalBody, ModalFooterProps, ModalFooter, ModalActionsProps, ModalActions, ModalProps, default as Modal, } from './Modal';
83
+ export { ModalSeverity, ModalSize, ModalHeaderProps, ModalHeader, ModalBodyProps, ModalBody, ModalFooterProps, ModalFooter, ModalActionsProps, ModalActions, ModalProps, useModalContainer, default as Modal, } from './Modal';
85
84
  export { PopconfirmProps, default as Popconfirm, } from './Popconfirm';
86
85
  export { NotificationData, NotificationSeverity, default as Notification, } from './Notification';
87
86
  export { ProgressProps, ProgressType, ProgressStatus, ProgressTypes, ProgressStatuses, default as Progress, } from './Progress';
package/index.js CHANGED
@@ -23,6 +23,7 @@ export { useSelectValueControl } from './Form/useSelectValueControl.js';
23
23
  export { useSwitchControlValue } from './Form/useSwitchControlValue.js';
24
24
  export { IconButton } from './Button/index.js';
25
25
  export { default as Typography } from './Typography/Typography.js';
26
+ export { default as useModalContainer } from './Modal/useModalContainer.js';
26
27
  export { default as Transition } from './Transition/Transition.js';
27
28
  export { default as Button } from './Button/Button.js';
28
29
  export { default as ButtonGroup } from './Button/ButtonGroup.js';
@@ -44,7 +45,8 @@ export { default as AppBarMain } from './AppBar/AppBarMain.js';
44
45
  export { default as AppBarSupport } from './AppBar/AppBarSupport.js';
45
46
  export { default as AppBar } from './AppBar/AppBar.js';
46
47
  export { default as PageFooter } from './PageFooter/PageFooter.js';
47
- export { default as Step, default as Stepper } from './Stepper/Stepper.js';
48
+ export { default as Step } from './Stepper/Step.js';
49
+ export { default as Stepper } from './Stepper/Stepper.js';
48
50
  export { default as AccordionSummary } from './Accordion/AccordionSummary.js';
49
51
  export { default as AccordionDetails } from './Accordion/AccordionDetails.js';
50
52
  export { default as Accordion } from './Accordion/Accordion.js';
@@ -87,6 +89,8 @@ export { default as Switch } from './Switch/Switch.js';
87
89
  export { default as Textarea } from './Textarea/Textarea.js';
88
90
  export { default as TextField } from './TextField/TextField.js';
89
91
  export { default as UploadButton } from './Upload/UploadButton.js';
92
+ export { default as UploadPicture } from './Upload/UploadPicture.js';
93
+ export { default as UploadPictureWall } from './Upload/UploadPictureWall.js';
90
94
  export { default as UploadResult } from './Upload/UploadResult.js';
91
95
  export { useTabKeyClose } from './Picker/useTabKeyClose.js';
92
96
  export { usePickerDocumentEventClose } from './Picker/usePickerDocumentEventClose.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mezzanine-ui/react",
3
- "version": "0.7.1",
3
+ "version": "0.8.0",
4
4
  "description": "React components for mezzanine-ui",
5
5
  "author": "Mezzanine",
6
6
  "repository": {
@@ -32,8 +32,8 @@
32
32
  "react-dom": "^17.0.1"
33
33
  },
34
34
  "dependencies": {
35
- "@mezzanine-ui/core": "^0.7.1",
36
- "@mezzanine-ui/icons": "^0.5.0",
35
+ "@mezzanine-ui/core": "^0.7.3",
36
+ "@mezzanine-ui/icons": "^0.7.3",
37
37
  "@mezzanine-ui/system": "^0.7.0",
38
38
  "@popperjs/core": "^2.9.2",
39
39
  "@types/react-transition-group": "4.4.1",
@@ -1 +0,0 @@
1
- export declare function useIsTopModal(open?: boolean): () => boolean;