@sproutsocial/racine 12.20.0 → 12.21.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 +20 -0
- package/README.md +46 -44
- package/__flow__/Avatar/index.js +26 -26
- package/__flow__/Avatar/index.stories.js +8 -8
- package/__flow__/Avatar/index.test.js +13 -13
- package/__flow__/Badge/constants.js +14 -14
- package/__flow__/Badge/index.js +18 -18
- package/__flow__/Badge/index.stories.js +8 -8
- package/__flow__/Badge/index.test.js +43 -43
- package/__flow__/Badge/styles.js +13 -9
- package/__flow__/Banner/index.js +21 -21
- package/__flow__/Banner/index.stories.js +56 -68
- package/__flow__/Banner/index.test.js +32 -34
- package/__flow__/Banner/styles.js +4 -4
- package/__flow__/Box/index.js +4 -4
- package/__flow__/Box/index.stories.js +58 -51
- package/__flow__/Box/index.test.js +7 -7
- package/__flow__/Box/styles.js +6 -6
- package/__flow__/Breadcrumb/index.js +9 -13
- package/__flow__/Breadcrumb/index.stories.js +14 -14
- package/__flow__/Breadcrumb/index.test.js +20 -20
- package/__flow__/Breadcrumb/styles.js +5 -5
- package/__flow__/Button/index.js +23 -23
- package/__flow__/Button/index.stories.js +34 -34
- package/__flow__/Button/styles.js +11 -11
- package/__flow__/Card/index.js +7 -7
- package/__flow__/Card/index.stories.js +14 -14
- package/__flow__/Card/styles.js +7 -7
- package/__flow__/CharacterCounter/index.js +7 -7
- package/__flow__/CharacterCounter/index.stories.js +25 -26
- package/__flow__/CharacterCounter/index.test.js +11 -11
- package/__flow__/CharacterCounter/styles.js +3 -3
- package/__flow__/ChartLegend/index.js +7 -7
- package/__flow__/ChartLegend/index.stories.js +22 -22
- package/__flow__/ChartLegend/index.test.js +27 -27
- package/__flow__/ChartLegend/styles.js +7 -7
- package/__flow__/Checkbox/index.js +10 -10
- package/__flow__/Checkbox/index.stories.js +24 -24
- package/__flow__/Checkbox/index.test.js +25 -25
- package/__flow__/Checkbox/styles.js +27 -28
- package/__flow__/Collapsible/index.js +15 -15
- package/__flow__/Collapsible/index.stories.js +13 -13
- package/__flow__/Collapsible/index.test.js +27 -27
- package/__flow__/Collapsible/styles.js +5 -5
- package/__flow__/DatePicker/DateRangePicker.js +5 -8
- package/__flow__/DatePicker/DateRangePicker.stories.js +19 -19
- package/__flow__/DatePicker/DateRangePicker.test.js +21 -21
- package/__flow__/DatePicker/SingleDatePicker.js +6 -9
- package/__flow__/DatePicker/SingleDatePicker.stories.js +10 -10
- package/__flow__/DatePicker/SingleDatePicker.test.js +21 -23
- package/__flow__/DatePicker/StatefulDateRangePicker.js +6 -6
- package/__flow__/DatePicker/StatefulSingleDatePicker.js +3 -3
- package/__flow__/DatePicker/common.js +13 -13
- package/__flow__/DatePicker/index.js +3 -3
- package/__flow__/DatePicker/styles.js +42 -42
- package/__flow__/Drawer/SlideTransition.js +10 -10
- package/__flow__/Drawer/index.js +29 -29
- package/__flow__/Drawer/index.stories.js +58 -141
- package/__flow__/Drawer/index.test.js +28 -28
- package/__flow__/Drawer/styles.js +4 -4
- package/__flow__/EmptyState/index.js +5 -5
- package/__flow__/EmptyState/index.stories.js +10 -10
- package/__flow__/EmptyState/index.test.js +27 -27
- package/__flow__/EnumIllustrationNames.js +1 -1
- package/__flow__/Fieldset/index.js +14 -14
- package/__flow__/Fieldset/index.stories.js +19 -20
- package/__flow__/Fieldset/index.test.js +14 -14
- package/__flow__/Fieldset/styles.js +5 -5
- package/__flow__/FormField/index.js +14 -14
- package/__flow__/FormField/index.stories.js +31 -21
- package/__flow__/FormField/index.test.js +19 -19
- package/__flow__/Icon/deprecatedIcons.js +36 -36
- package/__flow__/Icon/index.js +17 -17
- package/__flow__/Icon/index.stories.js +30 -30
- package/__flow__/Icon/index.test.js +15 -15
- package/__flow__/Icon/styles.js +12 -12
- package/__flow__/IllustrationViewBoxes.js +1 -1
- package/__flow__/Image/index.js +6 -7
- package/__flow__/Image/index.stories.js +5 -5
- package/__flow__/Image/index.test.js +24 -24
- package/__flow__/Image/styles.js +6 -5
- package/__flow__/Indicator/index.js +7 -7
- package/__flow__/Indicator/index.stories.js +8 -14
- package/__flow__/Indicator/index.test.js +6 -6
- package/__flow__/Indicator/styles.js +6 -6
- package/__flow__/Input/index.js +37 -37
- package/__flow__/Input/index.stories.js +96 -189
- package/__flow__/Input/index.test.js +117 -117
- package/__flow__/Input/styles.js +13 -13
- package/__flow__/KeyboardKey/index.js +5 -5
- package/__flow__/KeyboardKey/index.stories.js +9 -12
- package/__flow__/KeyboardKey/index.test.js +7 -7
- package/__flow__/KeyboardKey/styles.js +4 -4
- package/__flow__/Label/index.js +6 -6
- package/__flow__/Label/index.stories.js +5 -7
- package/__flow__/Label/index.test.js +8 -8
- package/__flow__/Link/constants.js +4 -4
- package/__flow__/Link/index.js +11 -11
- package/__flow__/Link/index.stories.js +61 -102
- package/__flow__/Link/index.test.js +40 -40
- package/__flow__/Link/styles.js +6 -6
- package/__flow__/Listbox/index.js +16 -16
- package/__flow__/Listbox/index.stories.js +35 -35
- package/__flow__/Listbox/index.test.js +63 -65
- package/__flow__/Loader/index.js +12 -12
- package/__flow__/Loader/index.stories.js +10 -10
- package/__flow__/Loader/index.test.js +17 -17
- package/__flow__/Loader/styles.js +9 -13
- package/__flow__/LoaderButton/index.js +25 -25
- package/__flow__/LoaderButton/index.stories.js +7 -7
- package/__flow__/LoaderButton/index.test.js +15 -15
- package/__flow__/Menu/constants.js +8 -8
- package/__flow__/Menu/descendants.js +89 -80
- package/__flow__/Menu/hooks.js +22 -22
- package/__flow__/Menu/index.flow.js +13 -13
- package/__flow__/Menu/index.js +56 -60
- package/__flow__/Menu/index.stories.js +19 -19
- package/__flow__/Menu/index.test.js +22 -22
- package/__flow__/Menu/names.js +4945 -4945
- package/__flow__/Menu/styles.js +5 -5
- package/__flow__/Message/index.js +33 -33
- package/__flow__/Message/index.stories.js +18 -13
- package/__flow__/Message/index.test.js +6 -6
- package/__flow__/Message/styles.js +15 -15
- package/__flow__/Modal/index.js +19 -19
- package/__flow__/Modal/index.stories.js +43 -43
- package/__flow__/Modal/index.test.js +29 -29
- package/__flow__/Modal/styles.js +27 -32
- package/__flow__/Numeral/index.js +22 -22
- package/__flow__/Numeral/index.stories.js +74 -74
- package/__flow__/Numeral/styles.js +3 -3
- package/__flow__/Numeral/tests/A11y.test.js +7 -7
- package/__flow__/Numeral/tests/abbreviate.test.js +40 -40
- package/__flow__/Numeral/tests/currency.test.js +24 -24
- package/__flow__/Numeral/tests/defaults.test.js +20 -20
- package/__flow__/Numeral/tests/invalid.test.js +9 -9
- package/__flow__/Numeral/tests/locale.test.js +38 -38
- package/__flow__/Numeral/tests/precision.test.js +76 -76
- package/__flow__/Numeral/tests/testNumeral.js +11 -11
- package/__flow__/Numeral/tests/zero.test.js +8 -8
- package/__flow__/OverflowList/index.flow.js +2 -2
- package/__flow__/OverflowList/index.js +12 -12
- package/__flow__/OverflowList/index.stories.js +10 -10
- package/__flow__/OverflowList/index.test.js +25 -25
- package/__flow__/OverflowList/styles.js +5 -5
- package/__flow__/PartnerLogo/TypePartnerNames.js +37 -37
- package/__flow__/PartnerLogo/index.js +20 -20
- package/__flow__/PartnerLogo/index.stories.js +52 -52
- package/__flow__/PartnerLogo/styles.js +12 -12
- package/__flow__/Popout/index.js +66 -67
- package/__flow__/Popout/index.stories.js +101 -82
- package/__flow__/Popout/index.test.js +43 -43
- package/__flow__/Popout/styles.js +4 -5
- package/__flow__/Portal/index.js +9 -9
- package/__flow__/Portal/index.stories.js +12 -12
- package/__flow__/Radio/index.js +4 -4
- package/__flow__/Radio/index.stories.js +11 -11
- package/__flow__/Radio/index.test.js +12 -12
- package/__flow__/Radio/styles.js +15 -16
- package/__flow__/SegmentedControl/index.js +7 -7
- package/__flow__/SegmentedControl/index.stories.js +7 -7
- package/__flow__/SegmentedControl/index.test.js +29 -29
- package/__flow__/SegmentedControl/styles.js +10 -9
- package/__flow__/Select/index.js +10 -10
- package/__flow__/Select/index.stories.js +33 -69
- package/__flow__/Select/index.test.js +14 -14
- package/__flow__/Select/styles.js +16 -16
- package/__flow__/Skeleton/index.js +4 -4
- package/__flow__/Skeleton/index.stories.js +5 -5
- package/__flow__/SpotIllustration/illustrationNames.js +118 -117
- package/__flow__/SpotIllustration/index.js +15 -11
- package/__flow__/SpotIllustration/index.stories.js +18 -18
- package/__flow__/SpotIllustration/spotIllustrations/molecule.svg +14 -0
- package/__flow__/Stack/index.js +43 -33
- package/__flow__/Stack/index.stories.js +41 -91
- package/__flow__/Stack/index.test.js +16 -7
- package/__flow__/Switch/index.js +8 -8
- package/__flow__/Switch/index.stories.js +5 -5
- package/__flow__/Switch/index.test.js +25 -29
- package/__flow__/Switch/styles.js +13 -9
- package/__flow__/Table/index.js +17 -17
- package/__flow__/Table/index.stories.js +99 -99
- package/__flow__/Table/index.test.js +32 -32
- package/__flow__/Table/styles.js +4 -4
- package/__flow__/TableCell/index.js +8 -7
- package/__flow__/TableCell/index.stories.js +20 -23
- package/__flow__/TableCell/index.test.js +11 -11
- package/__flow__/TableCell/styles.js +4 -5
- package/__flow__/TableHeaderCell/index.js +14 -14
- package/__flow__/TableHeaderCell/index.stories.js +35 -30
- package/__flow__/TableHeaderCell/index.test.js +11 -11
- package/__flow__/TableHeaderCell/styles.js +4 -4
- package/__flow__/TableRowAccordion/index.js +8 -8
- package/__flow__/TableRowAccordion/index.stories.js +36 -36
- package/__flow__/TableRowAccordion/index.test.js +28 -30
- package/__flow__/TableRowAccordion/styles.js +11 -7
- package/__flow__/Tabs/index.js +11 -11
- package/__flow__/Tabs/index.stories.js +28 -54
- package/__flow__/Tabs/index.test.js +54 -54
- package/__flow__/Tabs/styles.js +6 -7
- package/__flow__/Text/index.js +14 -14
- package/__flow__/Text/index.stories.js +84 -86
- package/__flow__/Text/index.test.js +29 -33
- package/__flow__/Text/styles.js +4 -4
- package/__flow__/Textarea/index.js +5 -5
- package/__flow__/Textarea/index.stories.js +54 -93
- package/__flow__/Textarea/index.test.js +30 -30
- package/__flow__/Textarea/styles.js +6 -6
- package/__flow__/ThemeProvider/index.js +4 -4
- package/__flow__/Toast/index.js +23 -23
- package/__flow__/Toast/index.stories.js +21 -21
- package/__flow__/Toast/styles.js +6 -6
- package/__flow__/ToggleHint/index.js +8 -8
- package/__flow__/ToggleHint/index.test.js +8 -8
- package/__flow__/ToggleHint/styles.js +8 -8
- package/__flow__/Token/index.js +10 -10
- package/__flow__/Token/index.stories.js +49 -54
- package/__flow__/Token/index.test.js +28 -28
- package/__flow__/Token/styles.js +11 -11
- package/__flow__/TokenInput/index.flow.js +1 -1
- package/__flow__/TokenInput/index.js +39 -39
- package/__flow__/TokenInput/index.stories.js +121 -128
- package/__flow__/TokenInput/styles.js +5 -5
- package/__flow__/TokenInput/tests/default/clicking.test.js +13 -13
- package/__flow__/TokenInput/tests/default/deleting.test.js +39 -39
- package/__flow__/TokenInput/tests/default/focusing.test.js +18 -18
- package/__flow__/TokenInput/tests/default/inputting.test.js +23 -23
- package/__flow__/TokenInput/tests/default/pasting.test.js +52 -52
- package/__flow__/TokenInput/tests/default/rendering.test.js +54 -54
- package/__flow__/TokenInput/util.js +4 -4
- package/__flow__/Tooltip/index.js +21 -21
- package/__flow__/Tooltip/index.stories.js +18 -18
- package/__flow__/Tooltip/index.test.js +54 -54
- package/__flow__/Tooltip/styles.js +4 -5
- package/__flow__/VisuallyHidden/index.js +3 -3
- package/__flow__/building-stories.stories.mdx +121 -0
- package/__flow__/dataviz/dataviz.stories.js +4 -4
- package/__flow__/dataviz/index.js +3 -3
- package/__flow__/index.js +72 -72
- package/__flow__/overview.stories.js +60 -0
- package/__flow__/setupTests.js +5 -5
- package/__flow__/systemProps/background.js +3 -3
- package/__flow__/systemProps/border.js +3 -3
- package/__flow__/systemProps/color.js +3 -3
- package/__flow__/systemProps/custom.js +3 -3
- package/__flow__/systemProps/flexbox.js +3 -3
- package/__flow__/systemProps/grid.js +3 -3
- package/__flow__/systemProps/index.js +14 -14
- package/__flow__/systemProps/layout.js +3 -3
- package/__flow__/systemProps/position.js +3 -3
- package/__flow__/systemProps/shadow.js +3 -3
- package/__flow__/systemProps/space.js +3 -7
- package/__flow__/systemProps/systemProps.js +14 -14
- package/__flow__/systemProps/tests/background.test.js +17 -17
- package/__flow__/systemProps/tests/border.test.js +61 -61
- package/__flow__/systemProps/tests/color.test.js +15 -15
- package/__flow__/systemProps/tests/custom.test.js +12 -12
- package/__flow__/systemProps/tests/flexbox.test.js +33 -33
- package/__flow__/systemProps/tests/grid.test.js +31 -31
- package/__flow__/systemProps/tests/layout.test.js +29 -29
- package/__flow__/systemProps/tests/position.test.js +19 -19
- package/__flow__/systemProps/tests/shadow.test.js +11 -11
- package/__flow__/systemProps/tests/space.test.js +11 -11
- package/__flow__/systemProps/tests/types.flow.js +18 -18
- package/__flow__/systemProps/tests/typography.test.js +21 -21
- package/__flow__/systemProps/tests/variant.test.js +9 -9
- package/__flow__/systemProps/types.flow.js +2 -2
- package/__flow__/systemProps/typography.js +4 -4
- package/__flow__/systemProps/variant.js +5 -5
- package/__flow__/themes/dark/dataviz-palette.js +21 -21
- package/__flow__/themes/dark/decorative-palettes.js +1 -1
- package/__flow__/themes/dark/theme.js +16 -16
- package/__flow__/themes/extendedThemes/README.md +1 -1
- package/__flow__/themes/extendedThemes/sproutTheme/dark/theme.js +4 -4
- package/__flow__/themes/extendedThemes/sproutTheme/index.js +2 -2
- package/__flow__/themes/extendedThemes/sproutTheme/light/theme.js +4 -4
- package/__flow__/themes/light/dataviz-palette.js +21 -21
- package/__flow__/themes/light/decorative-palettes.js +1 -1
- package/__flow__/themes/light/literal-colors.js +133 -133
- package/__flow__/themes/light/theme.js +51 -51
- package/__flow__/types/system-props.flow.js +5 -5
- package/__flow__/types/theme.colors.flow.js +2 -2
- package/__flow__/types/theme.flow.js +5 -5
- package/__flow__/utils/a11yTest.js +1 -1
- package/__flow__/utils/chartColors.js +1 -1
- package/__flow__/utils/constants.js +1 -1
- package/__flow__/utils/dataQaLabelQueries.js +2 -2
- package/__flow__/utils/hooks.js +17 -17
- package/__flow__/utils/index.js +4 -4
- package/__flow__/utils/innerText.js +9 -9
- package/__flow__/utils/mixins.js +6 -6
- package/__flow__/utils/react-testing-library.js +6 -6
- package/__flow__/utils/responsiveProps/index.js +3 -3
- package/__flow__/utils/responsiveProps/index.test.js +8 -8
- package/__flow__/utils/system-props.js +3 -3
- package/__flow__/utils/useInteractiveColor.js +5 -5
- package/__flow__/writing-good-stories.stories.mdx +3 -0
- package/bin/racine-codemod.js +12 -12
- package/codemods/__tests__/migrate-2.x-to-3.x.test.js +2 -2
- package/codemods/migrate-2.x-to-3.x.js +29 -30
- package/commonjs/Avatar/index.js +33 -53
- package/commonjs/Badge/constants.js +18 -15
- package/commonjs/Badge/index.js +14 -28
- package/commonjs/Badge/styles.js +3 -9
- package/commonjs/Banner/index.js +16 -37
- package/commonjs/Banner/styles.js +0 -5
- package/commonjs/Box/index.js +2 -9
- package/commonjs/Box/styles.js +0 -4
- package/commonjs/Breadcrumb/index.js +13 -29
- package/commonjs/Breadcrumb/styles.js +1 -4
- package/commonjs/Button/index.js +29 -43
- package/commonjs/Button/styles.js +6 -15
- package/commonjs/Card/index.js +16 -26
- package/commonjs/Card/styles.js +1 -5
- package/commonjs/CharacterCounter/index.js +6 -23
- package/commonjs/CharacterCounter/styles.js +0 -5
- package/commonjs/ChartLegend/index.js +5 -20
- package/commonjs/ChartLegend/styles.js +2 -11
- package/commonjs/Checkbox/index.js +30 -53
- package/commonjs/Checkbox/styles.js +14 -35
- package/commonjs/Collapsible/index.js +31 -54
- package/commonjs/Collapsible/styles.js +3 -6
- package/commonjs/DatePicker/DateRangePicker.js +4 -17
- package/commonjs/DatePicker/SingleDatePicker.js +3 -17
- package/commonjs/DatePicker/StatefulDateRangePicker.js +16 -31
- package/commonjs/DatePicker/StatefulSingleDatePicker.js +7 -20
- package/commonjs/DatePicker/common.js +8 -22
- package/commonjs/DatePicker/index.js +0 -5
- package/commonjs/DatePicker/styles.js +8 -25
- package/commonjs/Drawer/SlideTransition.js +8 -18
- package/commonjs/Drawer/index.js +51 -90
- package/commonjs/Drawer/styles.js +0 -8
- package/commonjs/EmptyState/index.js +8 -20
- package/commonjs/Fieldset/index.js +15 -32
- package/commonjs/Fieldset/styles.js +2 -7
- package/commonjs/FormField/index.js +19 -36
- package/commonjs/Icon/deprecatedIcons.js +36 -36
- package/commonjs/Icon/index.js +19 -37
- package/commonjs/Icon/styles.js +7 -16
- package/commonjs/IllustrationViewBoxes.js +1 -0
- package/commonjs/Image/index.js +13 -41
- package/commonjs/Image/styles.js +1 -7
- package/commonjs/Indicator/index.js +8 -26
- package/commonjs/Indicator/styles.js +1 -7
- package/commonjs/Input/index.js +80 -119
- package/commonjs/Input/styles.js +9 -19
- package/commonjs/KeyboardKey/index.js +3 -20
- package/commonjs/KeyboardKey/styles.js +0 -4
- package/commonjs/Label/index.js +7 -27
- package/commonjs/Link/constants.js +3 -4
- package/commonjs/Link/index.js +16 -28
- package/commonjs/Link/styles.js +1 -8
- package/commonjs/Listbox/index.js +15 -36
- package/commonjs/Loader/index.js +15 -31
- package/commonjs/Loader/styles.js +2 -13
- package/commonjs/LoaderButton/index.js +26 -55
- package/commonjs/Menu/constants.js +9 -8
- package/commonjs/Menu/descendants.js +70 -105
- package/commonjs/Menu/hooks.js +23 -41
- package/commonjs/Menu/index.flow.js +0 -7
- package/commonjs/Menu/index.js +94 -164
- package/commonjs/Menu/names.js +1 -1
- package/commonjs/Menu/styles.js +0 -6
- package/commonjs/Message/index.js +37 -70
- package/commonjs/Message/styles.js +9 -24
- package/commonjs/Modal/index.js +31 -54
- package/commonjs/Modal/styles.js +17 -36
- package/commonjs/Numeral/index.js +39 -67
- package/commonjs/Numeral/styles.js +0 -3
- package/commonjs/Numeral/tests/testNumeral.js +13 -31
- package/commonjs/OverflowList/index.flow.js +0 -2
- package/commonjs/OverflowList/index.js +27 -41
- package/commonjs/OverflowList/styles.js +0 -7
- package/commonjs/PartnerLogo/index.js +19 -33
- package/commonjs/PartnerLogo/styles.js +7 -15
- package/commonjs/Popout/index.js +95 -127
- package/commonjs/Popout/styles.js +0 -5
- package/commonjs/Portal/index.js +8 -31
- package/commonjs/Radio/index.js +18 -42
- package/commonjs/Radio/styles.js +9 -21
- package/commonjs/SegmentedControl/index.js +17 -37
- package/commonjs/SegmentedControl/styles.js +2 -12
- package/commonjs/Select/index.js +24 -47
- package/commonjs/Select/styles.js +12 -24
- package/commonjs/Skeleton/index.js +0 -5
- package/commonjs/SpotIllustration/illustrationNames.js +1 -1
- package/commonjs/SpotIllustration/index.js +5 -11
- package/commonjs/Stack/index.js +27 -42
- package/commonjs/Switch/index.js +17 -42
- package/commonjs/Switch/styles.js +3 -11
- package/commonjs/Table/index.js +26 -50
- package/commonjs/Table/styles.js +0 -4
- package/commonjs/TableCell/index.js +12 -30
- package/commonjs/TableCell/styles.js +0 -5
- package/commonjs/TableHeaderCell/index.js +27 -56
- package/commonjs/TableHeaderCell/styles.js +0 -6
- package/commonjs/TableRowAccordion/index.js +12 -37
- package/commonjs/TableRowAccordion/styles.js +2 -9
- package/commonjs/Tabs/index.js +16 -66
- package/commonjs/Tabs/styles.js +2 -11
- package/commonjs/Text/index.js +12 -25
- package/commonjs/Text/styles.js +1 -6
- package/commonjs/Textarea/index.js +31 -55
- package/commonjs/Textarea/styles.js +2 -9
- package/commonjs/ThemeProvider/index.js +1 -10
- package/commonjs/Toast/index.js +19 -42
- package/commonjs/Toast/styles.js +1 -7
- package/commonjs/ToggleHint/index.js +15 -39
- package/commonjs/ToggleHint/styles.js +2 -9
- package/commonjs/Token/index.js +15 -29
- package/commonjs/Token/styles.js +5 -12
- package/commonjs/TokenInput/index.js +70 -122
- package/commonjs/TokenInput/styles.js +1 -7
- package/commonjs/TokenInput/util.js +2 -7
- package/commonjs/Tooltip/index.js +40 -63
- package/commonjs/Tooltip/styles.js +1 -5
- package/commonjs/VisuallyHidden/index.js +0 -4
- package/commonjs/dataviz/index.js +0 -4
- package/commonjs/index.js +0 -129
- package/commonjs/systemProps/background.js +0 -1
- package/commonjs/systemProps/border.js +0 -1
- package/commonjs/systemProps/color.js +0 -1
- package/commonjs/systemProps/custom.js +0 -1
- package/commonjs/systemProps/flexbox.js +0 -1
- package/commonjs/systemProps/grid.js +0 -1
- package/commonjs/systemProps/index.js +0 -28
- package/commonjs/systemProps/layout.js +0 -1
- package/commonjs/systemProps/position.js +0 -1
- package/commonjs/systemProps/shadow.js +0 -1
- package/commonjs/systemProps/space.js +1 -2
- package/commonjs/systemProps/systemProps.js +0 -13
- package/commonjs/systemProps/tests/types.flow.js +25 -22
- package/commonjs/systemProps/typography.js +0 -1
- package/commonjs/systemProps/variant.js +2 -3
- package/commonjs/themes/dark/dataviz-palette.js +20 -22
- package/commonjs/themes/dark/decorative-palettes.js +0 -2
- package/commonjs/themes/dark/theme.js +13 -27
- package/commonjs/themes/extendedThemes/sproutTheme/dark/theme.js +2 -9
- package/commonjs/themes/extendedThemes/sproutTheme/index.js +0 -5
- package/commonjs/themes/extendedThemes/sproutTheme/light/theme.js +2 -9
- package/commonjs/themes/light/dataviz-palette.js +20 -22
- package/commonjs/themes/light/decorative-palettes.js +0 -2
- package/commonjs/themes/light/literal-colors.js +132 -134
- package/commonjs/themes/light/theme.js +43 -59
- package/commonjs/types/system-props.flow.js +1 -1
- package/commonjs/types/theme.colors.flow.js +0 -2
- package/commonjs/types/theme.flow.js +0 -1
- package/commonjs/utils/a11yTest.js +3 -10
- package/commonjs/utils/chartColors.js +0 -1
- package/commonjs/utils/constants.js +1 -1
- package/commonjs/utils/dataQaLabelQueries.js +12 -21
- package/commonjs/utils/hooks.js +39 -70
- package/commonjs/utils/index.js +2 -9
- package/commonjs/utils/innerText.js +10 -14
- package/commonjs/utils/mixins.js +2 -7
- package/commonjs/utils/react-testing-library.js +4 -26
- package/commonjs/utils/responsiveProps/index.js +1 -11
- package/commonjs/utils/system-props.js +2 -5
- package/commonjs/utils/useInteractiveColor.js +6 -8
- package/dist/illustration.svg +1 -1
- package/dist/illustrationList.js +1 -1
- package/lib/Avatar/index.js +40 -47
- package/lib/Badge/constants.js +19 -15
- package/lib/Badge/index.js +18 -25
- package/lib/Badge/styles.js +8 -6
- package/lib/Banner/index.js +20 -32
- package/lib/Banner/styles.js +3 -2
- package/lib/Box/index.js +4 -5
- package/lib/Box/styles.js +3 -2
- package/lib/Breadcrumb/index.js +19 -27
- package/lib/Breadcrumb/styles.js +3 -2
- package/lib/Button/index.js +31 -38
- package/lib/Button/styles.js +14 -11
- package/lib/Card/index.js +18 -24
- package/lib/Card/styles.js +5 -4
- package/lib/CharacterCounter/index.js +8 -20
- package/lib/CharacterCounter/styles.js +3 -2
- package/lib/ChartLegend/index.js +9 -17
- package/lib/ChartLegend/styles.js +5 -4
- package/lib/Checkbox/index.js +32 -51
- package/lib/Checkbox/styles.js +21 -26
- package/lib/Collapsible/index.js +36 -51
- package/lib/Collapsible/styles.js +6 -5
- package/lib/DatePicker/DateRangePicker.js +8 -14
- package/lib/DatePicker/SingleDatePicker.js +7 -13
- package/lib/DatePicker/StatefulDateRangePicker.js +19 -26
- package/lib/DatePicker/StatefulSingleDatePicker.js +9 -15
- package/lib/DatePicker/common.js +14 -13
- package/lib/DatePicker/index.js +2 -2
- package/lib/DatePicker/styles.js +12 -22
- package/lib/Drawer/SlideTransition.js +11 -14
- package/lib/Drawer/index.js +64 -88
- package/lib/Drawer/styles.js +4 -3
- package/lib/EmptyState/index.js +11 -17
- package/lib/Fieldset/index.js +19 -29
- package/lib/Fieldset/styles.js +5 -4
- package/lib/FormField/index.js +27 -33
- package/lib/Icon/deprecatedIcons.js +36 -36
- package/lib/Icon/index.js +25 -34
- package/lib/Icon/styles.js +11 -13
- package/lib/IllustrationViewBoxes.js +1 -0
- package/lib/Image/index.js +15 -38
- package/lib/Image/styles.js +4 -4
- package/lib/Indicator/index.js +11 -23
- package/lib/Indicator/styles.js +5 -5
- package/lib/Input/index.js +87 -115
- package/lib/Input/styles.js +13 -15
- package/lib/KeyboardKey/index.js +6 -17
- package/lib/KeyboardKey/styles.js +3 -2
- package/lib/Label/index.js +10 -24
- package/lib/Link/constants.js +5 -4
- package/lib/Link/index.js +18 -25
- package/lib/Link/styles.js +6 -5
- package/lib/Listbox/index.js +21 -29
- package/lib/Loader/index.js +17 -29
- package/lib/Loader/styles.js +6 -8
- package/lib/LoaderButton/index.js +34 -51
- package/lib/Menu/constants.js +10 -8
- package/lib/Menu/descendants.js +73 -94
- package/lib/Menu/hooks.js +28 -39
- package/lib/Menu/index.flow.js +6 -5
- package/lib/Menu/index.js +113 -150
- package/lib/Menu/names.js +1 -1
- package/lib/Menu/styles.js +4 -3
- package/lib/Message/index.js +42 -66
- package/lib/Message/styles.js +15 -23
- package/lib/Modal/index.js +38 -51
- package/lib/Modal/styles.js +23 -32
- package/lib/Numeral/index.js +45 -64
- package/lib/Numeral/styles.js +3 -2
- package/lib/Numeral/tests/testNumeral.js +17 -27
- package/lib/OverflowList/index.flow.js +2 -1
- package/lib/OverflowList/index.js +31 -38
- package/lib/OverflowList/styles.js +5 -4
- package/lib/PartnerLogo/index.js +23 -31
- package/lib/PartnerLogo/styles.js +11 -12
- package/lib/Popout/index.js +105 -121
- package/lib/Popout/styles.js +3 -3
- package/lib/Portal/index.js +11 -29
- package/lib/Radio/index.js +20 -40
- package/lib/Radio/styles.js +14 -14
- package/lib/SegmentedControl/index.js +21 -34
- package/lib/SegmentedControl/styles.js +7 -9
- package/lib/Select/index.js +27 -44
- package/lib/Select/styles.js +16 -20
- package/lib/Skeleton/index.js +7 -4
- package/lib/SpotIllustration/illustrationNames.js +2 -1
- package/lib/SpotIllustration/index.js +9 -10
- package/lib/Stack/index.js +31 -39
- package/lib/Switch/index.js +21 -39
- package/lib/Switch/styles.js +8 -7
- package/lib/Table/index.js +30 -40
- package/lib/Table/styles.js +3 -2
- package/lib/TableCell/index.js +14 -27
- package/lib/TableCell/styles.js +3 -3
- package/lib/TableHeaderCell/index.js +30 -52
- package/lib/TableHeaderCell/styles.js +3 -2
- package/lib/TableRowAccordion/index.js +16 -34
- package/lib/TableRowAccordion/styles.js +5 -3
- package/lib/Tabs/index.js +18 -63
- package/lib/Tabs/styles.js +6 -6
- package/lib/Text/index.js +15 -21
- package/lib/Text/styles.js +4 -3
- package/lib/Textarea/index.js +33 -53
- package/lib/Textarea/styles.js +6 -5
- package/lib/ThemeProvider/index.js +4 -7
- package/lib/Toast/index.js +26 -37
- package/lib/Toast/styles.js +5 -4
- package/lib/ToggleHint/index.js +18 -36
- package/lib/ToggleHint/styles.js +6 -5
- package/lib/Token/index.js +20 -26
- package/lib/Token/styles.js +10 -9
- package/lib/TokenInput/index.js +78 -118
- package/lib/TokenInput/styles.js +5 -4
- package/lib/TokenInput/util.js +5 -3
- package/lib/Tooltip/index.js +45 -60
- package/lib/Tooltip/styles.js +4 -4
- package/lib/VisuallyHidden/index.js +3 -2
- package/lib/dataviz/index.js +4 -3
- package/lib/index.js +66 -64
- package/lib/systemProps/background.js +3 -1
- package/lib/systemProps/border.js +3 -1
- package/lib/systemProps/color.js +3 -1
- package/lib/systemProps/custom.js +3 -1
- package/lib/systemProps/flexbox.js +3 -1
- package/lib/systemProps/grid.js +3 -1
- package/lib/systemProps/index.js +16 -14
- package/lib/systemProps/layout.js +3 -1
- package/lib/systemProps/position.js +3 -1
- package/lib/systemProps/shadow.js +3 -1
- package/lib/systemProps/space.js +2 -1
- package/lib/systemProps/systemProps.js +14 -13
- package/lib/systemProps/tests/types.flow.js +27 -22
- package/lib/systemProps/typography.js +3 -1
- package/lib/systemProps/variant.js +4 -3
- package/lib/themes/dark/dataviz-palette.js +23 -21
- package/lib/themes/dark/decorative-palettes.js +3 -1
- package/lib/themes/dark/theme.js +20 -23
- package/lib/themes/extendedThemes/sproutTheme/dark/theme.js +4 -7
- package/lib/themes/extendedThemes/sproutTheme/index.js +3 -2
- package/lib/themes/extendedThemes/sproutTheme/light/theme.js +4 -7
- package/lib/themes/light/dataviz-palette.js +23 -21
- package/lib/themes/light/decorative-palettes.js +3 -1
- package/lib/themes/light/literal-colors.js +135 -133
- package/lib/themes/light/theme.js +54 -55
- package/lib/types/system-props.flow.js +1 -1
- package/lib/types/theme.colors.flow.js +4 -2
- package/lib/types/theme.flow.js +3 -2
- package/lib/utils/a11yTest.js +5 -8
- package/lib/utils/chartColors.js +3 -1
- package/lib/utils/constants.js +3 -1
- package/lib/utils/dataQaLabelQueries.js +13 -21
- package/lib/utils/hooks.js +41 -64
- package/lib/utils/index.js +2 -5
- package/lib/utils/innerText.js +12 -14
- package/lib/utils/mixins.js +6 -5
- package/lib/utils/react-testing-library.js +10 -20
- package/lib/utils/responsiveProps/index.js +3 -8
- package/lib/utils/system-props.js +4 -3
- package/lib/utils/useInteractiveColor.js +10 -9
- package/package.json +6 -13
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import React from
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import Input from
|
|
6
|
-
import Text from
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import 'jest-styled-components';
|
|
4
|
+
import {render, fireEvent, userEvent} from '../utils/react-testing-library';
|
|
5
|
+
import Input from './';
|
|
6
|
+
import Text from '../Text';
|
|
7
7
|
|
|
8
|
-
describe(
|
|
9
|
-
it(
|
|
8
|
+
describe('Input', () => {
|
|
9
|
+
it('should notify on changes', () => {
|
|
10
10
|
const mockOnChange = jest.fn();
|
|
11
11
|
const mockEventHandler = jest.fn();
|
|
12
|
-
const {
|
|
12
|
+
const {container, getByDataQaLabel} = render(
|
|
13
13
|
<Input
|
|
14
14
|
id="name"
|
|
15
15
|
name="name"
|
|
@@ -23,10 +23,10 @@ describe("Input", () => {
|
|
|
23
23
|
/>
|
|
24
24
|
);
|
|
25
25
|
|
|
26
|
-
const input = getByDataQaLabel({
|
|
27
|
-
const inputContainer = container.querySelector(
|
|
26
|
+
const input = getByDataQaLabel({input: 'name'});
|
|
27
|
+
const inputContainer = container.querySelector('div');
|
|
28
28
|
|
|
29
|
-
fireEvent.change(input, {
|
|
29
|
+
fireEvent.change(input, {target: {value: 'updated'}});
|
|
30
30
|
expect(mockOnChange).toHaveBeenCalled();
|
|
31
31
|
|
|
32
32
|
// Ensure that the event handlers aren't getting attached to the root level
|
|
@@ -42,21 +42,21 @@ describe("Input", () => {
|
|
|
42
42
|
expect(mockEventHandler.mock.calls.length).toEqual(0);
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
it(
|
|
46
|
-
const {
|
|
45
|
+
it('should render statuses correctly', () => {
|
|
46
|
+
const {queryByDataQaLabel, rerender} = render(
|
|
47
47
|
<Input id="name" name="name" value="User" disabled />
|
|
48
48
|
);
|
|
49
|
-
expect(queryByDataQaLabel({
|
|
49
|
+
expect(queryByDataQaLabel({'input-isdisabled': true})).toBeTruthy();
|
|
50
50
|
|
|
51
51
|
rerender(
|
|
52
52
|
<Input id="name" name="name" value="User" disabled={false} isInvalid />
|
|
53
53
|
);
|
|
54
|
-
expect(queryByDataQaLabel({
|
|
55
|
-
expect(queryByDataQaLabel({
|
|
54
|
+
expect(queryByDataQaLabel({'input-isdisabled': true})).toBe(null);
|
|
55
|
+
expect(queryByDataQaLabel({'input-isdisabled': false})).toBeTruthy();
|
|
56
56
|
});
|
|
57
57
|
|
|
58
|
-
it(
|
|
59
|
-
const {
|
|
58
|
+
it('should render before and after element', () => {
|
|
59
|
+
const {getByText} = render(
|
|
60
60
|
<Input
|
|
61
61
|
elemAfter={<Text>After</Text>}
|
|
62
62
|
elemBefore={<Text>Before</Text>}
|
|
@@ -66,14 +66,14 @@ describe("Input", () => {
|
|
|
66
66
|
/>
|
|
67
67
|
);
|
|
68
68
|
|
|
69
|
-
expect(getByText(
|
|
70
|
-
expect(getByText(
|
|
69
|
+
expect(getByText('Before')).toBeTruthy();
|
|
70
|
+
expect(getByText('After')).toBeTruthy();
|
|
71
71
|
});
|
|
72
72
|
|
|
73
|
-
describe(
|
|
74
|
-
describe(
|
|
75
|
-
it(
|
|
76
|
-
const {
|
|
73
|
+
describe('Input.ClearButton', () => {
|
|
74
|
+
describe('Input type=search', () => {
|
|
75
|
+
it('should render a clear button for search Inputs', () => {
|
|
76
|
+
const {getByRole} = render(
|
|
77
77
|
<Input
|
|
78
78
|
id="name"
|
|
79
79
|
name="name"
|
|
@@ -83,11 +83,11 @@ describe("Input", () => {
|
|
|
83
83
|
clearButtonLabel="Clear search"
|
|
84
84
|
/>
|
|
85
85
|
);
|
|
86
|
-
expect(getByRole(
|
|
86
|
+
expect(getByRole('button')).toBeTruthy();
|
|
87
87
|
});
|
|
88
88
|
|
|
89
|
-
it(
|
|
90
|
-
const {
|
|
89
|
+
it('should render a clear button for an uncontrolled search Input only when it has text', () => {
|
|
90
|
+
const {getByRole, queryByRole} = render(
|
|
91
91
|
<Input
|
|
92
92
|
id="name"
|
|
93
93
|
name="name"
|
|
@@ -95,19 +95,19 @@ describe("Input", () => {
|
|
|
95
95
|
clearButtonLabel="Clear search"
|
|
96
96
|
/>
|
|
97
97
|
);
|
|
98
|
-
expect(queryByRole(
|
|
99
|
-
const input = getByRole(
|
|
98
|
+
expect(queryByRole('button')).toBeFalsy();
|
|
99
|
+
const input = getByRole('searchbox');
|
|
100
100
|
userEvent.tab();
|
|
101
101
|
expect(input).toHaveFocus();
|
|
102
|
-
userEvent.keyboard(
|
|
103
|
-
expect(getByRole(
|
|
102
|
+
userEvent.keyboard('some text');
|
|
103
|
+
expect(getByRole('button')).toBeTruthy();
|
|
104
104
|
userEvent.tab();
|
|
105
|
-
userEvent.keyboard(
|
|
106
|
-
expect(queryByRole(
|
|
105
|
+
userEvent.keyboard('{enter}');
|
|
106
|
+
expect(queryByRole('button')).toBeFalsy();
|
|
107
107
|
});
|
|
108
108
|
|
|
109
|
-
it(
|
|
110
|
-
const {
|
|
109
|
+
it('should not render a clear button for search Inputs if there is no text', () => {
|
|
110
|
+
const {queryByRole} = render(
|
|
111
111
|
<Input
|
|
112
112
|
id="name"
|
|
113
113
|
name="name"
|
|
@@ -117,11 +117,11 @@ describe("Input", () => {
|
|
|
117
117
|
clearButtonLabel="Clear search"
|
|
118
118
|
/>
|
|
119
119
|
);
|
|
120
|
-
expect(queryByRole(
|
|
120
|
+
expect(queryByRole('button')).toBeFalsy();
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
-
it(
|
|
124
|
-
const {
|
|
123
|
+
it('should not override an elemAfter prop if passed', () => {
|
|
124
|
+
const {getByText, queryByTitle} = render(
|
|
125
125
|
<Input
|
|
126
126
|
id="name"
|
|
127
127
|
name="name"
|
|
@@ -131,12 +131,12 @@ describe("Input", () => {
|
|
|
131
131
|
elemAfter={<Text>After</Text>}
|
|
132
132
|
/>
|
|
133
133
|
);
|
|
134
|
-
expect(getByText(
|
|
135
|
-
expect(queryByTitle(
|
|
134
|
+
expect(getByText('After')).toBeTruthy();
|
|
135
|
+
expect(queryByTitle('Clear')).not.toBeInTheDocument();
|
|
136
136
|
});
|
|
137
137
|
|
|
138
|
-
it(
|
|
139
|
-
const {
|
|
138
|
+
it('should use the fallback title if clearButtonLabel is not provided', () => {
|
|
139
|
+
const {getByTitle} = render(
|
|
140
140
|
<Input
|
|
141
141
|
id="name"
|
|
142
142
|
name="name"
|
|
@@ -145,12 +145,12 @@ describe("Input", () => {
|
|
|
145
145
|
onClear={jest.fn()}
|
|
146
146
|
/>
|
|
147
147
|
);
|
|
148
|
-
expect(getByTitle(
|
|
148
|
+
expect(getByTitle('Clear')).toBeTruthy();
|
|
149
149
|
});
|
|
150
150
|
|
|
151
|
-
it(
|
|
151
|
+
it('should call onClear when clicked', () => {
|
|
152
152
|
const mockOnClear = jest.fn();
|
|
153
|
-
const {
|
|
153
|
+
const {getByRole} = render(
|
|
154
154
|
<Input
|
|
155
155
|
id="name"
|
|
156
156
|
name="name"
|
|
@@ -160,13 +160,13 @@ describe("Input", () => {
|
|
|
160
160
|
clearButtonLabel="Clear search"
|
|
161
161
|
/>
|
|
162
162
|
);
|
|
163
|
-
fireEvent.click(getByRole(
|
|
163
|
+
fireEvent.click(getByRole('button'));
|
|
164
164
|
expect(mockOnClear).toHaveBeenCalled();
|
|
165
165
|
});
|
|
166
166
|
|
|
167
|
-
it(
|
|
167
|
+
it('should allow keyboard access to and Space key triggering of the clear button', () => {
|
|
168
168
|
const mockOnClear = jest.fn();
|
|
169
|
-
const {
|
|
169
|
+
const {getByRole} = render(
|
|
170
170
|
<Input
|
|
171
171
|
id="name"
|
|
172
172
|
name="name"
|
|
@@ -176,19 +176,19 @@ describe("Input", () => {
|
|
|
176
176
|
clearButtonLabel="Clear search"
|
|
177
177
|
/>
|
|
178
178
|
);
|
|
179
|
-
const input = getByRole(
|
|
180
|
-
const button = getByRole(
|
|
179
|
+
const input = getByRole('searchbox');
|
|
180
|
+
const button = getByRole('button');
|
|
181
181
|
userEvent.tab();
|
|
182
182
|
expect(input).toHaveFocus();
|
|
183
183
|
userEvent.tab();
|
|
184
184
|
expect(button).toHaveFocus();
|
|
185
|
-
userEvent.keyboard(
|
|
185
|
+
userEvent.keyboard('{space}');
|
|
186
186
|
expect(mockOnClear).toHaveBeenCalled();
|
|
187
187
|
});
|
|
188
188
|
|
|
189
|
-
it(
|
|
189
|
+
it('should allow keyboard access to and Enter key triggering of the clear button', () => {
|
|
190
190
|
const mockOnClear = jest.fn();
|
|
191
|
-
const {
|
|
191
|
+
const {getByRole} = render(
|
|
192
192
|
<Input
|
|
193
193
|
id="name"
|
|
194
194
|
name="name"
|
|
@@ -198,20 +198,20 @@ describe("Input", () => {
|
|
|
198
198
|
clearButtonLabel="Clear search"
|
|
199
199
|
/>
|
|
200
200
|
);
|
|
201
|
-
const input = getByRole(
|
|
202
|
-
const button = getByRole(
|
|
201
|
+
const input = getByRole('searchbox');
|
|
202
|
+
const button = getByRole('button');
|
|
203
203
|
userEvent.tab();
|
|
204
204
|
expect(input).toHaveFocus();
|
|
205
205
|
userEvent.tab();
|
|
206
206
|
expect(button).toHaveFocus();
|
|
207
|
-
userEvent.keyboard(
|
|
207
|
+
userEvent.keyboard('{enter}');
|
|
208
208
|
expect(mockOnClear).toHaveBeenCalled();
|
|
209
209
|
});
|
|
210
210
|
});
|
|
211
211
|
|
|
212
|
-
describe(
|
|
213
|
-
it(
|
|
214
|
-
const {
|
|
212
|
+
describe('Manual Input.ClearButton usage', () => {
|
|
213
|
+
it('should render a clear button when passed with elemAfter', () => {
|
|
214
|
+
const {getByRole} = render(
|
|
215
215
|
<Input
|
|
216
216
|
id="name"
|
|
217
217
|
name="name"
|
|
@@ -222,11 +222,11 @@ describe("Input", () => {
|
|
|
222
222
|
clearButtonLabel="Clear search"
|
|
223
223
|
/>
|
|
224
224
|
);
|
|
225
|
-
expect(getByRole(
|
|
225
|
+
expect(getByRole('button')).toBeTruthy();
|
|
226
226
|
});
|
|
227
227
|
|
|
228
|
-
it(
|
|
229
|
-
const {
|
|
228
|
+
it('should not render a clear button if there is no text', () => {
|
|
229
|
+
const {queryByRole} = render(
|
|
230
230
|
<Input
|
|
231
231
|
id="name"
|
|
232
232
|
name="name"
|
|
@@ -237,11 +237,11 @@ describe("Input", () => {
|
|
|
237
237
|
clearButtonLabel="Clear search"
|
|
238
238
|
/>
|
|
239
239
|
);
|
|
240
|
-
expect(queryByRole(
|
|
240
|
+
expect(queryByRole('button')).toBeFalsy();
|
|
241
241
|
});
|
|
242
242
|
|
|
243
|
-
it(
|
|
244
|
-
const {
|
|
243
|
+
it('should use the fallback title if clearButtonLabel is not provided', () => {
|
|
244
|
+
const {getByTitle} = render(
|
|
245
245
|
<Input
|
|
246
246
|
id="name"
|
|
247
247
|
name="name"
|
|
@@ -251,12 +251,12 @@ describe("Input", () => {
|
|
|
251
251
|
onClear={jest.fn()}
|
|
252
252
|
/>
|
|
253
253
|
);
|
|
254
|
-
expect(getByTitle(
|
|
254
|
+
expect(getByTitle('Clear')).toBeTruthy();
|
|
255
255
|
});
|
|
256
256
|
|
|
257
|
-
it(
|
|
257
|
+
it('should call onClear when Input.ClearButton is clicked', () => {
|
|
258
258
|
const mockOnClear = jest.fn();
|
|
259
|
-
const {
|
|
259
|
+
const {getByRole} = render(
|
|
260
260
|
<Input
|
|
261
261
|
id="name"
|
|
262
262
|
name="name"
|
|
@@ -267,13 +267,13 @@ describe("Input", () => {
|
|
|
267
267
|
clearButtonLabel="Clear search"
|
|
268
268
|
/>
|
|
269
269
|
);
|
|
270
|
-
fireEvent.click(getByRole(
|
|
270
|
+
fireEvent.click(getByRole('button'));
|
|
271
271
|
expect(mockOnClear).toHaveBeenCalled();
|
|
272
272
|
});
|
|
273
273
|
|
|
274
|
-
it(
|
|
274
|
+
it('should allow keyboard access to and Space key triggering of the clear button', () => {
|
|
275
275
|
const mockOnClear = jest.fn();
|
|
276
|
-
const {
|
|
276
|
+
const {getByRole} = render(
|
|
277
277
|
<Input
|
|
278
278
|
id="name"
|
|
279
279
|
name="name"
|
|
@@ -284,19 +284,19 @@ describe("Input", () => {
|
|
|
284
284
|
clearButtonLabel="Clear search"
|
|
285
285
|
/>
|
|
286
286
|
);
|
|
287
|
-
const input = getByRole(
|
|
288
|
-
const button = getByRole(
|
|
287
|
+
const input = getByRole('textbox');
|
|
288
|
+
const button = getByRole('button');
|
|
289
289
|
userEvent.tab();
|
|
290
290
|
expect(input).toHaveFocus();
|
|
291
291
|
userEvent.tab();
|
|
292
292
|
expect(button).toHaveFocus();
|
|
293
|
-
userEvent.keyboard(
|
|
293
|
+
userEvent.keyboard('{space}');
|
|
294
294
|
expect(mockOnClear).toHaveBeenCalled();
|
|
295
295
|
});
|
|
296
296
|
|
|
297
|
-
it(
|
|
297
|
+
it('should allow keyboard access to and Enter key triggering of the clear button', () => {
|
|
298
298
|
const mockOnClear = jest.fn();
|
|
299
|
-
const {
|
|
299
|
+
const {getByRole} = render(
|
|
300
300
|
<Input
|
|
301
301
|
id="name"
|
|
302
302
|
name="name"
|
|
@@ -307,97 +307,97 @@ describe("Input", () => {
|
|
|
307
307
|
clearButtonLabel="Clear search"
|
|
308
308
|
/>
|
|
309
309
|
);
|
|
310
|
-
const input = getByRole(
|
|
311
|
-
const button = getByRole(
|
|
310
|
+
const input = getByRole('textbox');
|
|
311
|
+
const button = getByRole('button');
|
|
312
312
|
userEvent.tab();
|
|
313
313
|
expect(input).toHaveFocus();
|
|
314
314
|
userEvent.tab();
|
|
315
315
|
expect(button).toHaveFocus();
|
|
316
|
-
userEvent.keyboard(
|
|
316
|
+
userEvent.keyboard('{enter}');
|
|
317
317
|
expect(mockOnClear).toHaveBeenCalled();
|
|
318
318
|
});
|
|
319
319
|
});
|
|
320
320
|
});
|
|
321
321
|
|
|
322
|
-
describe(
|
|
323
|
-
it(
|
|
324
|
-
const {
|
|
325
|
-
expect(getByDataQaLabel({
|
|
326
|
-
|
|
327
|
-
|
|
322
|
+
describe('autoComplete prop', () => {
|
|
323
|
+
it('should not have autoComplete attribute when passed prop is not passed', () => {
|
|
324
|
+
const {getByDataQaLabel} = render(<Input id="name" name="name" />);
|
|
325
|
+
expect(getByDataQaLabel({input: 'name'})).not.toHaveAttribute(
|
|
326
|
+
'autocomplete',
|
|
327
|
+
'on'
|
|
328
328
|
);
|
|
329
329
|
});
|
|
330
330
|
|
|
331
331
|
it("should have autoComplete attribute set to 'on' when passed prop is set to true", () => {
|
|
332
|
-
const {
|
|
332
|
+
const {getByDataQaLabel} = render(
|
|
333
333
|
<Input id="name" name="name" autoComplete={true} />
|
|
334
334
|
);
|
|
335
|
-
expect(getByDataQaLabel({
|
|
336
|
-
|
|
337
|
-
|
|
335
|
+
expect(getByDataQaLabel({input: 'name'})).toHaveAttribute(
|
|
336
|
+
'autocomplete',
|
|
337
|
+
'on'
|
|
338
338
|
);
|
|
339
339
|
});
|
|
340
340
|
|
|
341
341
|
it("should have autoComplete attribute set to 'off' when passed prop is set to false", () => {
|
|
342
|
-
const {
|
|
342
|
+
const {getByDataQaLabel} = render(
|
|
343
343
|
<Input id="name" name="name" autoComplete={false} />
|
|
344
344
|
);
|
|
345
|
-
expect(getByDataQaLabel({
|
|
346
|
-
|
|
347
|
-
|
|
345
|
+
expect(getByDataQaLabel({input: 'name'})).toHaveAttribute(
|
|
346
|
+
'autocomplete',
|
|
347
|
+
'off'
|
|
348
348
|
);
|
|
349
349
|
});
|
|
350
350
|
});
|
|
351
351
|
|
|
352
|
-
describe(
|
|
353
|
-
it.each([true,
|
|
354
|
-
|
|
352
|
+
describe('readOnly prop', () => {
|
|
353
|
+
it.each([true, 'foobar', 1])(
|
|
354
|
+
'should correctly add the readonly prop for truthy values: %p',
|
|
355
355
|
(truthyValue) => {
|
|
356
|
-
const {
|
|
356
|
+
const {getByDataQaLabel} = render(
|
|
357
357
|
<Input id="name" name="name" readOnly={truthyValue} />
|
|
358
358
|
);
|
|
359
|
-
expect(getByDataQaLabel({
|
|
360
|
-
|
|
361
|
-
|
|
359
|
+
expect(getByDataQaLabel({input: 'name'})).toHaveAttribute(
|
|
360
|
+
'readonly',
|
|
361
|
+
''
|
|
362
362
|
);
|
|
363
363
|
}
|
|
364
364
|
);
|
|
365
365
|
|
|
366
|
-
it.each([false, null, undefined, 0,
|
|
367
|
-
|
|
366
|
+
it.each([false, null, undefined, 0, ''])(
|
|
367
|
+
'should correctly leave off readonly prop for falsey values: %p',
|
|
368
368
|
(truthyValue) => {
|
|
369
|
-
const {
|
|
369
|
+
const {getByDataQaLabel} = render(
|
|
370
370
|
<Input id="name" name="name" readOnly={truthyValue} />
|
|
371
371
|
);
|
|
372
|
-
expect(getByDataQaLabel({
|
|
373
|
-
|
|
372
|
+
expect(getByDataQaLabel({input: 'name'})).not.toHaveAttribute(
|
|
373
|
+
'readonly'
|
|
374
374
|
);
|
|
375
375
|
}
|
|
376
376
|
);
|
|
377
377
|
});
|
|
378
378
|
|
|
379
|
-
describe(
|
|
380
|
-
it.each([true,
|
|
381
|
-
|
|
379
|
+
describe('isInvalid prop', () => {
|
|
380
|
+
it.each([true, 'foobar', 1])(
|
|
381
|
+
'should correctly set aria-invalid to true for truthy values: %p',
|
|
382
382
|
(truthyValue) => {
|
|
383
|
-
const {
|
|
383
|
+
const {getByDataQaLabel} = render(
|
|
384
384
|
<Input id="name" name="name" isInvalid={truthyValue} />
|
|
385
385
|
);
|
|
386
|
-
expect(getByDataQaLabel({
|
|
387
|
-
|
|
388
|
-
|
|
386
|
+
expect(getByDataQaLabel({input: 'name'})).toHaveAttribute(
|
|
387
|
+
'aria-invalid',
|
|
388
|
+
'true'
|
|
389
389
|
);
|
|
390
390
|
}
|
|
391
391
|
);
|
|
392
392
|
it.each([false, null, undefined, 0])(
|
|
393
|
-
|
|
393
|
+
'should correctly set aria-invalid to false for falsey values: %p',
|
|
394
394
|
(truthyValue) => {
|
|
395
|
-
const {
|
|
395
|
+
const {getByDataQaLabel} = render(
|
|
396
396
|
<Input id="name" name="name" isInvalid={truthyValue} />
|
|
397
397
|
);
|
|
398
|
-
expect(getByDataQaLabel({
|
|
399
|
-
|
|
400
|
-
|
|
398
|
+
expect(getByDataQaLabel({input: 'name'})).toHaveAttribute(
|
|
399
|
+
'aria-invalid',
|
|
400
|
+
'false'
|
|
401
401
|
);
|
|
402
402
|
}
|
|
403
403
|
);
|
package/__flow__/Input/styles.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
//@flow
|
|
2
|
-
import styled, {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import styled, {css, type StyledComponent} from 'styled-components';
|
|
3
|
+
import {COMMON} from '../utils/system-props';
|
|
4
|
+
import {focusRing} from '../utils/mixins';
|
|
5
5
|
|
|
6
|
-
import type {
|
|
6
|
+
import type {TypeTheme} from '../types/theme.flow';
|
|
7
7
|
|
|
8
8
|
const Container: StyledComponent<any, TypeTheme, *> = styled.div`
|
|
9
9
|
box-sizing: border-box;
|
|
@@ -30,11 +30,11 @@ const Container: StyledComponent<any, TypeTheme, *> = styled.div`
|
|
|
30
30
|
|
|
31
31
|
padding: ${(props) => {
|
|
32
32
|
switch (props.size) {
|
|
33
|
-
case
|
|
33
|
+
case 'large':
|
|
34
34
|
return props.theme.space[400];
|
|
35
|
-
case
|
|
35
|
+
case 'small':
|
|
36
36
|
return props.theme.space[200];
|
|
37
|
-
case
|
|
37
|
+
case 'default':
|
|
38
38
|
default:
|
|
39
39
|
return props.theme.space[300];
|
|
40
40
|
}
|
|
@@ -42,10 +42,10 @@ const Container: StyledComponent<any, TypeTheme, *> = styled.div`
|
|
|
42
42
|
|
|
43
43
|
font-size: ${(props) => {
|
|
44
44
|
switch (props.size) {
|
|
45
|
-
case
|
|
45
|
+
case 'large':
|
|
46
46
|
return props.theme.typography[300].fontSize;
|
|
47
|
-
case
|
|
48
|
-
case
|
|
47
|
+
case 'small':
|
|
48
|
+
case 'default':
|
|
49
49
|
default:
|
|
50
50
|
return props.theme.typography[200].fontSize;
|
|
51
51
|
}
|
|
@@ -97,7 +97,7 @@ const Container: StyledComponent<any, TypeTheme, *> = styled.div`
|
|
|
97
97
|
`}
|
|
98
98
|
|
|
99
99
|
${(props) =>
|
|
100
|
-
props.appearance ===
|
|
100
|
+
props.appearance === 'primary' &&
|
|
101
101
|
css`
|
|
102
102
|
input {
|
|
103
103
|
border: 1px solid ${(props) => props.theme.colors.form.border.base};
|
|
@@ -144,7 +144,7 @@ export const Accessory: StyledComponent<any, TypeTheme, *> = styled.div`
|
|
|
144
144
|
`};
|
|
145
145
|
`;
|
|
146
146
|
|
|
147
|
-
Container.displayName =
|
|
148
|
-
Accessory.displayName =
|
|
147
|
+
Container.displayName = 'InputContainer';
|
|
148
|
+
Accessory.displayName = 'InputAccessory';
|
|
149
149
|
|
|
150
150
|
export default Container;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import * as React from
|
|
3
|
-
import Text from
|
|
4
|
-
import Container from
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import Text from '../Text';
|
|
4
|
+
import Container from './styles';
|
|
5
5
|
|
|
6
|
-
type TypeProps = {
|
|
6
|
+
export type TypeProps = {
|
|
7
7
|
/** Text to display inside of key */
|
|
8
8
|
children: string,
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export default class KeyboardKey extends React.Component<TypeProps> {
|
|
12
12
|
render() {
|
|
13
|
-
const {
|
|
13
|
+
const {children, ...rest} = this.props;
|
|
14
14
|
|
|
15
15
|
return (
|
|
16
16
|
<Container {...rest}>
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import React from
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import KeyboardKey from "./";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import KeyboardKey from './';
|
|
6
4
|
|
|
7
5
|
export default {
|
|
8
|
-
title:
|
|
6
|
+
title: 'Components/KeyboardKey',
|
|
7
|
+
component: KeyboardKey,
|
|
9
8
|
};
|
|
10
9
|
|
|
11
|
-
export const singleKey = () =>
|
|
12
|
-
<KeyboardKey>{text("children", "ctrl")}</KeyboardKey>
|
|
13
|
-
);
|
|
10
|
+
export const singleKey = () => <KeyboardKey children="ctrl" />;
|
|
14
11
|
|
|
15
12
|
singleKey.story = {
|
|
16
|
-
name:
|
|
13
|
+
name: 'Single key',
|
|
17
14
|
};
|
|
18
15
|
|
|
19
16
|
export const keyCombination = () => (
|
|
20
17
|
<>
|
|
21
|
-
<KeyboardKey
|
|
22
|
-
<KeyboardKey
|
|
18
|
+
<KeyboardKey children="ctrl" />
|
|
19
|
+
<KeyboardKey children="]" />
|
|
23
20
|
</>
|
|
24
21
|
);
|
|
25
22
|
|
|
26
23
|
keyCombination.story = {
|
|
27
|
-
name:
|
|
24
|
+
name: 'Key combination',
|
|
28
25
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import React from
|
|
3
|
-
import {
|
|
4
|
-
import KeyboardKey from
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import {render} from '../utils/react-testing-library';
|
|
4
|
+
import KeyboardKey from './';
|
|
5
5
|
|
|
6
|
-
describe(
|
|
7
|
-
it(
|
|
8
|
-
const children =
|
|
9
|
-
const {
|
|
6
|
+
describe('KeyboardKey', () => {
|
|
7
|
+
it('should render children RTL', () => {
|
|
8
|
+
const children = 'command';
|
|
9
|
+
const {getByText} = render(<KeyboardKey>{children}</KeyboardKey>);
|
|
10
10
|
expect(getByText(children)).toBeTruthy();
|
|
11
11
|
});
|
|
12
12
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
//@flow
|
|
2
|
-
import styled, {
|
|
3
|
-
import {
|
|
2
|
+
import styled, {type StyledComponent} from 'styled-components';
|
|
3
|
+
import {COMMON} from '../utils/system-props';
|
|
4
4
|
|
|
5
|
-
import type {
|
|
5
|
+
import type {TypeTheme} from '../types/theme.flow';
|
|
6
6
|
|
|
7
|
-
const Container: StyledComponent<{
|
|
7
|
+
const Container: StyledComponent<{...}, TypeTheme, *> = styled.div`
|
|
8
8
|
display: inline-flex;
|
|
9
9
|
color: ${(props) => props.theme.colors.text.body};
|
|
10
10
|
background-color: ${(props) => props.theme.colors.container.background.base};
|
package/__flow__/Label/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
'no babel-plugin-flow-react-proptypes';
|
|
2
2
|
// @flow
|
|
3
|
-
import * as React from
|
|
4
|
-
import styled from
|
|
5
|
-
import Text from
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import styled from 'styled-components';
|
|
5
|
+
import Text from '../Text';
|
|
6
6
|
|
|
7
|
-
import type {
|
|
7
|
+
import type {TypeTheme} from '../types/theme.flow';
|
|
8
8
|
|
|
9
9
|
type TypeLabelBaseProps = {
|
|
10
10
|
...React.ElementConfig<typeof Text>,
|
|
11
11
|
as: string,
|
|
12
12
|
...
|
|
13
13
|
};
|
|
14
|
-
const LabelBase = ({
|
|
14
|
+
const LabelBase = ({as = 'label', ...rest}: TypeLabelBaseProps) => (
|
|
15
15
|
<Text {...rest} as={as} />
|
|
16
16
|
);
|
|
17
17
|
|