@telus-uds/components-base 1.84.0 → 1.85.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/CHANGELOG.md +26 -2
- package/lib/A11yInfoProvider/index.js +8 -10
- package/lib/A11yText/index.js +2 -4
- package/lib/ActivityIndicator/Spinner.js +3 -4
- package/lib/ActivityIndicator/Spinner.native.js +2 -4
- package/lib/Autocomplete/Autocomplete.js +13 -17
- package/lib/Autocomplete/Loading.js +4 -2
- package/lib/Autocomplete/Suggestions.js +2 -4
- package/lib/Badge/Badge.js +2 -4
- package/lib/BaseProvider/HydrationContext.js +5 -7
- package/lib/Box/Box.js +5 -7
- package/lib/Button/Button.js +3 -3
- package/lib/Button/ButtonBase.js +2 -7
- package/lib/Button/ButtonDropdown.js +3 -3
- package/lib/Button/ButtonGroup.js +2 -4
- package/lib/Button/ButtonLink.js +3 -3
- package/lib/Card/Card.js +159 -16
- package/lib/Card/CardBase.js +2 -4
- package/lib/Card/PressableCardBase.js +3 -5
- package/lib/CardGroup/CardGroup.js +220 -0
- package/lib/CardGroup/dictionary.js +15 -0
- package/lib/CardGroup/index.js +10 -0
- package/lib/Carousel/Carousel.js +67 -57
- package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -4
- package/lib/Carousel/CarouselItem/CarouselItem.js +3 -2
- package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
- package/lib/Carousel/CarouselTabs/CarouselTabs.js +2 -4
- package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -8
- package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -5
- package/lib/Carousel/CarouselThumbnail.js +4 -2
- package/lib/Carousel/CarouselThumbnailNavigation.js +2 -4
- package/lib/Checkbox/Checkbox.js +2 -4
- package/lib/Checkbox/CheckboxButton.js +3 -5
- package/lib/Checkbox/CheckboxGroup.js +2 -4
- package/lib/Checkbox/CheckboxInput.js +4 -14
- package/lib/CheckboxCard/CheckboxCard.js +3 -3
- package/lib/CheckboxCardGroup/CheckboxCardGroup.js +3 -3
- package/lib/ColourToggle/ColourBubble.js +5 -6
- package/lib/ColourToggle/ColourToggle.js +3 -5
- package/lib/Divider/Divider.js +2 -4
- package/lib/ExpandCollapse/Accordion.js +2 -4
- package/lib/ExpandCollapse/Control.js +2 -4
- package/lib/ExpandCollapse/ExpandCollapse.js +2 -4
- package/lib/ExpandCollapse/Panel.js +3 -5
- package/lib/Feedback/Feedback.js +2 -4
- package/lib/Fieldset/Fieldset.js +2 -4
- package/lib/Fieldset/FieldsetContainer.js +2 -4
- package/lib/Fieldset/FieldsetContainer.native.js +2 -4
- package/lib/Fieldset/Legend.js +2 -4
- package/lib/Fieldset/Legend.native.js +2 -4
- package/lib/FlexGrid/Col/Col.js +3 -5
- package/lib/FlexGrid/FlexGrid.js +2 -4
- package/lib/FlexGrid/Row/Row.js +2 -4
- package/lib/Footnote/Footnote.js +9 -9
- package/lib/Footnote/FootnoteLink.js +9 -3
- package/lib/HorizontalScroll/HorizontalScroll.js +8 -10
- package/lib/HorizontalScroll/HorizontalScrollButton.js +2 -4
- package/lib/HorizontalScroll/ScrollViewEnd.js +5 -10
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +2 -4
- package/lib/Icon/Icon.js +2 -4
- package/lib/Icon/IconText.js +3 -3
- package/lib/IconButton/IconButton.js +2 -4
- package/lib/InputLabel/InputLabel.js +2 -4
- package/lib/InputLabel/LabelContent.js +2 -4
- package/lib/InputLabel/LabelContent.native.js +2 -4
- package/lib/InputSupports/InputSupports.js +4 -5
- package/lib/Link/ChevronLink.js +2 -4
- package/lib/Link/InlinePressable.js +8 -7
- package/lib/Link/InlinePressable.native.js +10 -8
- package/lib/Link/Link.js +2 -4
- package/lib/Link/LinkBase.js +2 -4
- package/lib/Link/TextButton.js +2 -4
- package/lib/List/List.js +13 -11
- package/lib/List/ListItem.js +2 -4
- package/lib/List/ListItemBase.js +6 -10
- package/lib/List/ListItemContent.js +4 -2
- package/lib/List/ListItemMark.js +4 -2
- package/lib/List/PressableListItemBase.js +2 -4
- package/lib/Listbox/GroupControl.js +4 -2
- package/lib/Listbox/Listbox.js +6 -6
- package/lib/Listbox/ListboxContext.js +3 -4
- package/lib/Listbox/ListboxGroup.js +2 -4
- package/lib/Listbox/ListboxItem.js +2 -6
- package/lib/Listbox/ListboxOverlay.js +2 -6
- package/lib/Listbox/PressableItem.js +2 -6
- package/lib/Modal/Modal.js +5 -7
- package/lib/Modal/ModalContent.js +7 -7
- package/lib/Modal/WebModal.js +16 -9
- package/lib/MultiSelectFilter/ModalOverlay.js +2 -4
- package/lib/MultiSelectFilter/MultiSelectFilter.js +10 -10
- package/lib/Notification/Notification.js +5 -7
- package/lib/OrderedList/Item.js +4 -10
- package/lib/OrderedList/ItemBase.js +2 -4
- package/lib/OrderedList/OrderedList.js +5 -13
- package/lib/OrderedList/OrderedListBase.js +2 -4
- package/lib/Pagination/PageButton.js +1 -1
- package/lib/Pagination/Pagination.js +1 -1
- package/lib/Pagination/SideButton.js +2 -4
- package/lib/PriceLockup/PriceLockup.js +5 -5
- package/lib/ProductCard/ProductCard.js +3 -2
- package/lib/ProductCardGroup/ProductCardGroup.js +5 -6
- package/lib/Progress/Progress.js +2 -4
- package/lib/Progress/ProgressBar.js +2 -4
- package/lib/Progress/ProgressBarBackground.js +2 -4
- package/lib/QuickLinks/QuickLinks.js +2 -4
- package/lib/QuickLinks/QuickLinksCard.js +4 -2
- package/lib/QuickLinks/QuickLinksItem.js +2 -4
- package/lib/QuickLinksFeature/QuickLinksFeature.js +9 -7
- package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +10 -12
- package/lib/Radio/Radio.js +3 -3
- package/lib/Radio/RadioButton.js +61 -15
- package/lib/Radio/RadioGroup.js +2 -4
- package/lib/Radio/RadioInput.js +6 -18
- package/lib/RadioCard/RadioCard.js +3 -3
- package/lib/RadioCard/RadioCardGroup.js +3 -3
- package/lib/Responsive/Responsive.js +3 -2
- package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
- package/lib/Search/Search.js +2 -4
- package/lib/Select/Group.js +4 -2
- package/lib/Select/Item.js +4 -2
- package/lib/Select/Picker.js +2 -4
- package/lib/Select/Picker.native.js +3 -5
- package/lib/Select/Select.js +4 -6
- package/lib/SideNav/Item.js +2 -4
- package/lib/SideNav/ItemContent.js +4 -2
- package/lib/SideNav/ItemsGroup.js +2 -4
- package/lib/SideNav/SideNav.js +2 -2
- package/lib/Skeleton/Skeleton.js +2 -4
- package/lib/SkipLink/SkipLink.js +2 -4
- package/lib/Spacer/Spacer.js +2 -4
- package/lib/StackView/StackView.js +2 -4
- package/lib/StackView/StackWrap.js +3 -5
- package/lib/StackView/StackWrapBox.js +2 -4
- package/lib/StackView/StackWrapGap.js +2 -4
- package/lib/StackView/getStackedContent.js +3 -3
- package/lib/StepTracker/Step.js +4 -2
- package/lib/StepTracker/StepTracker.js +2 -4
- package/lib/Tabs/Tabs.js +4 -4
- package/lib/Tabs/TabsItem.js +3 -5
- package/lib/Tags/Tags.js +2 -4
- package/lib/TextInput/TextArea.js +3 -5
- package/lib/TextInput/TextInput.js +2 -4
- package/lib/TextInput/TextInputBase.js +7 -9
- package/lib/ThemeProvider/ThemeProvider.js +5 -7
- package/lib/Timeline/Timeline.js +2 -4
- package/lib/ToggleSwitch/ToggleSwitch.js +2 -4
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +2 -4
- package/lib/Tooltip/Tooltip.js +6 -8
- package/lib/Tooltip/Tooltip.native.js +12 -14
- package/lib/TooltipButton/TooltipButton.js +4 -2
- package/lib/Typography/Typography.js +2 -4
- package/lib/Validator/Validator.js +11 -13
- package/lib/ViewportProvider/ViewportProvider.js +2 -4
- package/lib/index.js +8 -0
- package/lib/utils/BaseView/BaseView.js +2 -4
- package/lib/utils/children.js +4 -6
- package/lib/utils/withLinkRouter.js +3 -5
- package/lib-module/A11yInfoProvider/index.js +8 -8
- package/lib-module/A11yText/index.js +2 -2
- package/lib-module/ActivityIndicator/Spinner.js +2 -2
- package/lib-module/ActivityIndicator/Spinner.native.js +2 -2
- package/lib-module/Autocomplete/Autocomplete.js +13 -14
- package/lib-module/Autocomplete/Loading.js +4 -2
- package/lib-module/Autocomplete/Suggestions.js +2 -2
- package/lib-module/Badge/Badge.js +2 -2
- package/lib-module/BaseProvider/HydrationContext.js +5 -5
- package/lib-module/Box/Box.js +5 -5
- package/lib-module/Button/Button.js +2 -2
- package/lib-module/Button/ButtonBase.js +2 -5
- package/lib-module/Button/ButtonDropdown.js +2 -2
- package/lib-module/Button/ButtonGroup.js +2 -2
- package/lib-module/Button/ButtonLink.js +2 -2
- package/lib-module/Card/Card.js +159 -14
- package/lib-module/Card/CardBase.js +2 -2
- package/lib-module/Card/PressableCardBase.js +4 -4
- package/lib-module/CardGroup/CardGroup.js +210 -0
- package/lib-module/CardGroup/dictionary.js +8 -0
- package/lib-module/CardGroup/index.js +2 -0
- package/lib-module/Carousel/Carousel.js +67 -55
- package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -2
- package/lib-module/Carousel/CarouselItem/CarouselItem.js +3 -2
- package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
- package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +2 -2
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -6
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -3
- package/lib-module/Carousel/CarouselThumbnail.js +4 -2
- package/lib-module/Carousel/CarouselThumbnailNavigation.js +2 -2
- package/lib-module/Checkbox/Checkbox.js +2 -2
- package/lib-module/Checkbox/CheckboxButton.js +3 -3
- package/lib-module/Checkbox/CheckboxGroup.js +2 -2
- package/lib-module/Checkbox/CheckboxInput.js +4 -12
- package/lib-module/CheckboxCard/CheckboxCard.js +2 -2
- package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +2 -2
- package/lib-module/ColourToggle/ColourBubble.js +5 -4
- package/lib-module/ColourToggle/ColourToggle.js +3 -3
- package/lib-module/Divider/Divider.js +2 -2
- package/lib-module/ExpandCollapse/Accordion.js +2 -2
- package/lib-module/ExpandCollapse/Control.js +2 -2
- package/lib-module/ExpandCollapse/ExpandCollapse.js +2 -2
- package/lib-module/ExpandCollapse/Panel.js +3 -3
- package/lib-module/Feedback/Feedback.js +2 -2
- package/lib-module/Fieldset/Fieldset.js +2 -2
- package/lib-module/Fieldset/FieldsetContainer.js +2 -2
- package/lib-module/Fieldset/FieldsetContainer.native.js +2 -2
- package/lib-module/Fieldset/Legend.js +2 -2
- package/lib-module/Fieldset/Legend.native.js +2 -2
- package/lib-module/FlexGrid/Col/Col.js +3 -3
- package/lib-module/FlexGrid/FlexGrid.js +2 -2
- package/lib-module/FlexGrid/Row/Row.js +2 -2
- package/lib-module/Footnote/Footnote.js +9 -7
- package/lib-module/Footnote/FootnoteLink.js +9 -4
- package/lib-module/HorizontalScroll/HorizontalScroll.js +8 -8
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +2 -2
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -8
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +2 -2
- package/lib-module/Icon/Icon.js +2 -2
- package/lib-module/Icon/IconText.js +2 -2
- package/lib-module/IconButton/IconButton.js +2 -2
- package/lib-module/InputLabel/InputLabel.js +2 -2
- package/lib-module/InputLabel/LabelContent.js +2 -2
- package/lib-module/InputLabel/LabelContent.native.js +2 -2
- package/lib-module/InputSupports/InputSupports.js +4 -3
- package/lib-module/Link/ChevronLink.js +2 -2
- package/lib-module/Link/InlinePressable.js +10 -4
- package/lib-module/Link/InlinePressable.native.js +12 -6
- package/lib-module/Link/Link.js +2 -2
- package/lib-module/Link/LinkBase.js +2 -2
- package/lib-module/Link/TextButton.js +2 -2
- package/lib-module/List/List.js +13 -9
- package/lib-module/List/ListItem.js +2 -2
- package/lib-module/List/ListItemBase.js +6 -8
- package/lib-module/List/ListItemContent.js +4 -2
- package/lib-module/List/ListItemMark.js +4 -2
- package/lib-module/List/PressableListItemBase.js +2 -2
- package/lib-module/Listbox/GroupControl.js +4 -2
- package/lib-module/Listbox/Listbox.js +7 -7
- package/lib-module/Listbox/ListboxContext.js +2 -2
- package/lib-module/Listbox/ListboxGroup.js +2 -2
- package/lib-module/Listbox/ListboxItem.js +2 -3
- package/lib-module/Listbox/ListboxOverlay.js +2 -3
- package/lib-module/Listbox/PressableItem.js +2 -3
- package/lib-module/Modal/Modal.js +5 -5
- package/lib-module/Modal/ModalContent.js +7 -5
- package/lib-module/Modal/WebModal.js +16 -9
- package/lib-module/MultiSelectFilter/ModalOverlay.js +2 -2
- package/lib-module/MultiSelectFilter/MultiSelectFilter.js +10 -8
- package/lib-module/Notification/Notification.js +5 -5
- package/lib-module/OrderedList/Item.js +4 -8
- package/lib-module/OrderedList/ItemBase.js +2 -2
- package/lib-module/OrderedList/OrderedList.js +6 -12
- package/lib-module/OrderedList/OrderedListBase.js +2 -2
- package/lib-module/Pagination/PageButton.js +2 -2
- package/lib-module/Pagination/Pagination.js +2 -2
- package/lib-module/Pagination/SideButton.js +2 -2
- package/lib-module/PriceLockup/PriceLockup.js +5 -5
- package/lib-module/ProductCard/ProductCard.js +3 -2
- package/lib-module/ProductCardGroup/ProductCardGroup.js +5 -4
- package/lib-module/Progress/Progress.js +2 -2
- package/lib-module/Progress/ProgressBar.js +2 -2
- package/lib-module/Progress/ProgressBarBackground.js +2 -2
- package/lib-module/QuickLinks/QuickLinks.js +2 -2
- package/lib-module/QuickLinks/QuickLinksCard.js +4 -2
- package/lib-module/QuickLinks/QuickLinksItem.js +2 -2
- package/lib-module/QuickLinksFeature/QuickLinksFeature.js +9 -5
- package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +10 -10
- package/lib-module/Radio/Radio.js +2 -2
- package/lib-module/Radio/RadioButton.js +62 -14
- package/lib-module/Radio/RadioGroup.js +2 -2
- package/lib-module/Radio/RadioInput.js +6 -16
- package/lib-module/RadioCard/RadioCard.js +2 -2
- package/lib-module/RadioCard/RadioCardGroup.js +2 -2
- package/lib-module/Responsive/Responsive.js +3 -2
- package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
- package/lib-module/Search/Search.js +2 -2
- package/lib-module/Select/Group.js +4 -2
- package/lib-module/Select/Item.js +4 -2
- package/lib-module/Select/Picker.js +2 -2
- package/lib-module/Select/Picker.native.js +3 -3
- package/lib-module/Select/Select.js +4 -4
- package/lib-module/SideNav/Item.js +2 -2
- package/lib-module/SideNav/ItemContent.js +4 -2
- package/lib-module/SideNav/ItemsGroup.js +2 -2
- package/lib-module/SideNav/SideNav.js +3 -3
- package/lib-module/Skeleton/Skeleton.js +2 -2
- package/lib-module/SkipLink/SkipLink.js +2 -2
- package/lib-module/Spacer/Spacer.js +2 -2
- package/lib-module/StackView/StackView.js +2 -2
- package/lib-module/StackView/StackWrap.js +3 -3
- package/lib-module/StackView/StackWrapBox.js +2 -2
- package/lib-module/StackView/StackWrapGap.js +2 -2
- package/lib-module/StackView/getStackedContent.js +4 -4
- package/lib-module/StepTracker/Step.js +4 -2
- package/lib-module/StepTracker/StepTracker.js +2 -2
- package/lib-module/Tabs/Tabs.js +3 -3
- package/lib-module/Tabs/TabsItem.js +3 -3
- package/lib-module/Tags/Tags.js +2 -2
- package/lib-module/TextInput/TextArea.js +3 -3
- package/lib-module/TextInput/TextInput.js +2 -2
- package/lib-module/TextInput/TextInputBase.js +7 -7
- package/lib-module/ThemeProvider/ThemeProvider.js +5 -5
- package/lib-module/Timeline/Timeline.js +2 -2
- package/lib-module/ToggleSwitch/ToggleSwitch.js +2 -2
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +2 -2
- package/lib-module/Tooltip/Tooltip.js +6 -6
- package/lib-module/Tooltip/Tooltip.native.js +12 -12
- package/lib-module/TooltipButton/TooltipButton.js +4 -2
- package/lib-module/Typography/Typography.js +2 -2
- package/lib-module/Validator/Validator.js +11 -11
- package/lib-module/ViewportProvider/ViewportProvider.js +2 -2
- package/lib-module/index.js +1 -0
- package/lib-module/utils/BaseView/BaseView.js +2 -2
- package/lib-module/utils/children.js +4 -4
- package/lib-module/utils/withLinkRouter.js +3 -3
- package/package.json +2 -2
- package/src/A11yInfoProvider/index.jsx +8 -8
- package/src/A11yText/index.jsx +2 -2
- package/src/ActivityIndicator/Spinner.jsx +2 -2
- package/src/ActivityIndicator/Spinner.native.jsx +2 -2
- package/src/Autocomplete/Autocomplete.jsx +15 -14
- package/src/Autocomplete/Loading.jsx +6 -3
- package/src/Autocomplete/Suggestions.jsx +2 -2
- package/src/Badge/Badge.jsx +2 -2
- package/src/BaseProvider/HydrationContext.jsx +5 -5
- package/src/Box/Box.jsx +5 -5
- package/src/Button/Button.jsx +11 -9
- package/src/Button/ButtonBase.jsx +2 -3
- package/src/Button/ButtonDropdown.jsx +2 -2
- package/src/Button/ButtonGroup.jsx +2 -2
- package/src/Button/ButtonLink.jsx +2 -2
- package/src/Card/Card.jsx +151 -11
- package/src/Card/CardBase.jsx +2 -2
- package/src/Card/PressableCardBase.jsx +18 -4
- 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 +69 -53
- package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
- package/src/Carousel/CarouselItem/CarouselItem.jsx +19 -17
- package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +5 -3
- package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
- package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +6 -6
- package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
- package/src/Carousel/CarouselThumbnail.jsx +6 -2
- package/src/Carousel/CarouselThumbnailNavigation.jsx +2 -2
- package/src/Checkbox/Checkbox.jsx +2 -2
- package/src/Checkbox/CheckboxButton.jsx +5 -7
- package/src/Checkbox/CheckboxGroup.jsx +2 -2
- package/src/Checkbox/CheckboxInput.jsx +15 -12
- package/src/CheckboxCard/CheckboxCard.jsx +2 -2
- package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +2 -2
- package/src/ColourToggle/ColourBubble.jsx +5 -4
- package/src/ColourToggle/ColourToggle.jsx +3 -3
- package/src/Divider/Divider.jsx +2 -2
- package/src/ExpandCollapse/Accordion.jsx +4 -2
- package/src/ExpandCollapse/Control.jsx +2 -2
- package/src/ExpandCollapse/ExpandCollapse.jsx +2 -2
- package/src/ExpandCollapse/Panel.jsx +3 -3
- package/src/Feedback/Feedback.jsx +2 -2
- package/src/Fieldset/Fieldset.jsx +2 -2
- package/src/Fieldset/FieldsetContainer.jsx +2 -2
- package/src/Fieldset/FieldsetContainer.native.jsx +2 -2
- package/src/Fieldset/Legend.jsx +2 -2
- package/src/Fieldset/Legend.native.jsx +2 -2
- package/src/FlexGrid/Col/Col.jsx +3 -3
- package/src/FlexGrid/FlexGrid.jsx +2 -2
- package/src/FlexGrid/Row/Row.jsx +2 -2
- package/src/Footnote/Footnote.jsx +111 -98
- package/src/Footnote/FootnoteLink.jsx +38 -31
- 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 +2 -2
- package/src/Icon/IconText.jsx +2 -2
- package/src/IconButton/IconButton.jsx +2 -2
- package/src/InputLabel/InputLabel.jsx +2 -2
- package/src/InputLabel/LabelContent.jsx +2 -2
- package/src/InputLabel/LabelContent.native.jsx +2 -2
- package/src/InputSupports/InputSupports.jsx +4 -3
- package/src/Link/ChevronLink.jsx +2 -2
- package/src/Link/InlinePressable.jsx +22 -15
- package/src/Link/InlinePressable.native.jsx +12 -6
- package/src/Link/Link.jsx +2 -2
- package/src/Link/LinkBase.jsx +2 -2
- package/src/Link/TextButton.jsx +2 -2
- package/src/List/List.jsx +15 -7
- package/src/List/ListItem.jsx +2 -2
- package/src/List/ListItemBase.jsx +6 -12
- package/src/List/ListItemContent.jsx +5 -2
- package/src/List/ListItemMark.jsx +5 -3
- package/src/List/PressableListItemBase.jsx +2 -2
- package/src/Listbox/GroupControl.jsx +5 -2
- package/src/Listbox/Listbox.jsx +7 -7
- package/src/Listbox/ListboxContext.js +2 -2
- package/src/Listbox/ListboxGroup.jsx +2 -2
- package/src/Listbox/ListboxItem.jsx +2 -3
- package/src/Listbox/ListboxOverlay.jsx +2 -3
- package/src/Listbox/PressableItem.jsx +2 -3
- package/src/Modal/Modal.jsx +5 -5
- package/src/Modal/ModalContent.jsx +132 -125
- package/src/Modal/WebModal.jsx +13 -8
- package/src/MultiSelectFilter/ModalOverlay.jsx +2 -2
- package/src/MultiSelectFilter/MultiSelectFilter.jsx +263 -252
- package/src/Notification/Notification.jsx +5 -5
- package/src/OrderedList/Item.jsx +4 -6
- package/src/OrderedList/ItemBase.jsx +2 -2
- package/src/OrderedList/OrderedList.jsx +4 -7
- package/src/OrderedList/OrderedListBase.jsx +2 -2
- package/src/Pagination/PageButton.jsx +2 -2
- package/src/Pagination/Pagination.jsx +2 -2
- package/src/Pagination/SideButton.jsx +2 -2
- package/src/PriceLockup/PriceLockup.jsx +93 -88
- package/src/ProductCard/ProductCard.jsx +90 -84
- package/src/ProductCardGroup/ProductCardGroup.jsx +5 -5
- package/src/Progress/Progress.jsx +2 -2
- package/src/Progress/ProgressBar.jsx +2 -2
- package/src/Progress/ProgressBarBackground.jsx +4 -2
- package/src/QuickLinks/QuickLinks.jsx +2 -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 +3 -3
- package/src/Radio/Radio.jsx +2 -2
- package/src/Radio/RadioButton.jsx +58 -6
- package/src/Radio/RadioGroup.jsx +2 -2
- package/src/Radio/RadioInput.jsx +15 -14
- package/src/RadioCard/RadioCard.jsx +2 -2
- package/src/RadioCard/RadioCardGroup.jsx +2 -2
- package/src/Responsive/Responsive.jsx +8 -3
- package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +23 -16
- package/src/Search/Search.jsx +2 -2
- package/src/Select/Group.jsx +9 -3
- package/src/Select/Item.jsx +7 -1
- package/src/Select/Picker.jsx +2 -2
- package/src/Select/Picker.native.jsx +3 -3
- package/src/Select/Select.jsx +4 -4
- package/src/SideNav/Item.jsx +2 -2
- package/src/SideNav/ItemContent.jsx +7 -3
- package/src/SideNav/ItemsGroup.jsx +2 -2
- package/src/SideNav/SideNav.jsx +3 -3
- package/src/Skeleton/Skeleton.jsx +2 -2
- package/src/SkipLink/SkipLink.jsx +2 -2
- package/src/Spacer/Spacer.jsx +2 -2
- package/src/StackView/StackView.jsx +2 -2
- 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 +4 -4
- package/src/StepTracker/Step.jsx +75 -67
- package/src/StepTracker/StepTracker.jsx +2 -2
- package/src/Tabs/Tabs.jsx +3 -3
- package/src/Tabs/TabsItem.jsx +3 -3
- package/src/Tags/Tags.jsx +2 -2
- package/src/TextInput/TextArea.jsx +3 -3
- package/src/TextInput/TextInput.jsx +2 -2
- package/src/TextInput/TextInputBase.jsx +7 -7
- package/src/ThemeProvider/ThemeProvider.jsx +5 -5
- package/src/Timeline/Timeline.jsx +2 -2
- package/src/ToggleSwitch/ToggleSwitch.jsx +2 -2
- package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
- package/src/Tooltip/Tooltip.jsx +6 -6
- package/src/Tooltip/Tooltip.native.jsx +12 -12
- package/src/TooltipButton/TooltipButton.jsx +5 -2
- package/src/Typography/Typography.jsx +2 -2
- package/src/Validator/Validator.jsx +11 -11
- package/src/ViewportProvider/ViewportProvider.jsx +2 -2
- package/src/index.js +1 -0
- package/src/utils/BaseView/BaseView.jsx +2 -2
- package/src/utils/children.jsx +4 -4
- package/src/utils/withLinkRouter.jsx +3 -3
- package/types/ExpandCollapse.d.ts +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { AccessibilityInfo, Platform } from 'react-native'
|
|
4
4
|
|
|
5
|
-
const ScreenReaderContext = createContext(false)
|
|
6
|
-
const ReducedMotionContext = createContext(false)
|
|
5
|
+
const ScreenReaderContext = React.createContext(false)
|
|
6
|
+
const ReducedMotionContext = React.createContext(false)
|
|
7
7
|
|
|
8
8
|
const A11yInfoProvider = ({ children }) => {
|
|
9
|
-
const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false)
|
|
10
|
-
const [screenReaderEnabled, setScreenReaderEnabled] = useState(false)
|
|
9
|
+
const [reduceMotionEnabled, setReduceMotionEnabled] = React.useState(false)
|
|
10
|
+
const [screenReaderEnabled, setScreenReaderEnabled] = React.useState(false)
|
|
11
11
|
|
|
12
|
-
useEffect(() => {
|
|
12
|
+
React.useEffect(() => {
|
|
13
13
|
if (process.env.NODE_ENV === 'test') {
|
|
14
14
|
// On Jest these effects do nothing but can cause `act` state change warnings
|
|
15
15
|
// and "...after the Jest environment has been torn down" errors, so skip them.
|
|
@@ -65,8 +65,8 @@ A11yInfoProvider.propTypes = {
|
|
|
65
65
|
export default A11yInfoProvider
|
|
66
66
|
|
|
67
67
|
export const useA11yInfo = () => {
|
|
68
|
-
const screenReaderEnabled = useContext(ScreenReaderContext)
|
|
69
|
-
const reduceMotionEnabled = useContext(ReducedMotionContext)
|
|
68
|
+
const screenReaderEnabled = React.useContext(ScreenReaderContext)
|
|
69
|
+
const reduceMotionEnabled = React.useContext(ReducedMotionContext)
|
|
70
70
|
|
|
71
71
|
return {
|
|
72
72
|
reduceMotionEnabled,
|
package/src/A11yText/index.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import { Platform, StyleSheet, View } from 'react-native'
|
|
3
3
|
import PropTypes from 'prop-types'
|
|
4
4
|
|
|
@@ -12,7 +12,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
|
|
|
12
12
|
* It should be used to add selectable screen-reader-only text to the main document flow,
|
|
13
13
|
* as a sibling to blocks of text like paragraphs and interactive elements like buttons.
|
|
14
14
|
*/
|
|
15
|
-
const A11yText = forwardRef(({ text, heading, ...rest }, ref) => {
|
|
15
|
+
const A11yText = React.forwardRef(({ text, heading, ...rest }, ref) => {
|
|
16
16
|
const selectedProps = selectProps({
|
|
17
17
|
// On iOS, needs `accessible` to be true to be focusable without non-a11y content.
|
|
18
18
|
// On Web, `accessible` causes RNW to set attributes that may make the element be treated as a group.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared'
|
|
3
3
|
import { useA11yInfo } from '../A11yInfoProvider'
|
|
4
4
|
|
|
@@ -21,7 +21,7 @@ const bezierProps = {
|
|
|
21
21
|
}
|
|
22
22
|
// We're using svg rather than css here to define the animation to avoid needing to introduce css injection mechanism
|
|
23
23
|
// It's possible to replicate this functionality with RNW animations, but it snags on chrome at least, see https://github.com/telus/universal-design-system/pull/477 for details.
|
|
24
|
-
const Spinner = forwardRef(({ size, color, thickness, label, isStatic = false }, ref) => {
|
|
24
|
+
const Spinner = React.forwardRef(({ size, color, thickness, label, isStatic = false }, ref) => {
|
|
25
25
|
const { reduceMotionEnabled } = useA11yInfo()
|
|
26
26
|
const reduceMotion = reduceMotionEnabled || isStatic
|
|
27
27
|
return (
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import { Animated, Easing, StyleSheet, View } from 'react-native'
|
|
3
3
|
import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared'
|
|
4
4
|
import { useA11yInfo } from '../A11yInfoProvider'
|
|
@@ -6,7 +6,7 @@ import { useA11yInfo } from '../A11yInfoProvider'
|
|
|
6
6
|
const ea = MIN_EMPTY_ANGLE / 2
|
|
7
7
|
const sa = MIN_STROKE_ANGLE / 2
|
|
8
8
|
|
|
9
|
-
const Spinner = forwardRef(({ size, color, thickness, label, isStatic = false }, ref) => {
|
|
9
|
+
const Spinner = React.forwardRef(({ size, color, thickness, label, isStatic = false }, ref) => {
|
|
10
10
|
const { current: timer } = React.useRef(new Animated.Value(0))
|
|
11
11
|
const { reduceMotionEnabled } = useA11yInfo()
|
|
12
12
|
const reduceMotion = reduceMotionEnabled || isStatic
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import React, { forwardRef, useEffect, useRef, useState } from 'react'
|
|
1
|
+
import React from 'react'
|
|
3
2
|
import PropTypes from 'prop-types'
|
|
4
3
|
import { Dimensions, Platform, View, StyleSheet } from 'react-native'
|
|
5
4
|
import throttle from 'lodash.throttle'
|
|
@@ -83,7 +82,7 @@ const highlight = (items = [], text = '', color) =>
|
|
|
83
82
|
return [...acc, item]
|
|
84
83
|
}, [])
|
|
85
84
|
|
|
86
|
-
const Autocomplete = forwardRef(
|
|
85
|
+
const Autocomplete = React.forwardRef(
|
|
87
86
|
(
|
|
88
87
|
{
|
|
89
88
|
children,
|
|
@@ -116,22 +115,24 @@ const Autocomplete = forwardRef(
|
|
|
116
115
|
const isControlled = value !== undefined
|
|
117
116
|
|
|
118
117
|
// We need to store current items for uncontrolled usage
|
|
119
|
-
const [currentItems, setCurrentItems] = useState(initialItems)
|
|
118
|
+
const [currentItems, setCurrentItems] = React.useState(initialItems)
|
|
120
119
|
|
|
121
|
-
const [otherItems, setOtherItems] = useState(items)
|
|
120
|
+
const [otherItems, setOtherItems] = React.useState(items)
|
|
122
121
|
|
|
123
122
|
// We need to store the current value as well to be able to highlight it
|
|
124
|
-
const [currentValue, setCurrentValue] = useState(value ?? initialValue)
|
|
123
|
+
const [currentValue, setCurrentValue] = React.useState(value ?? initialValue)
|
|
125
124
|
const inputTokens = { paddingLeft: INPUT_LEFT_PADDING }
|
|
126
125
|
|
|
127
126
|
// Setting up the overlay
|
|
128
|
-
const openOverlayRef = useRef()
|
|
129
|
-
const [isExpanded, setIsExpanded] = useState(
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
const openOverlayRef = React.useRef()
|
|
128
|
+
const [isExpanded, setIsExpanded] = React.useState(
|
|
129
|
+
(value ?? initialValue)?.length >= minToSuggestion
|
|
130
|
+
)
|
|
131
|
+
const [isFocused, setisFocused] = React.useState(false)
|
|
132
|
+
const [sourceLayout, setSourceLayout] = React.useState(null)
|
|
132
133
|
|
|
133
134
|
// When it's nested, selected value
|
|
134
|
-
const [nestedSelectedValue, setNestedSelectedValue] = useState(null)
|
|
135
|
+
const [nestedSelectedValue, setNestedSelectedValue] = React.useState(null)
|
|
135
136
|
|
|
136
137
|
const { supportsProps, ...selectedProps } = selectProps(rest)
|
|
137
138
|
const { hint, label: inputLabel } = supportsProps
|
|
@@ -148,7 +149,7 @@ const Autocomplete = forwardRef(
|
|
|
148
149
|
vertical: Platform.OS !== 'web' && (hint || inputLabel) ? 28 : 4
|
|
149
150
|
}
|
|
150
151
|
})
|
|
151
|
-
const targetRef = useRef(null)
|
|
152
|
+
const targetRef = React.useRef(null)
|
|
152
153
|
// We limit the number of suggestions displayed to avoid huge lists
|
|
153
154
|
// TODO: add a way to make the `Listbox` occupy fixed height and be scrollable
|
|
154
155
|
// within that height, which will unlock similar behaviour for `AutoComplete` as well
|
|
@@ -157,7 +158,7 @@ const Autocomplete = forwardRef(
|
|
|
157
158
|
|
|
158
159
|
const getCopy = useCopy({ dictionary, copy })
|
|
159
160
|
// Tracking input width changes to resize the listbox overlay accordingly
|
|
160
|
-
const [inputWidth, setInputWidth] = useState()
|
|
161
|
+
const [inputWidth, setInputWidth] = React.useState()
|
|
161
162
|
useSafeLayoutEffect(() => {
|
|
162
163
|
if (Platform.OS === 'web') {
|
|
163
164
|
const updateInputWidth = () => {
|
|
@@ -227,7 +228,7 @@ const Autocomplete = forwardRef(
|
|
|
227
228
|
* within the list, if doesn't exist the nested item is added to the top of the list,
|
|
228
229
|
* the nested item is added with an id equal "0"
|
|
229
230
|
*/
|
|
230
|
-
useEffect(() => {
|
|
231
|
+
React.useEffect(() => {
|
|
231
232
|
if (nestedSelectedValue && !items.find((item) => item.id === 0)) {
|
|
232
233
|
const tmpItems = [...items]
|
|
233
234
|
tmpItems.unshift({ label: nestedSelectedValue, title: true, id: 0 })
|
|
@@ -5,14 +5,17 @@ import Typography from '../Typography'
|
|
|
5
5
|
import Box from '../Box'
|
|
6
6
|
import StackView from '../StackView'
|
|
7
7
|
|
|
8
|
-
const Loading = ({ label }) => (
|
|
9
|
-
<Box space={3}>
|
|
8
|
+
const Loading = React.forwardRef(({ label }, ref) => (
|
|
9
|
+
<Box space={3} ref={ref}>
|
|
10
10
|
<StackView direction="row" space={2} tokens={{ alignItems: 'center' }}>
|
|
11
11
|
<ActivityIndicator variant={{ size: 'large' }} />
|
|
12
12
|
<Typography>{label}</Typography>
|
|
13
13
|
</StackView>
|
|
14
14
|
</Box>
|
|
15
|
-
)
|
|
15
|
+
))
|
|
16
|
+
|
|
17
|
+
Loading.displayName = 'Loading'
|
|
18
|
+
|
|
16
19
|
Loading.propTypes = { label: PropTypes.string }
|
|
17
20
|
|
|
18
21
|
export default Loading
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import A11yText from '../A11yText'
|
|
4
4
|
import Typography from '../Typography'
|
|
5
5
|
import Box from '../Box'
|
|
6
6
|
import Listbox from '../Listbox'
|
|
7
7
|
|
|
8
|
-
const Suggestions = forwardRef(
|
|
8
|
+
const Suggestions = React.forwardRef(
|
|
9
9
|
({ hasResults, items = [], noResults, onClose, onSelect, parentRef }, ref) => {
|
|
10
10
|
const pressableItems = items.map(({ id, ...rest }) => ({
|
|
11
11
|
id,
|
package/src/Badge/Badge.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import { View, StyleSheet } from 'react-native'
|
|
3
3
|
import PropTypes from 'prop-types'
|
|
4
4
|
import { useThemeTokens } from '../ThemeProvider'
|
|
@@ -32,7 +32,7 @@ const getTypographyTokens = ({ fontName, fontWeight, color }) => ({ fontName, fo
|
|
|
32
32
|
|
|
33
33
|
const getTypographyVariant = ({ fontSize }) => ({ size: fontSizeMapping[fontSize] })
|
|
34
34
|
|
|
35
|
-
const Badge = forwardRef(({ children, tokens, variant = {}, ...rest }, ref) => {
|
|
35
|
+
const Badge = React.forwardRef(({ children, tokens, variant = {}, ...rest }, ref) => {
|
|
36
36
|
const themeTokens = useThemeTokens('Badge', tokens, variant)
|
|
37
37
|
|
|
38
38
|
return (
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { Platform } from 'react-native'
|
|
4
4
|
|
|
5
|
-
const HydrationContext = createContext()
|
|
5
|
+
const HydrationContext = React.createContext()
|
|
6
6
|
const isSSR = typeof window === 'undefined'
|
|
7
7
|
const hasWebStyleTag = () => {
|
|
8
8
|
if (isSSR || Platform.OS !== 'web' || typeof document !== 'object') {
|
|
@@ -18,15 +18,15 @@ const hasWebStyleTag = () => {
|
|
|
18
18
|
* during the very first client-side render or hydration, but not available on the server,
|
|
19
19
|
* to ensure no changes happen until the original SSR DOM has been hydrated.
|
|
20
20
|
*/
|
|
21
|
-
export const useHydrationContext = () => useContext(HydrationContext)
|
|
21
|
+
export const useHydrationContext = () => React.useContext(HydrationContext)
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Allows components and hooks to observe if SSR hydration is currently in progress
|
|
25
25
|
* and if so, to re-render with content that differs to the server when it is complete.
|
|
26
26
|
*/
|
|
27
27
|
export const HydrationProvider = ({ children }) => {
|
|
28
|
-
const [hasMounted, setHasMounted] = useState(false)
|
|
29
|
-
useEffect(() => {
|
|
28
|
+
const [hasMounted, setHasMounted] = React.useState(false)
|
|
29
|
+
React.useEffect(() => {
|
|
30
30
|
setHasMounted(true)
|
|
31
31
|
}, [])
|
|
32
32
|
|
package/src/Box/Box.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { View, ScrollView, Platform, StyleSheet, ImageBackground, Image } from 'react-native'
|
|
4
4
|
import { useThemeTokens } from '../ThemeProvider'
|
|
@@ -181,7 +181,7 @@ const setBackgroundImage = ({
|
|
|
181
181
|
* text content is inside a scrollable box, as screens are not scrollable by default and even very
|
|
182
182
|
* short text will require scrolling on small devices at the highest accessibility text scaling settings.
|
|
183
183
|
*/
|
|
184
|
-
const Box = forwardRef(
|
|
184
|
+
const Box = React.forwardRef(
|
|
185
185
|
(
|
|
186
186
|
{
|
|
187
187
|
space,
|
|
@@ -230,8 +230,8 @@ const Box = forwardRef(
|
|
|
230
230
|
const backgroundImageResizeMode = useResponsiveProp(resizeMode, 'cover')
|
|
231
231
|
const backgroundImagePosition = useResponsiveProp(position, 'none')
|
|
232
232
|
const backgroundImageAlign = useResponsiveProp(align, 'stretch')
|
|
233
|
-
const [backgroundImageWidth, setBackgroundImageWidth] = useState(0)
|
|
234
|
-
const [backgroundImageHeight, setBackgroundImageHeight] = useState(0)
|
|
233
|
+
const [backgroundImageWidth, setBackgroundImageWidth] = React.useState(0)
|
|
234
|
+
const [backgroundImageHeight, setBackgroundImageHeight] = React.useState(0)
|
|
235
235
|
if (backgroundImage)
|
|
236
236
|
content = setBackgroundImage({
|
|
237
237
|
src,
|
|
@@ -244,7 +244,7 @@ const Box = forwardRef(
|
|
|
244
244
|
content
|
|
245
245
|
})
|
|
246
246
|
|
|
247
|
-
useEffect(() => {
|
|
247
|
+
React.useEffect(() => {
|
|
248
248
|
if (backgroundImage && backgroundImageWidth === 0 && backgroundImageHeight === 0) {
|
|
249
249
|
Image.getSize(src, (width, height) => {
|
|
250
250
|
// Only update the state if the size has changed
|
package/src/Button/Button.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
|
|
3
3
|
import ButtonBase from './ButtonBase'
|
|
4
4
|
import buttonPropTypes, { textAndA11yText } from './propTypes'
|
|
@@ -6,14 +6,16 @@ import { useThemeTokensCallback } from '../ThemeProvider'
|
|
|
6
6
|
import { a11yProps } from '../utils/props'
|
|
7
7
|
import { useViewport } from '../ViewportProvider'
|
|
8
8
|
|
|
9
|
-
const Button = forwardRef(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
const Button = React.forwardRef(
|
|
10
|
+
({ accessibilityRole = 'button', tokens, variant, ...props }, ref) => {
|
|
11
|
+
const viewport = useViewport()
|
|
12
|
+
const buttonVariant = { viewport, ...variant }
|
|
13
|
+
const getTokens = useThemeTokensCallback('Button', tokens, buttonVariant)
|
|
14
|
+
return (
|
|
15
|
+
<ButtonBase {...props} tokens={getTokens} accessibilityRole={accessibilityRole} ref={ref} />
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
)
|
|
17
19
|
Button.displayName = 'Button'
|
|
18
20
|
|
|
19
21
|
Button.propTypes = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { Pressable, View, StyleSheet, Platform } from 'react-native'
|
|
4
4
|
|
|
@@ -185,7 +185,7 @@ const selectItemIconTokens = ({ color, iconColor, iconSize }) => ({
|
|
|
185
185
|
color: iconColor || color
|
|
186
186
|
})
|
|
187
187
|
|
|
188
|
-
const ButtonBase = forwardRef(
|
|
188
|
+
const ButtonBase = React.forwardRef(
|
|
189
189
|
(
|
|
190
190
|
{
|
|
191
191
|
id,
|
|
@@ -303,7 +303,6 @@ ButtonBase.propTypes = {
|
|
|
303
303
|
...selectedSystemPropTypes,
|
|
304
304
|
...buttonPropTypes
|
|
305
305
|
}
|
|
306
|
-
ButtonBase.defaultProps = { id: undefined }
|
|
307
306
|
|
|
308
307
|
const staticStyles = StyleSheet.create({
|
|
309
308
|
row: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { Platform, Text, View } from 'react-native'
|
|
4
4
|
import buttonPropTypes, { textAndA11yText } from './propTypes'
|
|
@@ -50,7 +50,7 @@ const selectIconTokens = ({
|
|
|
50
50
|
}
|
|
51
51
|
})
|
|
52
52
|
|
|
53
|
-
const ButtonDropdown = forwardRef(
|
|
53
|
+
const ButtonDropdown = React.forwardRef(
|
|
54
54
|
(
|
|
55
55
|
{
|
|
56
56
|
value,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import ABBPropTypes from 'airbnb-prop-types'
|
|
4
4
|
import { Platform } from 'react-native'
|
|
@@ -30,7 +30,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
|
|
|
30
30
|
viewProps
|
|
31
31
|
])
|
|
32
32
|
|
|
33
|
-
const ButtonGroup = forwardRef(
|
|
33
|
+
const ButtonGroup = React.forwardRef(
|
|
34
34
|
(
|
|
35
35
|
{
|
|
36
36
|
variant,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import ButtonBase from './ButtonBase'
|
|
4
4
|
import buttonPropTypes, { textAndA11yText } from './propTypes'
|
|
@@ -10,7 +10,7 @@ import { useViewport } from '../ViewportProvider'
|
|
|
10
10
|
* `ButtonLink` is a component with the semantics and behaviour of a link, but with the visual appearance of a button.
|
|
11
11
|
* ButtonLink is a block-level component and should not be used inline.
|
|
12
12
|
*/
|
|
13
|
-
const ButtonLink = forwardRef(
|
|
13
|
+
const ButtonLink = React.forwardRef(
|
|
14
14
|
({ accessibilityRole = 'link', tokens, variant, dataSet, ...props }, ref) => {
|
|
15
15
|
const { hrefAttrs, rest } = hrefAttrsProp.bundle(props)
|
|
16
16
|
const viewport = useViewport()
|
package/src/Card/Card.jsx
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { View } from 'react-native'
|
|
4
|
-
|
|
5
4
|
import {
|
|
6
5
|
useThemeTokens,
|
|
7
6
|
useThemeTokensCallback,
|
|
@@ -13,9 +12,45 @@ import { useViewport } from '../ViewportProvider'
|
|
|
13
12
|
import { a11yProps, selectSystemProps, viewProps } from '../utils/props'
|
|
14
13
|
import CardBase from './CardBase'
|
|
15
14
|
import PressableCardBase from './PressableCardBase'
|
|
15
|
+
import CheckboxButton from '../Checkbox/CheckboxButton'
|
|
16
|
+
import RadioButton from '../Radio/RadioButton'
|
|
16
17
|
|
|
17
18
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
18
19
|
|
|
20
|
+
const SelectionType = {
|
|
21
|
+
Checkbox: 'checkbox',
|
|
22
|
+
Radio: 'radiogroup',
|
|
23
|
+
None: undefined
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const selectInputStyle = ({ paddingTop, paddingRight }) => ({
|
|
27
|
+
position: 'absolute',
|
|
28
|
+
top: paddingTop,
|
|
29
|
+
right: paddingRight
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
const getInputProps = ({
|
|
33
|
+
id,
|
|
34
|
+
checkColor,
|
|
35
|
+
boxBackgroundColor,
|
|
36
|
+
checkBackgroundColor,
|
|
37
|
+
isControlled,
|
|
38
|
+
isChecked,
|
|
39
|
+
isInactive,
|
|
40
|
+
handleChange
|
|
41
|
+
}) => ({
|
|
42
|
+
inputId: id,
|
|
43
|
+
tokens: {
|
|
44
|
+
iconColor: checkColor,
|
|
45
|
+
inputBackgroundColor: boxBackgroundColor,
|
|
46
|
+
iconBackgroundColor: checkBackgroundColor
|
|
47
|
+
},
|
|
48
|
+
isControlled,
|
|
49
|
+
isChecked,
|
|
50
|
+
inactive: isInactive,
|
|
51
|
+
handleChange
|
|
52
|
+
})
|
|
53
|
+
|
|
19
54
|
/**
|
|
20
55
|
* A basic card component, unstyled by default.
|
|
21
56
|
*
|
|
@@ -64,8 +99,8 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
|
|
|
64
99
|
* you automatically make inaccessible its children, which may or may not be appropriate
|
|
65
100
|
* depending on what you are trying to achieve.
|
|
66
101
|
*/
|
|
67
|
-
const Card = forwardRef(
|
|
68
|
-
({ children, tokens, variant, dataSet, onPress, interactiveCard, ...rest }, ref) => {
|
|
102
|
+
const Card = React.forwardRef(
|
|
103
|
+
({ children, tokens, variant, dataSet, onPress, id, interactiveCard, ...rest }, ref) => {
|
|
69
104
|
const viewport = useViewport()
|
|
70
105
|
const { themeOptions } = useTheme()
|
|
71
106
|
|
|
@@ -80,13 +115,60 @@ const Card = forwardRef(
|
|
|
80
115
|
!enableMediaQueryStyleSheet && { viewport }
|
|
81
116
|
)
|
|
82
117
|
|
|
118
|
+
const selected = interactiveCard?.variant?.selected
|
|
119
|
+
const inactive = interactiveCard?.variant?.inactive
|
|
120
|
+
const selectionType = interactiveCard?.selectionType
|
|
121
|
+
|
|
83
122
|
const getThemeTokens = useThemeTokensCallback('Card', interactiveCard?.tokens, {
|
|
84
123
|
interactive: true,
|
|
85
124
|
...(interactiveCard?.variant || {})
|
|
86
125
|
})
|
|
87
126
|
// When interactive area is present, spacing tokens should only be applied
|
|
88
127
|
// to individual Card sections, not Card as a whole
|
|
89
|
-
const { paddingTop, paddingBottom, paddingLeft, paddingRight, ...restOfTokens } =
|
|
128
|
+
const { paddingTop, paddingBottom, paddingLeft, paddingRight, ...restOfTokens } = selectionType
|
|
129
|
+
? getThemeTokens()
|
|
130
|
+
: themeTokens
|
|
131
|
+
|
|
132
|
+
const {
|
|
133
|
+
inputBackgroundColor,
|
|
134
|
+
iconBackgroundColor,
|
|
135
|
+
iconColor,
|
|
136
|
+
icon,
|
|
137
|
+
inputBorderRadius,
|
|
138
|
+
inputHeight,
|
|
139
|
+
inputWidth,
|
|
140
|
+
iconSize,
|
|
141
|
+
inputShadow,
|
|
142
|
+
inputBorderWidth,
|
|
143
|
+
inputBorderColor
|
|
144
|
+
} = getThemeTokens()
|
|
145
|
+
|
|
146
|
+
const checkboxTokens = {
|
|
147
|
+
inputBackgroundColor,
|
|
148
|
+
iconBackgroundColor,
|
|
149
|
+
icon,
|
|
150
|
+
iconColor,
|
|
151
|
+
inputBorderRadius,
|
|
152
|
+
inputHeight,
|
|
153
|
+
inputWidth,
|
|
154
|
+
iconSize,
|
|
155
|
+
inputShadow,
|
|
156
|
+
inputBorderWidth,
|
|
157
|
+
inputBorderColor
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const radioTokens = {
|
|
161
|
+
iconBackgroundColor,
|
|
162
|
+
iconColor,
|
|
163
|
+
containerShadow: inputShadow,
|
|
164
|
+
icon,
|
|
165
|
+
inputBackgroundColor,
|
|
166
|
+
inputBorderRadius,
|
|
167
|
+
inputSize: inputHeight,
|
|
168
|
+
checkedSize: iconSize,
|
|
169
|
+
inputBorderWidth,
|
|
170
|
+
inputBorderColor
|
|
171
|
+
}
|
|
90
172
|
|
|
91
173
|
let cardStyles
|
|
92
174
|
let mediaIds
|
|
@@ -103,6 +185,29 @@ const Card = forwardRef(
|
|
|
103
185
|
cardStyles = themeTokens
|
|
104
186
|
}
|
|
105
187
|
|
|
188
|
+
const renderInputPerSelectionType = (props) => {
|
|
189
|
+
switch (selectionType) {
|
|
190
|
+
case SelectionType.Checkbox:
|
|
191
|
+
return (
|
|
192
|
+
<View style={selectInputStyle(getThemeTokens())}>
|
|
193
|
+
<CheckboxButton {...props} tokens={{ ...checkboxTokens, ...props?.tokens }} />
|
|
194
|
+
</View>
|
|
195
|
+
)
|
|
196
|
+
case SelectionType.Radio:
|
|
197
|
+
return (
|
|
198
|
+
<View style={selectInputStyle(getThemeTokens())}>
|
|
199
|
+
<RadioButton {...props} tokens={{ ...radioTokens, ...props?.tokens }} />
|
|
200
|
+
</View>
|
|
201
|
+
)
|
|
202
|
+
default:
|
|
203
|
+
return null
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const renderNoSelectionView = () => (
|
|
208
|
+
<View style={{ paddingTop, paddingBottom, paddingLeft, paddingRight }}>{children}</View>
|
|
209
|
+
)
|
|
210
|
+
|
|
106
211
|
return (
|
|
107
212
|
<>
|
|
108
213
|
<CardBase
|
|
@@ -120,13 +225,40 @@ const Card = forwardRef(
|
|
|
120
225
|
onPress={onPress}
|
|
121
226
|
{...selectProps(rest)}
|
|
122
227
|
>
|
|
123
|
-
{
|
|
228
|
+
{(cardState) => {
|
|
229
|
+
const {
|
|
230
|
+
iconColor: checkColor,
|
|
231
|
+
inputBackgroundColor: boxBackgroundColor,
|
|
232
|
+
iconBackgroundColor: checkBackgroundColor
|
|
233
|
+
} = getThemeTokens(
|
|
234
|
+
{
|
|
235
|
+
...cardState,
|
|
236
|
+
selected,
|
|
237
|
+
interactive: true,
|
|
238
|
+
isControl: true
|
|
239
|
+
},
|
|
240
|
+
interactiveCard?.tokens
|
|
241
|
+
)
|
|
242
|
+
return (
|
|
243
|
+
<>
|
|
244
|
+
{renderInputPerSelectionType(
|
|
245
|
+
getInputProps({
|
|
246
|
+
id,
|
|
247
|
+
checkColor,
|
|
248
|
+
boxBackgroundColor,
|
|
249
|
+
checkBackgroundColor,
|
|
250
|
+
isControlled: true,
|
|
251
|
+
isChecked: selected || cardState?.hover,
|
|
252
|
+
isInactive: inactive,
|
|
253
|
+
onPress
|
|
254
|
+
})
|
|
255
|
+
)}
|
|
256
|
+
{interactiveCard?.body}
|
|
257
|
+
</>
|
|
258
|
+
)
|
|
259
|
+
}}
|
|
124
260
|
</PressableCardBase>
|
|
125
|
-
{children ? (
|
|
126
|
-
<View style={{ paddingTop, paddingBottom, paddingLeft, paddingRight }}>
|
|
127
|
-
{children}
|
|
128
|
-
</View>
|
|
129
|
-
) : null}
|
|
261
|
+
{children && selectionType !== SelectionType.None ? renderNoSelectionView() : null}
|
|
130
262
|
</>
|
|
131
263
|
) : (
|
|
132
264
|
children
|
|
@@ -158,15 +290,23 @@ Card.propTypes = {
|
|
|
158
290
|
* Note: This is only available when `interactiveCard` prop is used.
|
|
159
291
|
*/
|
|
160
292
|
onPress: PropTypes.func,
|
|
293
|
+
/**
|
|
294
|
+
* Card ID.
|
|
295
|
+
*/
|
|
296
|
+
id: PropTypes.string,
|
|
161
297
|
/**
|
|
162
298
|
* Object to set interactive card's properties
|
|
163
299
|
* - body: The body of the interactive card, can be any renderable node
|
|
164
300
|
* - tokens: The tokens to be used for the interactive card
|
|
301
|
+
* - selectionType: If the card has `isControl` variant set to `true`, the selectionType can have one of the following options:
|
|
302
|
+
- `radiogroup`
|
|
303
|
+
- `checkbox`
|
|
165
304
|
* - variant: The variant to be used for the interactive card
|
|
166
305
|
*/
|
|
167
306
|
interactiveCard: PropTypes.shape({
|
|
168
307
|
body: PropTypes.node,
|
|
169
308
|
tokens: getTokensPropType('Card'),
|
|
309
|
+
selectionType: PropTypes.oneOf(Object.values(SelectionType)),
|
|
170
310
|
variant: variantProp.propType
|
|
171
311
|
})
|
|
172
312
|
}
|
package/src/Card/CardBase.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { View, Platform } from 'react-native'
|
|
4
4
|
|
|
@@ -50,7 +50,7 @@ const selectStyles = ({
|
|
|
50
50
|
* A themeless base component for Card which components can apply theme tokens to. Not
|
|
51
51
|
* intended to be used in apps or sites directly: build themed components on top of this.
|
|
52
52
|
*/
|
|
53
|
-
const CardBase = forwardRef(({ children, tokens, dataSet, ...rest }, ref) => {
|
|
53
|
+
const CardBase = React.forwardRef(({ children, tokens, dataSet, ...rest }, ref) => {
|
|
54
54
|
const cardStyle = selectStyles(typeof tokens === 'function' ? tokens() : tokens)
|
|
55
55
|
const props = selectProps(rest)
|
|
56
56
|
return (
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { Pressable, Platform } from 'react-native'
|
|
4
4
|
|
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
a11yProps,
|
|
9
9
|
clickProps,
|
|
10
10
|
focusHandlerProps,
|
|
11
|
-
getTokenNames,
|
|
12
11
|
getTokensSetPropType,
|
|
13
12
|
linkProps,
|
|
14
13
|
resolvePressableState,
|
|
@@ -28,7 +27,22 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([
|
|
|
28
27
|
])
|
|
29
28
|
|
|
30
29
|
const tokenKeys = [
|
|
31
|
-
|
|
30
|
+
'flex',
|
|
31
|
+
'backgroundColor',
|
|
32
|
+
'borderColor',
|
|
33
|
+
'gradient',
|
|
34
|
+
'borderRadius',
|
|
35
|
+
'borderWidth',
|
|
36
|
+
'paddingBottom',
|
|
37
|
+
'paddingLeft',
|
|
38
|
+
'paddingRight',
|
|
39
|
+
'paddingTop',
|
|
40
|
+
'minWidth',
|
|
41
|
+
'shadow',
|
|
42
|
+
'contentAlignItems',
|
|
43
|
+
'contentJustifyContent',
|
|
44
|
+
'contentFlexGrow',
|
|
45
|
+
'contentFlexShrink',
|
|
32
46
|
|
|
33
47
|
// Outer border tokens. TODO: centralise common token sets like these as part of
|
|
34
48
|
// https://github.com/telus/universal-design-system/issues/782
|
|
@@ -44,7 +58,7 @@ export const selectPressableCardTokens = (tokens) =>
|
|
|
44
58
|
* based on these to an outer border and a base Card component. Not intended to be used in
|
|
45
59
|
* apps or sites directly: build themed components on top of this.
|
|
46
60
|
*/
|
|
47
|
-
const PressableCardBase = forwardRef(
|
|
61
|
+
const PressableCardBase = React.forwardRef(
|
|
48
62
|
(
|
|
49
63
|
{
|
|
50
64
|
children,
|