@telus-uds/components-base 0.0.2-prerelease.6 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +9 -0
- package/.ultra.cache.json +1 -1
- package/CHANGELOG.md +85 -0
- package/README.md +4 -2
- package/__fixtures__/Accessible.js +33 -0
- package/__fixtures__/Accessible.native.js +32 -0
- package/__fixtures__/test-utils.js +25 -0
- package/__fixtures__/testTheme.js +851 -57
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
- package/__tests__/Button/ButtonBase.test.jsx +2 -31
- package/__tests__/Button/ButtonGroup.test.jsx +6 -7
- package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +246 -0
- package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
- package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +164 -0
- package/__tests__/Icon/Icon.test.jsx +3 -3
- package/__tests__/IconButton/IconButton.test.jsx +52 -0
- package/__tests__/InputSupports/InputSupports.test.jsx +50 -0
- package/__tests__/Link/LinkBase.test.jsx +0 -14
- package/__tests__/List/List.test.jsx +60 -0
- package/__tests__/Modal/Modal.test.jsx +47 -0
- package/__tests__/Notification/Notification.test.jsx +20 -0
- package/__tests__/Pagination/Pagination.test.jsx +2 -2
- package/__tests__/Progress/Progress.test.jsx +79 -0
- package/__tests__/Radio/Radio.test.jsx +87 -0
- package/__tests__/Radio/RadioGroup.test.jsx +220 -0
- package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +246 -0
- package/__tests__/Search/Search.test.jsx +73 -0
- package/__tests__/Select/Select.test.jsx +94 -0
- package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
- package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
- package/__tests__/Tabs/Tabs.test.jsx +40 -0
- package/__tests__/Tags/Tags.test.jsx +327 -0
- package/__tests__/TextInput/TextArea.test.jsx +35 -0
- package/__tests__/TextInput/{TextInput.test.jsx → TextInputBase.test.jsx} +29 -50
- package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
- package/__tests__/ThemeProvider/useThemeTokens.test.jsx +9 -5
- package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
- package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
- package/__tests__/utils/children.test.jsx +128 -0
- package/__tests__/utils/input.test.js +59 -1
- package/__tests__/utils/semantics.test.jsx +43 -0
- package/__tests__/utils/useCopy.test.js +14 -3
- package/babel.config.js +20 -0
- package/jest.config.js +8 -3
- package/lib/A11yInfoProvider/index.js +54 -26
- package/lib/A11yText/index.js +45 -17
- package/lib/ActivityIndicator/Spinner.js +81 -0
- package/lib/ActivityIndicator/Spinner.native.js +129 -91
- package/lib/ActivityIndicator/index.js +28 -12
- package/lib/ActivityIndicator/shared.js +27 -12
- package/lib/BaseProvider/index.js +34 -11
- package/lib/Box/Box.js +152 -35
- package/lib/Box/index.js +13 -2
- package/lib/Button/Button.js +41 -12
- package/lib/Button/ButtonBase.js +125 -97
- package/lib/Button/ButtonGroup.js +112 -89
- package/lib/Button/ButtonLink.js +48 -17
- package/lib/Button/index.js +31 -4
- package/lib/Button/propTypes.js +32 -9
- package/lib/Card/Card.js +38 -41
- package/lib/Card/CardBase.js +85 -0
- package/lib/Card/PressableCardBase.js +141 -0
- package/lib/Card/index.js +40 -2
- package/lib/Checkbox/Checkbox.js +355 -0
- package/lib/Checkbox/CheckboxGroup.js +241 -0
- package/lib/Checkbox/CheckboxInput.js +74 -0
- package/lib/Checkbox/CheckboxInput.native.js +14 -0
- package/lib/Checkbox/index.js +21 -0
- package/lib/Divider/Divider.js +59 -28
- package/lib/Divider/index.js +13 -2
- package/lib/ExpandCollapse/Accordion.js +26 -7
- package/lib/ExpandCollapse/Control.js +60 -31
- package/lib/ExpandCollapse/ExpandCollapse.js +50 -28
- package/lib/ExpandCollapse/Panel.js +83 -44
- package/lib/ExpandCollapse/index.js +25 -7
- package/lib/Feedback/Feedback.js +90 -39
- package/lib/Feedback/index.js +13 -2
- package/lib/Fieldset/Fieldset.js +165 -0
- package/lib/Fieldset/FieldsetContainer.js +46 -0
- package/lib/Fieldset/FieldsetContainer.native.js +38 -0
- package/lib/Fieldset/Legend.js +38 -0
- package/lib/Fieldset/Legend.native.js +48 -0
- package/lib/Fieldset/cssReset.js +21 -0
- package/lib/Fieldset/index.js +13 -0
- package/lib/FlexGrid/Col/Col.js +73 -41
- package/lib/FlexGrid/Col/index.js +13 -2
- package/lib/FlexGrid/FlexGrid.js +99 -49
- package/lib/FlexGrid/Row/Row.js +58 -30
- package/lib/FlexGrid/Row/index.js +13 -2
- package/lib/FlexGrid/helpers/index.js +9 -1
- package/lib/FlexGrid/index.js +13 -2
- package/lib/FlexGrid/providers/GutterContext.js +15 -3
- package/lib/HorizontalScroll/HorizontalScroll.js +200 -0
- package/lib/HorizontalScroll/HorizontalScrollButton.js +127 -0
- package/lib/HorizontalScroll/ScrollViewEnd.js +66 -0
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +41 -0
- package/lib/HorizontalScroll/dictionary.js +18 -0
- package/lib/HorizontalScroll/index.js +35 -0
- package/lib/HorizontalScroll/itemPositions.js +128 -0
- package/lib/Icon/Icon.js +62 -50
- package/lib/Icon/IconText.js +101 -0
- package/lib/Icon/index.js +31 -3
- package/lib/IconButton/IconButton.js +140 -0
- package/lib/IconButton/index.js +13 -0
- package/lib/InputLabel/InputLabel.js +102 -40
- package/lib/InputLabel/LabelContent.js +41 -0
- package/lib/InputLabel/LabelContent.native.js +32 -6
- package/lib/InputLabel/index.js +13 -2
- package/lib/InputSupports/InputSupports.js +109 -0
- package/lib/InputSupports/index.js +13 -0
- package/lib/InputSupports/propTypes.js +66 -0
- package/lib/InputSupports/useInputSupports.js +41 -0
- package/lib/Link/ChevronLink.js +58 -31
- package/lib/Link/InlinePressable.js +56 -0
- package/lib/Link/InlinePressable.native.js +102 -0
- package/lib/Link/Link.js +39 -15
- package/lib/Link/LinkBase.js +126 -150
- package/lib/Link/TextButton.js +53 -18
- package/lib/Link/index.js +39 -4
- package/lib/List/List.js +81 -0
- package/lib/List/ListItem.js +245 -0
- package/lib/List/index.js +13 -0
- package/lib/Modal/Modal.js +231 -0
- package/lib/Modal/dictionary.js +16 -0
- package/lib/Modal/index.js +13 -0
- package/lib/Notification/Notification.js +216 -0
- package/lib/Notification/dictionary.js +15 -0
- package/lib/Notification/index.js +13 -0
- package/lib/Pagination/PageButton.js +58 -48
- package/lib/Pagination/Pagination.js +78 -43
- package/lib/Pagination/SideButton.js +79 -58
- package/lib/Pagination/dictionary.js +9 -2
- package/lib/Pagination/index.js +13 -2
- package/lib/Pagination/usePagination.js +12 -2
- package/lib/Progress/Progress.js +104 -0
- package/lib/Progress/ProgressBar.js +157 -0
- package/lib/Progress/ProgressBarBackground.js +61 -0
- package/lib/Progress/index.js +16 -0
- package/lib/Radio/Radio.js +293 -0
- package/lib/Radio/RadioButton.js +152 -0
- package/lib/Radio/RadioGroup.js +244 -0
- package/lib/Radio/RadioInput.js +76 -0
- package/lib/Radio/RadioInput.native.js +14 -0
- package/lib/Radio/index.js +21 -0
- package/lib/RadioCard/RadioCard.js +244 -0
- package/lib/RadioCard/RadioCardGroup.js +252 -0
- package/lib/RadioCard/index.js +21 -0
- package/lib/Search/Search.js +254 -0
- package/lib/Search/dictionary.js +19 -0
- package/lib/Search/index.js +13 -0
- package/lib/Select/Group.js +33 -0
- package/lib/Select/Group.native.js +25 -0
- package/lib/Select/Item.js +29 -0
- package/lib/Select/Item.native.js +19 -0
- package/lib/Select/Picker.js +84 -0
- package/lib/Select/Picker.native.js +130 -0
- package/lib/Select/Select.js +342 -0
- package/lib/Select/index.js +19 -0
- package/lib/SideNav/Item.js +63 -37
- package/lib/SideNav/ItemContent.js +41 -15
- package/lib/SideNav/ItemsGroup.js +55 -31
- package/lib/SideNav/SideNav.js +100 -73
- package/lib/SideNav/index.js +15 -1
- package/lib/Skeleton/Skeleton.js +137 -0
- package/lib/Skeleton/index.js +13 -0
- package/lib/Skeleton/skeleton.constant.js +12 -0
- package/lib/Skeleton/skeletonWebAnimation.js +27 -0
- package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
- package/lib/Spacer/Spacer.js +49 -18
- package/lib/Spacer/index.js +13 -2
- package/lib/StackView/StackView.js +71 -31
- package/lib/StackView/StackWrap.js +43 -13
- package/lib/StackView/StackWrap.native.js +13 -2
- package/lib/StackView/StackWrapBox.js +76 -29
- package/lib/StackView/StackWrapGap.js +56 -26
- package/lib/StackView/common.js +23 -6
- package/lib/StackView/getStackedContent.js +47 -17
- package/lib/StackView/index.js +29 -5
- package/lib/StepTracker/Step.js +245 -0
- package/lib/StepTracker/StepTracker.js +202 -0
- package/lib/StepTracker/dictionary.js +17 -0
- package/lib/StepTracker/index.js +13 -0
- package/lib/Tabs/Tabs.js +124 -0
- package/lib/Tabs/TabsItem.js +238 -0
- package/lib/Tabs/index.js +13 -0
- package/lib/Tags/Tags.js +266 -0
- package/lib/Tags/index.js +13 -0
- package/lib/TextInput/TextArea.js +111 -0
- package/lib/TextInput/TextInput.js +50 -304
- package/lib/TextInput/TextInputBase.js +256 -0
- package/lib/TextInput/index.js +23 -2
- package/lib/TextInput/propTypes.js +42 -0
- package/lib/ThemeProvider/ThemeProvider.js +46 -18
- package/lib/ThemeProvider/index.js +61 -6
- package/lib/ThemeProvider/useSetTheme.js +19 -5
- package/lib/ThemeProvider/useTheme.js +13 -4
- package/lib/ThemeProvider/useThemeTokens.js +86 -19
- package/lib/ThemeProvider/utils/index.js +31 -2
- package/lib/ThemeProvider/utils/styles.js +50 -14
- package/lib/ThemeProvider/utils/theme-tokens.js +121 -12
- package/lib/ToggleSwitch/ToggleSwitch.js +86 -57
- package/lib/ToggleSwitch/index.js +13 -2
- package/lib/Tooltip/{Backdrop.web.js → Backdrop.js} +20 -8
- package/lib/Tooltip/Backdrop.native.js +39 -15
- package/lib/Tooltip/Tooltip.js +117 -74
- package/lib/Tooltip/dictionary.js +9 -2
- package/lib/Tooltip/getTooltipPosition.js +9 -1
- package/lib/Tooltip/index.js +13 -2
- package/lib/TooltipButton/TooltipButton.js +57 -38
- package/lib/TooltipButton/index.js +13 -2
- package/lib/Typography/Typography.js +86 -55
- package/lib/Typography/index.js +13 -2
- package/lib/ViewportProvider/ViewportProvider.js +34 -13
- package/lib/ViewportProvider/index.js +28 -3
- package/lib/ViewportProvider/useViewport.js +15 -3
- package/lib/ViewportProvider/useViewportListener.js +24 -10
- package/lib/index.js +539 -26
- package/lib/utils/a11y/index.js +31 -0
- package/lib/utils/a11y/semantics.js +173 -0
- package/lib/utils/a11y/textSize.js +49 -0
- package/lib/utils/animation/index.js +15 -2
- package/lib/utils/animation/useVerticalExpandAnimation.js +27 -10
- package/lib/utils/children.js +134 -0
- package/lib/utils/index.js +163 -7
- package/lib/utils/info/index.js +19 -0
- package/lib/utils/info/platform/index.js +23 -0
- package/lib/utils/info/platform/platform.android.js +8 -0
- package/lib/utils/info/platform/platform.ios.js +8 -0
- package/lib/utils/info/platform/platform.js +8 -0
- package/lib/utils/info/platform/platform.native.js +11 -0
- package/lib/utils/info/versions.js +16 -0
- package/lib/utils/input.js +53 -25
- package/lib/utils/pressability.js +120 -0
- package/lib/utils/propTypes.js +338 -132
- package/lib/utils/useCopy.js +40 -5
- package/lib/utils/useHash.js +52 -0
- package/lib/utils/useHash.native.js +15 -0
- package/lib/utils/useResponsiveProp.js +21 -9
- package/lib/utils/useSpacingScale.js +19 -9
- package/lib/utils/useUniqueId.js +12 -3
- package/package.json +16 -10
- package/release-context.json +4 -4
- package/src/A11yText/index.jsx +6 -4
- package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +5 -3
- package/src/ActivityIndicator/Spinner.native.jsx +5 -3
- package/src/Box/Box.jsx +131 -39
- package/src/Button/Button.jsx +13 -6
- package/src/Button/ButtonBase.jsx +134 -125
- package/src/Button/ButtonGroup.jsx +85 -86
- package/src/Button/ButtonLink.jsx +22 -7
- package/src/Button/propTypes.js +12 -2
- package/src/Card/Card.jsx +5 -31
- package/src/Card/CardBase.jsx +58 -0
- package/src/Card/PressableCardBase.jsx +119 -0
- package/src/Card/index.js +3 -0
- package/src/Checkbox/Checkbox.jsx +284 -0
- package/src/Checkbox/CheckboxGroup.jsx +206 -0
- package/src/Checkbox/CheckboxInput.jsx +55 -0
- package/src/Checkbox/CheckboxInput.native.jsx +6 -0
- package/src/Checkbox/index.js +5 -0
- package/src/Divider/Divider.jsx +7 -4
- package/src/ExpandCollapse/Accordion.jsx +3 -2
- package/src/ExpandCollapse/Control.jsx +40 -43
- package/src/ExpandCollapse/ExpandCollapse.jsx +26 -23
- package/src/ExpandCollapse/Panel.jsx +69 -63
- package/src/Feedback/Feedback.jsx +42 -30
- package/src/Fieldset/Fieldset.jsx +136 -0
- package/src/Fieldset/FieldsetContainer.jsx +31 -0
- package/src/Fieldset/FieldsetContainer.native.jsx +19 -0
- package/src/Fieldset/Legend.jsx +21 -0
- package/src/Fieldset/Legend.native.jsx +27 -0
- package/src/Fieldset/cssReset.js +14 -0
- package/src/Fieldset/index.js +3 -0
- package/src/FlexGrid/Col/Col.jsx +139 -132
- package/src/FlexGrid/FlexGrid.jsx +79 -51
- package/src/FlexGrid/Row/Row.jsx +55 -48
- package/src/HorizontalScroll/HorizontalScroll.jsx +168 -0
- package/src/HorizontalScroll/HorizontalScrollButton.jsx +105 -0
- package/src/HorizontalScroll/ScrollViewEnd.jsx +53 -0
- package/src/HorizontalScroll/ScrollViewEnd.native.jsx +24 -0
- package/src/HorizontalScroll/dictionary.js +11 -0
- package/src/HorizontalScroll/index.js +17 -0
- package/src/HorizontalScroll/itemPositions.js +101 -0
- package/src/Icon/Icon.jsx +46 -49
- package/src/Icon/IconText.jsx +68 -0
- package/src/Icon/index.js +3 -2
- package/src/IconButton/IconButton.jsx +114 -0
- package/src/IconButton/index.js +3 -0
- package/src/InputLabel/InputLabel.jsx +57 -35
- package/src/InputLabel/LabelContent.jsx +21 -0
- package/src/InputLabel/LabelContent.native.jsx +11 -2
- package/src/InputSupports/InputSupports.jsx +70 -0
- package/src/InputSupports/index.js +3 -0
- package/src/InputSupports/propTypes.js +44 -0
- package/src/InputSupports/useInputSupports.js +30 -0
- package/src/Link/ChevronLink.jsx +34 -21
- package/src/Link/InlinePressable.jsx +39 -0
- package/src/Link/InlinePressable.native.jsx +75 -0
- package/src/Link/Link.jsx +23 -13
- package/src/Link/LinkBase.jsx +98 -170
- package/src/Link/TextButton.jsx +37 -16
- package/src/Link/index.js +2 -1
- package/src/List/List.jsx +48 -0
- package/src/List/ListItem.jsx +182 -0
- package/src/List/index.js +3 -0
- package/src/Modal/Modal.jsx +190 -0
- package/src/Modal/dictionary.js +9 -0
- package/src/Modal/index.js +3 -0
- package/src/Notification/Notification.jsx +164 -0
- package/src/Notification/dictionary.js +8 -0
- package/src/Notification/index.js +3 -0
- package/src/Pagination/PageButton.jsx +42 -49
- package/src/Pagination/Pagination.jsx +88 -92
- package/src/Pagination/SideButton.jsx +58 -66
- package/src/Progress/Progress.jsx +78 -0
- package/src/Progress/ProgressBar.jsx +123 -0
- package/src/Progress/ProgressBarBackground.jsx +36 -0
- package/src/Progress/index.js +6 -0
- package/src/Radio/Radio.jsx +240 -0
- package/src/Radio/RadioButton.jsx +142 -0
- package/src/Radio/RadioGroup.jsx +209 -0
- package/src/Radio/RadioInput.jsx +57 -0
- package/src/Radio/RadioInput.native.jsx +6 -0
- package/src/Radio/index.js +5 -0
- package/src/RadioCard/RadioCard.jsx +198 -0
- package/src/RadioCard/RadioCardGroup.jsx +218 -0
- package/src/RadioCard/index.js +5 -0
- package/src/Search/Search.jsx +225 -0
- package/src/Search/dictionary.js +12 -0
- package/src/Search/index.js +3 -0
- package/src/Select/Group.jsx +15 -0
- package/src/Select/Group.native.jsx +14 -0
- package/src/Select/Item.jsx +11 -0
- package/src/Select/Item.native.jsx +10 -0
- package/src/Select/Picker.jsx +74 -0
- package/src/Select/Picker.native.jsx +102 -0
- package/src/Select/Select.jsx +298 -0
- package/src/Select/index.js +8 -0
- package/src/SideNav/Item.jsx +54 -47
- package/src/SideNav/ItemsGroup.jsx +50 -43
- package/src/SideNav/SideNav.jsx +68 -60
- package/src/Skeleton/Skeleton.jsx +94 -0
- package/src/Skeleton/index.js +3 -0
- package/src/Skeleton/skeleton.constant.js +3 -0
- package/src/Skeleton/skeletonWebAnimation.js +13 -0
- package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
- package/src/Spacer/Spacer.jsx +11 -4
- package/src/StackView/StackView.jsx +53 -23
- package/src/StackView/StackWrap.jsx +16 -7
- package/src/StackView/StackWrapBox.jsx +62 -28
- package/src/StackView/StackWrapGap.jsx +46 -24
- package/src/StackView/common.jsx +3 -2
- package/src/StackView/getStackedContent.jsx +8 -2
- package/src/StepTracker/Step.jsx +202 -0
- package/src/StepTracker/StepTracker.jsx +174 -0
- package/src/StepTracker/dictionary.js +10 -0
- package/src/StepTracker/index.js +3 -0
- package/src/Tabs/Tabs.jsx +97 -0
- package/src/Tabs/TabsItem.jsx +212 -0
- package/src/Tabs/index.js +3 -0
- package/src/Tags/Tags.jsx +219 -0
- package/src/Tags/index.js +3 -0
- package/src/TextInput/TextArea.jsx +79 -0
- package/src/TextInput/TextInput.jsx +18 -284
- package/src/TextInput/TextInputBase.jsx +217 -0
- package/src/TextInput/index.js +2 -1
- package/src/TextInput/propTypes.js +29 -0
- package/src/ThemeProvider/ThemeProvider.jsx +11 -7
- package/src/ThemeProvider/useSetTheme.js +4 -0
- package/src/ThemeProvider/useThemeTokens.js +56 -5
- package/src/ThemeProvider/utils/styles.js +18 -5
- package/src/ThemeProvider/utils/theme-tokens.js +74 -5
- package/src/ToggleSwitch/ToggleSwitch.jsx +51 -53
- package/src/Tooltip/{Backdrop.web.jsx → Backdrop.jsx} +0 -0
- package/src/Tooltip/Tooltip.jsx +135 -131
- package/src/TooltipButton/TooltipButton.jsx +23 -27
- package/src/Typography/Typography.jsx +72 -59
- package/src/index.js +31 -3
- package/src/utils/a11y/index.js +2 -0
- package/src/utils/a11y/semantics.js +162 -0
- package/src/utils/a11y/textSize.js +30 -0
- package/src/utils/children.jsx +119 -0
- package/src/utils/index.js +6 -0
- package/src/utils/info/index.js +8 -0
- package/src/utils/info/platform/index.js +11 -0
- package/src/utils/info/platform/platform.android.js +1 -0
- package/src/utils/info/platform/platform.ios.js +1 -0
- package/src/utils/info/platform/platform.js +1 -0
- package/src/utils/info/platform/platform.native.js +4 -0
- package/src/utils/info/versions.js +6 -0
- package/src/utils/input.js +36 -25
- package/src/utils/pressability.js +96 -0
- package/src/utils/propTypes.js +291 -90
- package/src/utils/useCopy.js +30 -4
- package/src/utils/useHash.js +39 -0
- package/src/utils/useHash.native.js +6 -0
- package/stories/A11yText/A11yText.stories.jsx +6 -10
- package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +1 -1
- package/stories/Box/Box.stories.jsx +1 -1
- package/stories/Button/Button.stories.jsx +7 -2
- package/stories/Button/ButtonGroup.stories.jsx +1 -1
- package/stories/Button/ButtonLink.stories.jsx +1 -1
- package/stories/Card/Card.stories.jsx +1 -1
- package/stories/Checkbox/Checkbox.stories.jsx +94 -0
- package/stories/Divider/Divider.stories.jsx +1 -1
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +2 -2
- package/stories/Feedback/Feedback.stories.jsx +5 -6
- package/stories/FlexGrid/01 FlexGrid.stories.jsx +1 -1
- package/stories/FlexGrid/02 Row.stories.jsx +1 -1
- package/stories/FlexGrid/03 Col.stories.jsx +1 -1
- package/stories/Icon/Icon.stories.jsx +27 -7
- package/stories/IconButton/IconButton.stories.jsx +50 -0
- package/stories/InputLabel/InputLabel.stories.jsx +1 -1
- package/stories/Link/ChevronLink.stories.jsx +1 -1
- package/stories/Link/Link.stories.jsx +28 -18
- package/stories/Link/TextButton.stories.jsx +1 -1
- package/stories/List/List.stories.jsx +117 -0
- package/stories/Modal/Modal.stories.jsx +29 -0
- package/stories/Notification/Notification.stories.jsx +82 -0
- package/stories/Pagination/Pagination.stories.jsx +1 -1
- package/stories/Progress/Progress.stories.jsx +93 -0
- package/stories/Radio/Radio.stories.jsx +100 -0
- package/stories/RadioCard/RadioCard.stories.jsx +98 -0
- package/stories/Search/Search.stories.jsx +16 -0
- package/stories/Select/Select.stories.jsx +55 -0
- package/stories/SideNav/SideNav.stories.jsx +1 -1
- package/stories/SideNav/SideNavItem.stories.jsx +1 -1
- package/stories/SideNav/SideNavItemsGroup.stories.jsx +1 -1
- package/stories/Skeleton/Skeleton.stories.jsx +36 -0
- package/stories/Spacer/Spacer.stories.jsx +1 -1
- package/stories/StackView/StackView.stories.jsx +1 -1
- package/stories/StackView/StackWrap.stories.jsx +1 -1
- package/stories/StepTracker/StepTracker.stories.jsx +71 -0
- package/stories/Tabs/Tabs.stories.jsx +97 -0
- package/stories/Tags/Tags.stories.jsx +69 -0
- package/stories/TextInput/TextArea.stories.jsx +100 -0
- package/stories/TextInput/TextInput.stories.jsx +1 -1
- package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +1 -1
- package/stories/Tooltip/Tooltip.stories.jsx +1 -1
- package/stories/TooltipButton/TooltipButton.stories.jsx +1 -1
- package/stories/Typography/Typography.stories.jsx +1 -1
- package/stories/{platform-supports.web.jsx → platform-supports.jsx} +1 -1
- package/stories/supports.jsx +38 -4
- package/__fixtures__/accessible.icon.svg +0 -6
- package/babel.config.json +0 -8
- package/docs/Contributing.stories.mdx +0 -9
- package/docs/Fonts.stories.mdx +0 -104
- package/docs/Icons.stories.mdx +0 -144
- package/docs/Introduction.stories.mdx +0 -9
- package/lib/ActivityIndicator/Spinner.web.js +0 -55
- package/lib/InputLabel/LabelContent.web.js +0 -17
- package/lib/config/svgr-icons-web.js +0 -9
- package/lib/config/svgr-icons.js +0 -52
- package/src/InputLabel/LabelContent.web.jsx +0 -13
- package/src/config/svgr-icons-web.js +0 -11
- package/src/config/svgr-icons.js +0 -46
package/lib/List/List.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
11
|
+
|
|
12
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
var _utils = require("../utils");
|
|
17
|
+
|
|
18
|
+
var _propTypes2 = require("../utils/propTypes");
|
|
19
|
+
|
|
20
|
+
var _ListItem = _interopRequireDefault(require("./ListItem"));
|
|
21
|
+
|
|
22
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
23
|
+
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
+
|
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* A Unordered List component has a child a ListItem that
|
|
32
|
+
* allows icon, dividers and customized typography
|
|
33
|
+
*/
|
|
34
|
+
const List = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
35
|
+
children,
|
|
36
|
+
showDivider,
|
|
37
|
+
tokens,
|
|
38
|
+
variant,
|
|
39
|
+
...rest
|
|
40
|
+
}, ref) => {
|
|
41
|
+
const accessibilityRole = _Platform.default.select({
|
|
42
|
+
web: 'list',
|
|
43
|
+
default: 'none'
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const a11y = _propTypes2.a11yProps.select(rest);
|
|
47
|
+
|
|
48
|
+
const items = _react.Children.map(children, (child, index) => {
|
|
49
|
+
if (child.type.name === _ListItem.default.name) {
|
|
50
|
+
return /*#__PURE__*/(0, _react.cloneElement)(child, {
|
|
51
|
+
showDivider,
|
|
52
|
+
isLastItem: index + 1 === _react.Children.count(children),
|
|
53
|
+
tokens,
|
|
54
|
+
variant
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return child;
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
62
|
+
ref: ref,
|
|
63
|
+
accessibilityRole: accessibilityRole,
|
|
64
|
+
...a11y,
|
|
65
|
+
children: items
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
List.displayName = 'List';
|
|
69
|
+
List.Item = _ListItem.default;
|
|
70
|
+
List.propTypes = { ..._propTypes2.a11yProps.types,
|
|
71
|
+
tokens: (0, _utils.getTokensPropType)('List'),
|
|
72
|
+
variant: _utils.variantProp.propType,
|
|
73
|
+
children: (0, _utils.componentPropType)('ListItem'),
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* In case it is not the last item allow display divider
|
|
77
|
+
*/
|
|
78
|
+
showDivider: _propTypes.default.bool
|
|
79
|
+
};
|
|
80
|
+
var _default = List;
|
|
81
|
+
exports.default = _default;
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
11
|
+
|
|
12
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
13
|
+
|
|
14
|
+
var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
|
|
15
|
+
|
|
16
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
17
|
+
|
|
18
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
19
|
+
|
|
20
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
21
|
+
|
|
22
|
+
var _utils = require("../utils");
|
|
23
|
+
|
|
24
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
25
|
+
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
|
|
28
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
+
|
|
30
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
|
+
|
|
32
|
+
const selectBulletStyles = ({
|
|
33
|
+
itemBulletWidth,
|
|
34
|
+
itemBulletHeight,
|
|
35
|
+
itemBulletColor
|
|
36
|
+
}) => ({
|
|
37
|
+
width: itemBulletWidth,
|
|
38
|
+
height: itemBulletHeight,
|
|
39
|
+
borderRadius: itemBulletHeight / 2,
|
|
40
|
+
backgroundColor: itemBulletColor
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const selectBulletContainerStyles = ({
|
|
44
|
+
itemBulletContainerWidth,
|
|
45
|
+
itemBulletContainerAlign
|
|
46
|
+
}) => ({
|
|
47
|
+
width: itemBulletContainerWidth,
|
|
48
|
+
alignItems: itemBulletContainerAlign,
|
|
49
|
+
justifyContent: itemBulletContainerAlign
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
const selectItemIconTokens = ({
|
|
53
|
+
itemIconSize,
|
|
54
|
+
itemIconColor
|
|
55
|
+
}) => ({
|
|
56
|
+
size: itemIconSize,
|
|
57
|
+
color: itemIconColor
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
const selectSideItemContainerStyles = ({
|
|
61
|
+
listGutter
|
|
62
|
+
}) => ({
|
|
63
|
+
marginRight: listGutter
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
const selectItemStyles = ({
|
|
67
|
+
itemFontWeight,
|
|
68
|
+
itemFontSize,
|
|
69
|
+
itemLineHeight,
|
|
70
|
+
itemFontName
|
|
71
|
+
}) => (0, _ThemeProvider.applyTextStyles)({
|
|
72
|
+
fontWeight: itemFontWeight,
|
|
73
|
+
fontSize: itemFontSize,
|
|
74
|
+
lineHeight: itemLineHeight,
|
|
75
|
+
fontName: itemFontName
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const selectItemBlockStyles = ({
|
|
79
|
+
interItemMargin
|
|
80
|
+
}) => ({
|
|
81
|
+
marginBottom: interItemMargin
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const selectDividerStyles = ({
|
|
85
|
+
dividerColor,
|
|
86
|
+
dividerSize,
|
|
87
|
+
interItemMarginWithDivider
|
|
88
|
+
}) => ({
|
|
89
|
+
borderBottomWidth: dividerSize,
|
|
90
|
+
borderColor: dividerColor,
|
|
91
|
+
marginBottom: interItemMarginWithDivider,
|
|
92
|
+
paddingBottom: interItemMarginWithDivider
|
|
93
|
+
});
|
|
94
|
+
/**
|
|
95
|
+
* ListItem is responsible for rendering icon or a bullet as side item
|
|
96
|
+
*/
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
const ListItem = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
100
|
+
tokens,
|
|
101
|
+
variant,
|
|
102
|
+
icon,
|
|
103
|
+
iconColor,
|
|
104
|
+
iconSize,
|
|
105
|
+
showDivider,
|
|
106
|
+
children,
|
|
107
|
+
isLastItem
|
|
108
|
+
}, ref) => {
|
|
109
|
+
const themeTokens = (0, _ThemeProvider.useThemeTokens)('List', tokens, variant);
|
|
110
|
+
const itemStyles = selectItemStyles(themeTokens);
|
|
111
|
+
const itemBlockStyles = selectItemBlockStyles(themeTokens);
|
|
112
|
+
const dividerStyles = selectDividerStyles(themeTokens);
|
|
113
|
+
const itemBulletContainerStyles = selectBulletContainerStyles(themeTokens);
|
|
114
|
+
const itemBulletStyles = selectBulletStyles(themeTokens);
|
|
115
|
+
const iconTokens = selectItemIconTokens(themeTokens);
|
|
116
|
+
const sideItemContainerStyles = selectSideItemContainerStyles(themeTokens);
|
|
117
|
+
|
|
118
|
+
const accessibilityRole = _Platform.default.select({
|
|
119
|
+
web: 'listitem',
|
|
120
|
+
default: 'item'
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
const areChildrenStrings = () => {
|
|
124
|
+
if (Array.isArray(children)) {
|
|
125
|
+
return children.every(child => typeof child === 'string');
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return typeof children === 'string';
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const renderItem = () => {
|
|
132
|
+
if (areChildrenStrings()) {
|
|
133
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
134
|
+
style: itemStyles,
|
|
135
|
+
children: children
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
140
|
+
style: staticStyles.wrap,
|
|
141
|
+
children: children
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Function responsible returning styling, in case the item is the last shouldn't
|
|
146
|
+
* add extra margin on the bottom, if "showDivider" is true it should add a divider
|
|
147
|
+
* and custom margin and padding, otherwise just adds a margin to the bottom
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
const getContainerStyle = () => {
|
|
152
|
+
if (isLastItem) {
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (showDivider) {
|
|
157
|
+
return dividerStyles;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return itemBlockStyles;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Renders item bullet or Icon in case it's defined
|
|
164
|
+
* in case children are string the icon is centered otherwise
|
|
165
|
+
* it will align itself at start of the container
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
const renderMarker = () => {
|
|
170
|
+
const IconComponent = icon || /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
|
|
171
|
+
|
|
172
|
+
if (icon) {
|
|
173
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
174
|
+
style: [sideItemContainerStyles, areChildrenStrings() ? staticStyles.centeredIcons : undefined],
|
|
175
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, {
|
|
176
|
+
size: iconSize || iconTokens.size,
|
|
177
|
+
color: iconColor || iconTokens.color
|
|
178
|
+
})
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
183
|
+
style: [sideItemContainerStyles, itemBulletContainerStyles],
|
|
184
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
185
|
+
style: itemBulletStyles,
|
|
186
|
+
testID: "unordered-item-bullet"
|
|
187
|
+
})
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
|
|
192
|
+
ref: ref,
|
|
193
|
+
style: [staticStyles.itemContainer, getContainerStyle()],
|
|
194
|
+
accessibilityRole: accessibilityRole,
|
|
195
|
+
children: [renderMarker(), renderItem()]
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
ListItem.displayName = 'ListItem';
|
|
199
|
+
|
|
200
|
+
const staticStyles = _StyleSheet.default.create({
|
|
201
|
+
itemContainer: {
|
|
202
|
+
flexDirection: 'row'
|
|
203
|
+
},
|
|
204
|
+
centeredIcons: {
|
|
205
|
+
justifyContent: 'center'
|
|
206
|
+
},
|
|
207
|
+
wrap: {
|
|
208
|
+
flex: 1
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
ListItem.propTypes = {
|
|
213
|
+
tokens: (0, _utils.getTokensPropType)('List'),
|
|
214
|
+
variant: _utils.variantProp.propType,
|
|
215
|
+
children: _propTypes.default.node.isRequired,
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Renders side item icon
|
|
219
|
+
*/
|
|
220
|
+
icon: _propTypes.default.func,
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Will set display icon color
|
|
224
|
+
*/
|
|
225
|
+
iconColor: _propTypes.default.string,
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Allow the user define the icon size if not defined the theme's file
|
|
229
|
+
*/
|
|
230
|
+
iconSize: _propTypes.default.number,
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* @ignore
|
|
234
|
+
* Defined by parent if it's last item on the list
|
|
235
|
+
*/
|
|
236
|
+
isLastItem: _propTypes.default.bool,
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* @ignore
|
|
240
|
+
* In case it is not the last item allow display divider
|
|
241
|
+
*/
|
|
242
|
+
showDivider: _propTypes.default.bool
|
|
243
|
+
};
|
|
244
|
+
var _default = ListItem;
|
|
245
|
+
exports.default = _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _List = _interopRequireDefault(require("./List"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
var _default = _List.default;
|
|
13
|
+
exports.default = _default;
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
11
|
+
|
|
12
|
+
var _TouchableWithoutFeedback = _interopRequireDefault(require("react-native-web/dist/cjs/exports/TouchableWithoutFeedback"));
|
|
13
|
+
|
|
14
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
15
|
+
|
|
16
|
+
var _Modal = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Modal"));
|
|
17
|
+
|
|
18
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
19
|
+
|
|
20
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
21
|
+
|
|
22
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
23
|
+
|
|
24
|
+
var _utils = require("../utils");
|
|
25
|
+
|
|
26
|
+
var _ViewportProvider = require("../ViewportProvider");
|
|
27
|
+
|
|
28
|
+
var _ButtonBase = _interopRequireDefault(require("../Button/ButtonBase"));
|
|
29
|
+
|
|
30
|
+
var _dictionary = _interopRequireDefault(require("./dictionary"));
|
|
31
|
+
|
|
32
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
33
|
+
|
|
34
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
+
|
|
36
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
37
|
+
|
|
38
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
39
|
+
|
|
40
|
+
const selectContainerStyles = ({
|
|
41
|
+
containerPaddingLeft,
|
|
42
|
+
containerPaddingRight,
|
|
43
|
+
containerPaddingTop,
|
|
44
|
+
containerPaddingBottom,
|
|
45
|
+
maxWidth,
|
|
46
|
+
height
|
|
47
|
+
}) => ({
|
|
48
|
+
height,
|
|
49
|
+
maxWidth,
|
|
50
|
+
paddingLeft: containerPaddingLeft,
|
|
51
|
+
paddingRight: containerPaddingRight,
|
|
52
|
+
paddingTop: containerPaddingTop,
|
|
53
|
+
paddingBottom: containerPaddingBottom
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const selectModalStyles = ({
|
|
57
|
+
backgroundColor,
|
|
58
|
+
borderRadius,
|
|
59
|
+
height,
|
|
60
|
+
paddingLeft,
|
|
61
|
+
paddingRight,
|
|
62
|
+
paddingTop,
|
|
63
|
+
paddingBottom,
|
|
64
|
+
shadow
|
|
65
|
+
}) => ({
|
|
66
|
+
backgroundColor,
|
|
67
|
+
borderRadius,
|
|
68
|
+
height,
|
|
69
|
+
paddingLeft,
|
|
70
|
+
paddingRight,
|
|
71
|
+
paddingTop,
|
|
72
|
+
paddingBottom,
|
|
73
|
+
...(0, _ThemeProvider.applyShadowToken)(shadow)
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const selectBackdropStyles = ({
|
|
77
|
+
backdropColor,
|
|
78
|
+
backdropOpacity
|
|
79
|
+
}) => ({
|
|
80
|
+
backgroundColor: backdropColor,
|
|
81
|
+
opacity: backdropOpacity
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const selectCloseButtonContainerStyles = ({
|
|
85
|
+
paddingRight,
|
|
86
|
+
paddingTop
|
|
87
|
+
}) => ({
|
|
88
|
+
paddingRight,
|
|
89
|
+
paddingTop
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const selectCloseIconProps = ({
|
|
93
|
+
closeIconSize,
|
|
94
|
+
closeIconColor
|
|
95
|
+
}) => ({
|
|
96
|
+
size: closeIconSize,
|
|
97
|
+
color: closeIconColor
|
|
98
|
+
});
|
|
99
|
+
/**
|
|
100
|
+
* A modal window is a secondary window that opens on top of the main one.
|
|
101
|
+
* Users have to interact with it before they can carry out their task and return to the main window.
|
|
102
|
+
* Use to reveal additional information to a user after they have performed an explicit interaction.
|
|
103
|
+
* They are a strongly discouraged pattern; it's preferred to have all relevant information within a page,
|
|
104
|
+
* and irrelevant information either linked externally or omitted.
|
|
105
|
+
*
|
|
106
|
+
* - Must only appear after a customer interaction, not on page load or any other circumstance
|
|
107
|
+
* - Open a modal based on explicit customer action e.g. clicking on a button/link/form field
|
|
108
|
+
* - Only one modal should be "current" at any time
|
|
109
|
+
* - Read [WebAIM's documentation](https://www.w3.org/TR/wai-aria-practices/examples/dialog-modal/dialog.html) to create accessible modals
|
|
110
|
+
* - Don’t use modals to reinforce or repeat information already available in the parent page or view
|
|
111
|
+
* - Don’t use modals consecutively
|
|
112
|
+
*/
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
const Modal = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
116
|
+
children,
|
|
117
|
+
isOpen,
|
|
118
|
+
onClose,
|
|
119
|
+
maxWidth,
|
|
120
|
+
tokens,
|
|
121
|
+
variant,
|
|
122
|
+
copy
|
|
123
|
+
}, ref) => {
|
|
124
|
+
const viewport = (0, _ViewportProvider.useViewport)();
|
|
125
|
+
const themeTokens = (0, _ThemeProvider.useThemeTokens)('Modal', tokens, variant, {
|
|
126
|
+
viewport,
|
|
127
|
+
maxWidth
|
|
128
|
+
});
|
|
129
|
+
const {
|
|
130
|
+
closeIcon: CloseIconComponent
|
|
131
|
+
} = themeTokens;
|
|
132
|
+
const getCopy = (0, _utils.useCopy)({
|
|
133
|
+
dictionary: _dictionary.default,
|
|
134
|
+
copy
|
|
135
|
+
});
|
|
136
|
+
const closeLabel = getCopy('closeButton');
|
|
137
|
+
|
|
138
|
+
const handleClose = () => {
|
|
139
|
+
if (typeof onClose === 'function') onClose();
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
const handleKeyUp = event => {
|
|
143
|
+
if (event.key === 'Escape') onClose();
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
if (!isOpen) {
|
|
147
|
+
return null;
|
|
148
|
+
} // TODO: replace the close button with IconButton when implemented (https://github.com/telus/universal-design-system/issues/281)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Modal.default, {
|
|
152
|
+
transparent: true,
|
|
153
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
|
|
154
|
+
style: [staticStyles.positioningContainer],
|
|
155
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
156
|
+
style: [staticStyles.sizingContainer, selectContainerStyles(themeTokens)],
|
|
157
|
+
pointerEvents: "box-none" // don't capture backdrop press events
|
|
158
|
+
,
|
|
159
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
|
|
160
|
+
ref: ref,
|
|
161
|
+
style: [staticStyles.modal, selectModalStyles(themeTokens)],
|
|
162
|
+
onKeyUp: handleKeyUp,
|
|
163
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
164
|
+
style: [staticStyles.closeButtonContainer, selectCloseButtonContainerStyles(themeTokens)],
|
|
165
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
|
|
166
|
+
onPress: handleClose,
|
|
167
|
+
accessibilityRole: "button",
|
|
168
|
+
accessibilityLabel: closeLabel,
|
|
169
|
+
children: // TODO: add close button interactive states after IconButton is done
|
|
170
|
+
() => /*#__PURE__*/(0, _jsxRuntime.jsx)(CloseIconComponent, { ...selectCloseIconProps(themeTokens)
|
|
171
|
+
})
|
|
172
|
+
})
|
|
173
|
+
}), children]
|
|
174
|
+
})
|
|
175
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TouchableWithoutFeedback.default, {
|
|
176
|
+
onPress: handleClose,
|
|
177
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
178
|
+
style: [staticStyles.backdrop, selectBackdropStyles(themeTokens)]
|
|
179
|
+
})
|
|
180
|
+
})]
|
|
181
|
+
})
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
Modal.displayName = 'Modal';
|
|
185
|
+
Modal.propTypes = {
|
|
186
|
+
children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.arrayOf(_propTypes.default.node)]),
|
|
187
|
+
copy: _utils.copyPropTypes,
|
|
188
|
+
isOpen: _propTypes.default.bool,
|
|
189
|
+
onClose: _propTypes.default.func,
|
|
190
|
+
maxWidth: _propTypes.default.bool,
|
|
191
|
+
tokens: (0, _utils.getTokensPropType)('Modal'),
|
|
192
|
+
variant: _utils.variantProp.propType
|
|
193
|
+
};
|
|
194
|
+
var _default = Modal;
|
|
195
|
+
exports.default = _default;
|
|
196
|
+
|
|
197
|
+
const staticStyles = _StyleSheet.default.create({
|
|
198
|
+
backdrop: {
|
|
199
|
+
position: 'absolute',
|
|
200
|
+
top: 0,
|
|
201
|
+
left: 0,
|
|
202
|
+
right: 0,
|
|
203
|
+
bottom: 0,
|
|
204
|
+
zIndex: -1,
|
|
205
|
+
..._Platform.default.select({
|
|
206
|
+
web: {
|
|
207
|
+
cursor: 'pointer'
|
|
208
|
+
}
|
|
209
|
+
})
|
|
210
|
+
},
|
|
211
|
+
positioningContainer: {
|
|
212
|
+
flexBasis: '100%',
|
|
213
|
+
alignItems: 'center',
|
|
214
|
+
justifyContent: 'center'
|
|
215
|
+
},
|
|
216
|
+
sizingContainer: {
|
|
217
|
+
maxHeight: '100%',
|
|
218
|
+
// so that the container can expand up to the full viewport height
|
|
219
|
+
width: '100%' // ensure that the modal actually expands to the set maxWidth
|
|
220
|
+
|
|
221
|
+
},
|
|
222
|
+
modal: {
|
|
223
|
+
maxHeight: '100%' // so that the modal can expand vertically up to the sizing container's height (exclusive of its vertical padding)
|
|
224
|
+
|
|
225
|
+
},
|
|
226
|
+
closeButtonContainer: {
|
|
227
|
+
position: 'absolute',
|
|
228
|
+
top: 0,
|
|
229
|
+
right: 0
|
|
230
|
+
}
|
|
231
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = {
|
|
8
|
+
en: {
|
|
9
|
+
// English text from TDS Community `Modal`
|
|
10
|
+
closeButton: 'Close'
|
|
11
|
+
},
|
|
12
|
+
fr: {
|
|
13
|
+
closeButton: 'Fermer'
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
exports.default = _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _Modal = _interopRequireDefault(require("./Modal"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
var _default = _Modal.default;
|
|
13
|
+
exports.default = _default;
|