@telus-uds/components-base 0.0.2-prerelease.7 → 1.0.1
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 +71 -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 +438 -31
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
- package/__tests__/Button/ButtonGroup.test.jsx +6 -7
- package/__tests__/Checkbox/Checkbox.test.jsx +2 -2
- 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__/Link/LinkBase.test.jsx +0 -14
- 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 +2 -2
- 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 +3 -2
- package/__tests__/Skeleton/Skeleton.test.jsx +1 -1
- package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
- package/__tests__/Tabs/Tabs.test.jsx +40 -0
- package/__tests__/Tags/Tags.test.jsx +5 -6
- package/__tests__/TextInput/TextArea.test.jsx +3 -2
- package/__tests__/TextInput/TextInputBase.test.jsx +10 -5
- 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 +6 -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 +153 -35
- package/lib/Box/index.js +13 -2
- package/lib/Button/Button.js +38 -16
- package/lib/Button/ButtonBase.js +93 -79
- package/lib/Button/ButtonGroup.js +112 -73
- package/lib/Button/ButtonLink.js +45 -19
- 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 +86 -0
- package/lib/Card/PressableCardBase.js +141 -0
- package/lib/Card/index.js +40 -2
- package/lib/Checkbox/Checkbox.js +158 -111
- package/lib/Checkbox/CheckboxGroup.js +241 -0
- package/lib/Checkbox/CheckboxInput.js +74 -0
- package/lib/Checkbox/CheckboxInput.native.js +9 -1
- package/lib/Checkbox/index.js +21 -2
- 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 +77 -43
- 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 +57 -48
- package/lib/Icon/IconText.js +54 -25
- package/lib/Icon/index.js +31 -4
- 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 +71 -52
- package/lib/InputSupports/index.js +13 -2
- package/lib/InputSupports/propTypes.js +19 -8
- package/lib/InputSupports/useInputSupports.js +41 -0
- package/lib/Link/ChevronLink.js +44 -20
- package/lib/Link/InlinePressable.js +56 -0
- package/lib/Link/InlinePressable.native.js +39 -15
- package/lib/Link/Link.js +36 -13
- package/lib/Link/LinkBase.js +98 -61
- package/lib/Link/TextButton.js +41 -17
- package/lib/Link/index.js +39 -5
- package/lib/List/List.js +55 -26
- package/lib/List/ListItem.js +79 -41
- package/lib/List/index.js +13 -2
- 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 +61 -28
- package/lib/Pagination/Pagination.js +78 -43
- package/lib/Pagination/SideButton.js +73 -42
- 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 +116 -114
- 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 +9 -1
- package/lib/Radio/index.js +21 -2
- 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 +16 -5
- package/lib/Select/Item.js +29 -0
- package/lib/Select/Item.native.js +14 -4
- package/lib/Select/Picker.js +84 -0
- package/lib/Select/Picker.native.js +73 -30
- package/lib/Select/Select.js +155 -85
- package/lib/Select/index.js +19 -6
- 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 +64 -46
- package/lib/Skeleton/index.js +13 -2
- 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 +72 -31
- package/lib/StackView/StackWrap.js +43 -13
- package/lib/StackView/StackWrap.native.js +13 -2
- package/lib/StackView/StackWrapBox.js +77 -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 +148 -99
- package/lib/Tags/index.js +13 -2
- package/lib/TextInput/TextArea.js +57 -28
- package/lib/TextInput/TextInput.js +50 -23
- package/lib/TextInput/TextInputBase.js +90 -63
- package/lib/TextInput/index.js +23 -3
- package/lib/TextInput/propTypes.js +18 -7
- 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 +32 -16
- 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 +85 -56
- 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 +87 -41
- 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 -33
- package/lib/utils/a11y/index.js +31 -1
- package/lib/utils/a11y/semantics.js +173 -0
- package/lib/utils/a11y/textSize.js +23 -7
- 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 -10
- package/lib/utils/info/index.js +18 -6
- package/lib/utils/info/platform/index.js +19 -7
- package/lib/utils/info/platform/platform.android.js +8 -1
- package/lib/utils/info/platform/platform.ios.js +8 -1
- package/lib/utils/info/platform/platform.js +8 -0
- package/lib/utils/info/platform/platform.native.js +8 -1
- package/lib/utils/info/versions.js +15 -4
- package/lib/utils/input.js +53 -25
- package/lib/utils/pressability.js +38 -10
- package/lib/utils/propTypes.js +287 -141
- 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 +14 -9
- 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 +132 -39
- package/src/Button/Button.jsx +10 -6
- package/src/Button/ButtonBase.jsx +99 -99
- package/src/Button/ButtonGroup.jsx +81 -69
- package/src/Button/ButtonLink.jsx +21 -15
- package/src/Button/propTypes.js +12 -2
- package/src/Card/Card.jsx +5 -31
- package/src/Card/CardBase.jsx +59 -0
- package/src/Card/PressableCardBase.jsx +119 -0
- package/src/Card/index.js +3 -0
- package/src/Checkbox/Checkbox.jsx +121 -112
- package/src/Checkbox/CheckboxGroup.jsx +206 -0
- package/src/Checkbox/{CheckboxInput.web.jsx → CheckboxInput.jsx} +0 -0
- package/src/Checkbox/index.js +2 -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 +36 -33
- 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 +43 -50
- package/src/Icon/IconText.jsx +23 -18
- package/src/Icon/index.js +2 -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 +29 -45
- package/src/InputSupports/useInputSupports.js +30 -0
- package/src/Link/ChevronLink.jsx +26 -16
- package/src/Link/{InlinePressable.web.jsx → InlinePressable.jsx} +5 -3
- package/src/Link/InlinePressable.native.jsx +5 -3
- package/src/Link/Link.jsx +22 -16
- package/src/Link/LinkBase.jsx +76 -65
- package/src/Link/TextButton.jsx +30 -23
- package/src/List/List.jsx +5 -4
- package/src/List/ListItem.jsx +77 -82
- 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 -35
- package/src/Pagination/Pagination.jsx +88 -92
- package/src/Pagination/SideButton.jsx +44 -41
- 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 +82 -112
- package/src/Radio/RadioButton.jsx +142 -0
- package/src/Radio/RadioGroup.jsx +209 -0
- package/src/Radio/{RadioInput.web.jsx → RadioInput.jsx} +0 -0
- package/src/Radio/index.js +2 -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.web.jsx → Group.jsx} +0 -0
- package/src/Select/{Item.web.jsx → Item.jsx} +0 -0
- package/src/Select/Picker.jsx +74 -0
- package/src/Select/Picker.native.jsx +56 -49
- package/src/Select/Select.jsx +125 -92
- 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 +25 -32
- 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 +54 -23
- package/src/StackView/StackWrap.jsx +16 -7
- package/src/StackView/StackWrapBox.jsx +63 -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 +115 -102
- package/src/TextInput/TextArea.jsx +5 -4
- package/src/TextInput/TextInput.jsx +5 -4
- package/src/TextInput/TextInputBase.jsx +95 -98
- package/src/ThemeProvider/ThemeProvider.jsx +11 -7
- package/src/ThemeProvider/useSetTheme.js +4 -0
- package/src/ThemeProvider/useThemeTokens.js +2 -2
- package/src/ThemeProvider/utils/styles.js +18 -5
- package/src/ThemeProvider/utils/theme-tokens.js +74 -5
- package/src/ToggleSwitch/ToggleSwitch.jsx +50 -52
- 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 +71 -47
- package/src/index.js +23 -2
- package/src/utils/a11y/index.js +1 -0
- package/src/utils/a11y/semantics.js +162 -0
- package/src/utils/children.jsx +119 -0
- package/src/utils/index.js +3 -0
- package/src/utils/info/platform/platform.js +1 -0
- package/src/utils/info/versions.js +2 -2
- package/src/utils/input.js +36 -25
- package/src/utils/pressability.js +4 -0
- package/src/utils/propTypes.js +199 -72
- 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 +2 -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 +24 -1
- package/stories/Divider/Divider.stories.jsx +1 -1
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +2 -2
- package/stories/Feedback/Feedback.stories.jsx +1 -1
- 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 +17 -21
- package/stories/Link/TextButton.stories.jsx +1 -1
- package/stories/List/List.stories.jsx +1 -1
- 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 +23 -36
- package/stories/RadioCard/RadioCard.stories.jsx +98 -0
- package/stories/Search/Search.stories.jsx +16 -0
- package/stories/Select/Select.stories.jsx +1 -1
- 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 +2 -2
- 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 +1 -1
- package/stories/TextInput/TextArea.stories.jsx +1 -1
- 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 +37 -3
- 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/Checkbox/CheckboxInput.web.js +0 -57
- package/lib/InputLabel/LabelContent.web.js +0 -17
- package/lib/Link/InlinePressable.web.js +0 -32
- package/lib/Radio/RadioInput.web.js +0 -59
- package/lib/Select/Group.web.js +0 -18
- package/lib/Select/Item.web.js +0 -15
- package/lib/Select/Picker.web.js +0 -63
- package/lib/config/svgr-icons-web.js +0 -9
- package/lib/config/svgr-icons.js +0 -52
- package/lib/utils/info/platform/platform.web.js +0 -1
- package/src/InputLabel/LabelContent.web.jsx +0 -13
- package/src/Select/Picker.web.jsx +0 -67
- package/src/config/svgr-icons-web.js +0 -11
- package/src/config/svgr-icons.js +0 -46
- package/src/utils/info/platform/platform.web.js +0 -1
package/lib/List/List.js
CHANGED
|
@@ -1,31 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
+
|
|
7
30
|
/**
|
|
8
31
|
* A Unordered List component has a child a ListItem that
|
|
9
32
|
* allows icon, dividers and customized typography
|
|
10
33
|
*/
|
|
11
|
-
|
|
12
|
-
const List = ({
|
|
34
|
+
const List = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
13
35
|
children,
|
|
14
36
|
showDivider,
|
|
15
37
|
tokens,
|
|
16
38
|
variant,
|
|
17
39
|
...rest
|
|
18
|
-
}) => {
|
|
19
|
-
const accessibilityRole =
|
|
40
|
+
}, ref) => {
|
|
41
|
+
const accessibilityRole = _Platform.default.select({
|
|
20
42
|
web: 'list',
|
|
21
43
|
default: 'none'
|
|
22
44
|
});
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
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, {
|
|
27
51
|
showDivider,
|
|
28
|
-
isLastItem: index + 1 === Children.count(children),
|
|
52
|
+
isLastItem: index + 1 === _react.Children.count(children),
|
|
29
53
|
tokens,
|
|
30
54
|
variant
|
|
31
55
|
});
|
|
@@ -33,20 +57,25 @@ const List = ({
|
|
|
33
57
|
|
|
34
58
|
return child;
|
|
35
59
|
});
|
|
36
|
-
return /*#__PURE__*/React.createElement(View, Object.assign({
|
|
37
|
-
accessibilityRole: accessibilityRole
|
|
38
|
-
}, a11y), items);
|
|
39
|
-
};
|
|
40
60
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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'),
|
|
46
74
|
|
|
47
75
|
/**
|
|
48
76
|
* In case it is not the last item allow display divider
|
|
49
77
|
*/
|
|
50
|
-
showDivider:
|
|
78
|
+
showDivider: _propTypes.default.bool
|
|
51
79
|
};
|
|
52
|
-
|
|
80
|
+
var _default = List;
|
|
81
|
+
exports.default = _default;
|
package/lib/List/ListItem.js
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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; }
|
|
6
31
|
|
|
7
32
|
const selectBulletStyles = ({
|
|
8
33
|
itemBulletWidth,
|
|
@@ -43,7 +68,7 @@ const selectItemStyles = ({
|
|
|
43
68
|
itemFontSize,
|
|
44
69
|
itemLineHeight,
|
|
45
70
|
itemFontName
|
|
46
|
-
}) => applyTextStyles({
|
|
71
|
+
}) => (0, _ThemeProvider.applyTextStyles)({
|
|
47
72
|
fontWeight: itemFontWeight,
|
|
48
73
|
fontSize: itemFontSize,
|
|
49
74
|
lineHeight: itemLineHeight,
|
|
@@ -71,7 +96,7 @@ const selectDividerStyles = ({
|
|
|
71
96
|
*/
|
|
72
97
|
|
|
73
98
|
|
|
74
|
-
const ListItem = ({
|
|
99
|
+
const ListItem = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
75
100
|
tokens,
|
|
76
101
|
variant,
|
|
77
102
|
icon,
|
|
@@ -80,8 +105,8 @@ const ListItem = ({
|
|
|
80
105
|
showDivider,
|
|
81
106
|
children,
|
|
82
107
|
isLastItem
|
|
83
|
-
}) => {
|
|
84
|
-
const themeTokens = useThemeTokens('List', tokens, variant);
|
|
108
|
+
}, ref) => {
|
|
109
|
+
const themeTokens = (0, _ThemeProvider.useThemeTokens)('List', tokens, variant);
|
|
85
110
|
const itemStyles = selectItemStyles(themeTokens);
|
|
86
111
|
const itemBlockStyles = selectItemBlockStyles(themeTokens);
|
|
87
112
|
const dividerStyles = selectDividerStyles(themeTokens);
|
|
@@ -89,7 +114,8 @@ const ListItem = ({
|
|
|
89
114
|
const itemBulletStyles = selectBulletStyles(themeTokens);
|
|
90
115
|
const iconTokens = selectItemIconTokens(themeTokens);
|
|
91
116
|
const sideItemContainerStyles = selectSideItemContainerStyles(themeTokens);
|
|
92
|
-
|
|
117
|
+
|
|
118
|
+
const accessibilityRole = _Platform.default.select({
|
|
93
119
|
web: 'listitem',
|
|
94
120
|
default: 'item'
|
|
95
121
|
});
|
|
@@ -104,12 +130,16 @@ const ListItem = ({
|
|
|
104
130
|
|
|
105
131
|
const renderItem = () => {
|
|
106
132
|
if (areChildrenStrings()) {
|
|
107
|
-
return /*#__PURE__*/
|
|
108
|
-
style: itemStyles
|
|
109
|
-
|
|
133
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
134
|
+
style: itemStyles,
|
|
135
|
+
children: children
|
|
136
|
+
});
|
|
110
137
|
}
|
|
111
138
|
|
|
112
|
-
return /*#__PURE__*/
|
|
139
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
140
|
+
style: staticStyles.wrap,
|
|
141
|
+
children: children
|
|
142
|
+
});
|
|
113
143
|
};
|
|
114
144
|
/**
|
|
115
145
|
* Function responsible returning styling, in case the item is the last shouldn't
|
|
@@ -137,71 +167,79 @@ const ListItem = ({
|
|
|
137
167
|
|
|
138
168
|
|
|
139
169
|
const renderMarker = () => {
|
|
140
|
-
const IconComponent = icon || /*#__PURE__*/
|
|
170
|
+
const IconComponent = icon || /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
|
|
141
171
|
|
|
142
172
|
if (icon) {
|
|
143
|
-
return /*#__PURE__*/
|
|
144
|
-
style: [sideItemContainerStyles, areChildrenStrings() ? staticStyles.centeredIcons : undefined]
|
|
145
|
-
|
|
146
|
-
tokens: { ...iconTokens,
|
|
173
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
174
|
+
style: [sideItemContainerStyles, areChildrenStrings() ? staticStyles.centeredIcons : undefined],
|
|
175
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, {
|
|
147
176
|
size: iconSize || iconTokens.size,
|
|
148
177
|
color: iconColor || iconTokens.color
|
|
149
|
-
}
|
|
150
|
-
})
|
|
178
|
+
})
|
|
179
|
+
});
|
|
151
180
|
}
|
|
152
181
|
|
|
153
|
-
return /*#__PURE__*/
|
|
154
|
-
style: [sideItemContainerStyles, itemBulletContainerStyles]
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
+
});
|
|
159
189
|
};
|
|
160
190
|
|
|
161
|
-
return /*#__PURE__*/
|
|
191
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
|
|
192
|
+
ref: ref,
|
|
162
193
|
style: [staticStyles.itemContainer, getContainerStyle()],
|
|
163
|
-
accessibilityRole: accessibilityRole
|
|
164
|
-
|
|
165
|
-
};
|
|
194
|
+
accessibilityRole: accessibilityRole,
|
|
195
|
+
children: [renderMarker(), renderItem()]
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
ListItem.displayName = 'ListItem';
|
|
166
199
|
|
|
167
|
-
const staticStyles =
|
|
200
|
+
const staticStyles = _StyleSheet.default.create({
|
|
168
201
|
itemContainer: {
|
|
169
202
|
flexDirection: 'row'
|
|
170
203
|
},
|
|
171
204
|
centeredIcons: {
|
|
172
205
|
justifyContent: 'center'
|
|
206
|
+
},
|
|
207
|
+
wrap: {
|
|
208
|
+
flex: 1
|
|
173
209
|
}
|
|
174
210
|
});
|
|
211
|
+
|
|
175
212
|
ListItem.propTypes = {
|
|
176
|
-
tokens: getTokensPropType('List'),
|
|
177
|
-
variant: variantProp.propType,
|
|
178
|
-
children:
|
|
213
|
+
tokens: (0, _utils.getTokensPropType)('List'),
|
|
214
|
+
variant: _utils.variantProp.propType,
|
|
215
|
+
children: _propTypes.default.node.isRequired,
|
|
179
216
|
|
|
180
217
|
/**
|
|
181
218
|
* Renders side item icon
|
|
182
219
|
*/
|
|
183
|
-
icon:
|
|
220
|
+
icon: _propTypes.default.func,
|
|
184
221
|
|
|
185
222
|
/**
|
|
186
223
|
* Will set display icon color
|
|
187
224
|
*/
|
|
188
|
-
iconColor:
|
|
225
|
+
iconColor: _propTypes.default.string,
|
|
189
226
|
|
|
190
227
|
/**
|
|
191
228
|
* Allow the user define the icon size if not defined the theme's file
|
|
192
229
|
*/
|
|
193
|
-
iconSize:
|
|
230
|
+
iconSize: _propTypes.default.number,
|
|
194
231
|
|
|
195
232
|
/**
|
|
196
233
|
* @ignore
|
|
197
234
|
* Defined by parent if it's last item on the list
|
|
198
235
|
*/
|
|
199
|
-
isLastItem:
|
|
236
|
+
isLastItem: _propTypes.default.bool,
|
|
200
237
|
|
|
201
238
|
/**
|
|
202
239
|
* @ignore
|
|
203
240
|
* In case it is not the last item allow display divider
|
|
204
241
|
*/
|
|
205
|
-
showDivider:
|
|
242
|
+
showDivider: _propTypes.default.bool
|
|
206
243
|
};
|
|
207
|
-
|
|
244
|
+
var _default = ListItem;
|
|
245
|
+
exports.default = _default;
|
package/lib/List/index.js
CHANGED
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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;
|