@openedx/paragon 23.0.0-alpha.3 → 23.0.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/paragon-scripts.js +10 -0
- package/dist/Annotation/index.scss +16 -0
- package/dist/Card/CardDeck.js +0 -2
- package/dist/Card/CardDeck.js.map +1 -1
- package/dist/Card/index.scss +8 -6
- package/dist/Carousel/index.scss +24 -1
- package/dist/Chip/ChipIcon.d.ts +1 -1
- package/dist/CloseButton/index.scss +8 -0
- package/dist/ColorPicker/index.scss +1 -1
- package/dist/Container/index.d.ts +16 -0
- package/dist/Container/index.js +15 -13
- package/dist/Container/index.js.map +1 -1
- package/dist/DataTable/index.scss +12 -0
- package/dist/Dropdown/dropdown-bootstrap.scss +6 -0
- package/dist/Dropzone/index.scss +34 -0
- package/dist/Form/_FormText.scss +1 -1
- package/dist/Form/_bootstrap-custom-forms.scss +40 -0
- package/dist/Form/_index.scss +9 -0
- package/dist/Form/_mixins.scss +22 -0
- package/dist/IconButton/index.d.ts +1 -1
- package/dist/IconButton/index.js +1 -1
- package/dist/IconButton/index.js.map +1 -1
- package/dist/IconButton/index.scss +146 -0
- package/dist/Menu/SelectMenu.js +9 -4
- package/dist/Menu/SelectMenu.js.map +1 -1
- package/dist/Menu/index.scss +8 -0
- package/dist/Modal/ModalContext.d.ts +15 -0
- package/dist/Modal/ModalContext.js +7 -14
- package/dist/Modal/ModalContext.js.map +1 -1
- package/dist/Modal/ModalDialog.d.ts +110 -0
- package/dist/Modal/ModalDialog.js +30 -24
- package/dist/Modal/ModalDialog.js.map +1 -1
- package/dist/Modal/ModalDialogHeader.d.ts +10 -0
- package/dist/Modal/ModalDialogHeader.js +6 -7
- package/dist/Modal/ModalDialogHeader.js.map +1 -1
- package/dist/Modal/ModalLayer.d.ts +53 -0
- package/dist/Modal/ModalLayer.js +5 -14
- package/dist/Modal/ModalLayer.js.map +1 -1
- package/dist/Modal/Portal.d.ts +11 -0
- package/dist/Modal/Portal.js +5 -6
- package/dist/Modal/Portal.js.map +1 -1
- package/dist/Modal/_ModalDialog.scss +22 -2
- package/dist/Nav/index.scss +8 -0
- package/dist/Overlay/index.d.ts +2 -2
- package/dist/PageBanner/index.scss +2 -2
- package/dist/Pagination/pagination-bootstrap.scss +9 -0
- package/dist/Popover/index.scss +1 -1
- package/dist/ProductTour/Checkpoint.scss +1 -1
- package/dist/ProgressBar/bootstrap-progress.scss +20 -5
- package/dist/ProgressBar/index.scss +3 -3
- package/dist/Stepper/index.scss +1 -1
- package/dist/Sticky/index.scss +12 -0
- package/dist/Toast/index.scss +13 -1
- package/dist/Tooltip/index.scss +16 -0
- package/dist/core.css +913 -470
- package/dist/core.css.map +1 -1
- package/dist/core.min.css +1 -1
- package/dist/hooks/useArrowKeyNavigation.js +2 -3
- package/dist/hooks/useArrowKeyNavigation.js.map +1 -1
- package/dist/index.d.ts +19 -5
- package/dist/index.js +5 -5
- package/dist/light.css +2035 -1315
- package/dist/light.css.map +1 -1
- package/dist/light.min.css +1 -1
- package/icons/es5/Newsstand.js +15 -0
- package/icons/es5/index.js +1 -0
- package/icons/es5/index.ts +1 -0
- package/icons/jsx/Newsstand.jsx +17 -0
- package/icons/jsx/index.jsx +1 -0
- package/icons/svg/newsstand.svg +1 -0
- package/lib/build-tokens.js +67 -31
- package/package.json +8 -5
- package/src/Annotation/index.scss +16 -0
- package/src/Card/CardDeck.jsx +0 -3
- package/src/Card/README.md +0 -31
- package/src/Card/index.scss +8 -6
- package/src/Carousel/index.scss +24 -1
- package/src/CloseButton/index.scss +8 -0
- package/src/ColorPicker/index.scss +1 -1
- package/src/Container/{Container.test.jsx → Container.test.tsx} +14 -8
- package/src/Container/README.md +4 -0
- package/src/Container/index.tsx +64 -0
- package/src/DataTable/index.scss +12 -0
- package/src/DataTable/selection/tests/ControlledSelectHeader.test.jsx +7 -7
- package/src/Dropdown/dropdown-bootstrap.scss +6 -0
- package/src/Dropzone/index.scss +34 -0
- package/src/Form/_FormText.scss +1 -1
- package/src/Form/_bootstrap-custom-forms.scss +40 -0
- package/src/Form/_index.scss +9 -0
- package/src/Form/_mixins.scss +22 -0
- package/src/IconButton/index.scss +146 -0
- package/src/IconButton/index.tsx +1 -1
- package/src/Menu/SelectMenu.jsx +5 -0
- package/src/Menu/SelectMenu.test.jsx +6 -0
- package/src/Menu/index.scss +8 -0
- package/src/Menu/select-menu.md +8 -0
- package/src/Modal/{ModalContext.jsx → ModalContext.tsx} +19 -16
- package/src/Modal/{ModalDialog.jsx → ModalDialog.tsx} +57 -26
- package/src/Modal/{ModalDialogHeader.jsx → ModalDialogHeader.tsx} +17 -11
- package/src/Modal/{ModalLayer.jsx → ModalLayer.tsx} +17 -17
- package/src/Modal/{Portal.jsx → Portal.tsx} +10 -7
- package/src/Modal/_ModalDialog.scss +22 -2
- package/src/Modal/modal-dialog.mdx +95 -6
- package/src/Modal/tests/{ModalDialog.test.jsx → ModalDialog.test.tsx} +18 -10
- package/src/Modal/tests/{ModalLayer.test.jsx → ModalLayer.test.tsx} +5 -5
- package/src/Modal/tests/{Portal.test.jsx → Portal.test.tsx} +3 -3
- package/src/Nav/index.scss +8 -0
- package/src/PageBanner/index.scss +2 -2
- package/src/Pagination/pagination-bootstrap.scss +9 -0
- package/src/Popover/index.scss +1 -1
- package/src/ProductTour/Checkpoint.scss +1 -1
- package/src/ProgressBar/bootstrap-progress.scss +20 -5
- package/src/ProgressBar/index.scss +3 -3
- package/src/Stepper/index.scss +1 -1
- package/src/Sticky/index.scss +12 -0
- package/src/Toast/index.scss +13 -1
- package/src/Tooltip/index.scss +16 -0
- package/src/hooks/useArrowKeyNavigation.jsx +1 -2
- package/src/index.d.ts +19 -5
- package/src/index.js +5 -5
- package/styles/css/core/abstraction-variables.css +44 -0
- package/styles/css/core/custom-media-breakpoints.css +3 -4
- package/styles/css/core/index.css +2 -1
- package/styles/css/core/variables.css +494 -430
- package/styles/css/themes/light/abstraction-variables.css +304 -0
- package/styles/css/themes/light/index.css +1 -0
- package/styles/css/themes/light/utility-classes.css +2 -3
- package/styles/css/themes/light/variables.css +1753 -1334
- package/styles/scss/core/_typography.scss +16 -4
- package/styles/scss/core/_utilities.scss +7 -3
- package/styles/scss/core/_variables.scss +43 -30
- package/styles/scss/core/core.scss +1 -0
- package/tokens/src/core/alias/size.json +6 -5
- package/tokens/src/core/components/ActionRow.json +3 -2
- package/tokens/src/core/components/Alert.json +12 -10
- package/tokens/src/core/components/Annotation.json +9 -7
- package/tokens/src/core/components/Avatar.json +9 -9
- package/tokens/src/core/components/AvatarButton.json +4 -3
- package/tokens/src/core/components/Badge.json +12 -9
- package/tokens/src/core/components/Breadcrumb.json +7 -5
- package/tokens/src/core/components/Bubble.json +4 -3
- package/tokens/src/core/components/Button/core.json +35 -59
- package/tokens/src/core/components/Card.json +33 -44
- package/tokens/src/core/components/Carousel.json +39 -13
- package/tokens/src/core/components/Chip.json +13 -21
- package/tokens/src/core/components/ChipCarousel.json +4 -5
- package/tokens/src/core/components/CloseButton.json +2 -6
- package/tokens/src/core/components/Code.json +9 -8
- package/tokens/src/core/components/Collapsible.json +10 -13
- package/tokens/src/core/components/ColorPicker.json +3 -2
- package/tokens/src/core/components/Container.json +6 -5
- package/tokens/src/core/components/DataTable.json +17 -9
- package/tokens/src/core/components/Dropdown.json +24 -29
- package/tokens/src/core/components/Dropzone.json +5 -7
- package/tokens/src/core/components/Form/other.json +5 -4
- package/tokens/src/core/components/Form/size.json +72 -119
- package/tokens/src/core/components/Form/spacing.json +39 -83
- package/tokens/src/core/components/Form/transition.json +43 -7
- package/tokens/src/core/components/Form/typography.json +24 -88
- package/tokens/src/core/components/Icon.json +6 -5
- package/tokens/src/core/components/IconButton.json +4 -7
- package/tokens/src/core/components/Image.json +7 -6
- package/tokens/src/core/components/Menu.json +14 -12
- package/tokens/src/core/components/Modal.json +26 -21
- package/tokens/src/core/components/Nav.json +14 -16
- package/tokens/src/core/components/Navbar.json +15 -30
- package/tokens/src/core/components/Pagination.json +23 -24
- package/tokens/src/core/components/Popover.json +18 -14
- package/tokens/src/core/components/ProductTour.json +8 -14
- package/tokens/src/core/components/ProgressBar.json +29 -14
- package/tokens/src/core/components/SearchField.json +7 -9
- package/tokens/src/core/components/SelectableBox.json +4 -3
- package/tokens/src/core/components/Sheet.json +3 -2
- package/tokens/src/core/components/Spinner.json +9 -7
- package/tokens/src/core/components/Stack.json +2 -1
- package/tokens/src/core/components/Stepper.json +12 -14
- package/tokens/src/core/components/Sticky.json +2 -1
- package/tokens/src/core/components/Tab.json +8 -7
- package/tokens/src/core/components/Tabs.json +5 -5
- package/tokens/src/core/components/Toast.json +11 -8
- package/tokens/src/core/components/Tooltip.json +13 -11
- package/tokens/src/core/components/general/caret.json +5 -3
- package/tokens/src/core/components/general/headings.json +5 -4
- package/tokens/src/core/components/general/hr.json +3 -2
- package/tokens/src/core/components/general/input.json +19 -19
- package/tokens/src/core/components/general/link.json +13 -12
- package/tokens/src/core/components/general/list.json +9 -6
- package/tokens/src/core/components/general/text.json +6 -12
- package/tokens/src/core/global/breakpoints.json +25 -6
- package/tokens/src/core/global/elevation.json +55 -13
- package/tokens/src/core/global/other.json +5 -1
- package/tokens/src/core/global/spacing.json +70 -17
- package/tokens/src/core/global/transition.json +41 -4
- package/tokens/src/core/global/typography.json +248 -53
- package/tokens/src/core/utilities/color.json +35 -4
- package/tokens/src/themes/light/alias/color.json +276 -75
- package/tokens/src/themes/light/components/Alert.json +15 -26
- package/tokens/src/themes/light/components/Annotation.json +27 -13
- package/tokens/src/themes/light/components/Avatar.json +2 -1
- package/tokens/src/themes/light/components/Badge.json +57 -122
- package/tokens/src/themes/light/components/Breadcrumb.json +6 -5
- package/tokens/src/themes/light/components/Bubble.json +9 -8
- package/tokens/src/themes/light/components/Button/brand.json +171 -119
- package/tokens/src/themes/light/components/Button/core.json +8 -9
- package/tokens/src/themes/light/components/Button/danger.json +171 -112
- package/tokens/src/themes/light/components/Button/dark.json +188 -106
- package/tokens/src/themes/light/components/Button/info.json +186 -112
- package/tokens/src/themes/light/components/Button/light.json +186 -110
- package/tokens/src/themes/light/components/Button/primary.json +178 -116
- package/tokens/src/themes/light/components/Button/secondary.json +166 -132
- package/tokens/src/themes/light/components/Button/success.json +176 -117
- package/tokens/src/themes/light/components/Button/tertiary.json +34 -60
- package/tokens/src/themes/light/components/Button/warning.json +164 -128
- package/tokens/src/themes/light/components/Card.json +10 -21
- package/tokens/src/themes/light/components/Carousel.json +12 -11
- package/tokens/src/themes/light/components/Chip.json +14 -26
- package/tokens/src/themes/light/components/CloseButton.json +12 -2
- package/tokens/src/themes/light/components/Code.json +7 -9
- package/tokens/src/themes/light/components/DataTable.json +7 -11
- package/tokens/src/themes/light/components/Dropdown.json +17 -20
- package/tokens/src/themes/light/components/Dropzone.json +49 -11
- package/tokens/src/themes/light/components/Form/color.json +101 -155
- package/tokens/src/themes/light/components/Form/elevation.json +38 -42
- package/tokens/src/themes/light/components/Form/other.json +44 -41
- package/tokens/src/themes/light/components/IconButton.json +408 -256
- package/tokens/src/themes/light/components/Image.json +7 -4
- package/tokens/src/themes/light/components/Menu.json +12 -10
- package/tokens/src/themes/light/components/Modal.json +22 -12
- package/tokens/src/themes/light/components/Nav.json +82 -94
- package/tokens/src/themes/light/components/Navbar.json +32 -76
- package/tokens/src/themes/light/components/OverflowScroll.json +3 -1
- package/tokens/src/themes/light/components/PageBanner.json +11 -10
- package/tokens/src/themes/light/components/Pagination.json +19 -23
- package/tokens/src/themes/light/components/Popover.json +22 -27
- package/tokens/src/themes/light/components/ProductTour.json +9 -20
- package/tokens/src/themes/light/components/ProgressBar.json +12 -10
- package/tokens/src/themes/light/components/Scrollable.json +3 -3
- package/tokens/src/themes/light/components/SearchField.json +9 -9
- package/tokens/src/themes/light/components/Sheet.json +6 -7
- package/tokens/src/themes/light/components/Stepper.json +12 -17
- package/tokens/src/themes/light/components/Sticky.json +31 -6
- package/tokens/src/themes/light/components/Tab.json +47 -24
- package/tokens/src/themes/light/components/Toast.json +26 -14
- package/tokens/src/themes/light/components/Tooltip.json +25 -10
- package/tokens/src/themes/light/components/general/body.json +3 -2
- package/tokens/src/themes/light/components/general/headings.json +2 -1
- package/tokens/src/themes/light/components/general/hr.json +3 -6
- package/tokens/src/themes/light/components/general/input.json +11 -4
- package/tokens/src/themes/light/components/general/link.json +34 -43
- package/tokens/src/themes/light/components/general/list.json +15 -19
- package/tokens/src/themes/light/components/general/text.json +5 -6
- package/tokens/src/themes/light/global/color.json +1592 -867
- package/tokens/src/themes/light/global/elevation.json +481 -93
- package/tokens/style-dictionary.js +342 -144
- package/tokens/utils.js +176 -6
- package/src/Container/index.jsx +0 -49
- package/tokens/src/core/global/display.json +0 -22
- /package/src/Truncate/{Truncate.test.js → utils.test.js} +0 -0
|
@@ -1,5 +1,151 @@
|
|
|
1
1
|
@import "mixins";
|
|
2
2
|
|
|
3
|
+
:root {
|
|
4
|
+
--pgn-elevation-icon-button-box-shadow-primary-base:
|
|
5
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-base-inset)
|
|
6
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-base-offset-x)
|
|
7
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-base-offset-y)
|
|
8
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-base-blur)
|
|
9
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-base-spread)
|
|
10
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-base-color);
|
|
11
|
+
|
|
12
|
+
--pgn-elevation-icon-button-box-shadow-primary-inverse:
|
|
13
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-inverse-inset)
|
|
14
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-inverse-offset-x)
|
|
15
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-inverse-offset-y)
|
|
16
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-inverse-blur)
|
|
17
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-inverse-spread)
|
|
18
|
+
var(--pgn-elevation-icon-button-box-shadow-primary-inverse-color);
|
|
19
|
+
|
|
20
|
+
--pgn-elevation-icon-button-box-shadow-secondary-base:
|
|
21
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-base-inset)
|
|
22
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-base-offset-x)
|
|
23
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-base-offset-y)
|
|
24
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-base-blur)
|
|
25
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-base-spread)
|
|
26
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-base-color);
|
|
27
|
+
|
|
28
|
+
--pgn-elevation-icon-button-box-shadow-secondary-inverse:
|
|
29
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-inverse-inset)
|
|
30
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-inverse-offset-x)
|
|
31
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-inverse-offset-y)
|
|
32
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-inverse-blur)
|
|
33
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-inverse-spread)
|
|
34
|
+
var(--pgn-elevation-icon-button-box-shadow-secondary-inverse-color);
|
|
35
|
+
|
|
36
|
+
--pgn-elevation-icon-button-box-shadow-brand-base:
|
|
37
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-base-inset)
|
|
38
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-base-offset-x)
|
|
39
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-base-offset-y)
|
|
40
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-base-blur)
|
|
41
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-base-spread)
|
|
42
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-base-color);
|
|
43
|
+
|
|
44
|
+
--pgn-elevation-icon-button-box-shadow-brand-inverse:
|
|
45
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-inverse-inset)
|
|
46
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-inverse-offset-x)
|
|
47
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-inverse-offset-y)
|
|
48
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-inverse-blur)
|
|
49
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-inverse-spread)
|
|
50
|
+
var(--pgn-elevation-icon-button-box-shadow-brand-inverse-color);
|
|
51
|
+
|
|
52
|
+
--pgn-elevation-icon-button-box-shadow-success-base:
|
|
53
|
+
var(--pgn-elevation-icon-button-box-shadow-success-base-inset)
|
|
54
|
+
var(--pgn-elevation-icon-button-box-shadow-success-base-offset-x)
|
|
55
|
+
var(--pgn-elevation-icon-button-box-shadow-success-base-offset-y)
|
|
56
|
+
var(--pgn-elevation-icon-button-box-shadow-success-base-blur)
|
|
57
|
+
var(--pgn-elevation-icon-button-box-shadow-success-base-spread)
|
|
58
|
+
var(--pgn-elevation-icon-button-box-shadow-success-base-color);
|
|
59
|
+
|
|
60
|
+
--pgn-elevation-icon-button-box-shadow-success-inverse:
|
|
61
|
+
var(--pgn-elevation-icon-button-box-shadow-success-inverse-inset)
|
|
62
|
+
var(--pgn-elevation-icon-button-box-shadow-success-inverse-offset-x)
|
|
63
|
+
var(--pgn-elevation-icon-button-box-shadow-success-inverse-offset-y)
|
|
64
|
+
var(--pgn-elevation-icon-button-box-shadow-success-inverse-blur)
|
|
65
|
+
var(--pgn-elevation-icon-button-box-shadow-success-inverse-spread)
|
|
66
|
+
var(--pgn-elevation-icon-button-box-shadow-success-inverse-color);
|
|
67
|
+
|
|
68
|
+
--pgn-elevation-icon-button-box-shadow-warning-base:
|
|
69
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-base-inset)
|
|
70
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-base-offset-x)
|
|
71
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-base-offset-y)
|
|
72
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-base-blur)
|
|
73
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-base-spread)
|
|
74
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-base-color);
|
|
75
|
+
|
|
76
|
+
--pgn-elevation-icon-button-box-shadow-warning-inverse:
|
|
77
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-inverse-inset)
|
|
78
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-inverse-offset-x)
|
|
79
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-inverse-offset-y)
|
|
80
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-inverse-blur)
|
|
81
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-inverse-spread)
|
|
82
|
+
var(--pgn-elevation-icon-button-box-shadow-warning-inverse-color);
|
|
83
|
+
|
|
84
|
+
--pgn-elevation-icon-button-box-shadow-danger-base:
|
|
85
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-base-inset)
|
|
86
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-base-offset-x)
|
|
87
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-base-offset-y)
|
|
88
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-base-blur)
|
|
89
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-base-spread)
|
|
90
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-base-color);
|
|
91
|
+
|
|
92
|
+
--pgn-elevation-icon-button-box-shadow-danger-inverse:
|
|
93
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-inverse-inset)
|
|
94
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-inverse-offset-x)
|
|
95
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-inverse-offset-y)
|
|
96
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-inverse-blur)
|
|
97
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-inverse-spread)
|
|
98
|
+
var(--pgn-elevation-icon-button-box-shadow-danger-inverse-color);
|
|
99
|
+
|
|
100
|
+
--pgn-elevation-icon-button-box-shadow-light-base:
|
|
101
|
+
var(--pgn-elevation-icon-button-box-shadow-light-base-inset)
|
|
102
|
+
var(--pgn-elevation-icon-button-box-shadow-light-base-offset-x)
|
|
103
|
+
var(--pgn-elevation-icon-button-box-shadow-light-base-offset-y)
|
|
104
|
+
var(--pgn-elevation-icon-button-box-shadow-light-base-blur)
|
|
105
|
+
var(--pgn-elevation-icon-button-box-shadow-light-base-spread)
|
|
106
|
+
var(--pgn-elevation-icon-button-box-shadow-light-base-color);
|
|
107
|
+
|
|
108
|
+
--pgn-elevation-icon-button-box-shadow-light-inverse:
|
|
109
|
+
var(--pgn-elevation-icon-button-box-shadow-light-inverse-inset)
|
|
110
|
+
var(--pgn-elevation-icon-button-box-shadow-light-inverse-offset-x)
|
|
111
|
+
var(--pgn-elevation-icon-button-box-shadow-light-inverse-offset-y)
|
|
112
|
+
var(--pgn-elevation-icon-button-box-shadow-light-inverse-blur)
|
|
113
|
+
var(--pgn-elevation-icon-button-box-shadow-light-inverse-spread)
|
|
114
|
+
var(--pgn-elevation-icon-button-box-shadow-light-inverse-color);
|
|
115
|
+
|
|
116
|
+
--pgn-elevation-icon-button-box-shadow-dark-base:
|
|
117
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-base-inset)
|
|
118
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-base-offset-x)
|
|
119
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-base-offset-y)
|
|
120
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-base-blur)
|
|
121
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-base-spread)
|
|
122
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-base-color);
|
|
123
|
+
|
|
124
|
+
--pgn-elevation-icon-button-box-shadow-dark-inverse:
|
|
125
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-inverse)
|
|
126
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-inverse-offset-x)
|
|
127
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-inverse-offset-y)
|
|
128
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-inverse-blur)
|
|
129
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-inverse-spread)
|
|
130
|
+
var(--pgn-elevation-icon-button-box-shadow-dark-inverse-color);
|
|
131
|
+
|
|
132
|
+
--pgn-elevation-icon-button-box-shadow-black-base:
|
|
133
|
+
var(--pgn-elevation-icon-button-box-shadow-black-base-inset)
|
|
134
|
+
var(--pgn-elevation-icon-button-box-shadow-black-base-offset-x)
|
|
135
|
+
var(--pgn-elevation-icon-button-box-shadow-black-base-offset-y)
|
|
136
|
+
var(--pgn-elevation-icon-button-box-shadow-black-base-blur)
|
|
137
|
+
var(--pgn-elevation-icon-button-box-shadow-black-base-spread)
|
|
138
|
+
var(--pgn-elevation-icon-button-box-shadow-black-base-color);
|
|
139
|
+
|
|
140
|
+
--pgn-elevation-icon-button-box-shadow-black-inverse:
|
|
141
|
+
var(--pgn-elevation-icon-button-box-shadow-black-inverse-inset)
|
|
142
|
+
var(--pgn-elevation-icon-button-box-shadow-black-inverse-offset-x)
|
|
143
|
+
var(--pgn-elevation-icon-button-box-shadow-black-inverse-offset-y)
|
|
144
|
+
var(--pgn-elevation-icon-button-box-shadow-black-inverse-blur)
|
|
145
|
+
var(--pgn-elevation-icon-button-box-shadow-black-inverse-spread)
|
|
146
|
+
var(--pgn-elevation-icon-button-box-shadow-black-inverse-color);
|
|
147
|
+
}
|
|
148
|
+
|
|
3
149
|
.btn-icon {
|
|
4
150
|
@include btn-icon-size(var(--pgn-size-icon-button-diameter-md));
|
|
5
151
|
|
package/dist/Menu/SelectMenu.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded = ["defaultMessage", "children", "className", "variant"];
|
|
1
|
+
var _excluded = ["defaultMessage", "children", "className", "variant", "disabled"];
|
|
2
2
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
3
3
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4
4
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -23,6 +23,7 @@ function SelectMenu(_ref) {
|
|
|
23
23
|
children = _ref.children,
|
|
24
24
|
className = _ref.className,
|
|
25
25
|
variant = _ref.variant,
|
|
26
|
+
disabled = _ref.disabled,
|
|
26
27
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
27
28
|
var _useState = useState(null),
|
|
28
29
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -106,7 +107,8 @@ function SelectMenu(_ref) {
|
|
|
106
107
|
ref: setTriggerTarget,
|
|
107
108
|
variant: variant,
|
|
108
109
|
iconAfter: ExpandMore,
|
|
109
|
-
onClick: open
|
|
110
|
+
onClick: open,
|
|
111
|
+
disabled: disabled
|
|
110
112
|
}, selected !== undefined && children[selected] ? children[selected].props.children : defaultMessage), /*#__PURE__*/React.createElement("div", {
|
|
111
113
|
className: "pgn__menu-select-popup"
|
|
112
114
|
}, /*#__PURE__*/React.createElement(ModalPopup, {
|
|
@@ -140,12 +142,15 @@ SelectMenu.propTypes = {
|
|
|
140
142
|
/** Specifies class name to append to the base element */
|
|
141
143
|
className: PropTypes.string,
|
|
142
144
|
/** Specifies variant to use. */
|
|
143
|
-
variant: PropTypes.string
|
|
145
|
+
variant: PropTypes.string,
|
|
146
|
+
/** Specifies if the `SelectMenu` is disabled. */
|
|
147
|
+
disabled: PropTypes.bool
|
|
144
148
|
};
|
|
145
149
|
SelectMenu.defaultProps = {
|
|
146
150
|
defaultMessage: SELECT_MENU_DEFAULT_MESSAGE,
|
|
147
151
|
className: undefined,
|
|
148
|
-
variant: 'outline-primary'
|
|
152
|
+
variant: 'outline-primary',
|
|
153
|
+
disabled: false
|
|
149
154
|
};
|
|
150
155
|
var SelectMenuWithDeprecatedProp = withDeprecatedProps(SelectMenu, 'SelectMenu', {
|
|
151
156
|
isLink: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectMenu.js","names":["React","useState","useEffect","useCallback","PropTypes","classNames","ExpandMore","Button","ModalPopup","useToggle","Menu","withDeprecatedProps","DeprTypes","SELECT_MENU_DEFAULT_MESSAGE","SelectMenu","_ref","defaultMessage","children","className","variant","props","_objectWithoutProperties","_excluded","_useState","_useState2","_slicedToArray","triggerTarget","setTriggerTarget","focusMenuRef","useRef","itemsCollection","useMemo","Array","from","length","map","createRef","defaultIndex","i","defaultSelected","undefined","_useState3","_useState4","selected","setSelected","_useToggle","_useToggle2","isOpen","open","close","createMenuItems","Children","child","index","newProps","onClick","e","current","id","concat","toString","role","cloneElement","prevOpenRef","numItems","scrollIntoView","block","focus","preventScroll","createElement","_extends","ref","iconAfter","placement","positionRef","onClose","modifiers","name","options","padding","top","bottom","key","propTypes","string","node","isRequired","defaultProps","SelectMenuWithDeprecatedProp","isLink","deprType","MOVED_AND_FORMAT","message","newName","transform"],"sources":["../../src/Menu/SelectMenu.jsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { ExpandMore } from '../../icons';\nimport Button from '../Button';\nimport ModalPopup from '../Modal/ModalPopup';\nimport useToggle from '../hooks/useToggle';\nimport Menu from '.';\nimport withDeprecatedProps, { DeprTypes } from '../withDeprecatedProps';\n\nexport const SELECT_MENU_DEFAULT_MESSAGE = 'Select...';\n\nfunction SelectMenu({\n defaultMessage,\n children,\n className,\n variant,\n ...props\n}) {\n const [triggerTarget, setTriggerTarget] = useState(null);\n // this ref is used to focus the menu open button after any menu option is clicked.\n // triggerTarget.current.focus() inside the onCLick() function didn't guarantee element focus.\n const focusMenuRef = React.useRef(false);\n const itemsCollection = React.useMemo(\n () => Array.from({ length: children.length }).map(() => React.createRef()),\n [children.length],\n );\n\n const defaultIndex = useCallback(() => {\n for (let i = 0; i < children.length; i++) {\n if (children[i].props && children[i].props.defaultSelected) {\n return i;\n }\n }\n return undefined;\n }, [children]);\n\n const [selected, setSelected] = useState(defaultIndex());\n const [isOpen, open, close] = useToggle(false);\n\n const createMenuItems = () => React.Children.map(children, (child, index) => {\n const newProps = {\n onClick(e) {\n if (child.props.onClick) {\n child.props.onClick(e);\n }\n setSelected(index);\n close();\n focusMenuRef.current = true;\n },\n id: `${index.toString()}_pgn__menu-item`,\n role: 'link',\n };\n if (selected === index) {\n newProps['aria-current'] = 'page';\n }\n return React.cloneElement(child, newProps);\n });\n\n const prevOpenRef = React.useRef();\n\n useEffect(() => {\n if (isOpen && selected) {\n const numItems = children.length;\n if (numItems > 6 && selected > 1 && numItems - selected > 2) {\n // on \"middle elements\", set offset to center of block and scroll to center\n itemsCollection[selected].current.children[0].scrollIntoView({\n block: 'center',\n });\n }\n }\n // set focus on open\n if (isOpen && !prevOpenRef.current && selected) {\n itemsCollection[selected].current.children[0].focus({ preventScroll: (defaultIndex() === selected) });\n }\n if (focusMenuRef.current) {\n triggerTarget.focus();\n focusMenuRef.current = false;\n }\n prevOpenRef.current = isOpen;\n }, [isOpen, children.length, defaultIndex, itemsCollection, selected, triggerTarget]);\n\n return (\n <div className={classNames('pgn__menu-select', className)} {...props}>\n <Button\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n ref={setTriggerTarget}\n variant={variant}\n iconAfter={ExpandMore}\n onClick={open}\n >\n {selected !== undefined && children[selected] ? children[selected].props.children : defaultMessage}\n </Button>\n <div className=\"pgn__menu-select-popup\">\n <ModalPopup\n placement=\"bottom-start\"\n positionRef={triggerTarget}\n isOpen={isOpen}\n onClose={close}\n modifiers={\n [\n {\n name: 'flip',\n options: {\n padding: { top: 150, bottom: 150 },\n },\n },\n ]\n }\n >\n <Menu aria-label=\"Select Menu\">\n {createMenuItems().map((child, index) => (\n <div key={child.props.id} ref={itemsCollection[index]}>\n {child}\n </div>\n ))}\n </Menu>\n </ModalPopup>\n </div>\n </div>\n );\n}\n\nSelectMenu.propTypes = {\n /** String that is displayed for default value of the ``SelectMenu`` */\n defaultMessage: PropTypes.string,\n /** Specifies the content of the ``SelectMenu`` */\n children: PropTypes.node.isRequired,\n /** Specifies class name to append to the base element */\n className: PropTypes.string,\n /** Specifies variant to use. */\n variant: PropTypes.string,\n};\n\nSelectMenu.defaultProps = {\n defaultMessage: SELECT_MENU_DEFAULT_MESSAGE,\n className: undefined,\n variant: 'outline-primary',\n};\n\nconst SelectMenuWithDeprecatedProp = withDeprecatedProps(SelectMenu, 'SelectMenu', {\n isLink: {\n deprType: DeprTypes.MOVED_AND_FORMAT,\n message: 'Use \"variant\" prop instead, i.e. variant=\"link\"',\n newName: 'variant',\n transform: () => 'link',\n },\n});\n\nexport default SelectMenuWithDeprecatedProp;\n"],"mappings":";;;;;;;;;;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,QAAQ,OAAO;AAC/D,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,UAAU,QAAQ,aAAa;AACxC,OAAOC,MAAM,MAAM,WAAW;AAC9B,OAAOC,UAAU,MAAM,qBAAqB;AAC5C,OAAOC,SAAS,MAAM,oBAAoB;AAC1C,OAAOC,IAAI,MAAM,GAAG;AACpB,OAAOC,mBAAmB,IAAIC,SAAS,QAAQ,wBAAwB;AAEvE,OAAO,IAAMC,2BAA2B,GAAG,WAAW;AAEtD,SAASC,UAAUA,CAAAC,IAAA,EAMhB;EAAA,IALDC,cAAc,GAAAD,IAAA,CAAdC,cAAc;IACdC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,SAAS,GAAAH,IAAA,CAATG,SAAS;IACTC,OAAO,GAAAJ,IAAA,CAAPI,OAAO;IACJC,KAAK,GAAAC,wBAAA,CAAAN,IAAA,EAAAO,SAAA;EAER,IAAAC,SAAA,GAA0CtB,QAAQ,CAAC,IAAI,CAAC;IAAAuB,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAjDG,aAAa,GAAAF,UAAA;IAAEG,gBAAgB,GAAAH,UAAA;EACtC;EACA;EACA,IAAMI,YAAY,GAAG5B,KAAK,CAAC6B,MAAM,CAAC,KAAK,CAAC;EACxC,IAAMC,eAAe,GAAG9B,KAAK,CAAC+B,OAAO,CACnC;IAAA,OAAMC,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEjB,QAAQ,CAACiB;IAAO,CAAC,CAAC,CAACC,GAAG,CAAC;MAAA,oBAAMnC,KAAK,CAACoC,SAAS,CAAC,CAAC;IAAA,EAAC;EAAA,GAC1E,CAACnB,QAAQ,CAACiB,MAAM,CAClB,CAAC;EAED,IAAMG,YAAY,GAAGlC,WAAW,CAAC,YAAM;IACrC,KAAK,IAAImC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGrB,QAAQ,CAACiB,MAAM,EAAEI,CAAC,EAAE,EAAE;MACxC,IAAIrB,QAAQ,CAACqB,CAAC,CAAC,CAAClB,KAAK,IAAIH,QAAQ,CAACqB,CAAC,CAAC,CAAClB,KAAK,CAACmB,eAAe,EAAE;QAC1D,OAAOD,CAAC;MACV;IACF;IACA,OAAOE,SAAS;EAClB,CAAC,EAAE,CAACvB,QAAQ,CAAC,CAAC;EAEd,IAAAwB,UAAA,GAAgCxC,QAAQ,CAACoC,YAAY,CAAC,CAAC,CAAC;IAAAK,UAAA,GAAAjB,cAAA,CAAAgB,UAAA;IAAjDE,QAAQ,GAAAD,UAAA;IAAEE,WAAW,GAAAF,UAAA;EAC5B,IAAAG,UAAA,GAA8BpC,SAAS,CAAC,KAAK,CAAC;IAAAqC,WAAA,GAAArB,cAAA,CAAAoB,UAAA;IAAvCE,MAAM,GAAAD,WAAA;IAAEE,IAAI,GAAAF,WAAA;IAAEG,KAAK,GAAAH,WAAA;EAE1B,IAAMI,eAAe,GAAG,SAAlBA,eAAeA,CAAA;IAAA,OAASlD,KAAK,CAACmD,QAAQ,CAAChB,GAAG,CAAClB,QAAQ,EAAE,UAACmC,KAAK,EAAEC,KAAK,EAAK;MAC3E,IAAMC,QAAQ,GAAG;QACfC,OAAO,WAAAA,QAACC,CAAC,EAAE;UACT,IAAIJ,KAAK,CAAChC,KAAK,CAACmC,OAAO,EAAE;YACvBH,KAAK,CAAChC,KAAK,CAACmC,OAAO,CAACC,CAAC,CAAC;UACxB;UACAZ,WAAW,CAACS,KAAK,CAAC;UAClBJ,KAAK,CAAC,CAAC;UACPrB,YAAY,CAAC6B,OAAO,GAAG,IAAI;QAC7B,CAAC;QACDC,EAAE,KAAAC,MAAA,CAAKN,KAAK,CAACO,QAAQ,CAAC,CAAC,oBAAiB;QACxCC,IAAI,EAAE;MACR,CAAC;MACD,IAAIlB,QAAQ,KAAKU,KAAK,EAAE;QACtBC,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM;MACnC;MACA,oBAAOtD,KAAK,CAAC8D,YAAY,CAACV,KAAK,EAAEE,QAAQ,CAAC;IAC5C,CAAC,CAAC;EAAA;EAEF,IAAMS,WAAW,GAAG/D,KAAK,CAAC6B,MAAM,CAAC,CAAC;EAElC3B,SAAS,CAAC,YAAM;IACd,IAAI6C,MAAM,IAAIJ,QAAQ,EAAE;MACtB,IAAMqB,QAAQ,GAAG/C,QAAQ,CAACiB,MAAM;MAChC,IAAI8B,QAAQ,GAAG,CAAC,IAAIrB,QAAQ,GAAG,CAAC,IAAIqB,QAAQ,GAAGrB,QAAQ,GAAG,CAAC,EAAE;QAC3D;QACAb,eAAe,CAACa,QAAQ,CAAC,CAACc,OAAO,CAACxC,QAAQ,CAAC,CAAC,CAAC,CAACgD,cAAc,CAAC;UAC3DC,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;IACF;IACA;IACA,IAAInB,MAAM,IAAI,CAACgB,WAAW,CAACN,OAAO,IAAId,QAAQ,EAAE;MAC9Cb,eAAe,CAACa,QAAQ,CAAC,CAACc,OAAO,CAACxC,QAAQ,CAAC,CAAC,CAAC,CAACkD,KAAK,CAAC;QAAEC,aAAa,EAAG/B,YAAY,CAAC,CAAC,KAAKM;MAAU,CAAC,CAAC;IACvG;IACA,IAAIf,YAAY,CAAC6B,OAAO,EAAE;MACxB/B,aAAa,CAACyC,KAAK,CAAC,CAAC;MACrBvC,YAAY,CAAC6B,OAAO,GAAG,KAAK;IAC9B;IACAM,WAAW,CAACN,OAAO,GAAGV,MAAM;EAC9B,CAAC,EAAE,CAACA,MAAM,EAAE9B,QAAQ,CAACiB,MAAM,EAAEG,YAAY,EAAEP,eAAe,EAAEa,QAAQ,EAAEjB,aAAa,CAAC,CAAC;EAErF,oBACE1B,KAAA,CAAAqE,aAAA,QAAAC,QAAA;IAAKpD,SAAS,EAAEb,UAAU,CAAC,kBAAkB,EAAEa,SAAS;EAAE,GAAKE,KAAK,gBAClEpB,KAAA,CAAAqE,aAAA,CAAC9D,MAAM;IACL,iBAAc,MAAM;IACpB,iBAAewC,MAAO;IACtBwB,GAAG,EAAE5C,gBAAiB;IACtBR,OAAO,EAAEA,OAAQ;IACjBqD,SAAS,EAAElE,UAAW;IACtBiD,OAAO,EAAEP;EAAK,GAEbL,QAAQ,KAAKH,SAAS,IAAIvB,QAAQ,CAAC0B,QAAQ,CAAC,GAAG1B,QAAQ,CAAC0B,QAAQ,CAAC,CAACvB,KAAK,CAACH,QAAQ,GAAGD,cAC9E,CAAC,eACThB,KAAA,CAAAqE,aAAA;IAAKnD,SAAS,EAAC;EAAwB,gBACrClB,KAAA,CAAAqE,aAAA,CAAC7D,UAAU;IACTiE,SAAS,EAAC,cAAc;IACxBC,WAAW,EAAEhD,aAAc;IAC3BqB,MAAM,EAAEA,MAAO;IACf4B,OAAO,EAAE1B,KAAM;IACf2B,SAAS,EACP,CACE;MACEC,IAAI,EAAE,MAAM;MACZC,OAAO,EAAE;QACPC,OAAO,EAAE;UAAEC,GAAG,EAAE,GAAG;UAAEC,MAAM,EAAE;QAAI;MACnC;IACF,CAAC;EAEJ,gBAEDjF,KAAA,CAAAqE,aAAA,CAAC3D,IAAI;IAAC,cAAW;EAAa,GAC3BwC,eAAe,CAAC,CAAC,CAACf,GAAG,CAAC,UAACiB,KAAK,EAAEC,KAAK;IAAA,oBAClCrD,KAAA,CAAAqE,aAAA;MAAKa,GAAG,EAAE9B,KAAK,CAAChC,KAAK,CAACsC,EAAG;MAACa,GAAG,EAAEzC,eAAe,CAACuB,KAAK;IAAE,GACnDD,KACE,CAAC;EAAA,CACP,CACG,CACI,CACT,CACF,CAAC;AAEV;AAEAtC,UAAU,CAACqE,SAAS,GAAG;EACrB;EACAnE,cAAc,EAAEZ,SAAS,CAACgF,MAAM;EAChC;EACAnE,QAAQ,EAAEb,SAAS,CAACiF,IAAI,CAACC,UAAU;EACnC;EACApE,SAAS,EAAEd,SAAS,CAACgF,MAAM;EAC3B;EACAjE,OAAO,EAAEf,SAAS,CAACgF;AACrB,CAAC;AAEDtE,UAAU,CAACyE,YAAY,GAAG;EACxBvE,cAAc,EAAEH,2BAA2B;EAC3CK,SAAS,EAAEsB,SAAS;EACpBrB,OAAO,EAAE;AACX,CAAC;AAED,IAAMqE,4BAA4B,GAAG7E,mBAAmB,CAACG,UAAU,EAAE,YAAY,EAAE;EACjF2E,MAAM,EAAE;IACNC,QAAQ,EAAE9E,SAAS,CAAC+E,gBAAgB;IACpCC,OAAO,EAAE,iDAAiD;IAC1DC,OAAO,EAAE,SAAS;IAClBC,SAAS,EAAE,SAAAA,UAAA;MAAA,OAAM,MAAM;IAAA;EACzB;AACF,CAAC,CAAC;AAEF,eAAeN,4BAA4B","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SelectMenu.js","names":["React","useState","useEffect","useCallback","PropTypes","classNames","ExpandMore","Button","ModalPopup","useToggle","Menu","withDeprecatedProps","DeprTypes","SELECT_MENU_DEFAULT_MESSAGE","SelectMenu","_ref","defaultMessage","children","className","variant","disabled","props","_objectWithoutProperties","_excluded","_useState","_useState2","_slicedToArray","triggerTarget","setTriggerTarget","focusMenuRef","useRef","itemsCollection","useMemo","Array","from","length","map","createRef","defaultIndex","i","defaultSelected","undefined","_useState3","_useState4","selected","setSelected","_useToggle","_useToggle2","isOpen","open","close","createMenuItems","Children","child","index","newProps","onClick","e","current","id","concat","toString","role","cloneElement","prevOpenRef","numItems","scrollIntoView","block","focus","preventScroll","createElement","_extends","ref","iconAfter","placement","positionRef","onClose","modifiers","name","options","padding","top","bottom","key","propTypes","string","node","isRequired","bool","defaultProps","SelectMenuWithDeprecatedProp","isLink","deprType","MOVED_AND_FORMAT","message","newName","transform"],"sources":["../../src/Menu/SelectMenu.jsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { ExpandMore } from '../../icons';\nimport Button from '../Button';\nimport ModalPopup from '../Modal/ModalPopup';\nimport useToggle from '../hooks/useToggle';\nimport Menu from '.';\nimport withDeprecatedProps, { DeprTypes } from '../withDeprecatedProps';\n\nexport const SELECT_MENU_DEFAULT_MESSAGE = 'Select...';\n\nfunction SelectMenu({\n defaultMessage,\n children,\n className,\n variant,\n disabled,\n ...props\n}) {\n const [triggerTarget, setTriggerTarget] = useState(null);\n // this ref is used to focus the menu open button after any menu option is clicked.\n // triggerTarget.current.focus() inside the onCLick() function didn't guarantee element focus.\n const focusMenuRef = React.useRef(false);\n const itemsCollection = React.useMemo(\n () => Array.from({ length: children.length }).map(() => React.createRef()),\n [children.length],\n );\n\n const defaultIndex = useCallback(() => {\n for (let i = 0; i < children.length; i++) {\n if (children[i].props && children[i].props.defaultSelected) {\n return i;\n }\n }\n return undefined;\n }, [children]);\n\n const [selected, setSelected] = useState(defaultIndex());\n const [isOpen, open, close] = useToggle(false);\n\n const createMenuItems = () => React.Children.map(children, (child, index) => {\n const newProps = {\n onClick(e) {\n if (child.props.onClick) {\n child.props.onClick(e);\n }\n setSelected(index);\n close();\n focusMenuRef.current = true;\n },\n id: `${index.toString()}_pgn__menu-item`,\n role: 'link',\n };\n if (selected === index) {\n newProps['aria-current'] = 'page';\n }\n return React.cloneElement(child, newProps);\n });\n\n const prevOpenRef = React.useRef();\n\n useEffect(() => {\n if (isOpen && selected) {\n const numItems = children.length;\n if (numItems > 6 && selected > 1 && numItems - selected > 2) {\n // on \"middle elements\", set offset to center of block and scroll to center\n itemsCollection[selected].current.children[0].scrollIntoView({\n block: 'center',\n });\n }\n }\n // set focus on open\n if (isOpen && !prevOpenRef.current && selected) {\n itemsCollection[selected].current.children[0].focus({ preventScroll: (defaultIndex() === selected) });\n }\n if (focusMenuRef.current) {\n triggerTarget.focus();\n focusMenuRef.current = false;\n }\n prevOpenRef.current = isOpen;\n }, [isOpen, children.length, defaultIndex, itemsCollection, selected, triggerTarget]);\n\n return (\n <div className={classNames('pgn__menu-select', className)} {...props}>\n <Button\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n ref={setTriggerTarget}\n variant={variant}\n iconAfter={ExpandMore}\n onClick={open}\n disabled={disabled}\n >\n {selected !== undefined && children[selected] ? children[selected].props.children : defaultMessage}\n </Button>\n <div className=\"pgn__menu-select-popup\">\n <ModalPopup\n placement=\"bottom-start\"\n positionRef={triggerTarget}\n isOpen={isOpen}\n onClose={close}\n modifiers={\n [\n {\n name: 'flip',\n options: {\n padding: { top: 150, bottom: 150 },\n },\n },\n ]\n }\n >\n <Menu aria-label=\"Select Menu\">\n {createMenuItems().map((child, index) => (\n <div key={child.props.id} ref={itemsCollection[index]}>\n {child}\n </div>\n ))}\n </Menu>\n </ModalPopup>\n </div>\n </div>\n );\n}\n\nSelectMenu.propTypes = {\n /** String that is displayed for default value of the ``SelectMenu`` */\n defaultMessage: PropTypes.string,\n /** Specifies the content of the ``SelectMenu`` */\n children: PropTypes.node.isRequired,\n /** Specifies class name to append to the base element */\n className: PropTypes.string,\n /** Specifies variant to use. */\n variant: PropTypes.string,\n /** Specifies if the `SelectMenu` is disabled. */\n disabled: PropTypes.bool,\n};\n\nSelectMenu.defaultProps = {\n defaultMessage: SELECT_MENU_DEFAULT_MESSAGE,\n className: undefined,\n variant: 'outline-primary',\n disabled: false,\n};\n\nconst SelectMenuWithDeprecatedProp = withDeprecatedProps(SelectMenu, 'SelectMenu', {\n isLink: {\n deprType: DeprTypes.MOVED_AND_FORMAT,\n message: 'Use \"variant\" prop instead, i.e. variant=\"link\"',\n newName: 'variant',\n transform: () => 'link',\n },\n});\n\nexport default SelectMenuWithDeprecatedProp;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/Menu/index.scss
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--pgn-elevation-menu-box-shadow:
|
|
3
|
+
var(--pgn-elevation-menu-box-shadow-offset-x)
|
|
4
|
+
var(--pgn-elevation-menu-box-shadow-offset-y)
|
|
5
|
+
var(--pgn-elevation-menu-box-shadow-blur)
|
|
6
|
+
var(--pgn-elevation-menu-box-shadow-color);
|
|
7
|
+
}
|
|
8
|
+
|
|
1
9
|
.pgn__menu {
|
|
2
10
|
border-radius: var(--pgn-size-menu-base-border-radius);
|
|
3
11
|
box-shadow: var(--pgn-elevation-menu-box-shadow);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ContextData {
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
isBlocking: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare const ModalContext: React.Context<ContextData>;
|
|
8
|
+
declare function ModalContextProvider({ onClose, isOpen, isBlocking, children, }: {
|
|
9
|
+
onClose: () => void;
|
|
10
|
+
isOpen: boolean;
|
|
11
|
+
isBlocking?: boolean;
|
|
12
|
+
children?: React.ReactNode;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export { ModalContextProvider };
|
|
15
|
+
export default ModalContext;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
2
|
var ModalContext = /*#__PURE__*/React.createContext({
|
|
4
|
-
onClose: function onClose() {}
|
|
3
|
+
onClose: function onClose() {},
|
|
4
|
+
isOpen: false,
|
|
5
|
+
isBlocking: false
|
|
5
6
|
});
|
|
6
7
|
function ModalContextProvider(_ref) {
|
|
7
8
|
var onClose = _ref.onClose,
|
|
8
9
|
isOpen = _ref.isOpen,
|
|
9
|
-
isBlocking = _ref.isBlocking,
|
|
10
|
-
|
|
10
|
+
_ref$isBlocking = _ref.isBlocking,
|
|
11
|
+
isBlocking = _ref$isBlocking === void 0 ? false : _ref$isBlocking,
|
|
12
|
+
_ref$children = _ref.children,
|
|
13
|
+
children = _ref$children === void 0 ? null : _ref$children;
|
|
11
14
|
var modalContextValue = useMemo(function () {
|
|
12
15
|
return {
|
|
13
16
|
onClose: onClose,
|
|
@@ -19,16 +22,6 @@ function ModalContextProvider(_ref) {
|
|
|
19
22
|
value: modalContextValue
|
|
20
23
|
}, children);
|
|
21
24
|
}
|
|
22
|
-
ModalContextProvider.propTypes = {
|
|
23
|
-
children: PropTypes.node,
|
|
24
|
-
onClose: PropTypes.func.isRequired,
|
|
25
|
-
isBlocking: PropTypes.bool,
|
|
26
|
-
isOpen: PropTypes.bool.isRequired
|
|
27
|
-
};
|
|
28
|
-
ModalContextProvider.defaultProps = {
|
|
29
|
-
children: null,
|
|
30
|
-
isBlocking: false
|
|
31
|
-
};
|
|
32
25
|
export { ModalContextProvider };
|
|
33
26
|
export default ModalContext;
|
|
34
27
|
//# sourceMappingURL=ModalContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalContext.js","names":["React","useMemo","
|
|
1
|
+
{"version":3,"file":"ModalContext.js","names":["React","useMemo","ModalContext","createContext","onClose","isOpen","isBlocking","ModalContextProvider","_ref","_ref$isBlocking","_ref$children","children","modalContextValue","createElement","Provider","value"],"sources":["../../src/Modal/ModalContext.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\ninterface ContextData {\n onClose: () => void;\n isOpen: boolean;\n isBlocking: boolean;\n}\n\nconst ModalContext = React.createContext<ContextData>({\n onClose: () => {},\n isOpen: false,\n isBlocking: false,\n});\n\nfunction ModalContextProvider({\n onClose,\n isOpen,\n isBlocking = false,\n children = null,\n}: {\n onClose: () => void;\n isOpen: boolean;\n isBlocking?: boolean;\n children?: React.ReactNode;\n}) {\n const modalContextValue = useMemo<ContextData>(\n () => ({ onClose, isOpen, isBlocking }),\n [onClose, isOpen, isBlocking],\n );\n\n return (\n <ModalContext.Provider value={modalContextValue}>\n {children}\n </ModalContext.Provider>\n );\n}\n\nexport { ModalContextProvider };\nexport default ModalContext;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAQtC,IAAMC,YAAY,gBAAGF,KAAK,CAACG,aAAa,CAAc;EACpDC,OAAO,EAAE,SAAAA,QAAA,EAAM,CAAC,CAAC;EACjBC,MAAM,EAAE,KAAK;EACbC,UAAU,EAAE;AACd,CAAC,CAAC;AAEF,SAASC,oBAAoBA,CAAAC,IAAA,EAU1B;EAAA,IATDJ,OAAO,GAAAI,IAAA,CAAPJ,OAAO;IACPC,MAAM,GAAAG,IAAA,CAANH,MAAM;IAAAI,eAAA,GAAAD,IAAA,CACNF,UAAU;IAAVA,UAAU,GAAAG,eAAA,cAAG,KAAK,GAAAA,eAAA;IAAAC,aAAA,GAAAF,IAAA,CAClBG,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,IAAI,GAAAA,aAAA;EAOf,IAAME,iBAAiB,GAAGX,OAAO,CAC/B;IAAA,OAAO;MAAEG,OAAO,EAAPA,OAAO;MAAEC,MAAM,EAANA,MAAM;MAAEC,UAAU,EAAVA;IAAW,CAAC;EAAA,CAAC,EACvC,CAACF,OAAO,EAAEC,MAAM,EAAEC,UAAU,CAC9B,CAAC;EAED,oBACEN,KAAA,CAAAa,aAAA,CAACX,YAAY,CAACY,QAAQ;IAACC,KAAK,EAAEH;EAAkB,GAC7CD,QACoB,CAAC;AAE5B;AAEA,SAASJ,oBAAoB;AAC7B,eAAeL,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
export declare const MODAL_DIALOG_CLOSE_LABEL = "Close";
|
|
4
|
+
interface Props {
|
|
5
|
+
/** Specifies the content of the dialog */
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
/** The aria-label of the dialog */
|
|
8
|
+
title: string;
|
|
9
|
+
/** A callback to close the modal dialog, e.g. when Escape is pressed */
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
/** Is the modal dialog open or closed? */
|
|
12
|
+
isOpen?: boolean;
|
|
13
|
+
/** The close 'x' icon button in the top right of the dialog box */
|
|
14
|
+
hasCloseButton?: boolean;
|
|
15
|
+
/** Size determines the maximum width of the dialog box */
|
|
16
|
+
size?: 'sm' | 'md' | 'lg' | 'xl' | 'fullscreen';
|
|
17
|
+
/** The visual style of the dialog box */
|
|
18
|
+
variant?: 'default' | 'warning' | 'danger' | 'success' | 'dark';
|
|
19
|
+
/** The label supplied to the close icon button if one is rendered */
|
|
20
|
+
closeLabel?: string;
|
|
21
|
+
/** Specifies class name to append to the base element */
|
|
22
|
+
className?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Determines where a scrollbar should appear if a modal is too large for the
|
|
25
|
+
* viewport. When false, the ``ModalDialog``. Body receives a scrollbar, when true
|
|
26
|
+
* the browser window itself receives the scrollbar.
|
|
27
|
+
*/
|
|
28
|
+
isFullscreenScroll?: boolean;
|
|
29
|
+
/** To show full screen view on mobile screens */
|
|
30
|
+
isFullscreenOnMobile?: boolean;
|
|
31
|
+
/** Prevent clicking on the backdrop or pressing Esc to close the modal */
|
|
32
|
+
isBlocking?: boolean;
|
|
33
|
+
/** Specifies the z-index of the modal */
|
|
34
|
+
zIndex?: number;
|
|
35
|
+
/** Specifies whether overflow is visible in the modal */
|
|
36
|
+
isOverflowVisible?: boolean;
|
|
37
|
+
}
|
|
38
|
+
declare function ModalDialog({ children, title, isOpen, onClose, size, variant, hasCloseButton, closeLabel, isFullscreenScroll, className, isFullscreenOnMobile, isBlocking, zIndex, isOverflowVisible, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
39
|
+
declare namespace ModalDialog {
|
|
40
|
+
var propTypes: {
|
|
41
|
+
/**
|
|
42
|
+
* Specifies the content of the dialog
|
|
43
|
+
*/
|
|
44
|
+
children: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
|
|
45
|
+
/**
|
|
46
|
+
* The aria-label of the dialog
|
|
47
|
+
*/
|
|
48
|
+
title: PropTypes.Validator<string>;
|
|
49
|
+
/**
|
|
50
|
+
* A callback to close the modal dialog
|
|
51
|
+
*/
|
|
52
|
+
onClose: PropTypes.Validator<(...args: any[]) => any>;
|
|
53
|
+
/**
|
|
54
|
+
* Is the modal dialog open or closed
|
|
55
|
+
*/
|
|
56
|
+
isOpen: PropTypes.Requireable<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* The close 'x' icon button in the top right of the dialog box
|
|
59
|
+
*/
|
|
60
|
+
hasCloseButton: PropTypes.Requireable<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* Sizes determine the maximum width of the dialog box
|
|
63
|
+
*/
|
|
64
|
+
size: PropTypes.Requireable<string>;
|
|
65
|
+
/**
|
|
66
|
+
* The visual style of the dialog box
|
|
67
|
+
*/
|
|
68
|
+
variant: PropTypes.Requireable<string>;
|
|
69
|
+
/**
|
|
70
|
+
* The label supplied to the close icon button if one is rendered
|
|
71
|
+
*/
|
|
72
|
+
closeLabel: PropTypes.Requireable<string>;
|
|
73
|
+
/**
|
|
74
|
+
* Specifies class name to append to the base element
|
|
75
|
+
*/
|
|
76
|
+
className: PropTypes.Requireable<string>;
|
|
77
|
+
/**
|
|
78
|
+
* Determines where a scrollbar should appear if a modal is too large for the
|
|
79
|
+
* viewport. When false, the ``ModalDialog``. Body receives a scrollbar, when true
|
|
80
|
+
* the browser window itself receives the scrollbar.
|
|
81
|
+
*/
|
|
82
|
+
isFullscreenScroll: PropTypes.Requireable<boolean>;
|
|
83
|
+
/**
|
|
84
|
+
* To show full screen view on mobile screens
|
|
85
|
+
*/
|
|
86
|
+
isFullscreenOnMobile: PropTypes.Requireable<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Prevent clicking on the backdrop or pressing Esc to close the modal
|
|
89
|
+
*/
|
|
90
|
+
isBlocking: PropTypes.Requireable<boolean>;
|
|
91
|
+
/**
|
|
92
|
+
* Specifies the z-index of the modal
|
|
93
|
+
*/
|
|
94
|
+
zIndex: PropTypes.Requireable<number>;
|
|
95
|
+
/**
|
|
96
|
+
* Specifies whether overflow content inside the modal should be visible.
|
|
97
|
+
* - `true` - content that exceeds the modal boundaries will remain visible outside the modal's main viewport,
|
|
98
|
+
* rather than being clipped or hidden.
|
|
99
|
+
* - `false` - any overflow content will be clipped to fit within the modal's dimensions.
|
|
100
|
+
*/
|
|
101
|
+
isOverflowVisible: PropTypes.Validator<boolean>;
|
|
102
|
+
};
|
|
103
|
+
var Header: import("react-bootstrap/esm/helpers").BsPrefixRefForwardingComponent<"div", import("./ModalDialogHeader").Props>;
|
|
104
|
+
var Title: any;
|
|
105
|
+
var Footer: any;
|
|
106
|
+
var CloseButton: any;
|
|
107
|
+
var Body: any;
|
|
108
|
+
var Hero: any;
|
|
109
|
+
}
|
|
110
|
+
export default ModalDialog;
|
|
@@ -7,11 +7,16 @@ import PropTypes from 'prop-types';
|
|
|
7
7
|
import classNames from 'classnames';
|
|
8
8
|
import { useMediaQuery } from 'react-responsive';
|
|
9
9
|
import ModalLayer from './ModalLayer';
|
|
10
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
10
11
|
import ModalCloseButton from './ModalCloseButton';
|
|
11
12
|
import ModalDialogHeader from './ModalDialogHeader';
|
|
13
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
12
14
|
import ModalDialogTitle from './ModalDialogTitle';
|
|
15
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
13
16
|
import ModalDialogFooter from './ModalDialogFooter';
|
|
17
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
14
18
|
import ModalDialogBody from './ModalDialogBody';
|
|
19
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
15
20
|
import ModalDialogHero from './ModalDialogHero';
|
|
16
21
|
import Icon from '../Icon';
|
|
17
22
|
import IconButton from '../IconButton';
|
|
@@ -21,18 +26,27 @@ function ModalDialog(_ref) {
|
|
|
21
26
|
var _classNames;
|
|
22
27
|
var children = _ref.children,
|
|
23
28
|
title = _ref.title,
|
|
24
|
-
isOpen = _ref.isOpen,
|
|
29
|
+
_ref$isOpen = _ref.isOpen,
|
|
30
|
+
isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
|
|
25
31
|
onClose = _ref.onClose,
|
|
26
|
-
size = _ref.size,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
_ref$size = _ref.size,
|
|
33
|
+
size = _ref$size === void 0 ? 'md' : _ref$size,
|
|
34
|
+
_ref$variant = _ref.variant,
|
|
35
|
+
variant = _ref$variant === void 0 ? 'default' : _ref$variant,
|
|
36
|
+
_ref$hasCloseButton = _ref.hasCloseButton,
|
|
37
|
+
hasCloseButton = _ref$hasCloseButton === void 0 ? true : _ref$hasCloseButton,
|
|
38
|
+
_ref$closeLabel = _ref.closeLabel,
|
|
39
|
+
closeLabel = _ref$closeLabel === void 0 ? MODAL_DIALOG_CLOSE_LABEL : _ref$closeLabel,
|
|
40
|
+
_ref$isFullscreenScro = _ref.isFullscreenScroll,
|
|
41
|
+
isFullscreenScroll = _ref$isFullscreenScro === void 0 ? false : _ref$isFullscreenScro,
|
|
31
42
|
className = _ref.className,
|
|
32
|
-
|
|
33
|
-
|
|
43
|
+
_ref$isFullscreenOnMo = _ref.isFullscreenOnMobile,
|
|
44
|
+
isFullscreenOnMobile = _ref$isFullscreenOnMo === void 0 ? false : _ref$isFullscreenOnMo,
|
|
45
|
+
_ref$isBlocking = _ref.isBlocking,
|
|
46
|
+
isBlocking = _ref$isBlocking === void 0 ? false : _ref$isBlocking,
|
|
34
47
|
zIndex = _ref.zIndex,
|
|
35
|
-
|
|
48
|
+
_ref$isOverflowVisibl = _ref.isOverflowVisible,
|
|
49
|
+
isOverflowVisible = _ref$isOverflowVisibl === void 0 ? true : _ref$isOverflowVisibl;
|
|
36
50
|
var isMobile = useMediaQuery({
|
|
37
51
|
query: '(max-width: 767.98px)'
|
|
38
52
|
});
|
|
@@ -111,21 +125,13 @@ ModalDialog.propTypes = {
|
|
|
111
125
|
* Specifies the z-index of the modal
|
|
112
126
|
*/
|
|
113
127
|
zIndex: PropTypes.number,
|
|
114
|
-
/**
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
variant: 'default',
|
|
122
|
-
closeLabel: MODAL_DIALOG_CLOSE_LABEL,
|
|
123
|
-
className: undefined,
|
|
124
|
-
isFullscreenScroll: false,
|
|
125
|
-
isFullscreenOnMobile: false,
|
|
126
|
-
isBlocking: false,
|
|
127
|
-
zIndex: undefined,
|
|
128
|
-
isOverflowVisible: true
|
|
128
|
+
/**
|
|
129
|
+
* Specifies whether overflow content inside the modal should be visible.
|
|
130
|
+
* - `true` - content that exceeds the modal boundaries will remain visible outside the modal's main viewport,
|
|
131
|
+
* rather than being clipped or hidden.
|
|
132
|
+
* - `false` - any overflow content will be clipped to fit within the modal's dimensions.
|
|
133
|
+
*/
|
|
134
|
+
isOverflowVisible: PropTypes.bool.isRequired
|
|
129
135
|
};
|
|
130
136
|
ModalDialog.Header = ModalDialogHeader;
|
|
131
137
|
ModalDialog.Title = ModalDialogTitle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalDialog.js","names":["React","PropTypes","classNames","useMediaQuery","ModalLayer","ModalCloseButton","ModalDialogHeader","ModalDialogTitle","ModalDialogFooter","ModalDialogBody","ModalDialogHero","Icon","IconButton","Close","MODAL_DIALOG_CLOSE_LABEL","ModalDialog","_ref","_classNames","children","title","isOpen","onClose","size","variant","hasCloseButton","closeLabel","isFullscreenScroll","className","isFullscreenOnMobile","isBlocking","zIndex","isOverflowVisible","isMobile","query","showFullScreen","createElement","role","_defineProperty","concat","as","iconAs","invertColors","src","alt","propTypes","node","isRequired","string","func","bool","oneOf","number","defaultProps","undefined","Header","Title","Footer","CloseButton","Body","Hero"],"sources":["../../src/Modal/ModalDialog.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useMediaQuery } from 'react-responsive';\nimport ModalLayer from './ModalLayer';\nimport ModalCloseButton from './ModalCloseButton';\nimport ModalDialogHeader from './ModalDialogHeader';\nimport ModalDialogTitle from './ModalDialogTitle';\nimport ModalDialogFooter from './ModalDialogFooter';\nimport ModalDialogBody from './ModalDialogBody';\nimport ModalDialogHero from './ModalDialogHero';\n\nimport Icon from '../Icon';\nimport IconButton from '../IconButton';\nimport { Close } from '../../icons';\n\nexport const MODAL_DIALOG_CLOSE_LABEL = 'Close';\n\nfunction ModalDialog({\n children,\n title,\n isOpen,\n onClose,\n size,\n variant,\n hasCloseButton,\n closeLabel,\n isFullscreenScroll,\n className,\n isFullscreenOnMobile,\n isBlocking,\n zIndex,\n isOverflowVisible,\n}) {\n const isMobile = useMediaQuery({ query: '(max-width: 767.98px)' });\n const showFullScreen = (isFullscreenOnMobile && isMobile);\n return (\n <ModalLayer isOpen={isOpen} onClose={onClose} isBlocking={isBlocking} zIndex={zIndex}>\n <div\n role=\"dialog\"\n aria-label={title}\n className={classNames(\n 'pgn__modal',\n {\n [`pgn__modal-${showFullScreen ? 'fullscreen' : size}`]: size,\n [`pgn__modal-${variant}`]: variant,\n 'pgn__modal-scroll-fullscreen': isFullscreenScroll,\n 'pgn__modal-visible-overflow': isOverflowVisible,\n },\n className,\n )}\n >\n {hasCloseButton && (\n <div className=\"pgn__modal-close-container\">\n <ModalCloseButton\n as={IconButton}\n iconAs={Icon}\n invertColors={variant === 'dark'}\n src={Close}\n alt={closeLabel}\n />\n </div>\n )}\n {children}\n </div>\n </ModalLayer>\n );\n}\n\nModalDialog.propTypes = {\n /**\n * Specifies the content of the dialog\n */\n children: PropTypes.node.isRequired,\n /**\n * The aria-label of the dialog\n */\n title: PropTypes.string.isRequired,\n /**\n * A callback to close the modal dialog\n */\n onClose: PropTypes.func.isRequired,\n /**\n * Is the modal dialog open or closed\n */\n isOpen: PropTypes.bool,\n /**\n * The close 'x' icon button in the top right of the dialog box\n */\n hasCloseButton: PropTypes.bool,\n /**\n * Sizes determine the maximum width of the dialog box\n */\n size: PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'fullscreen']),\n /**\n * The visual style of the dialog box\n */\n variant: PropTypes.oneOf(['default', 'warning', 'danger', 'success', 'dark']),\n /**\n * The label supplied to the close icon button if one is rendered\n */\n closeLabel: PropTypes.string,\n /**\n * Specifies class name to append to the base element\n */\n className: PropTypes.string,\n /**\n * Determines where a scrollbar should appear if a modal is too large for the\n * viewport. When false, the ``ModalDialog``. Body receives a scrollbar, when true\n * the browser window itself receives the scrollbar.\n */\n isFullscreenScroll: PropTypes.bool,\n /**\n * To show full screen view on mobile screens\n */\n isFullscreenOnMobile: PropTypes.bool,\n /**\n * Prevent clicking on the backdrop or pressing Esc to close the modal\n */\n isBlocking: PropTypes.bool,\n /**\n * Specifies the z-index of the modal\n */\n zIndex: PropTypes.number,\n /** Specifies whether overflow is visible in the modal */\n isOverflowVisible: PropTypes.bool,\n};\n\nModalDialog.defaultProps = {\n isOpen: false,\n hasCloseButton: true,\n size: 'md',\n variant: 'default',\n closeLabel: MODAL_DIALOG_CLOSE_LABEL,\n className: undefined,\n isFullscreenScroll: false,\n isFullscreenOnMobile: false,\n isBlocking: false,\n zIndex: undefined,\n isOverflowVisible: true,\n};\n\nModalDialog.Header = ModalDialogHeader;\nModalDialog.Title = ModalDialogTitle;\nModalDialog.Footer = ModalDialogFooter;\nModalDialog.CloseButton = ModalCloseButton;\nModalDialog.Body = ModalDialogBody;\nModalDialog.Hero = ModalDialogHero;\n\nexport default ModalDialog;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ModalDialog.js","names":["React","PropTypes","classNames","useMediaQuery","ModalLayer","ModalCloseButton","ModalDialogHeader","ModalDialogTitle","ModalDialogFooter","ModalDialogBody","ModalDialogHero","Icon","IconButton","Close","MODAL_DIALOG_CLOSE_LABEL","ModalDialog","_ref","_classNames","children","title","_ref$isOpen","isOpen","onClose","_ref$size","size","_ref$variant","variant","_ref$hasCloseButton","hasCloseButton","_ref$closeLabel","closeLabel","_ref$isFullscreenScro","isFullscreenScroll","className","_ref$isFullscreenOnMo","isFullscreenOnMobile","_ref$isBlocking","isBlocking","zIndex","_ref$isOverflowVisibl","isOverflowVisible","isMobile","query","showFullScreen","createElement","role","_defineProperty","concat","as","iconAs","invertColors","src","alt","propTypes","node","isRequired","string","func","bool","oneOf","number","Header","Title","Footer","CloseButton","Body","Hero"],"sources":["../../src/Modal/ModalDialog.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useMediaQuery } from 'react-responsive';\nimport ModalLayer from './ModalLayer';\n// @ts-ignore for now - this needs to be converted to TypeScript\nimport ModalCloseButton from './ModalCloseButton';\nimport ModalDialogHeader from './ModalDialogHeader';\n// @ts-ignore for now - this needs to be converted to TypeScript\nimport ModalDialogTitle from './ModalDialogTitle';\n// @ts-ignore for now - this needs to be converted to TypeScript\nimport ModalDialogFooter from './ModalDialogFooter';\n// @ts-ignore for now - this needs to be converted to TypeScript\nimport ModalDialogBody from './ModalDialogBody';\n// @ts-ignore for now - this needs to be converted to TypeScript\nimport ModalDialogHero from './ModalDialogHero';\n\nimport Icon from '../Icon';\nimport IconButton from '../IconButton';\nimport { Close } from '../../icons';\n\nexport const MODAL_DIALOG_CLOSE_LABEL = 'Close';\n\ninterface Props {\n /** Specifies the content of the dialog */\n children: React.ReactNode;\n /** The aria-label of the dialog */\n title: string;\n /** A callback to close the modal dialog, e.g. when Escape is pressed */\n onClose: () => void;\n /** Is the modal dialog open or closed? */\n isOpen?: boolean;\n /** The close 'x' icon button in the top right of the dialog box */\n hasCloseButton?: boolean;\n /** Size determines the maximum width of the dialog box */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'fullscreen';\n /** The visual style of the dialog box */\n variant?: 'default' | 'warning' | 'danger' | 'success' | 'dark';\n /** The label supplied to the close icon button if one is rendered */\n closeLabel?: string;\n /** Specifies class name to append to the base element */\n className?: string;\n /**\n * Determines where a scrollbar should appear if a modal is too large for the\n * viewport. When false, the ``ModalDialog``. Body receives a scrollbar, when true\n * the browser window itself receives the scrollbar.\n */\n isFullscreenScroll?: boolean;\n /** To show full screen view on mobile screens */\n isFullscreenOnMobile?: boolean;\n /** Prevent clicking on the backdrop or pressing Esc to close the modal */\n isBlocking?: boolean;\n /** Specifies the z-index of the modal */\n zIndex?: number;\n /** Specifies whether overflow is visible in the modal */\n isOverflowVisible?: boolean;\n}\n\nfunction ModalDialog({\n children,\n title,\n isOpen = false,\n onClose,\n size = 'md',\n variant = 'default',\n hasCloseButton = true,\n closeLabel = MODAL_DIALOG_CLOSE_LABEL,\n isFullscreenScroll = false,\n className,\n isFullscreenOnMobile = false,\n isBlocking = false,\n zIndex,\n isOverflowVisible = true,\n}: Props) {\n const isMobile = useMediaQuery({ query: '(max-width: 767.98px)' });\n const showFullScreen = (isFullscreenOnMobile && isMobile);\n return (\n <ModalLayer isOpen={isOpen} onClose={onClose} isBlocking={isBlocking} zIndex={zIndex}>\n <div\n role=\"dialog\"\n aria-label={title}\n className={classNames(\n 'pgn__modal',\n {\n [`pgn__modal-${showFullScreen ? 'fullscreen' : size}`]: size,\n [`pgn__modal-${variant}`]: variant,\n 'pgn__modal-scroll-fullscreen': isFullscreenScroll,\n 'pgn__modal-visible-overflow': isOverflowVisible,\n },\n className,\n )}\n >\n {hasCloseButton && (\n <div className=\"pgn__modal-close-container\">\n <ModalCloseButton\n as={IconButton}\n iconAs={Icon}\n invertColors={variant === 'dark'}\n src={Close}\n alt={closeLabel}\n />\n </div>\n )}\n {children}\n </div>\n </ModalLayer>\n );\n}\n\nModalDialog.propTypes = {\n /**\n * Specifies the content of the dialog\n */\n children: PropTypes.node.isRequired,\n /**\n * The aria-label of the dialog\n */\n title: PropTypes.string.isRequired,\n /**\n * A callback to close the modal dialog\n */\n onClose: PropTypes.func.isRequired,\n /**\n * Is the modal dialog open or closed\n */\n isOpen: PropTypes.bool,\n /**\n * The close 'x' icon button in the top right of the dialog box\n */\n hasCloseButton: PropTypes.bool,\n /**\n * Sizes determine the maximum width of the dialog box\n */\n size: PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'fullscreen']),\n /**\n * The visual style of the dialog box\n */\n variant: PropTypes.oneOf(['default', 'warning', 'danger', 'success', 'dark']),\n /**\n * The label supplied to the close icon button if one is rendered\n */\n closeLabel: PropTypes.string,\n /**\n * Specifies class name to append to the base element\n */\n className: PropTypes.string,\n /**\n * Determines where a scrollbar should appear if a modal is too large for the\n * viewport. When false, the ``ModalDialog``. Body receives a scrollbar, when true\n * the browser window itself receives the scrollbar.\n */\n isFullscreenScroll: PropTypes.bool,\n /**\n * To show full screen view on mobile screens\n */\n isFullscreenOnMobile: PropTypes.bool,\n /**\n * Prevent clicking on the backdrop or pressing Esc to close the modal\n */\n isBlocking: PropTypes.bool,\n /**\n * Specifies the z-index of the modal\n */\n zIndex: PropTypes.number,\n /**\n * Specifies whether overflow content inside the modal should be visible.\n * - `true` - content that exceeds the modal boundaries will remain visible outside the modal's main viewport,\n * rather than being clipped or hidden.\n * - `false` - any overflow content will be clipped to fit within the modal's dimensions.\n */\n isOverflowVisible: PropTypes.bool.isRequired,\n};\n\nModalDialog.Header = ModalDialogHeader;\nModalDialog.Title = ModalDialogTitle;\nModalDialog.Footer = ModalDialogFooter;\nModalDialog.CloseButton = ModalCloseButton;\nModalDialog.Body = ModalDialogBody;\nModalDialog.Hero = ModalDialogHero;\n\nexport default ModalDialog;\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,kBAAkB;AAChD,OAAOC,UAAU,MAAM,cAAc;AACrC;AACA,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD;AACA,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD;AACA,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD;AACA,OAAOC,eAAe,MAAM,mBAAmB;AAC/C;AACA,OAAOC,eAAe,MAAM,mBAAmB;AAE/C,OAAOC,IAAI,MAAM,SAAS;AAC1B,OAAOC,UAAU,MAAM,eAAe;AACtC,SAASC,KAAK,QAAQ,aAAa;AAEnC,OAAO,IAAMC,wBAAwB,GAAG,OAAO;AAqC/C,SAASC,WAAWA,CAAAC,IAAA,EAeV;EAAA,IAAAC,WAAA;EAAA,IAdRC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAAAC,WAAA,GAAAJ,IAAA,CACLK,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,KAAK,GAAAA,WAAA;IACdE,OAAO,GAAAN,IAAA,CAAPM,OAAO;IAAAC,SAAA,GAAAP,IAAA,CACPQ,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,IAAI,GAAAA,SAAA;IAAAE,YAAA,GAAAT,IAAA,CACXU,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,SAAS,GAAAA,YAAA;IAAAE,mBAAA,GAAAX,IAAA,CACnBY,cAAc;IAAdA,cAAc,GAAAD,mBAAA,cAAG,IAAI,GAAAA,mBAAA;IAAAE,eAAA,GAAAb,IAAA,CACrBc,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAGf,wBAAwB,GAAAe,eAAA;IAAAE,qBAAA,GAAAf,IAAA,CACrCgB,kBAAkB;IAAlBA,kBAAkB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAC1BE,SAAS,GAAAjB,IAAA,CAATiB,SAAS;IAAAC,qBAAA,GAAAlB,IAAA,CACTmB,oBAAoB;IAApBA,oBAAoB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAAAE,eAAA,GAAApB,IAAA,CAC5BqB,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,KAAK,GAAAA,eAAA;IAClBE,MAAM,GAAAtB,IAAA,CAANsB,MAAM;IAAAC,qBAAA,GAAAvB,IAAA,CACNwB,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;EAExB,IAAME,QAAQ,GAAGtC,aAAa,CAAC;IAAEuC,KAAK,EAAE;EAAwB,CAAC,CAAC;EAClE,IAAMC,cAAc,GAAIR,oBAAoB,IAAIM,QAAS;EACzD,oBACEzC,KAAA,CAAA4C,aAAA,CAACxC,UAAU;IAACiB,MAAM,EAAEA,MAAO;IAACC,OAAO,EAAEA,OAAQ;IAACe,UAAU,EAAEA,UAAW;IAACC,MAAM,EAAEA;EAAO,gBACnFtC,KAAA,CAAA4C,aAAA;IACEC,IAAI,EAAC,QAAQ;IACb,cAAY1B,KAAM;IAClBc,SAAS,EAAE/B,UAAU,CACnB,YAAY,GAAAe,WAAA,OAAA6B,eAAA,CAAA7B,WAAA,gBAAA8B,MAAA,CAEKJ,cAAc,GAAG,YAAY,GAAGnB,IAAI,GAAKA,IAAI,GAAAsB,eAAA,CAAA7B,WAAA,gBAAA8B,MAAA,CAC7CrB,OAAO,GAAKA,OAAO,GAAAoB,eAAA,CAAA7B,WAAA,EAClC,8BAA8B,EAAEe,kBAAkB,GAAAc,eAAA,CAAA7B,WAAA,EAClD,6BAA6B,EAAEuB,iBAAiB,GAAAvB,WAAA,GAElDgB,SACF;EAAE,GAEDL,cAAc,iBACb5B,KAAA,CAAA4C,aAAA;IAAKX,SAAS,EAAC;EAA4B,gBACzCjC,KAAA,CAAA4C,aAAA,CAACvC,gBAAgB;IACf2C,EAAE,EAAEpC,UAAW;IACfqC,MAAM,EAAEtC,IAAK;IACbuC,YAAY,EAAExB,OAAO,KAAK,MAAO;IACjCyB,GAAG,EAAEtC,KAAM;IACXuC,GAAG,EAAEtB;EAAW,CACjB,CACE,CACN,EACAZ,QACE,CACK,CAAC;AAEjB;AAEAH,WAAW,CAACsC,SAAS,GAAG;EACtB;AACF;AACA;EACEnC,QAAQ,EAAEjB,SAAS,CAACqD,IAAI,CAACC,UAAU;EACnC;AACF;AACA;EACEpC,KAAK,EAAElB,SAAS,CAACuD,MAAM,CAACD,UAAU;EAClC;AACF;AACA;EACEjC,OAAO,EAAErB,SAAS,CAACwD,IAAI,CAACF,UAAU;EAClC;AACF;AACA;EACElC,MAAM,EAAEpB,SAAS,CAACyD,IAAI;EACtB;AACF;AACA;EACE9B,cAAc,EAAE3B,SAAS,CAACyD,IAAI;EAC9B;AACF;AACA;EACElC,IAAI,EAAEvB,SAAS,CAAC0D,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;EAC7D;AACF;AACA;EACEjC,OAAO,EAAEzB,SAAS,CAAC0D,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;EAC7E;AACF;AACA;EACE7B,UAAU,EAAE7B,SAAS,CAACuD,MAAM;EAC5B;AACF;AACA;EACEvB,SAAS,EAAEhC,SAAS,CAACuD,MAAM;EAC3B;AACF;AACA;AACA;AACA;EACExB,kBAAkB,EAAE/B,SAAS,CAACyD,IAAI;EAClC;AACF;AACA;EACEvB,oBAAoB,EAAElC,SAAS,CAACyD,IAAI;EACpC;AACF;AACA;EACErB,UAAU,EAAEpC,SAAS,CAACyD,IAAI;EAC1B;AACF;AACA;EACEpB,MAAM,EAAErC,SAAS,CAAC2D,MAAM;EACxB;AACF;AACA;AACA;AACA;AACA;EACEpB,iBAAiB,EAAEvC,SAAS,CAACyD,IAAI,CAACH;AACpC,CAAC;AAEDxC,WAAW,CAAC8C,MAAM,GAAGvD,iBAAiB;AACtCS,WAAW,CAAC+C,KAAK,GAAGvD,gBAAgB;AACpCQ,WAAW,CAACgD,MAAM,GAAGvD,iBAAiB;AACtCO,WAAW,CAACiD,WAAW,GAAG3D,gBAAgB;AAC1CU,WAAW,CAACkD,IAAI,GAAGxD,eAAe;AAClCM,WAAW,CAACmD,IAAI,GAAGxD,eAAe;AAElC,eAAeK,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ComponentWithAsProp } from '../utils/types/bootstrap';
|
|
3
|
+
export interface Props {
|
|
4
|
+
as?: string;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
type HeaderType = ComponentWithAsProp<'div', Props>;
|
|
9
|
+
declare const ModalDialogHeader: HeaderType;
|
|
10
|
+
export default ModalDialogHeader;
|
|
@@ -7,17 +7,20 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
7
7
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
8
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
9
9
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
10
|
+
/* eslint-disable react/require-default-props */
|
|
10
11
|
import React from 'react';
|
|
11
12
|
import PropTypes from 'prop-types';
|
|
12
13
|
import classNames from 'classnames';
|
|
13
|
-
|
|
14
|
-
var as = _ref.as,
|
|
14
|
+
var ModalDialogHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
15
|
+
var _ref$as = _ref.as,
|
|
16
|
+
as = _ref$as === void 0 ? 'div' : _ref$as,
|
|
15
17
|
children = _ref.children,
|
|
16
18
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
17
19
|
return /*#__PURE__*/React.createElement(as, _objectSpread(_objectSpread({}, props), {}, {
|
|
20
|
+
ref: ref,
|
|
18
21
|
className: classNames('pgn__modal-header', props.className)
|
|
19
22
|
}), children);
|
|
20
|
-
}
|
|
23
|
+
});
|
|
21
24
|
ModalDialogHeader.propTypes = {
|
|
22
25
|
/** Specifies the base element */
|
|
23
26
|
as: PropTypes.elementType,
|
|
@@ -26,9 +29,5 @@ ModalDialogHeader.propTypes = {
|
|
|
26
29
|
/** Specifies class name to append to the base element */
|
|
27
30
|
className: PropTypes.string
|
|
28
31
|
};
|
|
29
|
-
ModalDialogHeader.defaultProps = {
|
|
30
|
-
as: 'div',
|
|
31
|
-
className: undefined
|
|
32
|
-
};
|
|
33
32
|
export default ModalDialogHeader;
|
|
34
33
|
//# sourceMappingURL=ModalDialogHeader.js.map
|