@telus-uds/components-base 1.65.0 → 1.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -2
- package/lib/A11yInfoProvider/index.js +5 -20
- package/lib/A11yText/index.js +3 -17
- package/lib/ActivityIndicator/Spinner.js +2 -9
- package/lib/ActivityIndicator/Spinner.native.js +4 -27
- package/lib/ActivityIndicator/index.js +1 -13
- package/lib/ActivityIndicator/shared.js +0 -3
- package/lib/Autocomplete/Autocomplete.js +34 -85
- package/lib/Autocomplete/Loading.js +0 -10
- package/lib/Autocomplete/Suggestions.js +0 -11
- package/lib/Autocomplete/index.js +0 -3
- package/lib/BaseProvider/HydrationContext.js +4 -18
- package/lib/BaseProvider/index.js +0 -12
- package/lib/Box/Box.js +10 -35
- package/lib/Box/index.js +0 -3
- package/lib/Button/Button.js +4 -13
- package/lib/Button/ButtonBase.js +23 -55
- package/lib/Button/ButtonDropdown.js +7 -32
- package/lib/Button/ButtonGroup.js +15 -48
- package/lib/Button/ButtonLink.js +3 -17
- package/lib/Button/index.js +0 -5
- package/lib/Button/propTypes.js +0 -15
- package/lib/Card/Card.js +3 -14
- package/lib/Card/CardBase.js +5 -16
- package/lib/Card/PressableCardBase.js +7 -30
- package/lib/Card/index.js +0 -7
- package/lib/Carousel/Carousel.js +22 -115
- package/lib/Carousel/CarouselContext.js +0 -14
- package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +6 -18
- package/lib/Carousel/CarouselItem/CarouselItem.js +5 -20
- package/lib/Carousel/CarouselItem/index.js +0 -3
- package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -9
- package/lib/Carousel/CarouselStepTracker/index.js +0 -3
- package/lib/Carousel/CarouselTabs/CarouselTabs.js +5 -15
- package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -16
- package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -22
- package/lib/Carousel/CarouselTabs/index.js +0 -3
- package/lib/Carousel/CarouselThumbnail.js +1 -16
- package/lib/Carousel/CarouselThumbnailNavigation.js +0 -15
- package/lib/Carousel/index.js +0 -5
- package/lib/Checkbox/Checkbox.js +5 -44
- package/lib/Checkbox/CheckboxButton.js +7 -33
- package/lib/Checkbox/CheckboxGroup.js +5 -37
- package/lib/Checkbox/CheckboxInput.js +1 -11
- package/lib/Checkbox/CheckboxInput.native.js +0 -2
- package/lib/Checkbox/index.js +0 -4
- package/lib/CheckboxCard/CheckboxCard.js +4 -37
- package/lib/CheckboxCard/index.js +0 -3
- package/lib/CheckboxCardGroup/CheckboxCardGroup.js +215 -0
- package/lib/CheckboxCardGroup/index.js +10 -0
- package/lib/Divider/Divider.js +13 -24
- package/lib/Divider/index.js +0 -3
- package/lib/ExpandCollapse/Accordion.js +1 -9
- package/lib/ExpandCollapse/Control.js +10 -32
- package/lib/ExpandCollapse/ExpandCollapse.js +3 -19
- package/lib/ExpandCollapse/Panel.js +13 -38
- package/lib/ExpandCollapse/index.js +0 -5
- package/lib/Feedback/Feedback.js +13 -30
- package/lib/Feedback/index.js +0 -3
- package/lib/Fieldset/Fieldset.js +6 -37
- package/lib/Fieldset/FieldsetContainer.js +1 -10
- package/lib/Fieldset/FieldsetContainer.native.js +0 -8
- package/lib/Fieldset/Legend.js +1 -10
- package/lib/Fieldset/Legend.native.js +1 -13
- package/lib/Fieldset/index.js +0 -3
- package/lib/FlexGrid/Col/Col.js +10 -53
- package/lib/FlexGrid/Col/index.js +0 -3
- package/lib/FlexGrid/FlexGrid.js +3 -34
- package/lib/FlexGrid/Row/Row.js +0 -38
- package/lib/FlexGrid/Row/index.js +0 -3
- package/lib/FlexGrid/helpers/index.js +0 -4
- package/lib/FlexGrid/index.js +0 -3
- package/lib/FlexGrid/providers/GutterContext.js +0 -4
- package/lib/HorizontalScroll/HorizontalScroll.js +17 -45
- package/lib/HorizontalScroll/HorizontalScrollButton.js +1 -17
- package/lib/HorizontalScroll/ScrollViewEnd.js +5 -13
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +1 -10
- package/lib/HorizontalScroll/index.js +0 -7
- package/lib/HorizontalScroll/itemPositions.js +8 -19
- package/lib/Icon/Icon.js +4 -17
- package/lib/Icon/IconText.js +5 -25
- package/lib/Icon/index.js +0 -6
- package/lib/IconButton/IconButton.js +5 -37
- package/lib/IconButton/index.js +0 -3
- package/lib/InputLabel/InputLabel.js +4 -28
- package/lib/InputLabel/LabelContent.js +2 -8
- package/lib/InputLabel/LabelContent.native.js +0 -8
- package/lib/InputLabel/index.js +0 -3
- package/lib/InputSupports/InputSupports.js +0 -21
- package/lib/InputSupports/index.js +0 -3
- package/lib/InputSupports/useInputSupports.js +2 -6
- package/lib/Link/ChevronLink.js +7 -18
- package/lib/Link/InlinePressable.js +0 -10
- package/lib/Link/InlinePressable.native.js +5 -18
- package/lib/Link/Link.js +0 -8
- package/lib/Link/LinkBase.js +17 -47
- package/lib/Link/TextButton.js +3 -16
- package/lib/Link/index.js +0 -5
- package/lib/List/List.js +5 -21
- package/lib/List/ListItem.js +1 -11
- package/lib/List/ListItemBase.js +5 -34
- package/lib/List/ListItemContent.js +1 -14
- package/lib/List/ListItemMark.js +3 -23
- package/lib/List/PressableListItemBase.js +2 -28
- package/lib/List/index.js +0 -4
- package/lib/Listbox/GroupControl.js +0 -14
- package/lib/Listbox/Listbox.js +15 -40
- package/lib/Listbox/ListboxContext.js +0 -7
- package/lib/Listbox/ListboxGroup.js +7 -19
- package/lib/Listbox/ListboxItem.js +3 -17
- package/lib/Listbox/ListboxOverlay.js +4 -20
- package/lib/Listbox/PressableItem.js +3 -18
- package/lib/Listbox/index.js +0 -3
- package/lib/Modal/Modal.js +94 -45
- package/lib/Modal/ModalContent.js +184 -0
- package/lib/Modal/index.js +0 -3
- package/lib/MultiSelectFilter/ModalOverlay.js +1 -20
- package/lib/MultiSelectFilter/MultiSelectFilter.js +20 -69
- package/lib/MultiSelectFilter/index.js +0 -3
- package/lib/Notification/Notification.js +11 -38
- package/lib/Notification/index.js +0 -3
- package/lib/Pagination/PageButton.js +2 -22
- package/lib/Pagination/Pagination.js +21 -42
- package/lib/Pagination/SideButton.js +0 -24
- package/lib/Pagination/index.js +0 -3
- package/lib/Pagination/usePagination.js +4 -9
- package/lib/Progress/Progress.js +3 -17
- package/lib/Progress/ProgressBar.js +3 -25
- package/lib/Progress/ProgressBarBackground.js +0 -12
- package/lib/Progress/index.js +0 -4
- package/lib/QuickLinks/QuickLinks.js +1 -18
- package/lib/QuickLinks/QuickLinksCard.js +1 -11
- package/lib/QuickLinks/QuickLinksItem.js +3 -17
- package/lib/QuickLinks/index.js +0 -4
- package/lib/QuickLinksFeature/QuickLinksFeature.js +3 -20
- package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +7 -30
- package/lib/QuickLinksFeature/index.js +0 -4
- package/lib/Radio/Radio.js +5 -39
- package/lib/Radio/RadioButton.js +7 -26
- package/lib/Radio/RadioGroup.js +6 -39
- package/lib/Radio/RadioInput.js +1 -11
- package/lib/Radio/RadioInput.native.js +0 -2
- package/lib/Radio/index.js +0 -4
- package/lib/RadioCard/RadioCard.js +5 -38
- package/lib/RadioCard/RadioCardGroup.js +7 -38
- package/lib/RadioCard/index.js +0 -4
- package/lib/Responsive/Responsive.js +1 -14
- package/lib/Responsive/index.js +0 -3
- package/lib/Search/Search.js +22 -45
- package/lib/Search/index.js +0 -3
- package/lib/Select/Group.js +0 -8
- package/lib/Select/Group.native.js +0 -6
- package/lib/Select/Item.js +0 -7
- package/lib/Select/Item.native.js +0 -2
- package/lib/Select/Picker.js +0 -8
- package/lib/Select/Picker.native.js +6 -22
- package/lib/Select/Select.js +9 -52
- package/lib/Select/index.js +0 -5
- package/lib/SideNav/Item.js +5 -29
- package/lib/SideNav/ItemContent.js +1 -14
- package/lib/SideNav/ItemsGroup.js +9 -31
- package/lib/SideNav/SideNav.js +9 -33
- package/lib/SideNav/index.js +0 -2
- package/lib/Skeleton/Skeleton.js +10 -42
- package/lib/Skeleton/index.js +0 -3
- package/lib/Skeleton/skeletonWebAnimation.js +0 -2
- package/lib/Skeleton/useSkeletonNativeAnimation.js +1 -9
- package/lib/SkipLink/SkipLink.js +7 -27
- package/lib/SkipLink/index.js +0 -3
- package/lib/Spacer/Spacer.js +4 -20
- package/lib/Spacer/index.js +0 -3
- package/lib/StackView/StackView.js +3 -21
- package/lib/StackView/StackWrap.js +11 -21
- package/lib/StackView/StackWrap.native.js +0 -3
- package/lib/StackView/StackWrapBox.js +5 -21
- package/lib/StackView/StackWrapGap.js +1 -14
- package/lib/StackView/common.js +0 -6
- package/lib/StackView/getStackedContent.js +10 -21
- package/lib/StackView/index.js +0 -5
- package/lib/StepTracker/Step.js +3 -27
- package/lib/StepTracker/StepTracker.js +5 -32
- package/lib/StepTracker/index.js +0 -3
- package/lib/Tabs/Tabs.js +7 -30
- package/lib/Tabs/TabsItem.js +13 -38
- package/lib/Tabs/index.js +0 -3
- package/lib/Tags/Tags.js +9 -42
- package/lib/Tags/index.js +0 -3
- package/lib/TextInput/TextArea.js +11 -20
- package/lib/TextInput/TextInput.js +7 -16
- package/lib/TextInput/TextInputBase.js +106 -69
- package/lib/TextInput/index.js +0 -3
- package/lib/TextInput/propTypes.js +4 -7
- package/lib/ThemeProvider/ThemeProvider.js +10 -18
- package/lib/ThemeProvider/index.js +0 -9
- package/lib/ThemeProvider/useSetTheme.js +6 -9
- package/lib/ThemeProvider/useTheme.js +2 -7
- package/lib/ThemeProvider/useThemeTokens.js +1 -9
- package/lib/ThemeProvider/utils/index.js +0 -4
- package/lib/ThemeProvider/utils/styles.js +14 -35
- package/lib/ThemeProvider/utils/theme-tokens.js +15 -43
- package/lib/Timeline/Timeline.js +11 -27
- package/lib/Timeline/index.js +0 -3
- package/lib/ToggleSwitch/ToggleSwitch.js +12 -43
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +4 -38
- package/lib/ToggleSwitch/index.js +0 -3
- package/lib/Tooltip/Backdrop.js +4 -11
- package/lib/Tooltip/Backdrop.native.js +1 -14
- package/lib/Tooltip/Tooltip.js +9 -37
- package/lib/Tooltip/Tooltip.native.js +14 -45
- package/lib/Tooltip/getTooltipPosition.js +26 -31
- package/lib/Tooltip/index.js +0 -5
- package/lib/Tooltip/shared.js +0 -10
- package/lib/TooltipButton/TooltipButton.js +5 -20
- package/lib/TooltipButton/index.js +0 -3
- package/lib/Typography/Typography.js +15 -38
- package/lib/Typography/index.js +0 -3
- package/lib/Validator/Validator.js +10 -58
- package/lib/Validator/index.js +0 -3
- package/lib/ViewportProvider/ViewportProvider.js +1 -13
- package/lib/ViewportProvider/index.js +0 -5
- package/lib/ViewportProvider/useViewport.js +0 -4
- package/lib/ViewportProvider/useViewportListener.js +3 -12
- package/lib/index.js +8 -71
- package/lib/utils/BaseView/BaseView.js +3 -17
- package/lib/utils/BaseView/BaseView.native.js +0 -3
- package/lib/utils/BaseView/index.js +0 -3
- package/lib/utils/a11y/index.js +0 -4
- package/lib/utils/a11y/semantics.js +14 -32
- package/lib/utils/a11y/textSize.js +1 -8
- package/lib/utils/animation/index.js +0 -2
- package/lib/utils/animation/useVerticalExpandAnimation.js +5 -18
- package/lib/utils/children.js +16 -28
- package/lib/utils/containUniqueFields.js +2 -5
- package/lib/utils/floating-ui/index.js +0 -1
- package/lib/utils/floating-ui/index.native.js +0 -1
- package/lib/utils/hasOwnProperty.js +0 -1
- package/lib/utils/htmlAttrs.js +2 -4
- package/lib/utils/index.js +0 -31
- package/lib/utils/info/index.js +0 -4
- package/lib/utils/info/platform/index.js +0 -4
- package/lib/utils/info/versions.js +0 -3
- package/lib/utils/input.js +12 -24
- package/lib/utils/pressability.js +7 -21
- package/lib/utils/props/a11yProps.js +19 -25
- package/lib/utils/props/clickProps.js +0 -4
- package/lib/utils/props/componentPropType.js +0 -14
- package/lib/utils/props/copyPropTypes.js +0 -4
- package/lib/utils/props/getPropSelector.js +11 -12
- package/lib/utils/props/handlerProps.js +2 -23
- package/lib/utils/props/hrefAttrsProp.js +0 -4
- package/lib/utils/props/index.js +0 -22
- package/lib/utils/props/inputSupportsProps.js +0 -9
- package/lib/utils/props/linkProps.js +2 -12
- package/lib/utils/props/paddingProp.js +0 -3
- package/lib/utils/props/pressProps.js +2 -8
- package/lib/utils/props/rectProp.js +0 -3
- package/lib/utils/props/responsiveProps.js +1 -5
- package/lib/utils/props/selectSystemProps.js +4 -6
- package/lib/utils/props/spacingProps.js +3 -10
- package/lib/utils/props/textInputProps.js +11 -31
- package/lib/utils/props/textProps.js +6 -11
- package/lib/utils/props/tokens.js +7 -26
- package/lib/utils/props/variantProp.js +0 -3
- package/lib/utils/props/viewProps.js +0 -5
- package/lib/utils/ssr.js +13 -33
- package/lib/utils/useCopy.js +3 -6
- package/lib/utils/useHash.js +5 -10
- package/lib/utils/useHash.native.js +0 -2
- package/lib/utils/useOverlaidPosition.js +6 -29
- package/lib/utils/useResponsiveProp.js +6 -13
- package/lib/utils/useSafeLayoutEffect.js +5 -10
- package/lib/utils/useScrollBlocking.js +3 -11
- package/lib/utils/useScrollBlocking.native.js +0 -2
- package/lib/utils/useSpacingScale.js +5 -8
- package/lib/utils/useUniqueId.js +0 -4
- package/lib/utils/withLinkRouter.js +13 -18
- package/lib-module/A11yInfoProvider/index.js +5 -9
- package/lib-module/A11yText/index.js +3 -4
- package/lib-module/ActivityIndicator/Spinner.js +2 -2
- package/lib-module/ActivityIndicator/Spinner.native.js +4 -6
- package/lib-module/ActivityIndicator/index.js +1 -5
- package/lib-module/ActivityIndicator/shared.js +2 -1
- package/lib-module/Autocomplete/Autocomplete.js +34 -59
- package/lib-module/Autocomplete/Loading.js +0 -2
- package/lib-module/BaseProvider/HydrationContext.js +4 -7
- package/lib-module/BaseProvider/index.js +0 -3
- package/lib-module/Box/Box.js +10 -24
- package/lib-module/Button/Button.js +4 -2
- package/lib-module/Button/ButtonBase.js +23 -35
- package/lib-module/Button/ButtonDropdown.js +7 -16
- package/lib-module/Button/ButtonGroup.js +15 -32
- package/lib-module/Button/ButtonLink.js +3 -2
- package/lib-module/Button/propTypes.js +0 -7
- package/lib-module/Card/Card.js +3 -2
- package/lib-module/Card/CardBase.js +5 -4
- package/lib-module/Card/PressableCardBase.js +7 -11
- package/lib-module/Carousel/Carousel.js +22 -60
- package/lib-module/Carousel/CarouselContext.js +0 -5
- package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +7 -5
- package/lib-module/Carousel/CarouselItem/CarouselItem.js +5 -11
- package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -2
- package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +3 -4
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -6
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -10
- package/lib-module/Carousel/CarouselThumbnail.js +1 -7
- package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -2
- package/lib-module/Checkbox/Checkbox.js +5 -23
- package/lib-module/Checkbox/CheckboxButton.js +7 -17
- package/lib-module/Checkbox/CheckboxGroup.js +5 -23
- package/lib-module/Checkbox/CheckboxInput.js +1 -3
- package/lib-module/Checkbox/CheckboxInput.native.js +0 -1
- package/lib-module/CheckboxCard/CheckboxCard.js +4 -21
- package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +205 -0
- package/lib-module/CheckboxCardGroup/index.js +2 -0
- package/lib-module/Divider/Divider.js +13 -11
- package/lib-module/ExpandCollapse/Accordion.js +1 -1
- package/lib-module/ExpandCollapse/Control.js +10 -17
- package/lib-module/ExpandCollapse/ExpandCollapse.js +3 -9
- package/lib-module/ExpandCollapse/Panel.js +13 -23
- package/lib-module/Feedback/Feedback.js +13 -16
- package/lib-module/Fieldset/Fieldset.js +6 -25
- package/lib-module/Fieldset/FieldsetContainer.js +1 -1
- package/lib-module/Fieldset/FieldsetContainer.native.js +0 -1
- package/lib-module/Fieldset/Legend.js +1 -1
- package/lib-module/Fieldset/Legend.native.js +1 -1
- package/lib-module/FlexGrid/Col/Col.js +10 -37
- package/lib-module/FlexGrid/FlexGrid.js +3 -17
- package/lib-module/FlexGrid/Row/Row.js +0 -25
- package/lib-module/FlexGrid/helpers/index.js +0 -3
- package/lib-module/HorizontalScroll/HorizontalScroll.js +17 -27
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +1 -3
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -4
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -1
- package/lib-module/HorizontalScroll/itemPositions.js +11 -10
- package/lib-module/Icon/Icon.js +4 -8
- package/lib-module/Icon/IconText.js +6 -17
- package/lib-module/IconButton/IconButton.js +7 -20
- package/lib-module/InputLabel/InputLabel.js +4 -13
- package/lib-module/InputLabel/LabelContent.js +2 -1
- package/lib-module/InputLabel/LabelContent.native.js +0 -1
- package/lib-module/InputSupports/InputSupports.js +0 -9
- package/lib-module/InputSupports/useInputSupports.js +2 -4
- package/lib-module/Link/ChevronLink.js +7 -7
- package/lib-module/Link/InlinePressable.js +0 -2
- package/lib-module/Link/InlinePressable.native.js +4 -12
- package/lib-module/Link/LinkBase.js +17 -25
- package/lib-module/Link/TextButton.js +3 -5
- package/lib-module/List/List.js +5 -9
- package/lib-module/List/ListItem.js +1 -1
- package/lib-module/List/ListItemBase.js +5 -17
- package/lib-module/List/ListItemContent.js +1 -4
- package/lib-module/List/ListItemMark.js +3 -16
- package/lib-module/List/PressableListItemBase.js +2 -6
- package/lib-module/Listbox/GroupControl.js +0 -2
- package/lib-module/Listbox/Listbox.js +15 -23
- package/lib-module/Listbox/ListboxContext.js +0 -2
- package/lib-module/Listbox/ListboxGroup.js +6 -4
- package/lib-module/Listbox/ListboxItem.js +2 -1
- package/lib-module/Listbox/ListboxOverlay.js +3 -4
- package/lib-module/Listbox/PressableItem.js +2 -7
- package/lib-module/Modal/Modal.js +94 -25
- package/lib-module/Modal/ModalContent.js +175 -0
- package/lib-module/MultiSelectFilter/ModalOverlay.js +1 -4
- package/lib-module/MultiSelectFilter/MultiSelectFilter.js +20 -42
- package/lib-module/Notification/Notification.js +11 -22
- package/lib-module/Pagination/PageButton.js +2 -6
- package/lib-module/Pagination/Pagination.js +21 -21
- package/lib-module/Pagination/SideButton.js +3 -8
- package/lib-module/Pagination/usePagination.js +4 -8
- package/lib-module/Progress/Progress.js +3 -7
- package/lib-module/Progress/ProgressBar.js +3 -11
- package/lib-module/Progress/ProgressBarBackground.js +0 -2
- package/lib-module/QuickLinks/QuickLinks.js +1 -6
- package/lib-module/QuickLinks/QuickLinksCard.js +1 -3
- package/lib-module/QuickLinks/QuickLinksItem.js +3 -2
- package/lib-module/QuickLinksFeature/QuickLinksFeature.js +5 -9
- package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +9 -13
- package/lib-module/Radio/Radio.js +5 -22
- package/lib-module/Radio/RadioButton.js +8 -10
- package/lib-module/Radio/RadioGroup.js +6 -25
- package/lib-module/Radio/RadioInput.js +1 -3
- package/lib-module/Radio/RadioInput.native.js +0 -1
- package/lib-module/RadioCard/RadioCard.js +5 -21
- package/lib-module/RadioCard/RadioCardGroup.js +7 -25
- package/lib-module/Responsive/Responsive.js +1 -6
- package/lib-module/Search/Search.js +22 -31
- package/lib-module/Select/Group.js +0 -3
- package/lib-module/Select/Group.native.js +0 -3
- package/lib-module/Select/Item.js +0 -3
- package/lib-module/Select/Item.native.js +0 -1
- package/lib-module/Select/Picker.native.js +8 -10
- package/lib-module/Select/Select.js +10 -35
- package/lib-module/SideNav/Item.js +5 -16
- package/lib-module/SideNav/ItemContent.js +1 -2
- package/lib-module/SideNav/ItemsGroup.js +9 -19
- package/lib-module/SideNav/SideNav.js +9 -22
- package/lib-module/Skeleton/Skeleton.js +10 -25
- package/lib-module/Skeleton/skeletonWebAnimation.js +0 -1
- package/lib-module/Skeleton/useSkeletonNativeAnimation.js +1 -3
- package/lib-module/SkipLink/SkipLink.js +7 -9
- package/lib-module/Spacer/Spacer.js +4 -7
- package/lib-module/StackView/StackView.js +3 -7
- package/lib-module/StackView/StackWrap.js +13 -13
- package/lib-module/StackView/StackWrap.native.js +2 -1
- package/lib-module/StackView/StackWrapBox.js +5 -8
- package/lib-module/StackView/StackWrapGap.js +1 -1
- package/lib-module/StackView/getStackedContent.js +10 -10
- package/lib-module/StepTracker/Step.js +3 -14
- package/lib-module/StepTracker/StepTracker.js +5 -13
- package/lib-module/Tabs/Tabs.js +7 -16
- package/lib-module/Tabs/TabsItem.js +13 -16
- package/lib-module/Tags/Tags.js +9 -26
- package/lib-module/TextInput/TextArea.js +11 -8
- package/lib-module/TextInput/TextInput.js +7 -5
- package/lib-module/TextInput/TextInputBase.js +107 -51
- package/lib-module/TextInput/propTypes.js +7 -6
- package/lib-module/ThemeProvider/ThemeProvider.js +10 -9
- package/lib-module/ThemeProvider/useSetTheme.js +6 -7
- package/lib-module/ThemeProvider/useTheme.js +2 -5
- package/lib-module/ThemeProvider/useThemeTokens.js +1 -2
- package/lib-module/ThemeProvider/utils/styles.js +15 -27
- package/lib-module/ThemeProvider/utils/theme-tokens.js +15 -20
- package/lib-module/Timeline/Timeline.js +11 -17
- package/lib-module/ToggleSwitch/ToggleSwitch.js +13 -26
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +4 -23
- package/lib-module/Tooltip/Backdrop.js +4 -7
- package/lib-module/Tooltip/Backdrop.native.js +1 -4
- package/lib-module/Tooltip/Tooltip.js +9 -18
- package/lib-module/Tooltip/Tooltip.native.js +14 -23
- package/lib-module/Tooltip/getTooltipPosition.js +26 -30
- package/lib-module/Tooltip/shared.js +0 -6
- package/lib-module/TooltipButton/TooltipButton.js +5 -8
- package/lib-module/Typography/Typography.js +14 -22
- package/lib-module/Validator/Validator.js +10 -42
- package/lib-module/ViewportProvider/ViewportProvider.js +1 -3
- package/lib-module/ViewportProvider/useViewportListener.js +6 -8
- package/lib-module/index.js +1 -0
- package/lib-module/utils/BaseView/BaseView.js +3 -4
- package/lib-module/utils/BaseView/BaseView.native.js +0 -1
- package/lib-module/utils/a11y/semantics.js +14 -27
- package/lib-module/utils/a11y/textSize.js +1 -2
- package/lib-module/utils/animation/useVerticalExpandAnimation.js +8 -11
- package/lib-module/utils/children.js +17 -19
- package/lib-module/utils/containUniqueFields.js +2 -4
- package/lib-module/utils/htmlAttrs.js +2 -1
- package/lib-module/utils/info/index.js +2 -1
- package/lib-module/utils/info/platform/index.js +4 -1
- package/lib-module/utils/info/versions.js +2 -1
- package/lib-module/utils/input.js +11 -19
- package/lib-module/utils/pressability.js +8 -7
- package/lib-module/utils/props/a11yProps.js +22 -20
- package/lib-module/utils/props/clickProps.js +0 -1
- package/lib-module/utils/props/componentPropType.js +0 -13
- package/lib-module/utils/props/getPropSelector.js +12 -8
- package/lib-module/utils/props/handlerProps.js +2 -19
- package/lib-module/utils/props/hrefAttrsProp.js +2 -2
- package/lib-module/utils/props/inputSupportsProps.js +0 -6
- package/lib-module/utils/props/linkProps.js +2 -3
- package/lib-module/utils/props/pressProps.js +2 -2
- package/lib-module/utils/props/responsiveProps.js +1 -3
- package/lib-module/utils/props/selectSystemProps.js +4 -5
- package/lib-module/utils/props/spacingProps.js +4 -3
- package/lib-module/utils/props/textInputProps.js +14 -27
- package/lib-module/utils/props/textProps.js +9 -7
- package/lib-module/utils/props/tokens.js +10 -13
- package/lib-module/utils/props/variantProp.js +1 -1
- package/lib-module/utils/props/viewProps.js +0 -1
- package/lib-module/utils/ssr.js +14 -18
- package/lib-module/utils/useCopy.js +3 -5
- package/lib-module/utils/useHash.js +5 -9
- package/lib-module/utils/useHash.native.js +0 -1
- package/lib-module/utils/useOverlaidPosition.js +6 -25
- package/lib-module/utils/useResponsiveProp.js +6 -7
- package/lib-module/utils/useSafeLayoutEffect.js +5 -7
- package/lib-module/utils/useScrollBlocking.js +3 -10
- package/lib-module/utils/useSpacingScale.js +4 -4
- package/lib-module/utils/useUniqueId.js +0 -2
- package/lib-module/utils/withLinkRouter.js +13 -10
- package/package.json +2 -2
- package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +230 -0
- package/src/CheckboxCardGroup/index.js +3 -0
- package/src/Modal/Modal.jsx +98 -5
- package/src/Modal/ModalContent.jsx +171 -0
- package/src/TextInput/TextInputBase.jsx +67 -12
- package/src/TextInput/propTypes.js +4 -0
- package/src/index.js +1 -0
- package/src/utils/props/textInputProps.js +1 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { useViewport } from '../ViewportProvider';
|
|
4
|
+
import { useThemeTokens } from '../ThemeProvider';
|
|
5
|
+
import { a11yProps, containUniqueFields, focusHandlerProps, getTokensPropType, selectSystemProps, useMultipleInputValues, variantProp, viewProps } from '../utils';
|
|
6
|
+
import StackView, { StackWrap } from '../StackView';
|
|
7
|
+
import CheckboxCard from '../CheckboxCard';
|
|
8
|
+
import Fieldset from '../Fieldset';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
11
|
+
const [selectItemProps, selectedItemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, viewProps]);
|
|
12
|
+
const CheckboxCardGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
13
|
+
let {
|
|
14
|
+
copy = 'en',
|
|
15
|
+
tokens,
|
|
16
|
+
checkboxCardTokens,
|
|
17
|
+
variant,
|
|
18
|
+
items = [],
|
|
19
|
+
legend,
|
|
20
|
+
tooltip,
|
|
21
|
+
hint,
|
|
22
|
+
hintPosition = 'inline',
|
|
23
|
+
validation,
|
|
24
|
+
feedback,
|
|
25
|
+
initialCheckedIds,
|
|
26
|
+
checkedIds,
|
|
27
|
+
onChange,
|
|
28
|
+
readOnly,
|
|
29
|
+
name: inputGroupName,
|
|
30
|
+
inactive,
|
|
31
|
+
...rest
|
|
32
|
+
} = _ref;
|
|
33
|
+
const viewport = useViewport();
|
|
34
|
+
const {
|
|
35
|
+
space,
|
|
36
|
+
fieldSpace,
|
|
37
|
+
direction,
|
|
38
|
+
outlineWidth,
|
|
39
|
+
borderTopLeftRadius,
|
|
40
|
+
borderTopRightRadius,
|
|
41
|
+
borderBottomLeftRadius,
|
|
42
|
+
borderBottomRightRadius,
|
|
43
|
+
outlineOffset
|
|
44
|
+
} = useThemeTokens('CheckboxCardGroup', tokens, variant, {
|
|
45
|
+
viewport
|
|
46
|
+
});
|
|
47
|
+
const borderTokens = {
|
|
48
|
+
outlineWidth,
|
|
49
|
+
borderTopLeftRadius,
|
|
50
|
+
borderTopRightRadius,
|
|
51
|
+
borderBottomLeftRadius,
|
|
52
|
+
borderBottomRightRadius,
|
|
53
|
+
outlineOffset
|
|
54
|
+
};
|
|
55
|
+
const {
|
|
56
|
+
currentValues,
|
|
57
|
+
toggleOneValue
|
|
58
|
+
} = useMultipleInputValues({
|
|
59
|
+
value: checkedIds,
|
|
60
|
+
initialValues: initialCheckedIds,
|
|
61
|
+
onChange,
|
|
62
|
+
readOnly: readOnly || inactive
|
|
63
|
+
});
|
|
64
|
+
const StackContainer = direction === 'row' ? StackWrap : StackView;
|
|
65
|
+
// Needs 'checkboxgroup' role on direct parent of checkboxes for MacOS Voiceover's numbering to work,
|
|
66
|
+
// and also needs 'checkboxgroup' role on fieldset for correct description on focusing the set.
|
|
67
|
+
// TODO: test this on more web screen readers.
|
|
68
|
+
|
|
69
|
+
const uniqueFields = ['id'];
|
|
70
|
+
if (!containUniqueFields(items, uniqueFields)) {
|
|
71
|
+
throw new Error(`CheckboxCardGroup items must have unique ${uniqueFields.join(', ')}`);
|
|
72
|
+
}
|
|
73
|
+
return /*#__PURE__*/_jsx(Fieldset, {
|
|
74
|
+
copy: copy,
|
|
75
|
+
ref: ref,
|
|
76
|
+
name: inputGroupName,
|
|
77
|
+
legend: legend,
|
|
78
|
+
tooltip: tooltip,
|
|
79
|
+
hint: hint,
|
|
80
|
+
hintPosition: hintPosition,
|
|
81
|
+
space: fieldSpace,
|
|
82
|
+
feedback: feedback,
|
|
83
|
+
inactive: inactive || readOnly,
|
|
84
|
+
validation: validation,
|
|
85
|
+
tokens: borderTokens,
|
|
86
|
+
showErrorBorder: true,
|
|
87
|
+
showIcon: true,
|
|
88
|
+
accessibilityRole: "checkbox",
|
|
89
|
+
...selectProps(rest),
|
|
90
|
+
children: checkboxCardProperties => /*#__PURE__*/_jsx(StackContainer, {
|
|
91
|
+
space: space,
|
|
92
|
+
accessibilityRole: "checkbox",
|
|
93
|
+
children: items.map((_ref2, index) => {
|
|
94
|
+
let {
|
|
95
|
+
title,
|
|
96
|
+
content,
|
|
97
|
+
id,
|
|
98
|
+
onChange: itemOnChange,
|
|
99
|
+
...itemRest
|
|
100
|
+
} = _ref2;
|
|
101
|
+
const cardId = id || `CheckboxCard[${index}]`;
|
|
102
|
+
const handleChange = (newCheckedState, event) => {
|
|
103
|
+
if (typeof itemOnChange === 'function') itemOnChange(newCheckedState, event);
|
|
104
|
+
toggleOneValue(cardId, event);
|
|
105
|
+
};
|
|
106
|
+
return /*#__PURE__*/_jsx(CheckboxCard, {
|
|
107
|
+
id: cardId,
|
|
108
|
+
checked: currentValues.includes(cardId),
|
|
109
|
+
onChange: handleChange,
|
|
110
|
+
inactive: inactive,
|
|
111
|
+
title: title,
|
|
112
|
+
name: inputGroupName,
|
|
113
|
+
tokens: checkboxCardTokens,
|
|
114
|
+
variant: variant,
|
|
115
|
+
readOnly: readOnly,
|
|
116
|
+
...selectItemProps(itemRest),
|
|
117
|
+
...checkboxCardProperties,
|
|
118
|
+
children: content
|
|
119
|
+
}, cardId);
|
|
120
|
+
})
|
|
121
|
+
})
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
CheckboxCardGroup.displayName = 'CheckboxCardGroup';
|
|
125
|
+
CheckboxCardGroup.propTypes = {
|
|
126
|
+
...selectedSystemPropTypes,
|
|
127
|
+
/**
|
|
128
|
+
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
129
|
+
*/
|
|
130
|
+
copy: PropTypes.oneOf(['en', 'fr']),
|
|
131
|
+
/**
|
|
132
|
+
* Optional theme token overrides for the outer CheckboxCardGroup component
|
|
133
|
+
*/
|
|
134
|
+
tokens: getTokensPropType('CheckboxCardGroup'),
|
|
135
|
+
/**
|
|
136
|
+
* Optional theme token overrides for each inner CheckboxCard component
|
|
137
|
+
*/
|
|
138
|
+
checkboxCardTokens: getTokensPropType('CheckboxCard'),
|
|
139
|
+
/**
|
|
140
|
+
* Theme variants, shared between both CheckboxCardGroup and CheckboxCard
|
|
141
|
+
*/
|
|
142
|
+
variant: variantProp.propType,
|
|
143
|
+
/**
|
|
144
|
+
* Array of objects containing specifics for each CheckboxCard to be rendered in the group.
|
|
145
|
+
*/
|
|
146
|
+
items: PropTypes.arrayOf(PropTypes.exact({
|
|
147
|
+
...selectedItemPropTypes,
|
|
148
|
+
title: PropTypes.string,
|
|
149
|
+
content: PropTypes.node,
|
|
150
|
+
id: PropTypes.string,
|
|
151
|
+
onChange: PropTypes.func
|
|
152
|
+
})),
|
|
153
|
+
/**
|
|
154
|
+
* Main text used to describe this group, used in Fieldset's Legend element.
|
|
155
|
+
*/
|
|
156
|
+
legend: PropTypes.string,
|
|
157
|
+
/**
|
|
158
|
+
* Optional additional text giving more detail to help a user make a choice.
|
|
159
|
+
*/
|
|
160
|
+
hint: PropTypes.string,
|
|
161
|
+
/**
|
|
162
|
+
* Position of the hint relative to label. Use `below` to display a larger hint below the label.
|
|
163
|
+
*/
|
|
164
|
+
hintPosition: PropTypes.oneOf(['inline', 'below']),
|
|
165
|
+
/**
|
|
166
|
+
* Optional tooltip text content to include alongside the legend and hint.
|
|
167
|
+
*/
|
|
168
|
+
tooltip: PropTypes.string,
|
|
169
|
+
/**
|
|
170
|
+
* Current validation status of the group, passed to the feedback element if there is one.
|
|
171
|
+
*/
|
|
172
|
+
validation: PropTypes.oneOf(['error', 'success']),
|
|
173
|
+
/**
|
|
174
|
+
* If provided, a Feedback element is rendered containing this text.
|
|
175
|
+
*/
|
|
176
|
+
feedback: PropTypes.string,
|
|
177
|
+
/**
|
|
178
|
+
* If provided, the checkboxed with this ids are selected on first render.
|
|
179
|
+
*/
|
|
180
|
+
initialCheckedIds: PropTypes.arrayOf(PropTypes.string),
|
|
181
|
+
/**
|
|
182
|
+
* If not undefined, the checkboxes with these ids is selected, and the
|
|
183
|
+
* element's selection state will be controlled by its parent using the `onChange` function.
|
|
184
|
+
*/
|
|
185
|
+
checkedIds: PropTypes.arrayOf(PropTypes.string),
|
|
186
|
+
/**
|
|
187
|
+
* Function to call on change in selection state. Is required if the selection state is controlled
|
|
188
|
+
* by a parent using checkedId and the input is not readOnly.
|
|
189
|
+
*/
|
|
190
|
+
onChange: PropTypes.func,
|
|
191
|
+
/**
|
|
192
|
+
* If true, the checkbox cards cannot be selected by the user and simply show their current state.
|
|
193
|
+
*/
|
|
194
|
+
readOnly: PropTypes.bool,
|
|
195
|
+
/**
|
|
196
|
+
* If true, the checkbox card cannot be interacted with, elements are set as `disabled` and if the
|
|
197
|
+
* theme supports `inactive` appearances rules, these are applied.
|
|
198
|
+
*/
|
|
199
|
+
inactive: PropTypes.bool,
|
|
200
|
+
/**
|
|
201
|
+
* On Web, this is passed to the `name` attribute of the fieldset and each checkbox input.
|
|
202
|
+
*/
|
|
203
|
+
name: PropTypes.string
|
|
204
|
+
};
|
|
205
|
+
export default CheckboxCardGroup;
|
|
@@ -10,6 +10,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
10
10
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
12
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
13
|
+
|
|
13
14
|
/**
|
|
14
15
|
* @typedef {import('../utils/props/spacingProps.js').SpacingIndex} SpacingIndex
|
|
15
16
|
* @typedef {import('../utils/props/spacingProps.js').SpacingObject} SpacingObject
|
|
@@ -51,7 +52,6 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
|
|
|
51
52
|
*
|
|
52
53
|
* For accessibility purposes a divider component will be described with ARIA attributes, i.e. `role="separator"` and `aria-orientation="vertical/horizontal"`.
|
|
53
54
|
*/
|
|
54
|
-
|
|
55
55
|
const Divider = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
56
56
|
let {
|
|
57
57
|
variant,
|
|
@@ -71,52 +71,54 @@ const Divider = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
71
71
|
borderBottomColor: color,
|
|
72
72
|
borderBottomWidth: width
|
|
73
73
|
};
|
|
74
|
-
const a11y = Platform.OS === 'web' ?
|
|
74
|
+
const a11y = Platform.OS === 'web' ?
|
|
75
|
+
// There are aria attributes for dividers on web
|
|
75
76
|
{
|
|
76
77
|
// Early versions of React Native Web support 'aria-orientation' while
|
|
77
78
|
// later versions only support accessibilityOrientation and map it. Supply both.
|
|
78
79
|
'aria-orientation': vertical ? 'vertical' : 'horizontal',
|
|
79
80
|
accessibilityOrientation: vertical ? 'vertical' : 'horizontal',
|
|
80
81
|
accessibilityRole: 'separator'
|
|
81
|
-
} :
|
|
82
|
+
} :
|
|
83
|
+
// There are no such equivalent attributes for native
|
|
82
84
|
{};
|
|
83
85
|
const {
|
|
84
86
|
testID,
|
|
85
87
|
...selectedProps
|
|
86
|
-
} = selectProps({
|
|
88
|
+
} = selectProps({
|
|
89
|
+
...a11y,
|
|
87
90
|
...rest
|
|
88
91
|
});
|
|
89
|
-
|
|
90
92
|
const divider = /*#__PURE__*/_jsx(View, {
|
|
91
93
|
ref: ref,
|
|
92
94
|
style: [styles.divider, borderStyles],
|
|
93
95
|
testID: testID,
|
|
94
96
|
...selectedProps
|
|
95
97
|
});
|
|
96
|
-
|
|
97
98
|
if (!space) return divider;
|
|
98
99
|
const spacerProps = {
|
|
99
100
|
space,
|
|
100
101
|
direction: vertical ? 'row' : 'column'
|
|
101
102
|
};
|
|
102
103
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
103
|
-
children: [/*#__PURE__*/_jsx(Spacer, {
|
|
104
|
+
children: [/*#__PURE__*/_jsx(Spacer, {
|
|
105
|
+
...spacerProps,
|
|
104
106
|
testID: testID ? `${testID}-Spacer-before` : undefined
|
|
105
|
-
}), divider, /*#__PURE__*/_jsx(Spacer, {
|
|
107
|
+
}), divider, /*#__PURE__*/_jsx(Spacer, {
|
|
108
|
+
...spacerProps,
|
|
106
109
|
testID: testID ? `${testID}-Spacer-after` : undefined
|
|
107
110
|
})]
|
|
108
111
|
});
|
|
109
112
|
});
|
|
110
113
|
Divider.displayName = 'Divider';
|
|
111
|
-
Divider.propTypes = {
|
|
114
|
+
Divider.propTypes = {
|
|
115
|
+
...selectedSystemPropTypes,
|
|
112
116
|
tokens: getTokensPropType('Divider'),
|
|
113
|
-
|
|
114
117
|
/**
|
|
115
118
|
* A number referring to a position on the space scale to create space on either side of the divider
|
|
116
119
|
*/
|
|
117
120
|
space: spacingProps.types.spacingValue,
|
|
118
121
|
variant: variantProp.propType,
|
|
119
|
-
|
|
120
122
|
/**
|
|
121
123
|
* By default, the divider is a horizontal line the full width of its parent.
|
|
122
124
|
* With `vertical` prop and when inside a container with { flexDirection: row }, draws a full height vertical line.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
2
|
import ExpandCollapse from './ExpandCollapse';
|
|
3
|
+
|
|
3
4
|
/**
|
|
4
5
|
* 'Accordion' is a shorthand for an ExpandCollapse where only one item may be open at a time
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
const Accordion = /*#__PURE__*/forwardRef((props, ref) => /*#__PURE__*/_jsx(ExpandCollapse, {
|
|
9
9
|
ref: ref,
|
|
@@ -10,7 +10,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
10
10
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
12
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
13
|
-
|
|
14
13
|
function selectContainerStyles(_ref) {
|
|
15
14
|
let {
|
|
16
15
|
backgroundColor,
|
|
@@ -46,9 +45,9 @@ function selectContainerStyles(_ref) {
|
|
|
46
45
|
borderBottomLeftRadius,
|
|
47
46
|
...verticalAlignRow(verticalAlign, iconPosition === 'right')
|
|
48
47
|
};
|
|
49
|
-
}
|
|
50
|
-
|
|
48
|
+
}
|
|
51
49
|
|
|
50
|
+
// TODO: use stack / spacer when available
|
|
52
51
|
function selectIconContainerStyles(_ref2) {
|
|
53
52
|
let {
|
|
54
53
|
iconGap,
|
|
@@ -61,7 +60,6 @@ function selectIconContainerStyles(_ref2) {
|
|
|
61
60
|
paddingTop: iconPaddingTop
|
|
62
61
|
};
|
|
63
62
|
}
|
|
64
|
-
|
|
65
63
|
function selectTextContainerStyles(_ref3) {
|
|
66
64
|
let {
|
|
67
65
|
textLine
|
|
@@ -71,14 +69,12 @@ function selectTextContainerStyles(_ref3) {
|
|
|
71
69
|
flex: 1
|
|
72
70
|
};
|
|
73
71
|
}
|
|
74
|
-
|
|
75
72
|
function selectIconTokens(tokens) {
|
|
76
73
|
return {
|
|
77
74
|
color: tokens.iconColor,
|
|
78
75
|
size: tokens.iconSize
|
|
79
76
|
};
|
|
80
77
|
}
|
|
81
|
-
|
|
82
78
|
const ExpandCollapseControl = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
83
79
|
let {
|
|
84
80
|
onPress,
|
|
@@ -93,11 +89,11 @@ const ExpandCollapseControl = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
|
93
89
|
const selectedProps = selectProps({
|
|
94
90
|
accessibilityRole,
|
|
95
91
|
...rest,
|
|
96
|
-
accessibilityState: {
|
|
92
|
+
accessibilityState: {
|
|
93
|
+
...(rest.accessibilityState || {}),
|
|
97
94
|
expanded: isExpanded
|
|
98
95
|
}
|
|
99
96
|
});
|
|
100
|
-
|
|
101
97
|
const getControlState = _ref5 => {
|
|
102
98
|
let {
|
|
103
99
|
pressed,
|
|
@@ -111,15 +107,13 @@ const ExpandCollapseControl = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
|
111
107
|
expanded: isExpanded
|
|
112
108
|
};
|
|
113
109
|
};
|
|
114
|
-
|
|
115
110
|
const getControlTokens = pressableState => getTokens(getControlState(pressableState));
|
|
116
|
-
|
|
117
|
-
|
|
111
|
+
const getPressableStyle = pressableState => ({
|
|
112
|
+
...selectContainerStyles(getControlTokens(pressableState)),
|
|
118
113
|
...(Platform.OS === 'web' ? {
|
|
119
114
|
outline: 'none'
|
|
120
115
|
} : {})
|
|
121
116
|
});
|
|
122
|
-
|
|
123
117
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
124
118
|
ref: ref,
|
|
125
119
|
...selectedProps,
|
|
@@ -133,7 +127,8 @@ const ExpandCollapseControl = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
|
133
127
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
134
128
|
children: [IconComponent && /*#__PURE__*/_jsx(View, {
|
|
135
129
|
style: [selectIconContainerStyles(themeTokens), staticStyles.bubblePointerEvents],
|
|
136
|
-
children: /*#__PURE__*/_jsx(IconComponent, {
|
|
130
|
+
children: /*#__PURE__*/_jsx(IconComponent, {
|
|
131
|
+
...selectIconTokens(themeTokens)
|
|
137
132
|
})
|
|
138
133
|
}), /*#__PURE__*/_jsx(View, {
|
|
139
134
|
style: [selectTextContainerStyles(themeTokens), staticStyles.bubblePointerEvents],
|
|
@@ -149,21 +144,19 @@ const staticStyles = StyleSheet.create({
|
|
|
149
144
|
pointerEvents: 'none'
|
|
150
145
|
}
|
|
151
146
|
});
|
|
152
|
-
ExpandCollapseControl.propTypes = {
|
|
147
|
+
ExpandCollapseControl.propTypes = {
|
|
148
|
+
...selectedSystemPropTypes,
|
|
153
149
|
tokens: getTokensPropType('ExpandCollapseControl'),
|
|
154
150
|
variant: variantProp.propType,
|
|
155
|
-
|
|
156
151
|
/**
|
|
157
152
|
* ExpandCollapseControl's children are the content within the button that opens or closes this panel. May
|
|
158
153
|
* accept a render function that recieves the control state: { pressed, hover, focus, expanded }
|
|
159
154
|
*/
|
|
160
155
|
children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
161
|
-
|
|
162
156
|
/**
|
|
163
157
|
* Whether the linked ExpandCollapsePanel is opened or closed. Allows themes to set `expanded` styles.
|
|
164
158
|
*/
|
|
165
159
|
isExpanded: PropTypes.bool,
|
|
166
|
-
|
|
167
160
|
/**
|
|
168
161
|
* Function called when the ExpandCollapse is pressed.
|
|
169
162
|
*/
|
|
@@ -5,7 +5,6 @@ import { useThemeTokens } from '../ThemeProvider';
|
|
|
5
5
|
import { a11yProps, getTokensPropType, selectSystemProps, useMultipleInputValues, variantProp, viewProps } from '../utils';
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
7
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
8
|
-
|
|
9
8
|
function selectBorderStyles(tokens) {
|
|
10
9
|
return {
|
|
11
10
|
borderBottomWidth: tokens.borderWidth,
|
|
@@ -13,6 +12,7 @@ function selectBorderStyles(tokens) {
|
|
|
13
12
|
borderBottomColor: tokens.borderColor
|
|
14
13
|
};
|
|
15
14
|
}
|
|
15
|
+
|
|
16
16
|
/**
|
|
17
17
|
* Flexible base component for lists where some or all items are collapsible headers.
|
|
18
18
|
*
|
|
@@ -20,8 +20,6 @@ function selectBorderStyles(tokens) {
|
|
|
20
20
|
* <ExpandCollapse.Panel> children, and assign the panels explicit `panelId` props. The panels may be
|
|
21
21
|
* nested (they do not need to be direct children), and non-interactive items may be included too.
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
23
|
const ExpandCollapse = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
26
24
|
let {
|
|
27
25
|
children,
|
|
@@ -60,33 +58,29 @@ const ExpandCollapse = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
60
58
|
});
|
|
61
59
|
});
|
|
62
60
|
ExpandCollapse.displayName = 'ExpandCollapse';
|
|
63
|
-
ExpandCollapse.propTypes = {
|
|
61
|
+
ExpandCollapse.propTypes = {
|
|
62
|
+
...selectedSystemPropTypes,
|
|
64
63
|
variant: variantProp.propType,
|
|
65
64
|
tokens: getTokensPropType('ExpandCollapse'),
|
|
66
|
-
|
|
67
65
|
/**
|
|
68
66
|
* ExpandCollapse usually takes a render function to which it passes an object with properties
|
|
69
67
|
* { openIds, onToggle, resetValues, setValues, unsetValues }. openIds (array of ids) and
|
|
70
68
|
* onToggle (function) will usually be passed to `<ExpandCollapse.Panel>`
|
|
71
69
|
*/
|
|
72
70
|
children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,
|
|
73
|
-
|
|
74
71
|
/**
|
|
75
72
|
* If set, enforces a specific maximum number of open items, closing already-open items when new
|
|
76
73
|
* items are opened. By default, any number of items may be open at once.
|
|
77
74
|
*/
|
|
78
75
|
maxOpen: PropTypes.number,
|
|
79
|
-
|
|
80
76
|
/**
|
|
81
77
|
* If passed, the item or items that are expanded will be controlled by a parent component
|
|
82
78
|
*/
|
|
83
79
|
open: PropTypes.arrayOf(PropTypes.string),
|
|
84
|
-
|
|
85
80
|
/**
|
|
86
81
|
* Function called when which panels are currently open changes. Necessary if `open` is passed.
|
|
87
82
|
*/
|
|
88
83
|
onChange: PropTypes.func,
|
|
89
|
-
|
|
90
84
|
/**
|
|
91
85
|
* Allows items with specified ids to be open by default on first load. Should not be used with `open`.
|
|
92
86
|
*/
|
|
@@ -10,8 +10,9 @@ import { useThemeTokens } from '../ThemeProvider';
|
|
|
10
10
|
import { a11yProps, getTokensPropType, selectSystemProps, useVerticalExpandAnimation, variantProp, viewProps } from '../utils';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
12
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
13
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
14
14
|
|
|
15
|
+
// just void functions for now, since there are no style tokens for a panel or control at this point
|
|
15
16
|
const selectContainerStyles = _ref => {
|
|
16
17
|
let {
|
|
17
18
|
contentPaddingLeft,
|
|
@@ -27,7 +28,6 @@ const selectContainerStyles = _ref => {
|
|
|
27
28
|
flex: 1
|
|
28
29
|
};
|
|
29
30
|
};
|
|
30
|
-
|
|
31
31
|
const selectTextStyles = _ref2 => {
|
|
32
32
|
let {
|
|
33
33
|
contentPanelFontSize,
|
|
@@ -43,7 +43,6 @@ const selectTextStyles = _ref2 => {
|
|
|
43
43
|
color: contentPanelFontColor
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
|
-
|
|
47
46
|
const selectContentPanelStyles = _ref3 => {
|
|
48
47
|
let {
|
|
49
48
|
contentPanelBackgroundColor,
|
|
@@ -69,6 +68,7 @@ const selectContentPanelStyles = _ref3 => {
|
|
|
69
68
|
marginBottom
|
|
70
69
|
};
|
|
71
70
|
};
|
|
71
|
+
|
|
72
72
|
/**
|
|
73
73
|
* An item in an `ExpandCollapse` which contains collapsible `children` and a `control` that opens
|
|
74
74
|
* and closes the collapsible children when pressed.
|
|
@@ -79,8 +79,6 @@ const selectContentPanelStyles = _ref3 => {
|
|
|
79
79
|
* The panel does not need to be a direct child of the `<ExpandCollapse>` (unless this is required
|
|
80
80
|
* by the chosen accessibility props for a particular accessibility tools).
|
|
81
81
|
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
82
|
const ExpandCollapsePanel = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
85
83
|
let {
|
|
86
84
|
openIds = [],
|
|
@@ -98,32 +96,30 @@ const ExpandCollapsePanel = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
|
98
96
|
} = _ref4;
|
|
99
97
|
const [containerHeight, setContainerHeight] = useState(null);
|
|
100
98
|
const isExpanded = openIds.includes(panelId);
|
|
101
|
-
const selectedProps = selectProps({
|
|
102
|
-
|
|
99
|
+
const selectedProps = selectProps({
|
|
100
|
+
...rest,
|
|
101
|
+
accessibilityState: {
|
|
102
|
+
...(rest.accessibilityState || {}),
|
|
103
103
|
expanded: isExpanded
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
106
|
const themeTokens = useThemeTokens('ExpandCollapsePanel', tokens, variant, {
|
|
107
107
|
expanded: isExpanded
|
|
108
108
|
});
|
|
109
|
-
|
|
110
109
|
const handleControlPress = event => {
|
|
111
110
|
onToggle(panelId, event);
|
|
112
111
|
if (onPress) onPress(panelId, event);
|
|
113
112
|
};
|
|
114
|
-
|
|
115
113
|
const onContainerLayout = event => {
|
|
116
114
|
const {
|
|
117
115
|
layout: {
|
|
118
116
|
height = 0
|
|
119
117
|
} = {}
|
|
120
118
|
} = event.nativeEvent;
|
|
121
|
-
|
|
122
119
|
if (Platform.OS === 'web' || Platform.OS !== 'web' && containerHeight === null) {
|
|
123
120
|
setContainerHeight(height);
|
|
124
121
|
}
|
|
125
122
|
};
|
|
126
|
-
|
|
127
123
|
const [animatedStyles, animatedRef] = useVerticalExpandAnimation({
|
|
128
124
|
containerHeight,
|
|
129
125
|
isExpanded,
|
|
@@ -139,7 +135,8 @@ const ExpandCollapsePanel = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
|
139
135
|
}) : /*#__PURE__*/_jsxs(View, {
|
|
140
136
|
ref: ref,
|
|
141
137
|
style: themeTokens,
|
|
142
|
-
children: [/*#__PURE__*/_jsx(ExpandCollapseControl, {
|
|
138
|
+
children: [/*#__PURE__*/_jsx(ExpandCollapseControl, {
|
|
139
|
+
...selectedProps,
|
|
143
140
|
isExpanded: isExpanded,
|
|
144
141
|
tokens: controlTokens,
|
|
145
142
|
variant: variant,
|
|
@@ -159,7 +156,8 @@ const ExpandCollapsePanel = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
|
159
156
|
...focusabilityProps,
|
|
160
157
|
children: /*#__PURE__*/_jsx(View, {
|
|
161
158
|
onLayout: onContainerLayout,
|
|
162
|
-
style: {
|
|
159
|
+
style: {
|
|
160
|
+
...Platform.select({
|
|
163
161
|
default: {
|
|
164
162
|
flex: 1
|
|
165
163
|
},
|
|
@@ -175,52 +173,44 @@ const ExpandCollapsePanel = /*#__PURE__*/forwardRef((_ref4, ref) => {
|
|
|
175
173
|
});
|
|
176
174
|
});
|
|
177
175
|
ExpandCollapsePanel.displayName = 'ExpandCollapsePanel';
|
|
178
|
-
ExpandCollapsePanel.propTypes = {
|
|
176
|
+
ExpandCollapsePanel.propTypes = {
|
|
177
|
+
...selectedSystemPropTypes,
|
|
179
178
|
variant: variantProp.propType,
|
|
180
179
|
tokens: getTokensPropType('ExpandCollapsePanel'),
|
|
181
|
-
|
|
182
180
|
/**
|
|
183
181
|
* Array of the ids of currently open groups
|
|
184
182
|
*/
|
|
185
183
|
openIds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),
|
|
186
|
-
|
|
187
184
|
/**
|
|
188
185
|
* Unique name by which the ExpandCollapse controls this element.
|
|
189
186
|
*/
|
|
190
187
|
panelId: PropTypes.string.isRequired,
|
|
191
|
-
|
|
192
188
|
/**
|
|
193
189
|
* Function to call on pressing the panel's control, which should open or close the panel.
|
|
194
190
|
* If Panel is a direct child of `ExpandCollapse`, this prop will be provided by the ExpandCollapse parent.
|
|
195
191
|
*/
|
|
196
192
|
onToggle: PropTypes.func,
|
|
197
|
-
|
|
198
193
|
/**
|
|
199
194
|
* Optional function to call on pressing the panel's control, in addition to opening or closing the panel.
|
|
200
195
|
*/
|
|
201
196
|
onPress: PropTypes.func,
|
|
202
|
-
|
|
203
197
|
/**
|
|
204
198
|
* ExpandCollapsePanel's children are the content that is hidden or revealed on open or close, and may be any
|
|
205
199
|
* single React element or a render function which takes this group's isExpanded state, onToggle function and panelId
|
|
206
200
|
*/
|
|
207
201
|
children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
208
|
-
|
|
209
202
|
/**
|
|
210
203
|
* The content inside the control element that opens and closes the ExpandCollapse when pressed.
|
|
211
204
|
*/
|
|
212
205
|
control: ExpandCollapseControl.propTypes.children,
|
|
213
|
-
|
|
214
206
|
/**
|
|
215
207
|
* Optional theme token overrides that may be passed to the ExpandCollapseControl element.
|
|
216
208
|
*/
|
|
217
209
|
controlTokens: getTokensPropType('ExpandCollapseControl'),
|
|
218
|
-
|
|
219
210
|
/**
|
|
220
211
|
* An optional ref to be attached to the control
|
|
221
212
|
*/
|
|
222
213
|
controlRef: ABBPropTypes.ref(),
|
|
223
|
-
|
|
224
214
|
/**
|
|
225
215
|
* A boolean prop to determine if the panel is a content panel or not. If true, the panel will not have a control
|
|
226
216
|
*/
|