@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,16 +1,34 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import React, {
|
|
3
|
-
import Popout, {
|
|
4
|
-
import Box from
|
|
5
|
-
import Button from
|
|
6
|
-
import Input from
|
|
7
|
-
import Icon from
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
import React, {useState, type Node as ReactNode} from 'react';
|
|
3
|
+
import Popout, {type TypeProps, placements} from './index';
|
|
4
|
+
import Box from '../Box';
|
|
5
|
+
import Button from '../Button';
|
|
6
|
+
import Input from '../Input';
|
|
7
|
+
import Icon from '../Icon';
|
|
8
|
+
import Modal from '../Modal';
|
|
9
|
+
import Drawer from '../Drawer';
|
|
10
|
+
import Loader from '../Loader';
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
title: 'Components/Popout',
|
|
14
|
+
component: Popout,
|
|
15
|
+
argTypes: {
|
|
16
|
+
isOpen: {control: 'boolean'},
|
|
17
|
+
placement: {
|
|
18
|
+
/* $FlowIssue Storybook needs an array here */
|
|
19
|
+
options: Object.keys(placements),
|
|
20
|
+
control: 'select',
|
|
21
|
+
},
|
|
22
|
+
focusLockProps: {control: 'object'},
|
|
23
|
+
},
|
|
24
|
+
args: {
|
|
25
|
+
isOpen: false,
|
|
26
|
+
placement: placements.auto,
|
|
27
|
+
focusLockProps: {returnFocus: false},
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const Wrapper = ({children}: {children: ReactNode}) => (
|
|
14
32
|
<Box
|
|
15
33
|
width="100%"
|
|
16
34
|
p={600}
|
|
@@ -23,15 +41,17 @@ const Wrapper = ({ children }: { children: ReactNode }) => (
|
|
|
23
41
|
</Box>
|
|
24
42
|
);
|
|
25
43
|
|
|
26
|
-
const Content = ({
|
|
44
|
+
const Content = ({...rest}) => (
|
|
27
45
|
<Popout.Content {...rest}>I am the popped out content!</Popout.Content>
|
|
28
46
|
);
|
|
29
47
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
48
|
+
type TypeFullyControlled = {
|
|
49
|
+
children?: ReactNode,
|
|
50
|
+
...TypeProps,
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const FullyControlled = (args: TypeFullyControlled) => {
|
|
54
|
+
const [isOpen, setIsOpen] = useState(args.isOpen);
|
|
35
55
|
|
|
36
56
|
const isOpenCallback = (isOpen, event) => {
|
|
37
57
|
event && event.stopPropagation && event.stopPropagation();
|
|
@@ -43,7 +63,7 @@ const FullyControlled = ({
|
|
|
43
63
|
content={<Content />}
|
|
44
64
|
isOpen={isOpen}
|
|
45
65
|
setIsOpen={isOpenCallback}
|
|
46
|
-
placement={placement}
|
|
66
|
+
placement={args.placement}
|
|
47
67
|
>
|
|
48
68
|
<Button appearance="primary" onClick={() => setIsOpen(!isOpen)}>
|
|
49
69
|
show popout
|
|
@@ -52,25 +72,21 @@ const FullyControlled = ({
|
|
|
52
72
|
);
|
|
53
73
|
};
|
|
54
74
|
|
|
55
|
-
export
|
|
56
|
-
title: "Popout",
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export const fullyControlled = () => (
|
|
75
|
+
export const fullyControlled = (args: TypeFullyControlled) => (
|
|
60
76
|
<Wrapper>
|
|
61
|
-
<FullyControlled />
|
|
77
|
+
<FullyControlled {...args} />
|
|
62
78
|
</Wrapper>
|
|
63
79
|
);
|
|
64
80
|
|
|
65
81
|
fullyControlled.story = {
|
|
66
|
-
name:
|
|
82
|
+
name: 'Fully Controlled',
|
|
67
83
|
};
|
|
68
84
|
|
|
69
|
-
export const renderProp = () => {
|
|
85
|
+
export const renderProp = (args: TypeProps) => {
|
|
70
86
|
return (
|
|
71
87
|
<Wrapper>
|
|
72
|
-
<Popout content={<Content />} placement={
|
|
73
|
-
{({
|
|
88
|
+
<Popout content={<Content />} placement={args.placement}>
|
|
89
|
+
{({toggle, ref, ariaProps}) => (
|
|
74
90
|
<Button
|
|
75
91
|
appearance="primary"
|
|
76
92
|
innerRef={ref}
|
|
@@ -86,13 +102,13 @@ export const renderProp = () => {
|
|
|
86
102
|
};
|
|
87
103
|
|
|
88
104
|
renderProp.story = {
|
|
89
|
-
name:
|
|
105
|
+
name: 'Render Prop',
|
|
90
106
|
};
|
|
91
107
|
|
|
92
|
-
export const magicButton = () => {
|
|
108
|
+
export const magicButton = (args: TypeProps) => {
|
|
93
109
|
return (
|
|
94
110
|
<Wrapper>
|
|
95
|
-
<Popout content={<Content />} placement={
|
|
111
|
+
<Popout content={<Content />} placement={args.placement}>
|
|
96
112
|
<Button appearance="primary">show popout</Button>
|
|
97
113
|
</Popout>
|
|
98
114
|
</Wrapper>
|
|
@@ -100,14 +116,14 @@ export const magicButton = () => {
|
|
|
100
116
|
};
|
|
101
117
|
|
|
102
118
|
magicButton.story = {
|
|
103
|
-
name:
|
|
119
|
+
name: 'Magic Button',
|
|
104
120
|
};
|
|
105
121
|
|
|
106
|
-
export const passACloseCallbackToThePopoutContent = () => {
|
|
122
|
+
export const passACloseCallbackToThePopoutContent = (args: TypeProps) => {
|
|
107
123
|
return (
|
|
108
124
|
<Wrapper>
|
|
109
125
|
<Popout
|
|
110
|
-
content={({
|
|
126
|
+
content={({hide}) => (
|
|
111
127
|
<Popout.Content>
|
|
112
128
|
<Box mb={350}>some text.</Box>
|
|
113
129
|
<Button appearance="primary" onClick={hide}>
|
|
@@ -115,7 +131,7 @@ export const passACloseCallbackToThePopoutContent = () => {
|
|
|
115
131
|
</Button>
|
|
116
132
|
</Popout.Content>
|
|
117
133
|
)}
|
|
118
|
-
placement={
|
|
134
|
+
placement={args.placement}
|
|
119
135
|
>
|
|
120
136
|
<Button appearance="primary">show popout</Button>
|
|
121
137
|
</Popout>
|
|
@@ -124,10 +140,10 @@ export const passACloseCallbackToThePopoutContent = () => {
|
|
|
124
140
|
};
|
|
125
141
|
|
|
126
142
|
passACloseCallbackToThePopoutContent.story = {
|
|
127
|
-
name:
|
|
143
|
+
name: 'Pass a close callback to the popout content',
|
|
128
144
|
};
|
|
129
145
|
|
|
130
|
-
export const overflowScrollCollisionDetection = () => {
|
|
146
|
+
export const overflowScrollCollisionDetection = (args: TypeProps) => {
|
|
131
147
|
return (
|
|
132
148
|
<Box overflow="auto" height="400px" width="800px" bg="neutral.400">
|
|
133
149
|
<Box
|
|
@@ -136,10 +152,7 @@ export const overflowScrollCollisionDetection = () => {
|
|
|
136
152
|
alignItems="center"
|
|
137
153
|
display="flex"
|
|
138
154
|
>
|
|
139
|
-
<Popout
|
|
140
|
-
content={<Content />}
|
|
141
|
-
placement={select("placement", placements)}
|
|
142
|
-
>
|
|
155
|
+
<Popout content={<Content />} placement={args.placement}>
|
|
143
156
|
<Button appearance="primary">show popout</Button>
|
|
144
157
|
</Popout>
|
|
145
158
|
</Box>
|
|
@@ -148,19 +161,19 @@ export const overflowScrollCollisionDetection = () => {
|
|
|
148
161
|
};
|
|
149
162
|
|
|
150
163
|
overflowScrollCollisionDetection.story = {
|
|
151
|
-
name:
|
|
164
|
+
name: 'Overflow, scroll, collision detection',
|
|
152
165
|
};
|
|
153
166
|
|
|
154
|
-
export const attachedToFormFullWidth = () => {
|
|
167
|
+
export const attachedToFormFullWidth = (args: TypeProps) => {
|
|
155
168
|
return (
|
|
156
169
|
<Box>
|
|
157
170
|
<Popout
|
|
158
171
|
content={<Content m={0} width="100%" />}
|
|
159
|
-
placement={
|
|
172
|
+
placement={args.placement}
|
|
160
173
|
fullWidth={true}
|
|
161
174
|
focusOnContent={false}
|
|
162
175
|
>
|
|
163
|
-
{({
|
|
176
|
+
{({show, hide, ref, ariaProps}) => (
|
|
164
177
|
<Input
|
|
165
178
|
id="popout-input"
|
|
166
179
|
name="popout-input"
|
|
@@ -181,10 +194,10 @@ export const attachedToFormFullWidth = () => {
|
|
|
181
194
|
};
|
|
182
195
|
|
|
183
196
|
attachedToFormFullWidth.story = {
|
|
184
|
-
name:
|
|
197
|
+
name: 'Attached to form, full width',
|
|
185
198
|
};
|
|
186
199
|
|
|
187
|
-
export const withinAModal = () => {
|
|
200
|
+
export const withinAModal = (args: TypeProps) => {
|
|
188
201
|
return (
|
|
189
202
|
<Modal
|
|
190
203
|
appElementSelector="#root"
|
|
@@ -202,7 +215,7 @@ export const withinAModal = () => {
|
|
|
202
215
|
>
|
|
203
216
|
<Box>
|
|
204
217
|
<Popout
|
|
205
|
-
content={({
|
|
218
|
+
content={({hide}) => (
|
|
206
219
|
<Popout.Content>
|
|
207
220
|
<Box mb={350}>some text.</Box>
|
|
208
221
|
<Button appearance="primary" onClick={hide}>
|
|
@@ -210,7 +223,7 @@ export const withinAModal = () => {
|
|
|
210
223
|
</Button>
|
|
211
224
|
</Popout.Content>
|
|
212
225
|
)}
|
|
213
|
-
placement={
|
|
226
|
+
placement={args.placement}
|
|
214
227
|
>
|
|
215
228
|
<Button appearance="primary">show popout</Button>
|
|
216
229
|
</Popout>
|
|
@@ -221,10 +234,10 @@ export const withinAModal = () => {
|
|
|
221
234
|
};
|
|
222
235
|
|
|
223
236
|
withinAModal.story = {
|
|
224
|
-
name:
|
|
237
|
+
name: 'Within a modal',
|
|
225
238
|
};
|
|
226
239
|
|
|
227
|
-
export const withinADrawer = () => {
|
|
240
|
+
export const withinADrawer = (args: TypeProps) => {
|
|
228
241
|
return (
|
|
229
242
|
<Drawer
|
|
230
243
|
id="popout-drawer"
|
|
@@ -241,7 +254,7 @@ export const withinADrawer = () => {
|
|
|
241
254
|
<Box>
|
|
242
255
|
<Popout
|
|
243
256
|
appendToBody={false}
|
|
244
|
-
content={({
|
|
257
|
+
content={({hide}) => (
|
|
245
258
|
<Popout.Content>
|
|
246
259
|
<Box mb={350}>some text.</Box>
|
|
247
260
|
<Button appearance="primary" onClick={hide}>
|
|
@@ -249,7 +262,7 @@ export const withinADrawer = () => {
|
|
|
249
262
|
</Button>
|
|
250
263
|
</Popout.Content>
|
|
251
264
|
)}
|
|
252
|
-
placement={
|
|
265
|
+
placement={args.placement}
|
|
253
266
|
>
|
|
254
267
|
<Button appearance="primary">show popout</Button>
|
|
255
268
|
</Popout>
|
|
@@ -259,11 +272,15 @@ export const withinADrawer = () => {
|
|
|
259
272
|
);
|
|
260
273
|
};
|
|
261
274
|
|
|
275
|
+
withinADrawer.args = {
|
|
276
|
+
placement: 'bottom',
|
|
277
|
+
};
|
|
278
|
+
|
|
262
279
|
withinADrawer.story = {
|
|
263
|
-
name:
|
|
280
|
+
name: 'Within a drawer',
|
|
264
281
|
};
|
|
265
282
|
|
|
266
|
-
export const bringFocusWithin = () => (
|
|
283
|
+
export const bringFocusWithin = (args: TypeProps) => (
|
|
267
284
|
<Box
|
|
268
285
|
width="100%"
|
|
269
286
|
display="flex"
|
|
@@ -280,7 +297,7 @@ export const bringFocusWithin = () => (
|
|
|
280
297
|
<Input id="popout" name="popout" autoFocus />
|
|
281
298
|
</Popout.Content>
|
|
282
299
|
}
|
|
283
|
-
placement={
|
|
300
|
+
placement={args.placement}
|
|
284
301
|
>
|
|
285
302
|
<Button appearance="primary">show popout</Button>
|
|
286
303
|
</Popout>
|
|
@@ -289,22 +306,22 @@ export const bringFocusWithin = () => (
|
|
|
289
306
|
);
|
|
290
307
|
|
|
291
308
|
bringFocusWithin.story = {
|
|
292
|
-
name:
|
|
309
|
+
name: 'Bring focus within',
|
|
293
310
|
};
|
|
294
311
|
|
|
295
|
-
export const withIcon = () => (
|
|
312
|
+
export const withIcon = (args: TypeProps) => (
|
|
296
313
|
<Wrapper>
|
|
297
|
-
<Popout content={<Content />} placement={
|
|
314
|
+
<Popout content={<Content />} placement={args.placement}>
|
|
298
315
|
<Icon name="globe" size="jumbo" />
|
|
299
316
|
</Popout>
|
|
300
317
|
</Wrapper>
|
|
301
318
|
);
|
|
302
319
|
|
|
303
320
|
withIcon.story = {
|
|
304
|
-
name:
|
|
321
|
+
name: 'With icon',
|
|
305
322
|
};
|
|
306
323
|
|
|
307
|
-
export const onOpenAndOnCloseCallbacks = () => (
|
|
324
|
+
export const onOpenAndOnCloseCallbacks = (args: TypeProps) => (
|
|
308
325
|
<Box width="100%" display="flex" alignItems="center" justifyContent="center">
|
|
309
326
|
<Box>
|
|
310
327
|
<Popout
|
|
@@ -313,9 +330,9 @@ export const onOpenAndOnCloseCallbacks = () => (
|
|
|
313
330
|
<Box>should fire alerts on open and close</Box>
|
|
314
331
|
</Popout.Content>
|
|
315
332
|
}
|
|
316
|
-
placement={
|
|
317
|
-
onOpen={() => alert(
|
|
318
|
-
onClose={() => alert(
|
|
333
|
+
placement={args.placement}
|
|
334
|
+
onOpen={() => alert('opened!')}
|
|
335
|
+
onClose={() => alert('closed!')}
|
|
319
336
|
>
|
|
320
337
|
<Button appearance="primary">show popout</Button>
|
|
321
338
|
</Popout>
|
|
@@ -324,10 +341,10 @@ export const onOpenAndOnCloseCallbacks = () => (
|
|
|
324
341
|
);
|
|
325
342
|
|
|
326
343
|
onOpenAndOnCloseCallbacks.story = {
|
|
327
|
-
name:
|
|
344
|
+
name: 'onOpen and onClose callbacks',
|
|
328
345
|
};
|
|
329
346
|
|
|
330
|
-
export const WithDynamicContent = () => {
|
|
347
|
+
export const WithDynamicContent = (args: TypeProps) => {
|
|
331
348
|
const [loading, setLoading] = useState(true);
|
|
332
349
|
const [showMoreContent, setShowMoreContent] = useState(false);
|
|
333
350
|
|
|
@@ -340,7 +357,7 @@ export const WithDynamicContent = () => {
|
|
|
340
357
|
>
|
|
341
358
|
<Box pt="90vh">
|
|
342
359
|
<Popout
|
|
343
|
-
placement={
|
|
360
|
+
placement={args.placement}
|
|
344
361
|
content={
|
|
345
362
|
<Popout.Content>
|
|
346
363
|
{loading ? (
|
|
@@ -374,23 +391,28 @@ export const WithDynamicContent = () => {
|
|
|
374
391
|
);
|
|
375
392
|
};
|
|
376
393
|
|
|
377
|
-
export const isOpenTrue = () => {
|
|
394
|
+
export const isOpenTrue = (args: TypeFullyControlled) => {
|
|
378
395
|
return (
|
|
379
396
|
<Wrapper>
|
|
380
|
-
<FullyControlled
|
|
397
|
+
<FullyControlled {...args} />
|
|
381
398
|
</Wrapper>
|
|
382
399
|
);
|
|
383
400
|
};
|
|
401
|
+
|
|
402
|
+
isOpenTrue.args = {
|
|
403
|
+
isOpen: true,
|
|
404
|
+
};
|
|
405
|
+
|
|
384
406
|
isOpenTrue.story = {
|
|
385
|
-
name:
|
|
407
|
+
name: 'isOpen = true',
|
|
386
408
|
};
|
|
387
409
|
|
|
388
|
-
export const MemoryLeakTest = () => {
|
|
410
|
+
export const MemoryLeakTest = (args: TypeFullyControlled) => {
|
|
389
411
|
const [shouldRender, setShouldRender] = useState(true);
|
|
390
412
|
|
|
391
413
|
return (
|
|
392
414
|
<Wrapper>
|
|
393
|
-
{shouldRender && <FullyControlled />}
|
|
415
|
+
{shouldRender && <FullyControlled {...args} />}
|
|
394
416
|
<Button
|
|
395
417
|
onClick={() => {
|
|
396
418
|
setShouldRender(!shouldRender);
|
|
@@ -401,15 +423,12 @@ export const MemoryLeakTest = () => {
|
|
|
401
423
|
</Wrapper>
|
|
402
424
|
);
|
|
403
425
|
};
|
|
426
|
+
|
|
404
427
|
MemoryLeakTest.story = {
|
|
405
|
-
name:
|
|
428
|
+
name: 'Memory Leak Test',
|
|
406
429
|
};
|
|
407
430
|
|
|
408
|
-
export const FocusLockProps = ({
|
|
409
|
-
focusLockProps = knobsObject("focusLockProps", { returnFocus: false }),
|
|
410
|
-
}: {
|
|
411
|
-
focusLockProps?: TypeFocusLockProps,
|
|
412
|
-
}) => {
|
|
431
|
+
export const FocusLockProps = (args: TypeProps) => {
|
|
413
432
|
const [isOpen, setIsOpen] = useState(false);
|
|
414
433
|
|
|
415
434
|
const isOpenCallback = (isOpen, event) => {
|
|
@@ -424,7 +443,7 @@ export const FocusLockProps = ({
|
|
|
424
443
|
isOpen={isOpen}
|
|
425
444
|
setIsOpen={isOpenCallback}
|
|
426
445
|
placement="auto"
|
|
427
|
-
focusLockProps={focusLockProps}
|
|
446
|
+
focusLockProps={args.focusLockProps}
|
|
428
447
|
>
|
|
429
448
|
<input
|
|
430
449
|
type="search"
|
|
@@ -436,7 +455,7 @@ export const FocusLockProps = ({
|
|
|
436
455
|
);
|
|
437
456
|
};
|
|
438
457
|
FocusLockProps.story = {
|
|
439
|
-
name:
|
|
458
|
+
name: 'FocusLock props',
|
|
440
459
|
};
|
|
441
460
|
|
|
442
461
|
export const withoutContent = () => (
|
|
@@ -448,5 +467,5 @@ export const withoutContent = () => (
|
|
|
448
467
|
);
|
|
449
468
|
|
|
450
469
|
withIcon.story = {
|
|
451
|
-
name:
|
|
470
|
+
name: 'Without content',
|
|
452
471
|
};
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import React from
|
|
3
|
-
import Component from
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import Popout from
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import Component from '@reach/component-component';
|
|
4
|
+
import {render, wait, fireEvent} from '../utils/react-testing-library';
|
|
5
|
+
import 'jest-styled-components';
|
|
6
|
+
import Popout from './';
|
|
7
7
|
|
|
8
|
-
import Button from
|
|
9
|
-
jest.mock(
|
|
8
|
+
import Button from '../Button';
|
|
9
|
+
jest.mock('../Portal', () => ({children}) => <div>{children}</div>);
|
|
10
10
|
|
|
11
11
|
if (global.document) {
|
|
12
12
|
(global: any).document.createRange = () => ({
|
|
13
13
|
setStart: () => {},
|
|
14
14
|
setEnd: () => {},
|
|
15
15
|
commonAncestorContainer: {
|
|
16
|
-
nodeName:
|
|
16
|
+
nodeName: 'BODY',
|
|
17
17
|
ownerDocument: document,
|
|
18
18
|
},
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
describe(
|
|
23
|
-
xit(
|
|
24
|
-
const {
|
|
22
|
+
describe('Popout', () => {
|
|
23
|
+
xit('should render properly', async () => {
|
|
24
|
+
const {runA11yCheck, container, getByText} = render(
|
|
25
25
|
<Popout
|
|
26
26
|
content={<div>popout content</div>}
|
|
27
27
|
placement="top"
|
|
@@ -31,7 +31,7 @@ describe("Popout", () => {
|
|
|
31
31
|
</Popout>
|
|
32
32
|
);
|
|
33
33
|
|
|
34
|
-
fireEvent.click(getByText(
|
|
34
|
+
fireEvent.click(getByText('show popout'));
|
|
35
35
|
|
|
36
36
|
await runA11yCheck();
|
|
37
37
|
return wait(() => {
|
|
@@ -39,18 +39,18 @@ describe("Popout", () => {
|
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
describe(
|
|
43
|
-
it(
|
|
44
|
-
const {
|
|
45
|
-
<Component initialState={{
|
|
46
|
-
{({
|
|
42
|
+
describe('controlled', () => {
|
|
43
|
+
it('should work being fully controlled', async () => {
|
|
44
|
+
const {queryByText, getByText} = render(
|
|
45
|
+
<Component initialState={{isOpen: false}}>
|
|
46
|
+
{({state, setState}) => (
|
|
47
47
|
<Popout
|
|
48
48
|
isOpen={state.isOpen}
|
|
49
|
-
setIsOpen={(isOpen) => setState({
|
|
49
|
+
setIsOpen={(isOpen) => setState({isOpen})}
|
|
50
50
|
content={<div>popout content</div>}
|
|
51
51
|
>
|
|
52
52
|
<Button
|
|
53
|
-
onClick={() => setState({
|
|
53
|
+
onClick={() => setState({isOpen: !state.isOpen})}
|
|
54
54
|
appearance="primary"
|
|
55
55
|
>
|
|
56
56
|
show popout
|
|
@@ -60,30 +60,30 @@ describe("Popout", () => {
|
|
|
60
60
|
</Component>
|
|
61
61
|
);
|
|
62
62
|
|
|
63
|
-
expect(queryByText(
|
|
63
|
+
expect(queryByText('popout content')).not.toBeInTheDocument();
|
|
64
64
|
|
|
65
|
-
fireEvent.click(getByText(
|
|
65
|
+
fireEvent.click(getByText('show popout'));
|
|
66
66
|
|
|
67
|
-
expect(queryByText(
|
|
67
|
+
expect(queryByText('popout content')).toBeInTheDocument();
|
|
68
68
|
|
|
69
|
-
fireEvent.click(getByText(
|
|
69
|
+
fireEvent.click(getByText('show popout'));
|
|
70
70
|
|
|
71
71
|
await wait(() => {
|
|
72
|
-
expect(queryByText(
|
|
72
|
+
expect(queryByText('popout content')).not.toBeInTheDocument();
|
|
73
73
|
});
|
|
74
74
|
});
|
|
75
75
|
|
|
76
|
-
it(
|
|
77
|
-
const {
|
|
78
|
-
<Component initialState={{
|
|
79
|
-
{({
|
|
76
|
+
it('should close on outside click', async () => {
|
|
77
|
+
const {baseElement, queryByText} = render(
|
|
78
|
+
<Component initialState={{isOpen: true}}>
|
|
79
|
+
{({state, setState}) => (
|
|
80
80
|
<Popout
|
|
81
81
|
isOpen={state.isOpen}
|
|
82
|
-
setIsOpen={(isOpen) => setState({
|
|
82
|
+
setIsOpen={(isOpen) => setState({isOpen})}
|
|
83
83
|
content={<div>popout content</div>}
|
|
84
84
|
>
|
|
85
85
|
<Button
|
|
86
|
-
onClick={() => setState({
|
|
86
|
+
onClick={() => setState({isOpen: !state.isOpen})}
|
|
87
87
|
appearance="primary"
|
|
88
88
|
>
|
|
89
89
|
show popout
|
|
@@ -93,26 +93,26 @@ describe("Popout", () => {
|
|
|
93
93
|
</Component>
|
|
94
94
|
);
|
|
95
95
|
|
|
96
|
-
expect(queryByText(
|
|
96
|
+
expect(queryByText('popout content')).toBeInTheDocument();
|
|
97
97
|
|
|
98
98
|
fireEvent.click(baseElement);
|
|
99
99
|
|
|
100
100
|
await wait(() => {
|
|
101
|
-
expect(queryByText(
|
|
101
|
+
expect(queryByText('popout content')).not.toBeInTheDocument();
|
|
102
102
|
});
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
-
it(
|
|
106
|
-
const {
|
|
107
|
-
<Component initialState={{
|
|
108
|
-
{({
|
|
105
|
+
it('should apply aria roles to target', async () => {
|
|
106
|
+
const {getByText} = render(
|
|
107
|
+
<Component initialState={{isOpen: true}}>
|
|
108
|
+
{({state, setState}) => (
|
|
109
109
|
<Popout
|
|
110
110
|
isOpen={state.isOpen}
|
|
111
111
|
setIsOpen={(isOpen) => setState(isOpen)}
|
|
112
112
|
content={<div>popout content</div>}
|
|
113
113
|
>
|
|
114
114
|
<Button
|
|
115
|
-
onClick={() => setState({
|
|
115
|
+
onClick={() => setState({isOpen: !state.isOpen})}
|
|
116
116
|
appearance="primary"
|
|
117
117
|
>
|
|
118
118
|
show popout
|
|
@@ -122,17 +122,17 @@ describe("Popout", () => {
|
|
|
122
122
|
</Component>
|
|
123
123
|
);
|
|
124
124
|
|
|
125
|
-
const button = getByText(
|
|
125
|
+
const button = getByText('show popout');
|
|
126
126
|
|
|
127
|
-
expect(button).toHaveAttribute(
|
|
128
|
-
expect(button).toHaveAttribute(
|
|
127
|
+
expect(button).toHaveAttribute('aria-expanded', 'true');
|
|
128
|
+
expect(button).toHaveAttribute('aria-haspopup', 'true');
|
|
129
129
|
|
|
130
130
|
fireEvent.click(button);
|
|
131
131
|
|
|
132
|
-
expect(button).toHaveAttribute(
|
|
132
|
+
expect(button).toHaveAttribute('aria-expanded', 'false');
|
|
133
133
|
});
|
|
134
134
|
|
|
135
|
-
it(
|
|
135
|
+
it('should only trigger onClose/onOpen events on isShown updated', async () => {
|
|
136
136
|
const initialOnOpen = jest.fn();
|
|
137
137
|
const updatedOnOpen = jest.fn();
|
|
138
138
|
const initialOnClose = jest.fn();
|
|
@@ -156,7 +156,7 @@ describe("Popout", () => {
|
|
|
156
156
|
</Popout>
|
|
157
157
|
);
|
|
158
158
|
|
|
159
|
-
const {
|
|
159
|
+
const {rerender} = render(PopoutComponent(state));
|
|
160
160
|
|
|
161
161
|
state.isOpen = true;
|
|
162
162
|
rerender(PopoutComponent(state));
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
//@flow
|
|
2
|
-
import styled, {
|
|
3
|
-
import {
|
|
2
|
+
import styled, {type StyledComponent} from 'styled-components';
|
|
3
|
+
import {COMMON, LAYOUT} from '../utils/system-props';
|
|
4
4
|
|
|
5
|
-
import type {
|
|
5
|
+
import type {TypeTheme} from '../types/theme.flow';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
export const TargetWrapper: StyledComponent<{ ... }, TypeTheme, *> = styled.div`
|
|
7
|
+
export const TargetWrapper: StyledComponent<{...}, TypeTheme, *> = styled.div`
|
|
9
8
|
display: inline-block;
|
|
10
9
|
${COMMON}
|
|
11
10
|
${LAYOUT}
|
package/__flow__/Portal/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @flow strict-local
|
|
2
|
-
import * as React from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import {createPortal} from 'react-dom';
|
|
4
|
+
import {canUseDOM} from '../utils';
|
|
5
5
|
|
|
6
6
|
type TypeProps = {
|
|
7
7
|
as: string,
|
|
@@ -15,27 +15,27 @@ export default class Portal extends React.Component<TypeProps> {
|
|
|
15
15
|
el: ?HTMLElement = null;
|
|
16
16
|
|
|
17
17
|
static defaultProps = {
|
|
18
|
-
as:
|
|
19
|
-
id:
|
|
18
|
+
as: 'div',
|
|
19
|
+
id: '',
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
constructor(props: TypeProps) {
|
|
23
23
|
super(props);
|
|
24
24
|
|
|
25
25
|
if (canUseDOM()) {
|
|
26
|
-
const {
|
|
26
|
+
const {as, el, id} = props;
|
|
27
27
|
if (el) {
|
|
28
28
|
this.el = el;
|
|
29
29
|
} else {
|
|
30
30
|
this.el = document.createElement(as);
|
|
31
|
-
this.el.setAttribute(
|
|
31
|
+
this.el.setAttribute('data-racine-portal', id);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
componentDidMount() {
|
|
37
37
|
if (canUseDOM() && this.el) {
|
|
38
|
-
const {
|
|
38
|
+
const {container = document.body} = this.props;
|
|
39
39
|
if (container) {
|
|
40
40
|
// for flow
|
|
41
41
|
container.appendChild(this.el);
|
|
@@ -45,7 +45,7 @@ export default class Portal extends React.Component<TypeProps> {
|
|
|
45
45
|
|
|
46
46
|
componentWillUnmount() {
|
|
47
47
|
if (canUseDOM() && this.el) {
|
|
48
|
-
const {
|
|
48
|
+
const {container = document.body} = this.props;
|
|
49
49
|
if (container) {
|
|
50
50
|
// for flow
|
|
51
51
|
container.removeChild(this.el);
|