@telus-uds/components-base 2.0.0 → 2.0.2
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/CHANGELOG.md +1046 -3
- package/README.md +35 -0
- package/babel.config.cjs +35 -0
- package/{jest.config-android.js → jest.config-android.cjs} +1 -1
- package/{jest.config-ios.js → jest.config-ios.cjs} +1 -1
- package/{jest.config-web.js → jest.config-web.cjs} +1 -1
- package/jest.config.cjs +40 -0
- package/jest.setup.js +7 -0
- package/lib/A11yInfoProvider/index.js +33 -64
- package/lib/A11yText/index.js +29 -40
- package/lib/ActionCard/ActionCard.js +342 -0
- package/lib/ActionCard/index.js +2 -0
- package/lib/ActivityIndicator/Spinner.js +27 -42
- package/lib/ActivityIndicator/Spinner.native.js +37 -70
- package/lib/ActivityIndicator/index.js +17 -33
- package/lib/ActivityIndicator/shared.js +12 -26
- package/lib/Autocomplete/Autocomplete.js +478 -0
- package/lib/Autocomplete/Loading.js +35 -0
- package/lib/Autocomplete/Suggestions.js +64 -0
- package/lib/Autocomplete/constants.js +4 -0
- package/lib/Autocomplete/dictionary.js +12 -0
- package/lib/Autocomplete/index.js +2 -0
- package/lib/Badge/Badge.js +102 -0
- package/lib/Badge/index.js +2 -0
- package/lib/BaseProvider/HydrationContext.js +17 -43
- package/lib/BaseProvider/index.js +24 -41
- package/lib/Box/Box.js +191 -93
- package/lib/Box/backgroundImageStylesMap.js +94 -0
- package/lib/Box/index.js +2 -13
- package/lib/Button/Button.js +21 -33
- package/lib/Button/ButtonBase.js +143 -136
- package/lib/Button/ButtonDropdown.js +41 -75
- package/lib/Button/ButtonGroup.js +92 -110
- package/lib/Button/ButtonLink.js +25 -36
- package/lib/Button/index.js +5 -39
- package/lib/Button/propTypes.js +16 -40
- package/lib/Card/Card.js +266 -45
- package/lib/Card/CardBase.js +67 -40
- package/lib/Card/PressableCardBase.js +35 -67
- package/lib/Card/index.js +4 -40
- package/lib/CardGroup/CardGroup.js +210 -0
- package/lib/CardGroup/dictionary.js +8 -0
- package/lib/CardGroup/index.js +2 -0
- package/lib/Carousel/Carousel.js +476 -332
- package/lib/Carousel/CarouselContext.js +20 -42
- package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +18 -39
- package/lib/Carousel/CarouselItem/CarouselItem.js +106 -58
- package/lib/Carousel/CarouselItem/index.js +2 -13
- package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +21 -32
- package/lib/Carousel/CarouselStepTracker/index.js +2 -13
- package/lib/Carousel/CarouselTabs/CarouselTabs.js +17 -36
- package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +36 -51
- package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +25 -55
- package/lib/Carousel/CarouselTabs/index.js +2 -13
- package/lib/Carousel/CarouselThumbnail.js +76 -62
- package/lib/Carousel/CarouselThumbnailNavigation.js +31 -47
- package/lib/Carousel/dictionary.js +13 -16
- package/lib/Carousel/index.js +3 -41
- package/lib/Checkbox/Checkbox.js +64 -107
- package/lib/Checkbox/CheckboxButton.js +163 -0
- package/lib/Checkbox/CheckboxGroup.js +64 -90
- package/lib/Checkbox/CheckboxInput.js +16 -42
- package/lib/Checkbox/CheckboxInput.native.js +1 -10
- package/lib/Checkbox/index.js +3 -21
- package/{lib-module/RadioCard/RadioCard.js → lib/CheckboxCard/CheckboxCard.js} +43 -88
- package/lib/CheckboxCard/index.js +2 -0
- package/lib/CheckboxCardGroup/CheckboxCardGroup.js +206 -0
- package/lib/CheckboxCardGroup/index.js +2 -0
- package/lib/ColourToggle/ColourBubble.js +126 -0
- package/lib/ColourToggle/ColourToggle.js +91 -0
- package/lib/ColourToggle/index.js +2 -0
- package/lib/Divider/Divider.js +37 -54
- package/lib/Divider/index.js +2 -13
- package/lib/DownloadApp/DownloadApp.js +160 -0
- package/lib/DownloadApp/dictionary.js +10 -0
- package/lib/DownloadApp/index.js +2 -0
- package/lib/ExpandCollapse/Accordion.js +6 -22
- package/lib/ExpandCollapse/Control.js +72 -67
- package/lib/ExpandCollapse/ExpandCollapse.js +39 -56
- package/lib/ExpandCollapse/Panel.js +144 -86
- package/lib/ExpandCollapse/dictionary.js +10 -0
- package/lib/ExpandCollapse/index.js +7 -25
- package/lib/Feedback/Feedback.js +41 -69
- package/lib/Feedback/index.js +2 -13
- package/lib/Fieldset/Fieldset.js +81 -90
- package/lib/Fieldset/FieldsetContainer.js +26 -33
- package/lib/Fieldset/FieldsetContainer.native.js +18 -27
- package/lib/Fieldset/Legend.js +9 -26
- package/lib/Fieldset/Legend.native.js +10 -30
- package/lib/Fieldset/cssReset.js +2 -9
- package/lib/Fieldset/index.js +2 -13
- package/lib/FileUpload/FileUpload.js +328 -0
- package/lib/FileUpload/NotificationContent.js +54 -0
- package/lib/FileUpload/dictionary.js +40 -0
- package/lib/FileUpload/index.js +2 -0
- package/lib/FlexGrid/Col/Col.js +104 -148
- package/lib/FlexGrid/Col/index.js +2 -13
- package/lib/FlexGrid/FlexGrid.js +92 -110
- package/lib/FlexGrid/Row/Row.js +82 -108
- package/lib/FlexGrid/Row/index.js +2 -13
- package/lib/FlexGrid/helpers/index.js +1 -12
- package/lib/FlexGrid/index.js +2 -13
- package/lib/FlexGrid/providers/GutterContext.js +3 -15
- package/lib/Footnote/Footnote.js +316 -0
- package/lib/Footnote/FootnoteLink.js +107 -0
- package/lib/Footnote/dictionary.js +12 -0
- package/lib/Footnote/index.js +4 -0
- package/lib/HorizontalScroll/HorizontalScroll.js +48 -87
- package/lib/HorizontalScroll/HorizontalScrollButton.js +26 -52
- package/lib/HorizontalScroll/ScrollViewEnd.js +17 -38
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +8 -26
- package/lib/HorizontalScroll/dictionary.js +2 -9
- package/lib/HorizontalScroll/index.js +11 -35
- package/lib/HorizontalScroll/itemPositions.js +25 -46
- package/lib/Icon/Icon.js +59 -48
- package/lib/Icon/IconText.js +59 -55
- package/lib/Icon/index.js +4 -31
- package/lib/IconButton/IconButton.js +127 -85
- package/lib/IconButton/index.js +2 -13
- package/lib/InputLabel/InputLabel.js +42 -76
- package/lib/InputLabel/LabelContent.js +10 -26
- package/lib/InputLabel/LabelContent.native.js +8 -27
- package/lib/InputLabel/index.js +2 -13
- package/lib/InputSupports/InputSupports.js +39 -56
- package/lib/InputSupports/index.js +2 -13
- package/lib/InputSupports/useInputSupports.js +7 -19
- package/lib/Link/ChevronLink.js +35 -38
- package/lib/Link/InlinePressable.js +14 -29
- package/lib/Link/InlinePressable.native.js +20 -40
- package/lib/Link/Link.js +9 -27
- package/lib/Link/LinkBase.js +96 -103
- package/lib/Link/TextButton.js +19 -29
- package/lib/Link/index.js +5 -39
- package/lib/List/List.js +39 -50
- package/lib/List/ListItem.js +13 -37
- package/lib/List/ListItemBase.js +72 -70
- package/lib/List/ListItemContent.js +36 -48
- package/lib/List/ListItemMark.js +42 -75
- package/lib/List/PressableListItemBase.js +35 -69
- package/lib/List/index.js +5 -28
- package/lib/Listbox/GroupControl.js +105 -0
- package/lib/Listbox/Listbox.js +171 -0
- package/lib/Listbox/ListboxContext.js +4 -0
- package/lib/Listbox/ListboxGroup.js +125 -0
- package/lib/Listbox/ListboxItem.js +76 -0
- package/lib/Listbox/ListboxOverlay.js +77 -0
- package/lib/Listbox/PressableItem.js +139 -0
- package/lib/Listbox/index.js +2 -0
- package/lib/Modal/Modal.js +212 -96
- package/lib/Modal/ModalContent.js +179 -0
- package/lib/Modal/WebModal.js +76 -0
- package/lib/Modal/dictionary.js +2 -9
- package/lib/Modal/index.js +2 -13
- package/lib/MultiSelectFilter/ModalOverlay.js +114 -95
- package/lib/MultiSelectFilter/MultiSelectFilter.js +380 -170
- package/lib/MultiSelectFilter/dictionary.js +2 -9
- package/lib/MultiSelectFilter/index.js +2 -13
- package/lib/Notification/Notification.js +290 -116
- package/lib/Notification/dictionary.js +2 -9
- package/lib/Notification/index.js +2 -13
- package/lib/OrderedList/Item.js +159 -0
- package/lib/OrderedList/ItemBase.js +43 -0
- package/lib/OrderedList/OrderedList.js +64 -0
- package/lib/OrderedList/OrderedListBase.js +36 -0
- package/lib/OrderedList/index.js +2 -0
- package/lib/Pagination/PageButton.js +38 -57
- package/lib/Pagination/Pagination.js +124 -95
- package/lib/Pagination/SideButton.js +25 -58
- package/lib/Pagination/constants.js +3 -0
- package/lib/Pagination/dictionary.js +5 -12
- package/lib/Pagination/index.js +2 -13
- package/lib/Pagination/usePagination.js +20 -23
- package/lib/Portal/Portal.js +50 -0
- package/lib/Portal/Portal.native.js +2 -0
- package/lib/Portal/index.js +2 -0
- package/lib/PriceLockup/PriceLockup.js +223 -0
- package/lib/PriceLockup/index.js +2 -0
- package/lib/PriceLockup/utils/renderFootnoteContent.js +85 -0
- package/lib/PriceLockup/utils/renderFootnoteLinks.js +28 -0
- package/lib/PriceLockup/utils/renderPrice.js +139 -0
- package/lib/PriceLockup/utils/renderTypography.js +23 -0
- package/lib/ProductCard/ProductCard.js +231 -0
- package/lib/ProductCard/dictionary.js +38 -0
- package/lib/ProductCard/index.js +2 -0
- package/lib/ProductCardGroup/ProductCardGroup.js +70 -0
- package/lib/ProductCardGroup/index.js +2 -0
- package/lib/Progress/Progress.js +22 -43
- package/lib/Progress/ProgressBar.js +31 -60
- package/lib/Progress/ProgressBarBackground.js +13 -35
- package/lib/Progress/index.js +4 -16
- package/lib/QuickLinks/QuickLinks.js +31 -44
- package/lib/QuickLinks/QuickLinksCard.js +16 -30
- package/lib/QuickLinks/QuickLinksItem.js +22 -44
- package/lib/QuickLinks/index.js +4 -16
- package/lib/QuickLinksFeature/QuickLinksFeature.js +25 -47
- package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +88 -99
- package/lib/QuickLinksFeature/index.js +4 -16
- package/lib/Radio/Radio.js +63 -95
- package/lib/Radio/RadioButton.js +94 -76
- package/lib/Radio/RadioGroup.js +70 -94
- package/lib/Radio/RadioInput.js +18 -46
- package/lib/Radio/RadioInput.native.js +1 -10
- package/lib/Radio/index.js +3 -21
- package/lib/RadioCard/RadioCard.js +47 -90
- package/lib/RadioCard/RadioCardGroup.js +66 -91
- package/lib/RadioCard/index.js +3 -21
- package/lib/Responsive/Responsive.js +48 -41
- package/{lib-module/Responsive/Responsive.js → lib/Responsive/ResponsiveProp.js} +13 -20
- package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +68 -0
- package/lib/Responsive/index.js +2 -13
- package/lib/Search/Search.js +73 -96
- package/lib/Search/dictionary.js +2 -9
- package/lib/Search/index.js +2 -13
- package/lib/Select/Group.js +15 -25
- package/lib/Select/Group.native.js +8 -18
- package/lib/Select/Item.js +14 -23
- package/lib/Select/Item.native.js +1 -10
- package/lib/Select/Picker.js +71 -60
- package/lib/Select/Picker.native.js +40 -65
- package/lib/Select/Select.js +70 -109
- package/lib/Select/constants.js +4 -14
- package/lib/Select/index.js +6 -19
- package/lib/SideNav/Item.js +41 -65
- package/lib/SideNav/ItemContent.js +22 -41
- package/lib/SideNav/ItemsGroup.js +43 -60
- package/lib/SideNav/SideNav.js +42 -68
- package/lib/SideNav/index.js +1 -15
- package/lib/Skeleton/Skeleton.js +54 -86
- package/lib/Skeleton/index.js +2 -13
- package/lib/Skeleton/skeleton.constant.js +2 -12
- package/lib/Skeleton/skeletonWebAnimation.js +12 -25
- package/lib/Skeleton/useSkeletonNativeAnimation.js +22 -33
- package/lib/SkipLink/SkipLink.js +48 -75
- package/lib/SkipLink/index.js +2 -13
- package/lib/Spacer/Spacer.js +17 -41
- package/lib/Spacer/index.js +2 -13
- package/lib/StackView/StackView.js +34 -59
- package/lib/StackView/StackWrap.js +23 -44
- package/lib/StackView/StackWrap.native.js +2 -12
- package/lib/StackView/StackWrapBox.js +32 -58
- package/lib/StackView/StackWrapGap.js +22 -45
- package/lib/StackView/common.js +4 -19
- package/lib/StackView/getStackedContent.js +21 -41
- package/lib/StackView/index.js +5 -29
- package/lib/Status/Status.js +165 -0
- package/lib/Status/index.js +2 -0
- package/lib/StepTracker/Step.js +70 -79
- package/lib/StepTracker/StepTracker.js +67 -79
- package/lib/StepTracker/dictionary.js +26 -13
- package/lib/StepTracker/index.js +2 -13
- package/lib/TabBar/TabBar.js +125 -0
- package/lib/TabBar/TabBarItem.js +175 -0
- package/lib/TabBar/index.js +2 -0
- package/lib/Tabs/Tabs.js +75 -71
- package/lib/Tabs/TabsItem.js +70 -91
- package/lib/Tabs/index.js +2 -13
- package/lib/Tags/Tags.js +59 -97
- package/lib/Tags/index.js +2 -13
- package/lib/TextInput/TextArea.js +27 -46
- package/lib/TextInput/TextInput.js +38 -54
- package/lib/TextInput/TextInputBase.js +210 -137
- package/lib/TextInput/dictionary.js +8 -11
- package/lib/TextInput/index.js +3 -23
- package/lib/TextInput/propTypes.js +11 -21
- package/lib/ThemeProvider/ThemeProvider.js +40 -52
- package/lib/ThemeProvider/index.js +7 -61
- package/lib/ThemeProvider/useResponsiveThemeTokens.js +81 -0
- package/lib/ThemeProvider/useSetTheme.js +10 -20
- package/lib/ThemeProvider/useTheme.js +5 -17
- package/lib/ThemeProvider/useThemeTokens.js +16 -33
- package/lib/ThemeProvider/utils/index.js +2 -31
- package/lib/ThemeProvider/utils/styles.js +48 -60
- package/lib/ThemeProvider/utils/theme-tokens.js +37 -78
- package/lib/Timeline/Timeline.js +39 -63
- package/lib/Timeline/index.js +2 -13
- package/lib/ToggleSwitch/ToggleSwitch.js +105 -108
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +47 -91
- package/lib/ToggleSwitch/index.js +3 -23
- package/lib/Tooltip/Backdrop.js +22 -29
- package/lib/Tooltip/Backdrop.native.js +14 -33
- package/lib/Tooltip/Tooltip.js +65 -92
- package/lib/Tooltip/Tooltip.native.js +107 -110
- package/lib/Tooltip/dictionary.js +2 -9
- package/lib/Tooltip/getTooltipPosition.js +35 -49
- package/lib/Tooltip/index.js +5 -18
- package/lib/Tooltip/shared.js +26 -24
- package/lib/TooltipButton/TooltipButton.js +48 -53
- package/lib/TooltipButton/index.js +2 -13
- package/lib/Typography/Typography.js +164 -87
- package/lib/Typography/index.js +2 -13
- package/lib/Validator/Validator.js +222 -0
- package/lib/Validator/index.js +2 -0
- package/lib/ViewportProvider/ViewportProvider.js +11 -31
- package/lib/ViewportProvider/index.js +3 -28
- package/lib/ViewportProvider/useViewport.js +3 -15
- package/lib/ViewportProvider/useViewportListener.js +13 -29
- package/lib/index.js +71 -681
- package/lib/server.js +4 -0
- package/lib/utils/BaseView/BaseView.js +14 -36
- package/lib/utils/BaseView/BaseView.native.js +2 -13
- package/lib/utils/BaseView/index.js +2 -13
- package/lib/utils/a11y/index.js +2 -31
- package/lib/utils/a11y/semantics.js +18 -60
- package/lib/utils/a11y/textSize.js +8 -24
- package/lib/utils/animation/index.js +2 -15
- package/lib/utils/animation/useVerticalExpandAnimation.js +27 -47
- package/lib/utils/children.js +25 -47
- package/lib/utils/containUniqueFields.js +3 -13
- package/lib/utils/convertFromMegaByteToByte.js +10 -0
- package/lib/utils/floating-ui/index.js +1 -43
- package/lib/utils/floating-ui/index.native.js +1 -43
- package/lib/utils/formatImageSource.js +27 -0
- package/lib/utils/hasOwnProperty.js +1 -8
- package/lib/utils/htmlAttrs.js +23 -0
- package/lib/utils/index.js +25 -222
- package/lib/utils/info/index.js +6 -17
- package/lib/utils/info/platform/index.js +8 -17
- package/lib/utils/info/platform/platform.android.js +1 -8
- package/lib/utils/info/platform/platform.ios.js +1 -8
- package/lib/utils/info/platform/platform.js +1 -8
- package/lib/utils/info/platform/platform.native.js +1 -8
- package/lib/utils/info/versions.js +4 -14
- package/lib/utils/input.js +38 -52
- package/lib/utils/pressability.js +18 -40
- package/lib/utils/props/a11yProps.js +105 -119
- package/lib/utils/props/clickProps.js +4 -16
- package/lib/utils/props/componentPropType.js +4 -24
- package/lib/utils/props/copyPropTypes.js +2 -14
- package/lib/utils/props/getPropSelector.js +15 -21
- package/lib/utils/props/handlerProps.js +28 -52
- package/lib/utils/props/hrefAttrsProp.js +6 -17
- package/lib/utils/props/index.js +19 -190
- package/lib/utils/props/inputSupportsProps.js +22 -27
- package/lib/utils/props/linkProps.js +17 -35
- package/lib/utils/props/paddingProp.js +8 -19
- package/lib/utils/props/pressProps.js +23 -38
- package/lib/utils/props/rectProp.js +8 -19
- package/lib/utils/props/responsiveProps.js +6 -18
- package/lib/utils/props/selectSystemProps.js +7 -15
- package/lib/utils/props/spacingProps.js +13 -27
- package/lib/utils/props/textInputProps.js +64 -90
- package/lib/utils/props/textProps.js +23 -34
- package/lib/utils/props/tokens.js +26 -55
- package/lib/utils/props/variantProp.js +4 -14
- package/lib/utils/props/viewProps.js +10 -23
- package/lib/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +48 -0
- package/lib/utils/ssr-media-query/create-stylesheet/index.android.js +2 -0
- package/lib/utils/ssr-media-query/create-stylesheet/index.ios.js +2 -0
- package/lib/utils/ssr-media-query/create-stylesheet/index.js +36 -0
- package/lib/utils/ssr-media-query/hash.js +13 -0
- package/lib/utils/ssr-media-query/index.js +6 -0
- package/lib/utils/ssr-media-query/utils/common.js +33 -0
- package/lib/utils/ssr-media-query/utils/create-declaration-block.js +16 -0
- package/lib/utils/ssr-media-query/utils/create-media-query-styles.js +60 -0
- package/lib/utils/ssr-media-query/utils/hyphenate-style-name.js +12 -0
- package/lib/utils/ssr-media-query/utils/inject.js +39 -0
- package/lib/utils/ssr.js +27 -55
- package/lib/utils/transformGradient.js +15 -0
- package/lib/utils/useCopy.js +4 -15
- package/lib/utils/useHash.js +11 -23
- package/lib/utils/useHash.native.js +1 -10
- package/lib/utils/useOverlaidPosition.js +214 -0
- package/lib/utils/useResponsiveProp.js +13 -29
- package/lib/utils/useSafeLayoutEffect.js +10 -22
- package/lib/utils/useScrollBlocking.js +13 -28
- package/lib/utils/useScrollBlocking.native.js +1 -10
- package/lib/utils/useSpacingScale.js +12 -24
- package/lib/utils/useUniqueId.js +4 -15
- package/lib/utils/withLinkRouter.js +23 -36
- package/package.json +32 -22
- package/src/A11yInfoProvider/index.jsx +13 -20
- package/src/A11yText/index.jsx +14 -4
- package/src/ActionCard/ActionCard.jsx +306 -0
- package/src/ActionCard/index.js +3 -0
- package/src/ActivityIndicator/Spinner.jsx +3 -2
- package/src/ActivityIndicator/Spinner.native.jsx +2 -2
- package/src/ActivityIndicator/index.jsx +12 -3
- package/src/Autocomplete/Autocomplete.jsx +486 -0
- package/src/Autocomplete/Loading.jsx +21 -0
- package/src/Autocomplete/Suggestions.jsx +54 -0
- package/src/Autocomplete/constants.js +4 -0
- package/src/Autocomplete/dictionary.js +12 -0
- package/src/Autocomplete/index.js +3 -0
- package/src/Badge/Badge.jsx +76 -0
- package/src/Badge/index.js +3 -0
- package/src/BaseProvider/HydrationContext.jsx +5 -5
- package/src/BaseProvider/index.jsx +5 -2
- package/src/Box/Box.jsx +162 -20
- package/src/Box/backgroundImageStylesMap.js +21 -0
- package/src/Button/Button.jsx +12 -7
- package/src/Button/ButtonBase.jsx +76 -35
- package/src/Button/ButtonDropdown.jsx +5 -2
- package/src/Button/ButtonGroup.jsx +20 -3
- package/src/Button/ButtonLink.jsx +10 -4
- package/src/Card/Card.jsx +269 -17
- package/src/Card/CardBase.jsx +79 -28
- package/src/Card/PressableCardBase.jsx +21 -5
- package/src/CardGroup/CardGroup.jsx +249 -0
- package/src/CardGroup/dictionary.js +8 -0
- package/src/CardGroup/index.js +3 -0
- package/src/Carousel/Carousel.jsx +406 -117
- package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
- package/src/Carousel/CarouselItem/CarouselItem.jsx +99 -18
- package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +15 -5
- package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
- package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +22 -12
- package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
- package/src/Carousel/CarouselThumbnail.jsx +45 -27
- package/src/Carousel/CarouselThumbnailNavigation.jsx +11 -7
- package/src/Carousel/dictionary.js +11 -7
- package/src/Checkbox/Checkbox.jsx +8 -4
- package/src/Checkbox/CheckboxButton.jsx +178 -0
- package/src/Checkbox/CheckboxGroup.jsx +24 -4
- package/src/Checkbox/CheckboxInput.jsx +15 -12
- package/src/CheckboxCard/CheckboxCard.jsx +190 -0
- package/src/CheckboxCard/index.js +3 -0
- package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +231 -0
- package/src/CheckboxCardGroup/index.js +3 -0
- package/src/ColourToggle/ColourBubble.jsx +112 -0
- package/src/ColourToggle/ColourToggle.jsx +83 -0
- package/src/ColourToggle/index.js +3 -0
- package/src/Divider/Divider.jsx +5 -2
- package/src/DownloadApp/DownloadApp.jsx +165 -0
- package/src/DownloadApp/dictionary.js +10 -0
- package/src/DownloadApp/index.js +3 -0
- package/src/ExpandCollapse/Accordion.jsx +4 -2
- package/src/ExpandCollapse/Control.jsx +44 -14
- package/src/ExpandCollapse/ExpandCollapse.jsx +15 -7
- package/src/ExpandCollapse/Panel.jsx +119 -24
- package/src/ExpandCollapse/dictionary.js +10 -0
- package/src/Feedback/Feedback.jsx +3 -4
- package/src/Fieldset/Fieldset.jsx +47 -23
- package/src/Fieldset/FieldsetContainer.jsx +15 -7
- package/src/Fieldset/FieldsetContainer.native.jsx +15 -7
- package/src/Fieldset/Legend.jsx +2 -2
- package/src/Fieldset/Legend.native.jsx +2 -2
- package/src/FileUpload/FileUpload.jsx +396 -0
- package/src/FileUpload/NotificationContent.jsx +44 -0
- package/src/FileUpload/dictionary.js +40 -0
- package/src/FileUpload/index.js +3 -0
- package/src/FlexGrid/Col/Col.jsx +76 -79
- package/src/FlexGrid/FlexGrid.jsx +62 -43
- package/src/FlexGrid/Row/Row.jsx +60 -54
- package/src/Footnote/Footnote.jsx +326 -0
- package/src/Footnote/FootnoteLink.jsx +110 -0
- package/src/Footnote/dictionary.js +12 -0
- package/src/Footnote/index.js +6 -0
- package/src/HorizontalScroll/HorizontalScroll.jsx +8 -8
- package/src/HorizontalScroll/HorizontalScrollButton.jsx +2 -2
- package/src/HorizontalScroll/ScrollViewEnd.jsx +4 -8
- package/src/HorizontalScroll/ScrollViewEnd.native.jsx +2 -2
- package/src/Icon/Icon.jsx +53 -6
- package/src/Icon/IconText.jsx +46 -14
- package/src/IconButton/IconButton.jsx +116 -20
- package/src/InputLabel/InputLabel.jsx +8 -6
- package/src/InputLabel/LabelContent.jsx +2 -2
- package/src/InputLabel/LabelContent.native.jsx +2 -2
- package/src/InputSupports/InputSupports.jsx +22 -3
- package/src/Link/ChevronLink.jsx +24 -7
- package/src/Link/InlinePressable.jsx +23 -15
- package/src/Link/InlinePressable.native.jsx +12 -6
- package/src/Link/Link.jsx +2 -2
- package/src/Link/LinkBase.jsx +75 -31
- package/src/Link/TextButton.jsx +11 -4
- package/src/List/List.jsx +26 -8
- package/src/List/ListItem.jsx +3 -5
- package/src/List/ListItemBase.jsx +38 -9
- package/src/List/ListItemContent.jsx +24 -6
- package/src/List/ListItemMark.jsx +14 -13
- package/src/List/PressableListItemBase.jsx +4 -2
- package/src/Listbox/GroupControl.jsx +101 -0
- package/src/Listbox/Listbox.jsx +177 -0
- package/src/Listbox/ListboxContext.js +6 -0
- package/src/Listbox/ListboxGroup.jsx +127 -0
- package/src/Listbox/ListboxItem.jsx +87 -0
- package/src/Listbox/ListboxOverlay.jsx +81 -0
- package/src/Listbox/PressableItem.jsx +138 -0
- package/src/Listbox/index.js +3 -0
- package/src/Modal/Modal.jsx +190 -16
- package/src/Modal/ModalContent.jsx +180 -0
- package/src/Modal/WebModal.jsx +70 -0
- package/src/MultiSelectFilter/ModalOverlay.jsx +103 -30
- package/src/MultiSelectFilter/MultiSelectFilter.jsx +326 -68
- package/src/Notification/Notification.jsx +273 -49
- package/src/OrderedList/Item.jsx +147 -0
- package/src/OrderedList/ItemBase.jsx +43 -0
- package/src/OrderedList/OrderedList.jsx +64 -0
- package/src/OrderedList/OrderedListBase.jsx +33 -0
- package/src/OrderedList/index.js +3 -0
- package/src/Pagination/PageButton.jsx +14 -5
- package/src/Pagination/Pagination.jsx +83 -17
- package/src/Pagination/SideButton.jsx +2 -2
- package/src/Pagination/constants.js +3 -0
- package/src/Pagination/dictionary.js +3 -3
- package/src/Pagination/usePagination.js +14 -3
- package/src/Portal/Portal.jsx +52 -0
- package/src/Portal/Portal.native.jsx +3 -0
- package/src/Portal/index.js +3 -0
- package/src/PriceLockup/PriceLockup.jsx +237 -0
- package/src/PriceLockup/index.js +3 -0
- package/src/PriceLockup/utils/renderFootnoteContent.jsx +77 -0
- package/src/PriceLockup/utils/renderFootnoteLinks.jsx +38 -0
- package/src/PriceLockup/utils/renderPrice.jsx +201 -0
- package/src/PriceLockup/utils/renderTypography.jsx +13 -0
- package/src/ProductCard/ProductCard.jsx +199 -0
- package/src/ProductCard/dictionary.js +38 -0
- package/src/ProductCard/index.js +3 -0
- package/src/ProductCardGroup/ProductCardGroup.jsx +75 -0
- package/src/ProductCardGroup/index.js +3 -0
- package/src/Progress/Progress.jsx +8 -5
- package/src/Progress/ProgressBar.jsx +6 -4
- package/src/Progress/ProgressBarBackground.jsx +6 -4
- package/src/QuickLinks/QuickLinks.jsx +11 -2
- package/src/QuickLinks/QuickLinksCard.jsx +9 -3
- package/src/QuickLinks/QuickLinksItem.jsx +2 -2
- package/src/QuickLinksFeature/QuickLinksFeature.jsx +31 -27
- package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +43 -36
- package/src/Radio/Radio.jsx +24 -6
- package/src/Radio/RadioButton.jsx +58 -6
- package/src/Radio/RadioGroup.jsx +27 -5
- package/src/Radio/RadioInput.jsx +15 -14
- package/src/RadioCard/RadioCard.jsx +2 -2
- package/src/RadioCard/RadioCardGroup.jsx +25 -4
- package/src/Responsive/Responsive.jsx +43 -13
- package/src/Responsive/ResponsiveProp.jsx +33 -0
- package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +67 -0
- package/src/Search/Search.jsx +10 -5
- package/src/Select/Group.jsx +12 -3
- package/src/Select/Group.native.jsx +3 -0
- package/src/Select/Item.jsx +10 -1
- package/src/Select/Picker.jsx +32 -5
- package/src/Select/Picker.native.jsx +3 -3
- package/src/Select/Select.jsx +27 -10
- package/src/SideNav/Item.jsx +12 -7
- package/src/SideNav/ItemContent.jsx +14 -6
- package/src/SideNav/ItemsGroup.jsx +15 -4
- package/src/SideNav/SideNav.jsx +11 -3
- package/src/Skeleton/Skeleton.jsx +19 -7
- package/src/Skeleton/skeleton.constant.js +0 -1
- package/src/Skeleton/skeletonWebAnimation.js +11 -11
- package/src/Skeleton/useSkeletonNativeAnimation.js +5 -4
- package/src/SkipLink/SkipLink.jsx +14 -14
- package/src/Spacer/Spacer.jsx +2 -2
- package/src/StackView/StackView.jsx +5 -4
- package/src/StackView/StackWrap.jsx +3 -3
- package/src/StackView/StackWrapBox.jsx +2 -2
- package/src/StackView/StackWrapGap.jsx +2 -2
- package/src/StackView/getStackedContent.jsx +16 -7
- package/src/Status/Status.jsx +153 -0
- package/src/Status/index.js +3 -0
- package/src/StepTracker/Step.jsx +102 -70
- package/src/StepTracker/StepTracker.jsx +28 -6
- package/src/StepTracker/dictionary.js +24 -4
- package/src/TabBar/TabBar.jsx +123 -0
- package/src/TabBar/TabBarItem.jsx +149 -0
- package/src/TabBar/index.js +3 -0
- package/src/Tabs/Tabs.jsx +37 -5
- package/src/Tabs/TabsItem.jsx +19 -7
- package/src/Tags/Tags.jsx +7 -3
- package/src/TextInput/TextArea.jsx +3 -3
- package/src/TextInput/TextInput.jsx +11 -7
- package/src/TextInput/TextInputBase.jsx +145 -29
- package/src/TextInput/dictionary.js +6 -2
- package/src/TextInput/propTypes.js +4 -0
- package/src/ThemeProvider/ThemeProvider.jsx +17 -7
- package/src/ThemeProvider/index.js +1 -0
- package/src/ThemeProvider/useResponsiveThemeTokens.js +85 -0
- package/src/ThemeProvider/utils/styles.js +34 -2
- package/src/Timeline/Timeline.jsx +10 -6
- package/src/ToggleSwitch/ToggleSwitch.jsx +28 -11
- package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
- package/src/Tooltip/Tooltip.jsx +38 -9
- package/src/Tooltip/Tooltip.native.jsx +82 -20
- package/src/Tooltip/getTooltipPosition.js +12 -13
- package/src/Tooltip/shared.js +17 -0
- package/src/TooltipButton/TooltipButton.jsx +34 -8
- package/src/Typography/Typography.jsx +173 -29
- package/src/Validator/Validator.jsx +230 -0
- package/src/Validator/index.js +3 -0
- package/src/ViewportProvider/ViewportProvider.jsx +2 -2
- package/src/index.js +31 -12
- package/src/server.js +4 -0
- package/src/utils/BaseView/BaseView.jsx +2 -2
- package/src/utils/a11y/semantics.js +7 -14
- package/src/utils/animation/useVerticalExpandAnimation.js +3 -3
- package/src/utils/children.jsx +4 -4
- package/src/utils/convertFromMegaByteToByte.js +11 -0
- package/src/utils/formatImageSource.js +29 -0
- package/src/utils/htmlAttrs.js +29 -0
- package/src/utils/index.js +6 -1
- package/src/utils/props/handlerProps.js +5 -1
- package/src/utils/props/inputSupportsProps.js +21 -1
- package/src/utils/props/textInputProps.js +1 -0
- package/src/utils/props/tokens.js +4 -2
- package/src/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +41 -0
- package/src/utils/ssr-media-query/create-stylesheet/index.android.js +3 -0
- package/src/utils/ssr-media-query/create-stylesheet/index.ios.js +3 -0
- package/src/utils/ssr-media-query/create-stylesheet/index.js +35 -0
- package/src/utils/ssr-media-query/hash.js +16 -0
- package/src/utils/ssr-media-query/index.js +8 -0
- package/src/utils/ssr-media-query/utils/common.js +38 -0
- package/src/utils/ssr-media-query/utils/create-declaration-block.js +21 -0
- package/src/utils/ssr-media-query/utils/create-media-query-styles.js +46 -0
- package/src/utils/ssr-media-query/utils/hyphenate-style-name.js +15 -0
- package/src/utils/ssr-media-query/utils/inject.js +43 -0
- package/src/utils/ssr.jsx +3 -1
- package/src/utils/transformGradient.js +17 -0
- package/src/utils/useOverlaidPosition.js +224 -0
- package/src/utils/withLinkRouter.jsx +3 -3
- package/types/Badge.d.ts +28 -0
- package/types/Box.d.ts +52 -0
- package/types/Checkbox.d.ts +47 -0
- package/types/CheckboxCardGroup.d.ts +72 -0
- package/types/ChevronLink.d.ts +47 -0
- package/types/Common.d.ts +106 -0
- package/types/Divider.d.ts +19 -0
- package/types/ExpandCollapse.d.ts +65 -0
- package/types/FileUpload.d.ts +40 -0
- package/types/HorizontalScrollButton.d.ts +16 -0
- package/types/Icon.d.ts +21 -0
- package/types/Link.d.ts +48 -0
- package/types/List.d.ts +48 -0
- package/types/Portal.d.ts +5 -0
- package/types/Search.d.ts +38 -0
- package/types/Select.d.ts +57 -0
- package/types/Spacer.d.ts +5 -0
- package/types/StackView.d.ts +28 -0
- package/types/Tabs.d.ts +46 -0
- package/types/TextButton.d.ts +11 -0
- package/types/ToggleSwitch.d.ts +54 -0
- package/types/ToolTip.d.ts +40 -0
- package/types/Typography.d.ts +40 -0
- package/types/index.d.ts +78 -0
- package/.eslintrc.js +0 -9
- package/__tests17__/A11yText/A11yText.test.jsx +0 -34
- package/__tests17__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
- package/__tests17__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -299
- package/__tests17__/Box/Box.test.jsx +0 -111
- package/__tests17__/Button/Button.test.jsx +0 -86
- package/__tests17__/Button/ButtonBase.test.jsx +0 -82
- package/__tests17__/Button/ButtonGroup.test.jsx +0 -347
- package/__tests17__/Button/ButtonLink.test.jsx +0 -61
- package/__tests17__/Card/Card.test.jsx +0 -63
- package/__tests17__/Carousel/Carousel.test.jsx +0 -128
- package/__tests17__/Carousel/CarouselTabs.test.jsx +0 -142
- package/__tests17__/Checkbox/Checkbox.test.jsx +0 -94
- package/__tests17__/Checkbox/CheckboxGroup.test.jsx +0 -246
- package/__tests17__/Divider/Divider.test.jsx +0 -91
- package/__tests17__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
- package/__tests17__/Feedback/Feedback.test.jsx +0 -42
- package/__tests17__/FlexGrid/Col.test.jsx +0 -261
- package/__tests17__/FlexGrid/FlexGrid.test.jsx +0 -136
- package/__tests17__/FlexGrid/Row.test.jsx +0 -273
- package/__tests17__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
- package/__tests17__/Icon/Icon.test.jsx +0 -61
- package/__tests17__/IconButton/IconButton.test.jsx +0 -52
- package/__tests17__/InputLabel/InputLabel.test.jsx +0 -28
- package/__tests17__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
- package/__tests17__/InputSupports/InputSupports.test.jsx +0 -60
- package/__tests17__/Link/Link.test.jsx +0 -63
- package/__tests17__/Link/TextButton.test.jsx +0 -35
- package/__tests17__/List/List.test.jsx +0 -82
- package/__tests17__/Modal/Modal.test.jsx +0 -47
- package/__tests17__/Notification/Notification.test.jsx +0 -20
- package/__tests17__/Pagination/Pagination.test.jsx +0 -160
- package/__tests17__/Progress/Progress.test.jsx +0 -79
- package/__tests17__/Radio/Radio.test.jsx +0 -87
- package/__tests17__/Radio/RadioGroup.test.jsx +0 -220
- package/__tests17__/RadioCard/RadioCard.test.jsx +0 -87
- package/__tests17__/RadioCard/RadioCardGroup.test.jsx +0 -246
- package/__tests17__/Search/Search.test.jsx +0 -87
- package/__tests17__/Select/Select.test.jsx +0 -94
- package/__tests17__/SideNav/SideNav.test.jsx +0 -110
- package/__tests17__/Skeleton/Skeleton.test.jsx +0 -61
- package/__tests17__/SkipLink/SkipLink.test.jsx +0 -61
- package/__tests17__/Spacer/Spacer.test.jsx +0 -63
- package/__tests17__/StackView/StackView.test.jsx +0 -211
- package/__tests17__/StackView/StackWrap.test.jsx +0 -47
- package/__tests17__/StackView/getStackedContent.test.jsx +0 -295
- package/__tests17__/StepTracker/StepTracker.test.jsx +0 -108
- package/__tests17__/Tabs/Tabs.test.jsx +0 -49
- package/__tests17__/Tags/Tags.test.jsx +0 -327
- package/__tests17__/TextInput/TextArea.test.jsx +0 -35
- package/__tests17__/TextInput/TextInputBase.test.jsx +0 -125
- package/__tests17__/ThemeProvider/ThemeProvider.test.jsx +0 -82
- package/__tests17__/ThemeProvider/useThemeTokens.test.jsx +0 -514
- package/__tests17__/ThemeProvider/utils/theme-tokens.test.js +0 -41
- package/__tests17__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
- package/__tests17__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
- package/__tests17__/Tooltip/Tooltip.test.jsx +0 -65
- package/__tests17__/Tooltip/getTooltipPosition.test.js +0 -79
- package/__tests17__/Typography/typography.test.jsx +0 -90
- package/__tests17__/utils/children.test.jsx +0 -128
- package/__tests17__/utils/containUniqueFields.test.js +0 -25
- package/__tests17__/utils/input.test.js +0 -375
- package/__tests17__/utils/props.test.js +0 -36
- package/__tests17__/utils/semantics.test.jsx +0 -34
- package/__tests17__/utils/useCopy.test.js +0 -42
- package/__tests17__/utils/useResponsiveProp.test.jsx +0 -202
- package/__tests17__/utils/useSpacingScale.test.jsx +0 -273
- package/__tests17__/utils/useUniqueId.test.js +0 -31
- package/component-docs.json +0 -13646
- package/lib-module/A11yInfoProvider/index.js +0 -73
- package/lib-module/A11yText/index.js +0 -56
- package/lib-module/ActivityIndicator/Spinner.js +0 -79
- package/lib-module/ActivityIndicator/Spinner.native.js +0 -146
- package/lib-module/ActivityIndicator/index.js +0 -48
- package/lib-module/ActivityIndicator/shared.js +0 -13
- package/lib-module/BaseProvider/HydrationContext.js +0 -51
- package/lib-module/BaseProvider/index.js +0 -41
- package/lib-module/Box/Box.js +0 -259
- package/lib-module/Box/index.js +0 -2
- package/lib-module/Button/Button.js +0 -26
- package/lib-module/Button/ButtonBase.js +0 -309
- package/lib-module/Button/ButtonDropdown.js +0 -181
- package/lib-module/Button/ButtonGroup.js +0 -264
- package/lib-module/Button/ButtonLink.js +0 -40
- package/lib-module/Button/index.js +0 -5
- package/lib-module/Button/propTypes.js +0 -53
- package/lib-module/Card/Card.js +0 -85
- package/lib-module/Card/CardBase.js +0 -66
- package/lib-module/Card/PressableCardBase.js +0 -114
- package/lib-module/Card/index.js +0 -4
- package/lib-module/Carousel/Carousel.js +0 -690
- package/lib-module/Carousel/CarouselContext.js +0 -56
- package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +0 -51
- package/lib-module/Carousel/CarouselItem/CarouselItem.js +0 -81
- package/lib-module/Carousel/CarouselItem/index.js +0 -2
- package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -50
- package/lib-module/Carousel/CarouselStepTracker/index.js +0 -2
- package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +0 -51
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +0 -84
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +0 -126
- package/lib-module/Carousel/CarouselTabs/index.js +0 -2
- package/lib-module/Carousel/CarouselThumbnail.js +0 -85
- package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -66
- package/lib-module/Carousel/dictionary.js +0 -18
- package/lib-module/Carousel/index.js +0 -3
- package/lib-module/Checkbox/Checkbox.js +0 -355
- package/lib-module/Checkbox/CheckboxGroup.js +0 -242
- package/lib-module/Checkbox/CheckboxInput.js +0 -60
- package/lib-module/Checkbox/CheckboxInput.native.js +0 -6
- package/lib-module/Checkbox/index.js +0 -3
- package/lib-module/Divider/Divider.js +0 -127
- package/lib-module/Divider/index.js +0 -2
- package/lib-module/ExpandCollapse/Accordion.js +0 -15
- package/lib-module/ExpandCollapse/Control.js +0 -139
- package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -95
- package/lib-module/ExpandCollapse/Panel.js +0 -160
- package/lib-module/ExpandCollapse/index.js +0 -7
- package/lib-module/Feedback/Feedback.js +0 -165
- package/lib-module/Feedback/index.js +0 -2
- package/lib-module/Fieldset/Fieldset.js +0 -182
- package/lib-module/Fieldset/FieldsetContainer.js +0 -38
- package/lib-module/Fieldset/FieldsetContainer.native.js +0 -23
- package/lib-module/Fieldset/Legend.js +0 -24
- package/lib-module/Fieldset/Legend.native.js +0 -31
- package/lib-module/Fieldset/cssReset.js +0 -14
- package/lib-module/Fieldset/index.js +0 -2
- package/lib-module/FlexGrid/Col/Col.js +0 -275
- package/lib-module/FlexGrid/Col/index.js +0 -2
- package/lib-module/FlexGrid/FlexGrid.js +0 -149
- package/lib-module/FlexGrid/Row/Row.js +0 -184
- package/lib-module/FlexGrid/Row/index.js +0 -2
- package/lib-module/FlexGrid/helpers/index.js +0 -18
- package/lib-module/FlexGrid/index.js +0 -2
- package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
- package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -175
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -81
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -48
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -27
- package/lib-module/HorizontalScroll/dictionary.js +0 -11
- package/lib-module/HorizontalScroll/index.js +0 -11
- package/lib-module/HorizontalScroll/itemPositions.js +0 -112
- package/lib-module/Icon/Icon.js +0 -62
- package/lib-module/Icon/IconText.js +0 -88
- package/lib-module/Icon/index.js +0 -4
- package/lib-module/IconButton/IconButton.js +0 -132
- package/lib-module/IconButton/index.js +0 -2
- package/lib-module/InputLabel/InputLabel.js +0 -154
- package/lib-module/InputLabel/LabelContent.js +0 -27
- package/lib-module/InputLabel/LabelContent.native.js +0 -19
- package/lib-module/InputLabel/index.js +0 -2
- package/lib-module/InputSupports/InputSupports.js +0 -103
- package/lib-module/InputSupports/index.js +0 -2
- package/lib-module/InputSupports/useInputSupports.js +0 -33
- package/lib-module/Link/ChevronLink.js +0 -52
- package/lib-module/Link/InlinePressable.js +0 -44
- package/lib-module/Link/InlinePressable.native.js +0 -89
- package/lib-module/Link/Link.js +0 -28
- package/lib-module/Link/LinkBase.js +0 -244
- package/lib-module/Link/TextButton.js +0 -35
- package/lib-module/Link/index.js +0 -5
- package/lib-module/List/List.js +0 -66
- package/lib-module/List/ListItem.js +0 -38
- package/lib-module/List/ListItemBase.js +0 -139
- package/lib-module/List/ListItemContent.js +0 -66
- package/lib-module/List/ListItemMark.js +0 -143
- package/lib-module/List/PressableListItemBase.js +0 -114
- package/lib-module/List/index.js +0 -5
- package/lib-module/Modal/Modal.js +0 -225
- package/lib-module/Modal/dictionary.js +0 -9
- package/lib-module/Modal/index.js +0 -2
- package/lib-module/MultiSelectFilter/ModalOverlay.js +0 -112
- package/lib-module/MultiSelectFilter/MultiSelectFilter.js +0 -286
- package/lib-module/MultiSelectFilter/dictionary.js +0 -12
- package/lib-module/MultiSelectFilter/index.js +0 -2
- package/lib-module/Notification/Notification.js +0 -230
- package/lib-module/Notification/dictionary.js +0 -8
- package/lib-module/Notification/index.js +0 -2
- package/lib-module/Pagination/PageButton.js +0 -66
- package/lib-module/Pagination/Pagination.js +0 -159
- package/lib-module/Pagination/SideButton.js +0 -118
- package/lib-module/Pagination/dictionary.js +0 -18
- package/lib-module/Pagination/index.js +0 -2
- package/lib-module/Pagination/usePagination.js +0 -73
- package/lib-module/Progress/Progress.js +0 -89
- package/lib-module/Progress/ProgressBar.js +0 -138
- package/lib-module/Progress/ProgressBarBackground.js +0 -42
- package/lib-module/Progress/index.js +0 -4
- package/lib-module/QuickLinks/QuickLinks.js +0 -71
- package/lib-module/QuickLinks/QuickLinksCard.js +0 -33
- package/lib-module/QuickLinks/QuickLinksItem.js +0 -50
- package/lib-module/QuickLinks/index.js +0 -4
- package/lib-module/QuickLinksFeature/QuickLinksFeature.js +0 -69
- package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +0 -130
- package/lib-module/QuickLinksFeature/index.js +0 -4
- package/lib-module/Radio/Radio.js +0 -288
- package/lib-module/Radio/RadioButton.js +0 -138
- package/lib-module/Radio/RadioGroup.js +0 -255
- package/lib-module/Radio/RadioInput.js +0 -62
- package/lib-module/Radio/RadioInput.native.js +0 -6
- package/lib-module/Radio/index.js +0 -3
- package/lib-module/RadioCard/RadioCardGroup.js +0 -259
- package/lib-module/RadioCard/index.js +0 -3
- package/lib-module/Responsive/index.js +0 -2
- package/lib-module/Search/Search.js +0 -241
- package/lib-module/Search/dictionary.js +0 -12
- package/lib-module/Search/index.js +0 -2
- package/lib-module/Select/Group.js +0 -21
- package/lib-module/Select/Group.native.js +0 -15
- package/lib-module/Select/Item.js +0 -20
- package/lib-module/Select/Item.native.js +0 -3
- package/lib-module/Select/Picker.js +0 -68
- package/lib-module/Select/Picker.native.js +0 -122
- package/lib-module/Select/Select.js +0 -347
- package/lib-module/Select/constants.js +0 -5
- package/lib-module/Select/index.js +0 -6
- package/lib-module/SideNav/Item.js +0 -145
- package/lib-module/SideNav/ItemContent.js +0 -48
- package/lib-module/SideNav/ItemsGroup.js +0 -117
- package/lib-module/SideNav/SideNav.js +0 -136
- package/lib-module/SideNav/index.js +0 -1
- package/lib-module/Skeleton/Skeleton.js +0 -182
- package/lib-module/Skeleton/index.js +0 -2
- package/lib-module/Skeleton/skeleton.constant.js +0 -3
- package/lib-module/Skeleton/skeletonWebAnimation.js +0 -18
- package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -25
- package/lib-module/SkipLink/SkipLink.js +0 -188
- package/lib-module/SkipLink/index.js +0 -2
- package/lib-module/Spacer/Spacer.js +0 -98
- package/lib-module/Spacer/index.js +0 -2
- package/lib-module/StackView/StackView.js +0 -127
- package/lib-module/StackView/StackWrap.js +0 -53
- package/lib-module/StackView/StackWrap.native.js +0 -3
- package/lib-module/StackView/StackWrapBox.js +0 -117
- package/lib-module/StackView/StackWrapGap.js +0 -61
- package/lib-module/StackView/common.js +0 -35
- package/lib-module/StackView/getStackedContent.js +0 -124
- package/lib-module/StackView/index.js +0 -5
- package/lib-module/StepTracker/Step.js +0 -253
- package/lib-module/StepTracker/StepTracker.js +0 -191
- package/lib-module/StepTracker/dictionary.js +0 -10
- package/lib-module/StepTracker/index.js +0 -2
- package/lib-module/Tabs/Tabs.js +0 -152
- package/lib-module/Tabs/TabsItem.js +0 -228
- package/lib-module/Tabs/index.js +0 -2
- package/lib-module/Tags/Tags.js +0 -257
- package/lib-module/Tags/index.js +0 -2
- package/lib-module/TextInput/TextArea.js +0 -94
- package/lib-module/TextInput/TextInput.js +0 -73
- package/lib-module/TextInput/TextInputBase.js +0 -333
- package/lib-module/TextInput/dictionary.js +0 -8
- package/lib-module/TextInput/index.js +0 -3
- package/lib-module/TextInput/propTypes.js +0 -33
- package/lib-module/ThemeProvider/ThemeProvider.js +0 -74
- package/lib-module/ThemeProvider/index.js +0 -6
- package/lib-module/ThemeProvider/useSetTheme.js +0 -25
- package/lib-module/ThemeProvider/useTheme.js +0 -14
- package/lib-module/ThemeProvider/useThemeTokens.js +0 -110
- package/lib-module/ThemeProvider/utils/index.js +0 -2
- package/lib-module/ThemeProvider/utils/styles.js +0 -188
- package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -163
- package/lib-module/Timeline/Timeline.js +0 -174
- package/lib-module/Timeline/index.js +0 -2
- package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -255
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -227
- package/lib-module/ToggleSwitch/index.js +0 -3
- package/lib-module/Tooltip/Backdrop.js +0 -45
- package/lib-module/Tooltip/Backdrop.native.js +0 -44
- package/lib-module/Tooltip/Tooltip.js +0 -278
- package/lib-module/Tooltip/Tooltip.native.js +0 -326
- package/lib-module/Tooltip/dictionary.js +0 -8
- package/lib-module/Tooltip/getTooltipPosition.js +0 -175
- package/lib-module/Tooltip/index.js +0 -5
- package/lib-module/Tooltip/shared.js +0 -27
- package/lib-module/TooltipButton/TooltipButton.js +0 -78
- package/lib-module/TooltipButton/index.js +0 -2
- package/lib-module/Typography/Typography.js +0 -154
- package/lib-module/Typography/index.js +0 -2
- package/lib-module/ViewportProvider/ViewportProvider.js +0 -29
- package/lib-module/ViewportProvider/index.js +0 -3
- package/lib-module/ViewportProvider/useViewport.js +0 -3
- package/lib-module/ViewportProvider/useViewportListener.js +0 -39
- package/lib-module/index.js +0 -58
- package/lib-module/utils/BaseView/BaseView.js +0 -43
- package/lib-module/utils/BaseView/BaseView.native.js +0 -6
- package/lib-module/utils/BaseView/index.js +0 -2
- package/lib-module/utils/a11y/index.js +0 -2
- package/lib-module/utils/a11y/semantics.js +0 -157
- package/lib-module/utils/a11y/textSize.js +0 -36
- package/lib-module/utils/animation/index.js +0 -2
- package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -89
- package/lib-module/utils/children.js +0 -119
- package/lib-module/utils/containUniqueFields.js +0 -26
- package/lib-module/utils/floating-ui/index.js +0 -1
- package/lib-module/utils/floating-ui/index.native.js +0 -1
- package/lib-module/utils/hasOwnProperty.js +0 -11
- package/lib-module/utils/index.js +0 -19
- package/lib-module/utils/info/index.js +0 -7
- package/lib-module/utils/info/platform/index.js +0 -11
- package/lib-module/utils/info/platform/platform.android.js +0 -1
- package/lib-module/utils/info/platform/platform.ios.js +0 -1
- package/lib-module/utils/info/platform/platform.js +0 -1
- package/lib-module/utils/info/platform/platform.native.js +0 -4
- package/lib-module/utils/info/versions.js +0 -5
- package/lib-module/utils/input.js +0 -187
- package/lib-module/utils/pressability.js +0 -111
- package/lib-module/utils/props/a11yProps.js +0 -308
- package/lib-module/utils/props/clickProps.js +0 -26
- package/lib-module/utils/props/componentPropType.js +0 -63
- package/lib-module/utils/props/copyPropTypes.js +0 -2
- package/lib-module/utils/props/getPropSelector.js +0 -48
- package/lib-module/utils/props/handlerProps.js +0 -117
- package/lib-module/utils/props/hrefAttrsProp.js +0 -33
- package/lib-module/utils/props/index.js +0 -19
- package/lib-module/utils/props/inputSupportsProps.js +0 -62
- package/lib-module/utils/props/linkProps.js +0 -44
- package/lib-module/utils/props/paddingProp.js +0 -9
- package/lib-module/utils/props/pressProps.js +0 -42
- package/lib-module/utils/props/rectProp.js +0 -9
- package/lib-module/utils/props/responsiveProps.js +0 -30
- package/lib-module/utils/props/selectSystemProps.js +0 -24
- package/lib-module/utils/props/spacingProps.js +0 -56
- package/lib-module/utils/props/textInputProps.js +0 -201
- package/lib-module/utils/props/textProps.js +0 -59
- package/lib-module/utils/props/tokens.js +0 -133
- package/lib-module/utils/props/variantProp.js +0 -18
- package/lib-module/utils/props/viewProps.js +0 -22
- package/lib-module/utils/ssr.js +0 -144
- package/lib-module/utils/useCopy.js +0 -44
- package/lib-module/utils/useHash.js +0 -45
- package/lib-module/utils/useHash.native.js +0 -7
- package/lib-module/utils/useResponsiveProp.js +0 -46
- package/lib-module/utils/useSafeLayoutEffect.js +0 -30
- package/lib-module/utils/useScrollBlocking.js +0 -58
- package/lib-module/utils/useScrollBlocking.native.js +0 -2
- package/lib-module/utils/useSpacingScale.js +0 -125
- package/lib-module/utils/useUniqueId.js +0 -13
- package/lib-module/utils/withLinkRouter.js +0 -81
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { useCallback, useRef, useState } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* @typedef {import('react').SyntheticEvent} Event
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
const pluralHooks = ['useMultipleInputValues'];
|
|
7
|
-
|
|
8
|
-
const validateProps = (_ref, _ref2, hookName) => {
|
|
9
|
-
let {
|
|
10
|
-
value,
|
|
11
|
-
onChange,
|
|
12
|
-
readOnly,
|
|
13
|
-
initialValue
|
|
14
|
-
} = _ref;
|
|
15
|
-
let {
|
|
16
|
-
isCurrentlyControlled,
|
|
17
|
-
isControlled
|
|
18
|
-
} = _ref2;
|
|
19
|
-
const s = pluralHooks.includes(hookName) ? 's' : '';
|
|
20
|
-
|
|
21
|
-
const usageError = error => {
|
|
22
|
-
// Errors inside hooks in React Native get incomplete stack traces pointing at parent component only.
|
|
23
|
-
// Help devs out by telling them exactly which hook threw the error as well as why.
|
|
24
|
-
throw new Error("".concat(hookName, " ").concat(error, ".\n\nConsumers of this hook must be one of:\n1. An \"uncontrolled\" component responding directly to user actions, with an optional `initialValue").concat(s, "` but no `value").concat(s, "` prop,\n2. A \"controlled\" component where an always-defined `value").concat(s, "` prop is managed by an `onChange` handler, with no `initialValue").concat(s, "`,\n3. A \"read-only\" component, with `readOnly` prop set as `true`.\n"));
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
if (value && !onChange && !readOnly) {
|
|
28
|
-
usageError("has `value".concat(s, "` prop without `onChange` or `readOnly`"));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (initialValue && value) {
|
|
32
|
-
usageError("has both `initialValue".concat(s, "` and `value").concat(s, "`"));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (isControlled && !isCurrentlyControlled) {
|
|
36
|
-
usageError("stopped receiving `value".concat(s, "` from parent after delegating state management"));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (!isControlled && isCurrentlyControlled) {
|
|
40
|
-
usageError("started receiving `value".concat(s, "` from parent after starting managing own state"));
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Hook used for controlling the input state of input components that have a singular value.
|
|
45
|
-
* If `value` prop is passed in, this delegates state management to a parent using a passed-in `onChange` prop.
|
|
46
|
-
* If `value` prop is undefined, the hook manages its own state.
|
|
47
|
-
*
|
|
48
|
-
* TODO: when implementing full UDS forms, integrate validation support etc and test alongside common forms
|
|
49
|
-
* management tools such as Formik and React Hooks Form.
|
|
50
|
-
*
|
|
51
|
-
* @param {object} props
|
|
52
|
-
* @param {string|number|null} [props.value] - for a controlled input, the active values as set by a parent
|
|
53
|
-
* @param {string|number} [props.initialValue] - for an uncontrolled input, the default active values
|
|
54
|
-
* @param {function} [props.onChange] - function called when values change (required for controlled inputs)
|
|
55
|
-
* @param {boolean} [props.readOnly] - if true, stops the input values from changing
|
|
56
|
-
*
|
|
57
|
-
* @param {string} hookName - optional, used for tailoring error messages
|
|
58
|
-
*
|
|
59
|
-
* @returns {{
|
|
60
|
-
* currentValue: string|number|null
|
|
61
|
-
* setValue: (newValue: string|number|null|(oldValue: string|number) => string|number, event: Event) => void
|
|
62
|
-
* resetValue: () => void
|
|
63
|
-
* isControlled: bool
|
|
64
|
-
* }}
|
|
65
|
-
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
export const useInputValue = function () {
|
|
69
|
-
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
70
|
-
let hookName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'useInputValue';
|
|
71
|
-
const isCurrentlyControlled = props.value !== undefined;
|
|
72
|
-
const [isControlled] = useState(isCurrentlyControlled);
|
|
73
|
-
validateProps(props, {
|
|
74
|
-
isControlled,
|
|
75
|
-
isCurrentlyControlled
|
|
76
|
-
}, hookName);
|
|
77
|
-
const {
|
|
78
|
-
value,
|
|
79
|
-
initialValue,
|
|
80
|
-
inputRef,
|
|
81
|
-
onChange,
|
|
82
|
-
readOnly = false
|
|
83
|
-
} = props;
|
|
84
|
-
const [ownValue, setOwnValue] = useState(!isControlled && initialValue);
|
|
85
|
-
const currentValue = isControlled ? value : ownValue; // Store the first valid value, for resetting input to default. If behaviour like Formik's `enableReinitialize`
|
|
86
|
-
// is needed, add useEffect calling a set fn if !deepEqual(initializedValues, initialValues)
|
|
87
|
-
|
|
88
|
-
const valueRef = useRef({
|
|
89
|
-
initial: currentValue,
|
|
90
|
-
value: currentValue
|
|
91
|
-
}); // Make current value accessible inside useCallback without rememoizing every time the value changes
|
|
92
|
-
|
|
93
|
-
valueRef.current.value = currentValue;
|
|
94
|
-
const isDirty = currentValue !== valueRef.current.initial;
|
|
95
|
-
const setValue = useCallback((arg, event) => {
|
|
96
|
-
if (readOnly) return;
|
|
97
|
-
const newValue = typeof arg === 'function' ? arg(valueRef.current.value) : arg;
|
|
98
|
-
|
|
99
|
-
if (!isControlled) {
|
|
100
|
-
setOwnValue(newValue);
|
|
101
|
-
if (inputRef !== null && inputRef !== void 0 && inputRef.current) inputRef.current.value = newValue !== null && newValue !== void 0 ? newValue : '';
|
|
102
|
-
} // Call onChange handler if there's something for it to handle (event or a changed value)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (onChange && (event || valueRef.current.value !== newValue)) onChange(newValue, event);
|
|
106
|
-
}, [inputRef, isControlled, onChange, readOnly]);
|
|
107
|
-
const resetValue = useCallback(event => setValue(valueRef.current.initial, event), [setValue]);
|
|
108
|
-
return {
|
|
109
|
-
currentValue,
|
|
110
|
-
setValue,
|
|
111
|
-
resetValue,
|
|
112
|
-
isControlled,
|
|
113
|
-
isDirty
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
/**
|
|
117
|
-
* Hook used for controlling the input state of input components that have multiple named on/off states.
|
|
118
|
-
* If `values` are passed in, this delegates state management to a parent using a passed-in `onChange` prop.
|
|
119
|
-
* If `values` prop is not passed in, the hook manages its own state.
|
|
120
|
-
*
|
|
121
|
-
* TODO: when implementing full UDS forms, integrate validation support etc and test alongside common forms
|
|
122
|
-
* management tools such as Formik and React Hooks Form.
|
|
123
|
-
*
|
|
124
|
-
* @param {object} props
|
|
125
|
-
* @param {string[]|number[]} [props.values] - for a controlled input, the active values as set by a parent
|
|
126
|
-
* @param {string[]|number[]} [props.initialValues] - for an uncontrolled input, the default active values
|
|
127
|
-
* @param {number?} [props.maxValues] - maximum number of values that may be selected at once (no limit if null)
|
|
128
|
-
* @param {function} [props.onChange] - function called when values change (required for controlled inputs)
|
|
129
|
-
* @param {boolean} [props.readOnly] - if true, stops the input values from changing
|
|
130
|
-
*
|
|
131
|
-
* @param {string} componentName - optional, used in error messages
|
|
132
|
-
*
|
|
133
|
-
* @returns {{
|
|
134
|
-
* currentValues: any
|
|
135
|
-
* resetValues: () => void
|
|
136
|
-
* setValues: (newValues: string[]|number[]|(oldValues: string[]|number[]) => string[]|number[], event: Event) => void
|
|
137
|
-
* toggleOneValue: (value: string|number) => void
|
|
138
|
-
* unsetValues: () => void
|
|
139
|
-
* }}
|
|
140
|
-
*/
|
|
141
|
-
|
|
142
|
-
export const useMultipleInputValues = function () {
|
|
143
|
-
let {
|
|
144
|
-
values,
|
|
145
|
-
initialValues,
|
|
146
|
-
maxValues,
|
|
147
|
-
onChange,
|
|
148
|
-
readOnly
|
|
149
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
150
|
-
const {
|
|
151
|
-
currentValue,
|
|
152
|
-
setValue,
|
|
153
|
-
resetValue
|
|
154
|
-
} = useInputValue({
|
|
155
|
-
readOnly,
|
|
156
|
-
onChange,
|
|
157
|
-
value: values,
|
|
158
|
-
// if we're controlling our own state, always start with an array
|
|
159
|
-
initialValue: initialValues !== null && initialValues !== void 0 ? initialValues : values === undefined ? [] : undefined
|
|
160
|
-
}, 'useMultipleInputValues');
|
|
161
|
-
const enforceMaxValues = useCallback(newValues => {
|
|
162
|
-
if (!maxValues) return newValues;
|
|
163
|
-
const excess = newValues.length - maxValues;
|
|
164
|
-
return excess > 0 ? newValues.slice(excess) : newValues;
|
|
165
|
-
}, [maxValues]);
|
|
166
|
-
const currentValues = enforceMaxValues(currentValue);
|
|
167
|
-
const setValues = useCallback((newValues, event) => {
|
|
168
|
-
const validNewValues = enforceMaxValues(newValues);
|
|
169
|
-
setValue(validNewValues, event);
|
|
170
|
-
}, [setValue, enforceMaxValues]);
|
|
171
|
-
const resetValues = resetValue;
|
|
172
|
-
const unsetValues = useCallback(event => setValues([], event), [setValues]);
|
|
173
|
-
const toggleOneValue = useCallback((newValue, event) => {
|
|
174
|
-
if (readOnly) return; // This will only work with primitive values (e.g. strings, numbers), swap for .some() and
|
|
175
|
-
// a deepEqual() function if there's any use case for toggling stored objects or arrays.
|
|
176
|
-
|
|
177
|
-
const newValues = currentValues.includes(newValue) ? currentValues.filter(oldValue => oldValue !== newValue) : [...currentValues, newValue];
|
|
178
|
-
setValues(newValues, event);
|
|
179
|
-
}, [currentValues, readOnly, setValues]);
|
|
180
|
-
return {
|
|
181
|
-
currentValues,
|
|
182
|
-
resetValues,
|
|
183
|
-
setValues,
|
|
184
|
-
toggleOneValue,
|
|
185
|
-
unsetValues
|
|
186
|
-
};
|
|
187
|
-
};
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import Platform from "react-native-web/dist/exports/Platform";
|
|
2
|
-
import StyleSheet from "react-native-web/dist/exports/StyleSheet";
|
|
3
|
-
import pressProps from './props/pressProps';
|
|
4
|
-
/**
|
|
5
|
-
* @typedef {import('react').ReactNode} ReactNode
|
|
6
|
-
*/
|
|
7
|
-
// These roles should result in cursor: pointer but don't in current RNW releases
|
|
8
|
-
|
|
9
|
-
const shouldUseCursor = ['checkbox', 'radio', 'switch'];
|
|
10
|
-
/**
|
|
11
|
-
* React Native Web has some built-in logic for applying cursor styles based on accessibility roles;
|
|
12
|
-
* however, it misses certain cases. This fills in known cases where widely used versions of RNW
|
|
13
|
-
* fail to apply an expected cursor style.
|
|
14
|
-
*
|
|
15
|
-
* @param {object} props
|
|
16
|
-
* @param {boolean} [props.inactive]
|
|
17
|
-
* @param {boolean} [props.disabled]
|
|
18
|
-
* @param {string} [props.accessibilityRole]
|
|
19
|
-
* @returns
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
export const getCursorStyle = _ref => {
|
|
23
|
-
let {
|
|
24
|
-
inactive,
|
|
25
|
-
disabled,
|
|
26
|
-
accessibilityRole
|
|
27
|
-
} = _ref;
|
|
28
|
-
if (Platform.OS !== 'web') return undefined;
|
|
29
|
-
if (inactive || disabled) return staticStyles.notAllowed;
|
|
30
|
-
if (shouldUseCursor.includes(accessibilityRole)) return staticStyles.pointer;
|
|
31
|
-
return undefined; // allows React Native Web's built-in logic to apply
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* @typedef {{ pressed: boolean, focused: boolean, hovered?: boolean }} PressableState
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Maps the state object given by the React Native `Pressable` component to the set of
|
|
39
|
-
* equivalent appearance names used in UDS.
|
|
40
|
-
*
|
|
41
|
-
* @param {PressableState} pressableState - state object passed by React Native's `<Pressable>` into
|
|
42
|
-
* render functions passed to its `style` or `children` props.
|
|
43
|
-
* @param {object} [additionalState] - properties specific to the current component,
|
|
44
|
-
* such as `inactive`, `selected`, etc.
|
|
45
|
-
* @returns {object}
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
export const resolvePressableState = function () {
|
|
49
|
-
let {
|
|
50
|
-
pressed = false,
|
|
51
|
-
focused = false,
|
|
52
|
-
hovered = false
|
|
53
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
54
|
-
let additionalState = arguments.length > 1 ? arguments[1] : undefined;
|
|
55
|
-
return { ...additionalState,
|
|
56
|
-
focus: focused,
|
|
57
|
-
hover: hovered,
|
|
58
|
-
pressed
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
/**
|
|
62
|
-
* Takes a UDS `tokens` prop and, if it is a function, resolves it based on a state
|
|
63
|
-
* object passed from the React Native `Pressable` component and optional extra properties.
|
|
64
|
-
*
|
|
65
|
-
* @param {object|function} tokens - UDS system tokens prop
|
|
66
|
-
* @param {PressableState} pressableState - state object passed by React Native's `<Pressable>`
|
|
67
|
-
* @param {object} [additionalState] - properties specific to the current component
|
|
68
|
-
* @returns {object} - resolved tokens object
|
|
69
|
-
*/
|
|
70
|
-
|
|
71
|
-
export const resolvePressableTokens = (tokens, pressableState, additionalState) => {
|
|
72
|
-
if (typeof tokens !== 'function') return tokens;
|
|
73
|
-
const udsPressableState = resolvePressableState(pressableState, additionalState);
|
|
74
|
-
return tokens(udsPressableState);
|
|
75
|
-
};
|
|
76
|
-
const staticStyles = StyleSheet.create(Platform.select({
|
|
77
|
-
web: {
|
|
78
|
-
notAllowed: {
|
|
79
|
-
cursor: 'not-allowed'
|
|
80
|
-
},
|
|
81
|
-
pointer: {
|
|
82
|
-
cursor: 'pointer'
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
default: {}
|
|
86
|
-
}));
|
|
87
|
-
/**
|
|
88
|
-
* From an object of props, extracts any platform-appropriate press handler functions and wraps
|
|
89
|
-
* them in a function that passes in some provided args. Allows components containing a Pressable
|
|
90
|
-
* to pass in press handlers that are then called with state or values that is otherwise internal.
|
|
91
|
-
*/
|
|
92
|
-
|
|
93
|
-
export const getPressHandlersWithArgs = function () {
|
|
94
|
-
let pressableProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
95
|
-
let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
96
|
-
// Allow handlers to be passed down for blur, hover, focus, pressIn, etc
|
|
97
|
-
const pressHandlers = Object.fromEntries(Object.entries(pressProps.selectHandlers(pressableProps)).map(_ref2 => {
|
|
98
|
-
let [key, handler] = _ref2;
|
|
99
|
-
return {
|
|
100
|
-
[key]: function () {
|
|
101
|
-
for (var _len = arguments.length, defaultArgs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
102
|
-
defaultArgs[_key] = arguments[_key];
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Pass each handler data on this button and current selection
|
|
106
|
-
handler(...args, ...defaultArgs);
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
}));
|
|
110
|
-
return pressHandlers;
|
|
111
|
-
};
|
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
|
-
import Platform from "react-native-web/dist/exports/Platform";
|
|
3
|
-
import getPropSelector from './getPropSelector'; // React Native exports a11y prop definitions as TypeScript Interfaces, but no longer exports PropTypes
|
|
4
|
-
// so we have to define them ourselves.
|
|
5
|
-
|
|
6
|
-
const nativeA11yPropTypes = {
|
|
7
|
-
accessible: PropTypes.bool,
|
|
8
|
-
focusable: PropTypes.bool,
|
|
9
|
-
accessibilityElementsHidden: PropTypes.bool,
|
|
10
|
-
accessibilityHint: PropTypes.string,
|
|
11
|
-
// react-native-web ignores `accessibilityHint`
|
|
12
|
-
accessibilityIgnoresInvertColors: PropTypes.bool,
|
|
13
|
-
accessibilityLabel: PropTypes.string,
|
|
14
|
-
accessibilityRole: PropTypes.string,
|
|
15
|
-
accessibilityActions: PropTypes.arrayOf(PropTypes.shape({
|
|
16
|
-
name: PropTypes.string.isRequired,
|
|
17
|
-
label: PropTypes.string
|
|
18
|
-
})),
|
|
19
|
-
accessibilityLiveRegion: PropTypes.oneOf(['none', 'polite', 'assertive']),
|
|
20
|
-
accessibilityState: PropTypes.shape({
|
|
21
|
-
disabled: PropTypes.bool,
|
|
22
|
-
selected: PropTypes.bool,
|
|
23
|
-
checked: PropTypes.oneOf([true, false, 'mixed']),
|
|
24
|
-
busy: PropTypes.bool,
|
|
25
|
-
expanded: PropTypes.bool
|
|
26
|
-
}),
|
|
27
|
-
accessibilityValue: PropTypes.shape({
|
|
28
|
-
min: PropTypes.number,
|
|
29
|
-
max: PropTypes.number,
|
|
30
|
-
now: PropTypes.number,
|
|
31
|
-
text: PropTypes.string
|
|
32
|
-
}),
|
|
33
|
-
accessibilityViewIsModal: PropTypes.bool,
|
|
34
|
-
importantForAccessibility: PropTypes.oneOf(['auto', 'yes', 'no', 'no-hide-descendants']),
|
|
35
|
-
onAccessibilityAction: PropTypes.func,
|
|
36
|
-
onAccessibilityEscape: PropTypes.func,
|
|
37
|
-
onAccessibilityTap: PropTypes.func
|
|
38
|
-
};
|
|
39
|
-
const a11yPropTypes = { ...nativeA11yPropTypes,
|
|
40
|
-
// React Native Web adds many a11y props that alias aria-* attributes
|
|
41
|
-
// Types based on https://necolas.github.io/react-native-web/docs/accessibility/
|
|
42
|
-
accessibilityActiveDescendant: PropTypes.string,
|
|
43
|
-
accessibilityAtomic: PropTypes.bool,
|
|
44
|
-
accessibilityAutoComplete: PropTypes.string,
|
|
45
|
-
accessibilityBusy: PropTypes.bool,
|
|
46
|
-
accessibilityChecked: PropTypes.oneOf([true, false, 'mixed']),
|
|
47
|
-
accessibilityColumnCount: PropTypes.number,
|
|
48
|
-
accessibilityColumnIndex: PropTypes.number,
|
|
49
|
-
accessibilityColumnSpan: PropTypes.number,
|
|
50
|
-
accessibilityControls: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
51
|
-
accessibilityCurrent: PropTypes.oneOf([true, false, 'page', 'step', 'location', 'date', 'time']),
|
|
52
|
-
accessibilityDescribedBy: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
53
|
-
accessibilityDetails: PropTypes.string,
|
|
54
|
-
accessibilityDisabled: PropTypes.bool,
|
|
55
|
-
accessibilityErrorMessage: PropTypes.string,
|
|
56
|
-
accessibilityExpanded: PropTypes.bool,
|
|
57
|
-
accessibilityFlowTo: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
58
|
-
accessibilityHasPopup: PropTypes.string,
|
|
59
|
-
accessibilityHidden: PropTypes.bool,
|
|
60
|
-
accessibilityInvalid: PropTypes.bool,
|
|
61
|
-
accessibilityKeyShortcuts: PropTypes.string,
|
|
62
|
-
accessibilityLabelledBy: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
63
|
-
accessibilityLevel: PropTypes.number,
|
|
64
|
-
accessibilityModal: PropTypes.bool,
|
|
65
|
-
accessibilityMultiline: PropTypes.bool,
|
|
66
|
-
accessibilityMultiSelectable: PropTypes.bool,
|
|
67
|
-
accessibilityOrientation: PropTypes.oneOf(['horizontal', 'vertical']),
|
|
68
|
-
accessibilityOwns: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
69
|
-
accessibilityPlaceholder: PropTypes.string,
|
|
70
|
-
accessibilityPosInSet: PropTypes.number,
|
|
71
|
-
accessibilityPressed: PropTypes.bool,
|
|
72
|
-
accessibilityReadOnly: PropTypes.bool,
|
|
73
|
-
accessibilityRequired: PropTypes.bool,
|
|
74
|
-
accessibilityRoleDescription: PropTypes.string,
|
|
75
|
-
accessibilityRowCount: PropTypes.number,
|
|
76
|
-
accessibilityRowIndex: PropTypes.number,
|
|
77
|
-
accessibilityRowSpan: PropTypes.number,
|
|
78
|
-
accessibilitySelected: PropTypes.bool,
|
|
79
|
-
accessibilitySetSize: PropTypes.number,
|
|
80
|
-
accessibilitySort: PropTypes.oneOf(['ascending', 'descending', 'none', 'other']),
|
|
81
|
-
accessibilityValueMax: PropTypes.number,
|
|
82
|
-
accessibilityValueMin: PropTypes.number,
|
|
83
|
-
accessibilityValueNow: PropTypes.number,
|
|
84
|
-
accessibilityValueText: PropTypes.string
|
|
85
|
-
};
|
|
86
|
-
const a11yPropTypesByPlatform = Platform.select({
|
|
87
|
-
// React Native Web adds many a11y props that alias aria-* attributes
|
|
88
|
-
// Types based on https://necolas.github.io/react-native-web/docs/accessibility/
|
|
89
|
-
web: a11yPropTypes,
|
|
90
|
-
// Ignore web-only props in native builds
|
|
91
|
-
default: nativeA11yPropTypes
|
|
92
|
-
}); // These RNW-only props only exist in RNW >=0.18. Catch them and map them according to platform
|
|
93
|
-
// so all props work on RN, RNW >=0.18 and RNW <=0.18, regardless of which they were written for:
|
|
94
|
-
// - On native, bundle them into objects, like `accessibilityValue: { max: 100 }`
|
|
95
|
-
// - On web, split them into both of:
|
|
96
|
-
// - The appropriate aria-* attr, like `aria-valuenow`, which will work regardless of RNW version
|
|
97
|
-
// - The corresponding RNW >=0.18 prop, like `accessibilityValueNow`, which in some cases does more
|
|
98
|
-
// than just add the aria-* (e.g. `accessibilityDisabled` adds `disabled` if element supports it,
|
|
99
|
-
// and future releases might add more features here).
|
|
100
|
-
|
|
101
|
-
const rwnPropMappings = {
|
|
102
|
-
// Former accessibilityValue props.
|
|
103
|
-
accessibilityValueMax: value => Platform.select({
|
|
104
|
-
web: {
|
|
105
|
-
'aria-valuemax': value,
|
|
106
|
-
accessibilityValueMax: value
|
|
107
|
-
},
|
|
108
|
-
default: {
|
|
109
|
-
accessibilityValue: {
|
|
110
|
-
max: value
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}),
|
|
114
|
-
accessibilityValueMin: value => Platform.select({
|
|
115
|
-
web: {
|
|
116
|
-
'aria-valuemin': value,
|
|
117
|
-
accessibilityValueMin: value
|
|
118
|
-
},
|
|
119
|
-
default: {
|
|
120
|
-
accessibilityValue: {
|
|
121
|
-
min: value
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}),
|
|
125
|
-
accessibilityValueNow: value => Platform.select({
|
|
126
|
-
web: {
|
|
127
|
-
'aria-valuenow': value,
|
|
128
|
-
accessibilityValueNow: value
|
|
129
|
-
},
|
|
130
|
-
default: {
|
|
131
|
-
accessibilityValue: {
|
|
132
|
-
now: value
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}),
|
|
136
|
-
accessibilityValueText: value => Platform.select({
|
|
137
|
-
web: {
|
|
138
|
-
'aria-valuetext': value,
|
|
139
|
-
accessibilityValueText: value
|
|
140
|
-
},
|
|
141
|
-
default: {
|
|
142
|
-
accessibilityValue: {
|
|
143
|
-
text: value
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}),
|
|
147
|
-
// Former accessibilityState props
|
|
148
|
-
accessibilityBusy: value => Platform.select({
|
|
149
|
-
web: {
|
|
150
|
-
'aria-busy': value,
|
|
151
|
-
accessibilityBusy: value
|
|
152
|
-
},
|
|
153
|
-
default: {
|
|
154
|
-
accessibilityState: {
|
|
155
|
-
busy: value
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}),
|
|
159
|
-
accessibilityChecked: value => Platform.select({
|
|
160
|
-
web: {
|
|
161
|
-
'aria-checked': value,
|
|
162
|
-
accessibilityChecked: value
|
|
163
|
-
},
|
|
164
|
-
default: {
|
|
165
|
-
accessibilityState: {
|
|
166
|
-
checked: value
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}),
|
|
170
|
-
accessibilityDisabled: value => Platform.select({
|
|
171
|
-
web: {
|
|
172
|
-
'aria-disabled': value,
|
|
173
|
-
// RNW >= 0.18 maps `accessibilityDisabled` to `disabled` attr if element supports it
|
|
174
|
-
accessibilityDisabled: value,
|
|
175
|
-
// As of RNW 0.18.9, Pressable doesn't support `accessibilityDisabled`, only `disabled`,
|
|
176
|
-
// but everything else supports `accessibilityDisabled` but not `disabled`.
|
|
177
|
-
disabled: value
|
|
178
|
-
},
|
|
179
|
-
default: {
|
|
180
|
-
accessibilityState: {
|
|
181
|
-
disabled: value
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}),
|
|
185
|
-
accessibilityExpanded: value => Platform.select({
|
|
186
|
-
web: {
|
|
187
|
-
'aria-expanded': value,
|
|
188
|
-
accessibilityExpanded: value
|
|
189
|
-
},
|
|
190
|
-
default: {
|
|
191
|
-
accessibilityState: {
|
|
192
|
-
expanded: value
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}),
|
|
196
|
-
accessibilitySelected: value => Platform.select({
|
|
197
|
-
web: {
|
|
198
|
-
'aria-selected': value,
|
|
199
|
-
accessibilitySelected: value
|
|
200
|
-
},
|
|
201
|
-
default: {
|
|
202
|
-
accessibilityState: {
|
|
203
|
-
selected: value
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
})
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
if (Platform.OS === 'web') {
|
|
210
|
-
const mapIfDefined = (value, fn) => value === undefined ? undefined : fn(value); // On Web only, these React Native object props need manual mapping in RNW >=0.18
|
|
211
|
-
// which dropped support for the React Native shape of these props.
|
|
212
|
-
// Re-use our RNW 0.18 prop mappings to support both RNW <0.18 (aria-*) and
|
|
213
|
-
// new features added in >=0.18 (e.g. for accessibilityDisabled).
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
rwnPropMappings.accessibilityValue = function () {
|
|
217
|
-
let {
|
|
218
|
-
max,
|
|
219
|
-
min,
|
|
220
|
-
now,
|
|
221
|
-
text
|
|
222
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
223
|
-
return { ...mapIfDefined(max, rwnPropMappings.accessibilityValueMax),
|
|
224
|
-
...mapIfDefined(min, rwnPropMappings.accessibilityValueMin),
|
|
225
|
-
...mapIfDefined(now, rwnPropMappings.accessibilityValueNow),
|
|
226
|
-
...mapIfDefined(text, rwnPropMappings.accessibilityValueText)
|
|
227
|
-
};
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
rwnPropMappings.accessibilityState = function () {
|
|
231
|
-
let {
|
|
232
|
-
busy,
|
|
233
|
-
checked,
|
|
234
|
-
disabled,
|
|
235
|
-
expanded,
|
|
236
|
-
selected
|
|
237
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
238
|
-
return { ...mapIfDefined(busy, rwnPropMappings.accessibilityBusy),
|
|
239
|
-
...mapIfDefined(checked, rwnPropMappings.accessibilityChecked),
|
|
240
|
-
...mapIfDefined(disabled, rwnPropMappings.accessibilityDisabled),
|
|
241
|
-
...mapIfDefined(expanded, rwnPropMappings.accessibilityExpanded),
|
|
242
|
-
...mapIfDefined(selected, rwnPropMappings.accessibilitySelected)
|
|
243
|
-
};
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
export default {
|
|
248
|
-
/**
|
|
249
|
-
* Proptypes for recognised React Native accessiblity (a11y) props.
|
|
250
|
-
* Spread this in the propTypes of components that accept React Native a11y props.
|
|
251
|
-
*/
|
|
252
|
-
types: a11yPropTypes,
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Filters a props object, returning only recognised React Native accessiblity (a11y) props.
|
|
256
|
-
*
|
|
257
|
-
* Where components accept React Native a11y props, pass { ...rest } from its props to this,
|
|
258
|
-
* then spread the returned object into the component's props (usually its outer container).
|
|
259
|
-
*/
|
|
260
|
-
select: getPropSelector( // Allow all React Native accessibility props
|
|
261
|
-
a11yPropTypesByPlatform, // Allow any `aria-*` attribute on web; ignore them on native
|
|
262
|
-
Platform.OS === 'web' && /^aria-/, // For the props added and deprecated in React Native Web 0.18, convert them to
|
|
263
|
-
// a form that is platform-appropriate and RNW-version safe
|
|
264
|
-
(key, value) => {
|
|
265
|
-
const rnwPropMapper = rwnPropMappings[key];
|
|
266
|
-
return rnwPropMapper ? rnwPropMapper(value) : undefined;
|
|
267
|
-
}),
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Use this to disable focus for elements which are visually hidden but still rendered.
|
|
271
|
-
*/
|
|
272
|
-
nonFocusableProps: {
|
|
273
|
-
focusable: false,
|
|
274
|
-
// for android, and for keyboard nav in web
|
|
275
|
-
...Platform.select({
|
|
276
|
-
web: {
|
|
277
|
-
accessibilityHidden: true // web screenreaders
|
|
278
|
-
|
|
279
|
-
},
|
|
280
|
-
android: {
|
|
281
|
-
importantForAccessibility: 'no-hide-descendants'
|
|
282
|
-
},
|
|
283
|
-
ios: {
|
|
284
|
-
accessibilityElementsHidden: true
|
|
285
|
-
}
|
|
286
|
-
})
|
|
287
|
-
},
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* Generates an object of platform-appropriate a11y props describing an item that has an
|
|
291
|
-
* ordered position in a set. Examples of usage by accessibility tools includes screenreaders
|
|
292
|
-
* saying "Item X of Y" when this item is select.
|
|
293
|
-
*
|
|
294
|
-
* @param {number} itemsCount - the number of items in the set
|
|
295
|
-
* @param {number} index - the current item's index in the set
|
|
296
|
-
* @returns {object} - platform-applicable a11y props describing this position (if available)
|
|
297
|
-
*/
|
|
298
|
-
getPositionInSet: (itemsCount, index) => Platform.select({
|
|
299
|
-
web: {
|
|
300
|
-
// accessibilityPosInSet etc exists in React Native Web main branch
|
|
301
|
-
// but not in a release compatible with Expo etc; just use `aria-*`
|
|
302
|
-
'aria-setsize': itemsCount,
|
|
303
|
-
'aria-posinset': index + 1
|
|
304
|
-
},
|
|
305
|
-
// No equivalents exist on the native side
|
|
306
|
-
default: {}
|
|
307
|
-
})
|
|
308
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
|
-
const clickHandlerMapping = {
|
|
3
|
-
onClick: 'onPress',
|
|
4
|
-
onMouseDown: 'onPressIn',
|
|
5
|
-
onMouseUp: 'onPressOut'
|
|
6
|
-
};
|
|
7
|
-
export default {
|
|
8
|
-
/**
|
|
9
|
-
* Web-oriented HTML click handlers that may be mapped to React Native press handlers
|
|
10
|
-
*/
|
|
11
|
-
types: Object.fromEntries(Object.keys(clickHandlerMapping).map(mouseName => [mouseName, PropTypes.func])),
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Takes a set of props and converts HTML mouse click oriented event handlers to closest
|
|
15
|
-
* equivalent React Native press event handler.
|
|
16
|
-
*
|
|
17
|
-
* Use this when a component that expects press-oriented props may need to support third-party
|
|
18
|
-
* web-oriented tooling that injects web-oriented event handlers directly. For example, for
|
|
19
|
-
* to support use with NextJS's 'next/link' component, which injects `onClick` prop into its child.
|
|
20
|
-
*/
|
|
21
|
-
toPressProps: props => Object.fromEntries(Object.entries(props).map(_ref => {
|
|
22
|
-
let [originalName, value] = _ref;
|
|
23
|
-
const translatedName = clickHandlerMapping[originalName];
|
|
24
|
-
return translatedName ? [translatedName, value] : [originalName, value];
|
|
25
|
-
}))
|
|
26
|
-
};
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns a prop type validator which checks whether a prop is either a component or an array of
|
|
3
|
-
* components of a given type, based on their `name` or `displayName` properties.
|
|
4
|
-
* Use an array of strings for `passedName` to accept more than one component type.
|
|
5
|
-
* For an array the validation fails on the first occurrence of an invalid element.
|
|
6
|
-
*
|
|
7
|
-
* @param {string|string[]} passedName
|
|
8
|
-
* @return {function}
|
|
9
|
-
*/
|
|
10
|
-
export default function componentPropType(passedName) {
|
|
11
|
-
const passedNames = typeof passedName === 'string' ? [passedName] : passedName;
|
|
12
|
-
|
|
13
|
-
const checkProp = (props, propName, componentName) => {
|
|
14
|
-
var _props$propName$type, _props$propName$type2;
|
|
15
|
-
|
|
16
|
-
if (props[propName] === undefined || props[propName] === null) {
|
|
17
|
-
return undefined;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (Array.isArray(props[propName])) {
|
|
21
|
-
// Iterates through every child and try to find the first element that does not match the passed name
|
|
22
|
-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
|
|
23
|
-
return props[propName].map((_, index) => checkProp(props[propName], index, componentName)).find(Boolean);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const nameInProp = ((_props$propName$type = props[propName].type) === null || _props$propName$type === void 0 ? void 0 : _props$propName$type.displayName) || ((_props$propName$type2 = props[propName].type) === null || _props$propName$type2 === void 0 ? void 0 : _props$propName$type2.name);
|
|
27
|
-
|
|
28
|
-
if (!nameInProp || !passedNames.includes(nameInProp)) {
|
|
29
|
-
const propDescription = nameInProp ? "Component ".concat(nameInProp) : typeof props[propName];
|
|
30
|
-
return new Error("".concat(componentName, ": ").concat(propDescription, " was passed to `").concat(propName, "` prop; should be ").concat(passedNames.join(' or ')));
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return undefined;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const checkRequired = (props, propName, componentName) => {
|
|
37
|
-
if (props[propName] === undefined) {
|
|
38
|
-
return new Error("The prop `".concat(propName, "` is marked as required in `").concat(componentName, "`, but its value is ").concat(props[propName], "."));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return undefined;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const createValidate = isRequired => {
|
|
45
|
-
if (isRequired) {
|
|
46
|
-
return (props, propName, componentName) => {
|
|
47
|
-
const checkForError = checkProp(props, propName, componentName);
|
|
48
|
-
|
|
49
|
-
if (checkForError) {
|
|
50
|
-
return checkForError;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return checkRequired(props, propName, componentName);
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return checkProp;
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const validate = createValidate();
|
|
61
|
-
validate.isRequired = createValidate(true);
|
|
62
|
-
return validate;
|
|
63
|
-
}
|