@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
package/src/Dropzone/index.scss
CHANGED
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--pgn-elevation-dropzone-hover:
|
|
3
|
+
var(--pgn-elevation-dropzone-hover-inset)
|
|
4
|
+
var(--pgn-elevation-dropzone-hover-offset-x)
|
|
5
|
+
var(--pgn-elevation-dropzone-hover-offset-y)
|
|
6
|
+
var(--pgn-elevation-dropzone-hover-blur)
|
|
7
|
+
var(--pgn-elevation-dropzone-hover-spread)
|
|
8
|
+
var(--pgn-elevation-dropzone-hover-color);
|
|
9
|
+
|
|
10
|
+
--pgn-elevation-dropzone-focus:
|
|
11
|
+
var(--pgn-elevation-dropzone-focus-inset)
|
|
12
|
+
var(--pgn-elevation-dropzone-focus-offset-x)
|
|
13
|
+
var(--pgn-elevation-dropzone-focus-offset-y)
|
|
14
|
+
var(--pgn-elevation-dropzone-focus-blur)
|
|
15
|
+
var(--pgn-elevation-dropzone-focus-spread)
|
|
16
|
+
var(--pgn-elevation-dropzone-focus-color);
|
|
17
|
+
|
|
18
|
+
--pgn-elevation-dropzone-error:
|
|
19
|
+
var(--pgn-elevation-dropzone-error-inset)
|
|
20
|
+
var(--pgn-elevation-dropzone-error-offset-x)
|
|
21
|
+
var(--pgn-elevation-dropzone-error-offset-y)
|
|
22
|
+
var(--pgn-elevation-dropzone-error-blur)
|
|
23
|
+
var(--pgn-elevation-dropzone-error-spread)
|
|
24
|
+
var(--pgn-elevation-dropzone-error-color);
|
|
25
|
+
|
|
26
|
+
--pgn-elevation-dropzone-active:
|
|
27
|
+
var(--pgn-elevation-dropzone-active-inset)
|
|
28
|
+
var(--pgn-elevation-dropzone-active-offset-x)
|
|
29
|
+
var(--pgn-elevation-dropzone-active-offset-y)
|
|
30
|
+
var(--pgn-elevation-dropzone-active-blur)
|
|
31
|
+
var(--pgn-elevation-dropzone-active-spread)
|
|
32
|
+
var(--pgn-elevation-dropzone-active-color);
|
|
33
|
+
}
|
|
34
|
+
|
|
1
35
|
.pgn__dropzone {
|
|
2
36
|
display: flex;
|
|
3
37
|
justify-content: center;
|
package/src/Form/_FormText.scss
CHANGED
|
@@ -1,3 +1,43 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--pgn-elevation-form-control-indicator-checked-focus:
|
|
3
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-offset-x)
|
|
4
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-offset-y)
|
|
5
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-blur)
|
|
6
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-spread)
|
|
7
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-color);
|
|
8
|
+
|
|
9
|
+
--pgn-elevation-form-control-select-border-focus:
|
|
10
|
+
var(--pgn-elevation-form-control-select-border-focus-offset-x)
|
|
11
|
+
var(--pgn-elevation-form-control-select-border-focus-offset-y)
|
|
12
|
+
var(--pgn-elevation-form-control-select-border-focus-blur)
|
|
13
|
+
var(--pgn-elevation-form-control-select-border-focus-spread)
|
|
14
|
+
var(--pgn-elevation-form-control-select-border-focus-color);
|
|
15
|
+
|
|
16
|
+
--pgn-elevation-form-control-file-focus:
|
|
17
|
+
var(--pgn-elevation-form-control-file-focus-offset-x)
|
|
18
|
+
var(--pgn-elevation-form-control-file-focus-offset-y)
|
|
19
|
+
var(--pgn-elevation-form-control-file-focus-blur)
|
|
20
|
+
var(--pgn-elevation-form-control-file-focus-spread)
|
|
21
|
+
var(--pgn-elevation-form-control-file-focus-color);
|
|
22
|
+
|
|
23
|
+
--pgn-transition-form-control:
|
|
24
|
+
var(--pgn-transition-form-control-1-property)
|
|
25
|
+
var(--pgn-transition-form-control-1-duration)
|
|
26
|
+
var(--pgn-transition-form-control-1-timing-function)
|
|
27
|
+
var(--pgn-transition-form-control-1-delay)
|
|
28
|
+
var(--pgn-transition-form-control-1-behavior),
|
|
29
|
+
var(--pgn-transition-form-control-2-property)
|
|
30
|
+
var(--pgn-transition-form-control-2-duration)
|
|
31
|
+
var(--pgn-transition-form-control-2-timing-function)
|
|
32
|
+
var(--pgn-transition-form-control-2-delay)
|
|
33
|
+
var(--pgn-transition-form-control-2-behavior),
|
|
34
|
+
var(--pgn-transition-form-control-3-property)
|
|
35
|
+
var(--pgn-transition-form-control-3-duration)
|
|
36
|
+
var(--pgn-transition-form-control-3-timing-function)
|
|
37
|
+
var(--pgn-transition-form-control-3-delay)
|
|
38
|
+
var(--pgn-transition-form-control-3-behavior);
|
|
39
|
+
}
|
|
40
|
+
|
|
1
41
|
// Embedded icons from Open Iconic.
|
|
2
42
|
// Released under MIT and copyright 2014 Waybury.
|
|
3
43
|
// https://useiconic.com/open
|
package/src/Form/_index.scss
CHANGED
|
@@ -5,6 +5,15 @@
|
|
|
5
5
|
@import "FormText";
|
|
6
6
|
@import "FormControlSet";
|
|
7
7
|
|
|
8
|
+
:root {
|
|
9
|
+
--pgn-elevation-form-control-indicator-checked-focus:
|
|
10
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-offset-x)
|
|
11
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-offset-y)
|
|
12
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-blur)
|
|
13
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-spread)
|
|
14
|
+
var(--pgn-elevation-form-control-indicator-checked-focus-color);
|
|
15
|
+
}
|
|
16
|
+
|
|
8
17
|
// A form input state used by the now deprecate Fieldset and asInput
|
|
9
18
|
// we can remove this when they are deleted.
|
|
10
19
|
.form-control.is-invalid.is-invalid-nodanger {
|
package/src/Form/_mixins.scss
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--pgn-elevation-form-input-focus:
|
|
3
|
+
var(--pgn-elevation-form-input-focus-offset-x)
|
|
4
|
+
var(--pgn-elevation-form-input-focus-offset-y)
|
|
5
|
+
var(--pgn-elevation-form-input-focus-blur)
|
|
6
|
+
var(--pgn-elevation-form-input-focus-spread)
|
|
7
|
+
var(--pgn-elevation-form-input-focus-color);
|
|
8
|
+
|
|
9
|
+
--pgn-spacing-form-control-select-feedback-icon-position:
|
|
10
|
+
var(--pgn-spacing-form-control-select-feedback-icon-position-position-y)
|
|
11
|
+
var(--pgn-spacing-form-control-select-feedback-icon-position-position-x)
|
|
12
|
+
var(--pgn-spacing-form-control-select-feedback-icon-position-offset-x)
|
|
13
|
+
var(--pgn-spacing-form-control-select-feedback-icon-position-offset-y);
|
|
14
|
+
|
|
15
|
+
--pgn-other-content-form-control-select-bg:
|
|
16
|
+
var(--pgn-other-content-form-control-select-bg-image)
|
|
17
|
+
var(--pgn-other-content-form-control-select-bg-position-x)
|
|
18
|
+
var(--pgn-other-content-form-control-select-bg-offset-y)
|
|
19
|
+
var(--pgn-other-content-form-control-select-bg-position-y)
|
|
20
|
+
/ var(--pgn-other-content-form-control-select-bg-color); // stylelint-disable-line scss/operator-no-newline-before
|
|
21
|
+
}
|
|
22
|
+
|
|
1
23
|
@mixin form-control-floating-label-initial(
|
|
2
24
|
$padding-x,
|
|
3
25
|
$padding-y,
|
|
@@ -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/src/IconButton/index.tsx
CHANGED
|
@@ -2,9 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { type Placement } from 'react-bootstrap/Overlay';
|
|
5
|
-
import Icon from '../Icon';
|
|
6
5
|
import { OverlayTrigger } from '../Overlay';
|
|
7
6
|
import Tooltip from '../Tooltip';
|
|
7
|
+
import Icon from '../Icon';
|
|
8
8
|
|
|
9
9
|
interface Props extends React.HTMLAttributes<HTMLButtonElement> {
|
|
10
10
|
iconAs?: React.ComponentType<any>,
|
package/src/Menu/SelectMenu.jsx
CHANGED
|
@@ -15,6 +15,7 @@ function SelectMenu({
|
|
|
15
15
|
children,
|
|
16
16
|
className,
|
|
17
17
|
variant,
|
|
18
|
+
disabled,
|
|
18
19
|
...props
|
|
19
20
|
}) {
|
|
20
21
|
const [triggerTarget, setTriggerTarget] = useState(null);
|
|
@@ -89,6 +90,7 @@ function SelectMenu({
|
|
|
89
90
|
variant={variant}
|
|
90
91
|
iconAfter={ExpandMore}
|
|
91
92
|
onClick={open}
|
|
93
|
+
disabled={disabled}
|
|
92
94
|
>
|
|
93
95
|
{selected !== undefined && children[selected] ? children[selected].props.children : defaultMessage}
|
|
94
96
|
</Button>
|
|
@@ -131,12 +133,15 @@ SelectMenu.propTypes = {
|
|
|
131
133
|
className: PropTypes.string,
|
|
132
134
|
/** Specifies variant to use. */
|
|
133
135
|
variant: PropTypes.string,
|
|
136
|
+
/** Specifies if the `SelectMenu` is disabled. */
|
|
137
|
+
disabled: PropTypes.bool,
|
|
134
138
|
};
|
|
135
139
|
|
|
136
140
|
SelectMenu.defaultProps = {
|
|
137
141
|
defaultMessage: SELECT_MENU_DEFAULT_MESSAGE,
|
|
138
142
|
className: undefined,
|
|
139
143
|
variant: 'outline-primary',
|
|
144
|
+
disabled: false,
|
|
140
145
|
};
|
|
141
146
|
|
|
142
147
|
const SelectMenuWithDeprecatedProp = withDeprecatedProps(SelectMenu, 'SelectMenu', {
|
|
@@ -58,6 +58,12 @@ describe('correct rendering', () => {
|
|
|
58
58
|
const button = screen.getByRole('button');
|
|
59
59
|
expect(button).toHaveClass('btn-brand');
|
|
60
60
|
});
|
|
61
|
+
|
|
62
|
+
it('renders as disabled', () => {
|
|
63
|
+
render(DefaultSelectMenu({ disabled: true }));
|
|
64
|
+
const button = screen.getByRole('button');
|
|
65
|
+
expect(button).toBeDisabled();
|
|
66
|
+
});
|
|
61
67
|
});
|
|
62
68
|
|
|
63
69
|
describe('mouse behavior & keyboard behavior', () => {
|
package/src/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);
|
package/src/Menu/select-menu.md
CHANGED
|
@@ -56,3 +56,11 @@ The ``Modal`` brings focus to the first menu element upon the click of the trigg
|
|
|
56
56
|
<MenuItem>M. Hortens</MenuItem>
|
|
57
57
|
</SelectMenu>
|
|
58
58
|
```
|
|
59
|
+
|
|
60
|
+
## Disabled
|
|
61
|
+
|
|
62
|
+
```jsx live
|
|
63
|
+
<SelectMenu disabled>
|
|
64
|
+
<MenuItem>A Menu Item</MenuItem>
|
|
65
|
+
</SelectMenu>
|
|
66
|
+
```
|
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
interface ContextData {
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
isOpen: boolean;
|
|
6
|
+
isBlocking: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const ModalContext = React.createContext<ContextData>({
|
|
5
10
|
onClose: () => {},
|
|
11
|
+
isOpen: false,
|
|
12
|
+
isBlocking: false,
|
|
6
13
|
});
|
|
7
14
|
|
|
8
15
|
function ModalContextProvider({
|
|
9
|
-
onClose,
|
|
16
|
+
onClose,
|
|
17
|
+
isOpen,
|
|
18
|
+
isBlocking = false,
|
|
19
|
+
children = null,
|
|
20
|
+
}: {
|
|
21
|
+
onClose: () => void;
|
|
22
|
+
isOpen: boolean;
|
|
23
|
+
isBlocking?: boolean;
|
|
24
|
+
children?: React.ReactNode;
|
|
10
25
|
}) {
|
|
11
|
-
const modalContextValue = useMemo(
|
|
26
|
+
const modalContextValue = useMemo<ContextData>(
|
|
12
27
|
() => ({ onClose, isOpen, isBlocking }),
|
|
13
28
|
[onClose, isOpen, isBlocking],
|
|
14
29
|
);
|
|
@@ -20,17 +35,5 @@ function ModalContextProvider({
|
|
|
20
35
|
);
|
|
21
36
|
}
|
|
22
37
|
|
|
23
|
-
ModalContextProvider.propTypes = {
|
|
24
|
-
children: PropTypes.node,
|
|
25
|
-
onClose: PropTypes.func.isRequired,
|
|
26
|
-
isBlocking: PropTypes.bool,
|
|
27
|
-
isOpen: PropTypes.bool.isRequired,
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
ModalContextProvider.defaultProps = {
|
|
31
|
-
children: null,
|
|
32
|
-
isBlocking: false,
|
|
33
|
-
};
|
|
34
|
-
|
|
35
38
|
export { ModalContextProvider };
|
|
36
39
|
export default ModalContext;
|
|
@@ -3,11 +3,16 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { useMediaQuery } from 'react-responsive';
|
|
5
5
|
import ModalLayer from './ModalLayer';
|
|
6
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
6
7
|
import ModalCloseButton from './ModalCloseButton';
|
|
7
8
|
import ModalDialogHeader from './ModalDialogHeader';
|
|
9
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
8
10
|
import ModalDialogTitle from './ModalDialogTitle';
|
|
11
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
9
12
|
import ModalDialogFooter from './ModalDialogFooter';
|
|
13
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
10
14
|
import ModalDialogBody from './ModalDialogBody';
|
|
15
|
+
// @ts-ignore for now - this needs to be converted to TypeScript
|
|
11
16
|
import ModalDialogHero from './ModalDialogHero';
|
|
12
17
|
|
|
13
18
|
import Icon from '../Icon';
|
|
@@ -16,22 +21,57 @@ import { Close } from '../../icons';
|
|
|
16
21
|
|
|
17
22
|
export const MODAL_DIALOG_CLOSE_LABEL = 'Close';
|
|
18
23
|
|
|
24
|
+
interface Props {
|
|
25
|
+
/** Specifies the content of the dialog */
|
|
26
|
+
children: React.ReactNode;
|
|
27
|
+
/** The aria-label of the dialog */
|
|
28
|
+
title: string;
|
|
29
|
+
/** A callback to close the modal dialog, e.g. when Escape is pressed */
|
|
30
|
+
onClose: () => void;
|
|
31
|
+
/** Is the modal dialog open or closed? */
|
|
32
|
+
isOpen?: boolean;
|
|
33
|
+
/** The close 'x' icon button in the top right of the dialog box */
|
|
34
|
+
hasCloseButton?: boolean;
|
|
35
|
+
/** Size determines the maximum width of the dialog box */
|
|
36
|
+
size?: 'sm' | 'md' | 'lg' | 'xl' | 'fullscreen';
|
|
37
|
+
/** The visual style of the dialog box */
|
|
38
|
+
variant?: 'default' | 'warning' | 'danger' | 'success' | 'dark';
|
|
39
|
+
/** The label supplied to the close icon button if one is rendered */
|
|
40
|
+
closeLabel?: string;
|
|
41
|
+
/** Specifies class name to append to the base element */
|
|
42
|
+
className?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Determines where a scrollbar should appear if a modal is too large for the
|
|
45
|
+
* viewport. When false, the ``ModalDialog``. Body receives a scrollbar, when true
|
|
46
|
+
* the browser window itself receives the scrollbar.
|
|
47
|
+
*/
|
|
48
|
+
isFullscreenScroll?: boolean;
|
|
49
|
+
/** To show full screen view on mobile screens */
|
|
50
|
+
isFullscreenOnMobile?: boolean;
|
|
51
|
+
/** Prevent clicking on the backdrop or pressing Esc to close the modal */
|
|
52
|
+
isBlocking?: boolean;
|
|
53
|
+
/** Specifies the z-index of the modal */
|
|
54
|
+
zIndex?: number;
|
|
55
|
+
/** Specifies whether overflow is visible in the modal */
|
|
56
|
+
isOverflowVisible?: boolean;
|
|
57
|
+
}
|
|
58
|
+
|
|
19
59
|
function ModalDialog({
|
|
20
60
|
children,
|
|
21
61
|
title,
|
|
22
|
-
isOpen,
|
|
62
|
+
isOpen = false,
|
|
23
63
|
onClose,
|
|
24
|
-
size,
|
|
25
|
-
variant,
|
|
26
|
-
hasCloseButton,
|
|
27
|
-
closeLabel,
|
|
28
|
-
isFullscreenScroll,
|
|
64
|
+
size = 'md',
|
|
65
|
+
variant = 'default',
|
|
66
|
+
hasCloseButton = true,
|
|
67
|
+
closeLabel = MODAL_DIALOG_CLOSE_LABEL,
|
|
68
|
+
isFullscreenScroll = false,
|
|
29
69
|
className,
|
|
30
|
-
isFullscreenOnMobile,
|
|
31
|
-
isBlocking,
|
|
70
|
+
isFullscreenOnMobile = false,
|
|
71
|
+
isBlocking = false,
|
|
32
72
|
zIndex,
|
|
33
|
-
isOverflowVisible,
|
|
34
|
-
}) {
|
|
73
|
+
isOverflowVisible = true,
|
|
74
|
+
}: Props) {
|
|
35
75
|
const isMobile = useMediaQuery({ query: '(max-width: 767.98px)' });
|
|
36
76
|
const showFullScreen = (isFullscreenOnMobile && isMobile);
|
|
37
77
|
return (
|
|
@@ -122,22 +162,13 @@ ModalDialog.propTypes = {
|
|
|
122
162
|
* Specifies the z-index of the modal
|
|
123
163
|
*/
|
|
124
164
|
zIndex: PropTypes.number,
|
|
125
|
-
/**
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
size: 'md',
|
|
133
|
-
variant: 'default',
|
|
134
|
-
closeLabel: MODAL_DIALOG_CLOSE_LABEL,
|
|
135
|
-
className: undefined,
|
|
136
|
-
isFullscreenScroll: false,
|
|
137
|
-
isFullscreenOnMobile: false,
|
|
138
|
-
isBlocking: false,
|
|
139
|
-
zIndex: undefined,
|
|
140
|
-
isOverflowVisible: true,
|
|
165
|
+
/**
|
|
166
|
+
* Specifies whether overflow content inside the modal should be visible.
|
|
167
|
+
* - `true` - content that exceeds the modal boundaries will remain visible outside the modal's main viewport,
|
|
168
|
+
* rather than being clipped or hidden.
|
|
169
|
+
* - `false` - any overflow content will be clipped to fit within the modal's dimensions.
|
|
170
|
+
*/
|
|
171
|
+
isOverflowVisible: PropTypes.bool.isRequired,
|
|
141
172
|
};
|
|
142
173
|
|
|
143
174
|
ModalDialog.Header = ModalDialogHeader;
|
|
@@ -1,21 +1,32 @@
|
|
|
1
|
+
/* eslint-disable react/require-default-props */
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import PropTypes from 'prop-types';
|
|
3
4
|
import classNames from 'classnames';
|
|
5
|
+
import type { ComponentWithAsProp } from '../utils/types/bootstrap';
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
as
|
|
7
|
+
export interface Props {
|
|
8
|
+
as?: string;
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
type HeaderType = ComponentWithAsProp<'div', Props>;
|
|
14
|
+
|
|
15
|
+
const ModalDialogHeader: HeaderType = React.forwardRef<HTMLDivElement, Props>(({
|
|
16
|
+
as = 'div',
|
|
7
17
|
children,
|
|
8
18
|
...props
|
|
9
|
-
})
|
|
10
|
-
|
|
19
|
+
}, ref) => (
|
|
20
|
+
React.createElement(
|
|
11
21
|
as,
|
|
12
22
|
{
|
|
13
23
|
...props,
|
|
24
|
+
ref,
|
|
14
25
|
className: classNames('pgn__modal-header', props.className),
|
|
15
26
|
},
|
|
16
27
|
children,
|
|
17
|
-
)
|
|
18
|
-
|
|
28
|
+
)
|
|
29
|
+
));
|
|
19
30
|
|
|
20
31
|
ModalDialogHeader.propTypes = {
|
|
21
32
|
/** Specifies the base element */
|
|
@@ -26,9 +37,4 @@ ModalDialogHeader.propTypes = {
|
|
|
26
37
|
className: PropTypes.string,
|
|
27
38
|
};
|
|
28
39
|
|
|
29
|
-
ModalDialogHeader.defaultProps = {
|
|
30
|
-
as: 'div',
|
|
31
|
-
className: undefined,
|
|
32
|
-
};
|
|
33
|
-
|
|
34
40
|
export default ModalDialogHeader;
|
|
@@ -6,7 +6,7 @@ import Portal from './Portal';
|
|
|
6
6
|
import { ModalContextProvider } from './ModalContext';
|
|
7
7
|
|
|
8
8
|
// istanbul ignore next
|
|
9
|
-
function ModalBackdrop({ onClick }) {
|
|
9
|
+
function ModalBackdrop({ onClick }: { onClick?: () => void }) {
|
|
10
10
|
return (
|
|
11
11
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
12
12
|
<div
|
|
@@ -22,12 +22,8 @@ ModalBackdrop.propTypes = {
|
|
|
22
22
|
onClick: PropTypes.func,
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
ModalBackdrop.defaultProps = {
|
|
26
|
-
onClick: undefined,
|
|
27
|
-
};
|
|
28
|
-
|
|
29
25
|
// istanbul ignore next
|
|
30
|
-
function ModalContentContainer({ children }) {
|
|
26
|
+
function ModalContentContainer({ children = null }: { children?: React.ReactNode }) {
|
|
31
27
|
return <div className="pgn__modal-content-container">{children}</div>;
|
|
32
28
|
}
|
|
33
29
|
|
|
@@ -35,9 +31,18 @@ ModalContentContainer.propTypes = {
|
|
|
35
31
|
children: PropTypes.node,
|
|
36
32
|
};
|
|
37
33
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
interface Props {
|
|
35
|
+
/** Specifies the contents of the modal */
|
|
36
|
+
children: React.ReactNode;
|
|
37
|
+
/** A callback function for when the modal is dismissed */
|
|
38
|
+
onClose: () => void;
|
|
39
|
+
/** Is the modal dialog open or closed */
|
|
40
|
+
isOpen: boolean;
|
|
41
|
+
/** Prevent clicking on the backdrop or pressing Esc to close the modal */
|
|
42
|
+
isBlocking?: boolean;
|
|
43
|
+
/** Specifies the z-index of the modal */
|
|
44
|
+
zIndex?: number;
|
|
45
|
+
}
|
|
41
46
|
|
|
42
47
|
/**
|
|
43
48
|
* The ModalLayer should be used for any component that wishes to engage the user
|
|
@@ -46,8 +51,8 @@ ModalContentContainer.defaultProps = {
|
|
|
46
51
|
* component is that if a modal object is visible then it is "enabled"
|
|
47
52
|
*/
|
|
48
53
|
function ModalLayer({
|
|
49
|
-
children, onClose, isOpen, isBlocking, zIndex,
|
|
50
|
-
}) {
|
|
54
|
+
children, onClose, isOpen, isBlocking = false, zIndex,
|
|
55
|
+
}: Props) {
|
|
51
56
|
useEffect(() => {
|
|
52
57
|
if (isOpen) {
|
|
53
58
|
document.body.classList.add('pgn__hidden-scroll-padding-right');
|
|
@@ -63,7 +68,7 @@ function ModalLayer({
|
|
|
63
68
|
return null;
|
|
64
69
|
}
|
|
65
70
|
|
|
66
|
-
const handleClose = isBlocking ?
|
|
71
|
+
const handleClose = isBlocking ? undefined : onClose;
|
|
67
72
|
|
|
68
73
|
return (
|
|
69
74
|
<ModalContextProvider onClose={onClose} isOpen={isOpen} isBlocking={isBlocking}>
|
|
@@ -102,10 +107,5 @@ ModalLayer.propTypes = {
|
|
|
102
107
|
zIndex: PropTypes.number,
|
|
103
108
|
};
|
|
104
109
|
|
|
105
|
-
ModalLayer.defaultProps = {
|
|
106
|
-
isBlocking: false,
|
|
107
|
-
zIndex: undefined,
|
|
108
|
-
};
|
|
109
|
-
|
|
110
110
|
export { ModalBackdrop, ModalContentContainer };
|
|
111
111
|
export default ModalLayer;
|