@wordpress/components 22.1.0 → 23.0.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 +57 -0
- package/build/alignment-matrix-control/cell.js.map +1 -1
- package/build/alignment-matrix-control/icon.js +4 -2
- package/build/alignment-matrix-control/icon.js.map +1 -1
- package/build/alignment-matrix-control/index.js +25 -1
- package/build/alignment-matrix-control/index.js.map +1 -1
- package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
- package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
- package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
- package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
- package/build/alignment-matrix-control/types.js +6 -0
- package/build/alignment-matrix-control/types.js.map +1 -0
- package/build/alignment-matrix-control/utils.js +9 -8
- package/build/alignment-matrix-control/utils.js.map +1 -1
- package/build/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
- package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
- package/build/autocomplete/index.js +38 -9
- package/build/autocomplete/index.js.map +1 -1
- package/build/base-control/hooks.js +52 -0
- package/build/base-control/hooks.js.map +1 -0
- package/build/base-control/index.js +24 -7
- package/build/base-control/index.js.map +1 -1
- package/build/base-field/hook.js +0 -14
- package/build/base-field/hook.js.map +1 -1
- package/build/base-field/index.js.map +1 -1
- package/build/base-field/styles.js +5 -5
- package/build/base-field/styles.js.map +1 -1
- package/build/base-field/types.js +6 -0
- package/build/base-field/types.js.map +1 -0
- package/build/border-control/border-control/component.js +1 -0
- package/build/border-control/border-control/component.js.map +1 -1
- package/build/border-control/styles.js +16 -16
- package/build/border-control/styles.js.map +1 -1
- package/build/box-control/linked-button.js +3 -4
- package/build/box-control/linked-button.js.map +1 -1
- package/build/color-palette/index.js +2 -7
- package/build/color-palette/index.js.map +1 -1
- package/build/color-picker/input-with-slider.js +1 -0
- package/build/color-picker/input-with-slider.js.map +1 -1
- package/build/color-picker/styles.js +8 -8
- package/build/color-picker/styles.js.map +1 -1
- package/build/custom-select-control/index.js +14 -2
- package/build/custom-select-control/index.js.map +1 -1
- package/build/dashicon/index.js +1 -4
- package/build/dashicon/index.js.map +1 -1
- package/build/date-time/date-time/index.js +4 -4
- package/build/date-time/date-time/index.js.map +1 -1
- package/build/duotone-picker/duotone-picker.js +2 -2
- package/build/duotone-picker/duotone-picker.js.map +1 -1
- package/build/gradient-picker/index.js +3 -9
- package/build/gradient-picker/index.js.map +1 -1
- package/build/higher-order/with-fallback-styles/index.js +2 -2
- package/build/higher-order/with-fallback-styles/index.js.map +1 -1
- package/build/index.js +13 -1
- package/build/index.js.map +1 -1
- package/build/input-control/index.js +17 -5
- package/build/input-control/index.js.map +1 -1
- package/build/input-control/input-base.js +2 -0
- package/build/input-control/input-base.js.map +1 -1
- package/build/mobile/bottom-sheet/cell.native.js +1 -1
- package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
- package/build/mobile/bottom-sheet/switch-cell.native.js +1 -3
- package/build/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
- package/build/mobile/global-styles-context/index.native.js +8 -8
- package/build/mobile/global-styles-context/index.native.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/index.ios.js +4 -2
- package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
- package/build/modal/index.js +8 -0
- package/build/modal/index.js.map +1 -1
- package/build/navigator/navigator-provider/component.js +12 -8
- package/build/navigator/navigator-provider/component.js.map +1 -1
- package/build/number-control/styles/number-control-styles.js +8 -8
- package/build/number-control/styles/number-control-styles.js.map +1 -1
- package/build/palette-edit/index.js +72 -33
- package/build/palette-edit/index.js.map +1 -1
- package/build/popover/index.js +10 -2
- package/build/popover/index.js.map +1 -1
- package/build/query-controls/index.js +1 -0
- package/build/query-controls/index.js.map +1 -1
- package/build/snackbar/index.js +35 -24
- package/build/snackbar/index.js.map +1 -1
- package/build/snackbar/list.js +14 -19
- package/build/snackbar/list.js.map +1 -1
- package/build/snackbar/types.js +6 -0
- package/build/snackbar/types.js.map +1 -0
- package/build/tab-panel/index.js +10 -5
- package/build/tab-panel/index.js.map +1 -1
- package/build/theme/color-algorithms.js +118 -0
- package/build/theme/color-algorithms.js.map +1 -0
- package/build/theme/index.js +21 -18
- package/build/theme/index.js.map +1 -1
- package/build/theme/styles.js +10 -7
- package/build/theme/styles.js.map +1 -1
- package/build/toggle-control/index.js +5 -2
- package/build/toggle-control/index.js.map +1 -1
- package/build/ui/context/context-system-provider.js +3 -1
- package/build/ui/context/context-system-provider.js.map +1 -1
- package/build/unit-control/index.js +5 -2
- package/build/unit-control/index.js.map +1 -1
- package/build/utils/colors-values.js +1 -1
- package/build/utils/colors-values.js.map +1 -1
- package/build/utils/config-values.js +0 -2
- package/build/utils/config-values.js.map +1 -1
- package/build/utils/hooks/use-controlled-value.js.map +1 -1
- package/build-module/alignment-matrix-control/cell.js.map +1 -1
- package/build-module/alignment-matrix-control/icon.js +4 -2
- package/build-module/alignment-matrix-control/icon.js.map +1 -1
- package/build-module/alignment-matrix-control/index.js +23 -1
- package/build-module/alignment-matrix-control/index.js.map +1 -1
- package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
- package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
- package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
- package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
- package/build-module/alignment-matrix-control/types.js +2 -0
- package/build-module/alignment-matrix-control/types.js.map +1 -0
- package/build-module/alignment-matrix-control/utils.js +13 -8
- package/build-module/alignment-matrix-control/utils.js.map +1 -1
- package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
- package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
- package/build-module/autocomplete/index.js +38 -9
- package/build-module/autocomplete/index.js.map +1 -1
- package/build-module/base-control/hooks.js +41 -0
- package/build-module/base-control/hooks.js.map +1 -0
- package/build-module/base-control/index.js +18 -8
- package/build-module/base-control/index.js.map +1 -1
- package/build-module/base-field/hook.js +0 -14
- package/build-module/base-field/hook.js.map +1 -1
- package/build-module/base-field/index.js.map +1 -1
- package/build-module/base-field/styles.js +5 -5
- package/build-module/base-field/styles.js.map +1 -1
- package/build-module/base-field/types.js +2 -0
- package/build-module/base-field/types.js.map +1 -0
- package/build-module/border-control/border-control/component.js +1 -0
- package/build-module/border-control/border-control/component.js.map +1 -1
- package/build-module/border-control/styles.js +17 -17
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/box-control/linked-button.js +3 -4
- package/build-module/box-control/linked-button.js.map +1 -1
- package/build-module/color-palette/index.js +2 -7
- package/build-module/color-palette/index.js.map +1 -1
- package/build-module/color-picker/input-with-slider.js +1 -0
- package/build-module/color-picker/input-with-slider.js.map +1 -1
- package/build-module/color-picker/styles.js +8 -8
- package/build-module/color-picker/styles.js.map +1 -1
- package/build-module/custom-select-control/index.js +14 -2
- package/build-module/custom-select-control/index.js.map +1 -1
- package/build-module/dashicon/index.js +1 -4
- package/build-module/dashicon/index.js.map +1 -1
- package/build-module/date-time/date-time/index.js +4 -4
- package/build-module/date-time/date-time/index.js.map +1 -1
- package/build-module/duotone-picker/duotone-picker.js +2 -2
- package/build-module/duotone-picker/duotone-picker.js.map +1 -1
- package/build-module/gradient-picker/index.js +3 -8
- package/build-module/gradient-picker/index.js.map +1 -1
- package/build-module/higher-order/with-fallback-styles/index.js +2 -2
- package/build-module/higher-order/with-fallback-styles/index.js.map +1 -1
- package/build-module/index.js +2 -2
- package/build-module/index.js.map +1 -1
- package/build-module/input-control/index.js +16 -5
- package/build-module/input-control/index.js.map +1 -1
- package/build-module/input-control/input-base.js +2 -0
- package/build-module/input-control/input-base.js.map +1 -1
- package/build-module/mobile/bottom-sheet/cell.native.js +1 -1
- package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/switch-cell.native.js +1 -2
- package/build-module/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
- package/build-module/mobile/global-styles-context/index.native.js +8 -7
- package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
- package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
- package/build-module/modal/index.js +8 -0
- package/build-module/modal/index.js.map +1 -1
- package/build-module/navigator/navigator-provider/component.js +12 -8
- package/build-module/navigator/navigator-provider/component.js.map +1 -1
- package/build-module/number-control/styles/number-control-styles.js +8 -10
- package/build-module/number-control/styles/number-control-styles.js.map +1 -1
- package/build-module/palette-edit/index.js +73 -34
- package/build-module/palette-edit/index.js.map +1 -1
- package/build-module/popover/index.js +10 -2
- package/build-module/popover/index.js.map +1 -1
- package/build-module/query-controls/index.js +1 -0
- package/build-module/query-controls/index.js.map +1 -1
- package/build-module/snackbar/index.js +33 -23
- package/build-module/snackbar/index.js.map +1 -1
- package/build-module/snackbar/list.js +14 -22
- package/build-module/snackbar/list.js.map +1 -1
- package/build-module/snackbar/types.js +2 -0
- package/build-module/snackbar/types.js.map +1 -0
- package/build-module/tab-panel/index.js +10 -5
- package/build-module/tab-panel/index.js.map +1 -1
- package/build-module/theme/color-algorithms.js +105 -0
- package/build-module/theme/color-algorithms.js.map +1 -0
- package/build-module/theme/index.js +21 -17
- package/build-module/theme/index.js.map +1 -1
- package/build-module/theme/styles.js +8 -6
- package/build-module/theme/styles.js.map +1 -1
- package/build-module/toggle-control/index.js +4 -2
- package/build-module/toggle-control/index.js.map +1 -1
- package/build-module/ui/context/context-system-provider.js +3 -2
- package/build-module/ui/context/context-system-provider.js.map +1 -1
- package/build-module/unit-control/index.js +5 -2
- package/build-module/unit-control/index.js.map +1 -1
- package/build-module/utils/colors-values.js +1 -1
- package/build-module/utils/colors-values.js.map +1 -1
- package/build-module/utils/config-values.js +0 -2
- package/build-module/utils/config-values.js.map +1 -1
- package/build-module/utils/hooks/use-controlled-value.js.map +1 -1
- package/build-style/style-rtl.css +92 -75
- package/build-style/style.css +92 -75
- package/build-types/alignment-matrix-control/cell.d.ts +5 -0
- package/build-types/alignment-matrix-control/cell.d.ts.map +1 -0
- package/build-types/alignment-matrix-control/icon.d.ts +6 -0
- package/build-types/alignment-matrix-control/icon.d.ts.map +1 -0
- package/build-types/alignment-matrix-control/index.d.ts +30 -0
- package/build-types/alignment-matrix-control/index.d.ts.map +1 -0
- package/build-types/alignment-matrix-control/stories/index.d.ts +14 -0
- package/build-types/alignment-matrix-control/stories/index.d.ts.map +1 -0
- package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts +19 -0
- package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts.map +1 -0
- package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts +23 -0
- package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -0
- package/build-types/alignment-matrix-control/test/index.d.ts +2 -0
- package/build-types/alignment-matrix-control/test/index.d.ts.map +1 -0
- package/build-types/alignment-matrix-control/types.d.ts +39 -0
- package/build-types/alignment-matrix-control/types.d.ts.map +1 -0
- package/build-types/alignment-matrix-control/utils.d.ts +33 -0
- package/build-types/alignment-matrix-control/utils.d.ts.map +1 -0
- package/build-types/base-control/hooks.d.ts +23 -0
- package/build-types/base-control/hooks.d.ts.map +1 -0
- package/build-types/base-control/index.d.ts +17 -7
- package/build-types/base-control/index.d.ts.map +1 -1
- package/build-types/base-control/stories/index.d.ts.map +1 -1
- package/build-types/base-control/test/index.d.ts +2 -0
- package/build-types/base-control/test/index.d.ts.map +1 -0
- package/build-types/base-control/types.d.ts +8 -2
- package/build-types/base-control/types.d.ts.map +1 -1
- package/build-types/base-field/hook.d.ts +7 -31
- package/build-types/base-field/hook.d.ts.map +1 -1
- package/build-types/base-field/index.d.ts +1 -1
- package/build-types/base-field/index.d.ts.map +1 -1
- package/build-types/base-field/styles.d.ts +5 -5
- package/build-types/base-field/styles.d.ts.map +1 -1
- package/build-types/base-field/test/index.d.ts +2 -0
- package/build-types/base-field/test/index.d.ts.map +1 -0
- package/build-types/base-field/types.d.ts +29 -0
- package/build-types/base-field/types.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
- package/build-types/border-control/border-control/component.d.ts.map +1 -1
- package/build-types/border-control/border-control/hook.d.ts +2 -2
- package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -2
- package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/card/card/hook.d.ts +2 -2
- package/build-types/card/card-body/hook.d.ts +2 -2
- package/build-types/card/card-divider/hook.d.ts +2 -2
- package/build-types/card/card-footer/hook.d.ts +2 -2
- package/build-types/card/card-header/hook.d.ts +2 -2
- package/build-types/card/card-media/hook.d.ts +2 -2
- package/build-types/color-palette/index.d.ts +2 -2
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/color-palette/stories/index.d.ts +6 -7
- package/build-types/color-palette/stories/index.d.ts.map +1 -1
- package/build-types/color-palette/styles.d.ts +1 -1
- package/build-types/color-palette/types.d.ts +1 -1
- package/build-types/color-palette/types.d.ts.map +1 -1
- package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
- package/build-types/color-picker/styles.d.ts +5 -5
- package/build-types/color-picker/styles.d.ts.map +1 -1
- package/build-types/custom-select-control/index.d.ts.map +1 -1
- package/build-types/dashicon/index.d.ts +6 -20
- package/build-types/dashicon/index.d.ts.map +1 -1
- package/build-types/dashicon/types.d.ts +14 -0
- package/build-types/dashicon/types.d.ts.map +1 -1
- package/build-types/date-time/date/styles.d.ts +3 -3
- package/build-types/date-time/date-time/styles.d.ts +3 -3
- package/build-types/date-time/time/styles.d.ts +8 -8
- package/build-types/elevation/hook.d.ts +2 -2
- package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
- package/build-types/flex/flex/hook.d.ts +2 -2
- package/build-types/flex/flex-block/hook.d.ts +2 -2
- package/build-types/flex/flex-item/hook.d.ts +2 -2
- package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -5
- package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
- package/build-types/grid/hook.d.ts +2 -2
- package/build-types/h-stack/component.d.ts +1 -1
- package/build-types/h-stack/hook.d.ts +2 -2
- package/build-types/heading/hook.d.ts +2 -2
- package/build-types/input-control/index.d.ts +1 -1
- package/build-types/input-control/index.d.ts.map +1 -1
- package/build-types/input-control/input-base.d.ts.map +1 -1
- package/build-types/input-control/stories/index.d.ts +1 -0
- package/build-types/input-control/stories/index.d.ts.map +1 -1
- package/build-types/input-control/types.d.ts +2 -1
- package/build-types/input-control/types.d.ts.map +1 -1
- package/build-types/item-group/item/hook.d.ts +2 -2
- package/build-types/item-group/item-group/hook.d.ts +2 -2
- package/build-types/modal/index.d.ts.map +1 -1
- package/build-types/modal/stories/index.d.ts.map +1 -1
- package/build-types/navigator/navigator-back-button/hook.d.ts +3 -3
- package/build-types/navigator/navigator-button/hook.d.ts +3 -3
- package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
- package/build-types/number-control/index.d.ts +2 -2
- package/build-types/number-control/index.d.ts.map +1 -1
- package/build-types/number-control/stories/index.d.ts +25 -0
- package/build-types/number-control/stories/index.d.ts.map +1 -0
- package/build-types/number-control/styles/number-control-styles.d.ts +6 -6
- package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
- package/build-types/number-control/test/index.d.ts +2 -0
- package/build-types/number-control/test/index.d.ts.map +1 -0
- package/build-types/popover/index.d.ts +1 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/popover/stories/e2e/index.d.ts +1 -1
- package/build-types/range-control/index.d.ts +1 -1
- package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
- package/build-types/resizable-box/resize-tooltip/index.d.ts +15 -19
- package/build-types/resizable-box/resize-tooltip/index.d.ts.map +1 -1
- package/build-types/resizable-box/resize-tooltip/label.d.ts +4 -3
- package/build-types/resizable-box/resize-tooltip/label.d.ts.map +1 -1
- package/build-types/scrollable/hook.d.ts +2 -2
- package/build-types/search-control/index.d.ts +1 -1
- package/build-types/search-control/stories/index.d.ts +2 -2
- package/build-types/snackbar/index.d.ts +19 -0
- package/build-types/snackbar/index.d.ts.map +1 -0
- package/build-types/snackbar/list.d.ts +18 -0
- package/build-types/snackbar/list.d.ts.map +1 -0
- package/build-types/snackbar/stories/index.d.ts +16 -0
- package/build-types/snackbar/stories/index.d.ts.map +1 -0
- package/build-types/snackbar/stories/list.d.ts +12 -0
- package/build-types/snackbar/stories/list.d.ts.map +1 -0
- package/build-types/snackbar/types.d.ts +111 -0
- package/build-types/snackbar/types.d.ts.map +1 -0
- package/build-types/spacer/hook.d.ts +2 -2
- package/build-types/spinner/index.d.ts +1 -1
- package/build-types/surface/hook.d.ts +2 -2
- package/build-types/tab-panel/index.d.ts +1 -1
- package/build-types/tab-panel/index.d.ts.map +1 -1
- package/build-types/tab-panel/types.d.ts +19 -1
- package/build-types/tab-panel/types.d.ts.map +1 -1
- package/build-types/text/hook.d.ts +2 -2
- package/build-types/text-control/index.d.ts +2 -2
- package/build-types/text-control/stories/index.d.ts.map +1 -1
- package/build-types/text-control/types.d.ts +1 -5
- package/build-types/text-control/types.d.ts.map +1 -1
- package/build-types/theme/color-algorithms.d.ts +20 -0
- package/build-types/theme/color-algorithms.d.ts.map +1 -0
- package/build-types/theme/index.d.ts +1 -1
- package/build-types/theme/index.d.ts.map +1 -1
- package/build-types/theme/stories/index.d.ts +4 -0
- package/build-types/theme/stories/index.d.ts.map +1 -1
- package/build-types/theme/styles.d.ts +3 -2
- package/build-types/theme/styles.d.ts.map +1 -1
- package/build-types/theme/test/color-algorithms.d.ts +2 -0
- package/build-types/theme/test/color-algorithms.d.ts.map +1 -0
- package/build-types/theme/types.d.ts +41 -3
- package/build-types/theme/types.d.ts.map +1 -1
- package/build-types/toggle-control/index.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
- package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
- package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
- package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
- package/build-types/truncate/hook.d.ts +2 -2
- package/build-types/ui/context/context-system-provider.d.ts.map +1 -1
- package/build-types/ui/control-group/hook.d.ts +2 -2
- package/build-types/ui/control-label/hook.d.ts +2 -2
- package/build-types/ui/form-group/form-group.d.ts +2 -2
- package/build-types/ui/form-group/use-form-group.d.ts +5 -5
- package/build-types/unit-control/index.d.ts +2 -1
- package/build-types/unit-control/index.d.ts.map +1 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
- package/build-types/unit-control/types.d.ts +4 -0
- package/build-types/unit-control/types.d.ts.map +1 -1
- package/build-types/utils/config-values.d.ts +0 -2
- package/build-types/utils/hooks/use-controlled-value.d.ts +2 -1
- package/build-types/utils/hooks/use-controlled-value.d.ts.map +1 -1
- package/build-types/v-stack/component.d.ts +2 -2
- package/build-types/v-stack/hook.d.ts +2 -2
- package/build-types/v-stack/stories/index.d.ts +2 -2
- package/package.json +21 -20
- package/src/alignment-matrix-control/README.md +7 -7
- package/src/alignment-matrix-control/{cell.js → cell.tsx} +7 -1
- package/src/alignment-matrix-control/{icon.js → icon.tsx} +6 -3
- package/src/alignment-matrix-control/{index.js → index.tsx} +31 -4
- package/src/alignment-matrix-control/stories/{index.js → index.tsx} +17 -9
- package/src/alignment-matrix-control/styles/{alignment-matrix-control-icon-styles.js → alignment-matrix-control-icon-styles.ts} +11 -3
- package/src/alignment-matrix-control/styles/{alignment-matrix-control-styles.js → alignment-matrix-control-styles.ts} +13 -3
- package/src/alignment-matrix-control/test/{index.js → index.tsx} +5 -5
- package/src/alignment-matrix-control/types.ts +54 -0
- package/src/alignment-matrix-control/{utils.js → utils.tsx} +24 -14
- package/src/angle-picker-control/styles/angle-picker-control-styles.js +4 -0
- package/src/autocomplete/index.js +43 -12
- package/src/base-control/README.md +21 -12
- package/src/base-control/hooks.ts +45 -0
- package/src/base-control/index.tsx +18 -7
- package/src/base-control/stories/index.tsx +8 -10
- package/src/base-control/test/index.tsx +52 -0
- package/src/base-control/types.ts +8 -2
- package/src/base-field/README.md +21 -22
- package/src/base-field/{hook.js → hook.ts} +5 -15
- package/src/base-field/{index.js → index.ts} +0 -0
- package/src/base-field/{styles.js → styles.ts} +2 -2
- package/src/base-field/test/__snapshots__/{index.js.snap → index.tsx.snap} +4 -4
- package/src/base-field/test/{index.js → index.tsx} +10 -5
- package/src/base-field/types.ts +29 -0
- package/src/border-box-control/border-box-control/README.md +1 -0
- package/src/border-box-control/test/index.js +3 -1
- package/src/border-control/border-control/component.tsx +1 -0
- package/src/border-control/styles.ts +1 -10
- package/src/box-control/linked-button.js +8 -11
- package/src/box-control/test/index.js +206 -135
- package/src/button/stories/index.js +30 -0
- package/src/button/style.scss +17 -14
- package/src/button/test/index.js +32 -15
- package/src/card/test/index.tsx +32 -20
- package/src/circular-option-picker/style.scss +1 -0
- package/src/color-palette/index.tsx +4 -6
- package/src/color-palette/stories/index.tsx +1 -5
- package/src/color-palette/test/__snapshots__/index.tsx.snap +4 -4
- package/src/color-palette/test/index.tsx +84 -36
- package/src/color-palette/types.ts +1 -1
- package/src/color-picker/README.md +1 -0
- package/src/color-picker/input-with-slider.tsx +1 -0
- package/src/color-picker/styles.ts +0 -4
- package/src/confirm-dialog/README.md +3 -2
- package/src/custom-select-control/README.md +14 -0
- package/src/custom-select-control/index.js +14 -2
- package/src/dashicon/{index.js → index.tsx} +10 -4
- package/src/dashicon/types.ts +17 -0
- package/src/date-time/date-time/index.tsx +2 -2
- package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -8
- package/src/disabled/test/index.tsx +21 -11
- package/src/dropdown/test/index.js +39 -49
- package/src/dropdown-menu/test/index.js +18 -12
- package/src/duotone-picker/duotone-picker.js +2 -2
- package/src/focal-point-picker/test/media.js +26 -21
- package/src/form-token-field/style.scss +1 -1
- package/src/gradient-picker/index.js +5 -8
- package/src/grid/test/grid.tsx +31 -31
- package/src/higher-order/navigate-regions/style.scss +2 -22
- package/src/higher-order/with-fallback-styles/index.js +4 -2
- package/src/higher-order/with-filters/test/index.js +94 -101
- package/src/higher-order/with-focus-return/test/index.js +1 -4
- package/src/index.js +2 -2
- package/src/input-control/index.tsx +42 -28
- package/src/input-control/input-base.tsx +8 -1
- package/src/input-control/stories/index.tsx +6 -0
- package/src/input-control/test/index.js +18 -0
- package/src/input-control/types.ts +2 -0
- package/src/mobile/bottom-sheet/cell.native.js +1 -1
- package/src/mobile/bottom-sheet/switch-cell.native.js +2 -2
- package/src/mobile/global-styles-context/index.native.js +9 -11
- package/src/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
- package/src/mobile/link-settings/test/edit.native.js +68 -124
- package/src/modal/index.tsx +11 -0
- package/src/modal/stories/index.tsx +3 -0
- package/src/modal/test/index.tsx +15 -0
- package/src/navigation/stories/index.js +6 -6
- package/src/navigation/stories/{controlled-state.js → utils/controlled-state.js} +3 -3
- package/src/navigation/stories/{default.js → utils/default.js} +3 -3
- package/src/navigation/stories/{group.js → utils/group.js} +4 -4
- package/src/navigation/stories/{hide-if-empty.js → utils/hide-if-empty.js} +3 -3
- package/src/navigation/stories/{more-examples.js → utils/more-examples.js} +4 -4
- package/src/navigation/stories/{search.js → utils/search.js} +5 -5
- package/src/navigator/navigator-provider/component.tsx +13 -10
- package/src/notice/test/list.js +8 -5
- package/src/number-control/stories/{index.js → index.tsx} +24 -7
- package/src/number-control/styles/{number-control-styles.js → number-control-styles.ts} +5 -3
- package/src/number-control/test/index.tsx +600 -0
- package/src/palette-edit/index.js +88 -39
- package/src/palette-edit/test/index.js +25 -1
- package/src/popover/index.tsx +10 -2
- package/src/popover/style.scss +12 -11
- package/src/popover/test/index.tsx +25 -15
- package/src/query-controls/index.js +1 -0
- package/src/range-control/test/index.tsx +57 -60
- package/src/resizable-box/style.scss +1 -0
- package/src/sandbox/test/index.js +13 -11
- package/src/search-control/style.scss +4 -0
- package/src/snackbar/README.md +63 -8
- package/src/snackbar/{index.js → index.tsx} +46 -28
- package/src/snackbar/{list.js → list.tsx} +20 -21
- package/src/snackbar/stories/index.tsx +96 -0
- package/src/snackbar/stories/list.tsx +98 -0
- package/src/snackbar/types.ts +116 -0
- package/src/tab-panel/README.md +9 -0
- package/src/tab-panel/index.tsx +14 -3
- package/src/tab-panel/style.scss +46 -34
- package/src/tab-panel/test/index.tsx +111 -0
- package/src/tab-panel/types.ts +20 -1
- package/src/text/test/__snapshots__/index.tsx.snap +1 -0
- package/src/text/test/index.tsx +98 -46
- package/src/text-control/stories/index.tsx +0 -1
- package/src/text-control/types.ts +1 -6
- package/src/theme/README.md +32 -2
- package/src/theme/color-algorithms.ts +138 -0
- package/src/theme/index.tsx +23 -16
- package/src/theme/stories/index.tsx +67 -0
- package/src/theme/styles.ts +22 -17
- package/src/theme/test/color-algorithms.ts +100 -0
- package/src/theme/test/index.tsx +68 -35
- package/src/theme/types.ts +43 -3
- package/src/toggle-control/index.tsx +4 -2
- package/src/toggle-group-control/test/index.tsx +13 -2
- package/src/toolbar-group/test/index.js +8 -6
- package/src/tools-panel/stories/index.js +1 -1
- package/src/tools-panel/stories/{tools-panel-with-item-group-slot.js → utils/tools-panel-with-item-group-slot.js} +14 -11
- package/src/tools-panel/test/index.js +20 -14
- package/src/tooltip/README.md +7 -0
- package/src/tooltip/style.scss +2 -2
- package/src/tooltip/test/index.js +109 -18
- package/src/ui/context/context-system-provider.js +3 -2
- package/src/ui/context/test/context-system-provider.js +5 -4
- package/src/ui/control-label/test/index.js +3 -5
- package/src/unit-control/README.md +9 -1
- package/src/unit-control/index.tsx +3 -0
- package/src/unit-control/test/index.tsx +1 -0
- package/src/unit-control/types.ts +4 -0
- package/src/utils/colors-values.js +1 -1
- package/src/utils/config-values.js +0 -2
- package/src/utils/hooks/use-controlled-value.ts +2 -2
- package/src/utils/theme-variables.scss +20 -0
- package/tsconfig.json +2 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/src/number-control/test/index.js +0 -478
- package/src/snackbar/stories/index.js +0 -89
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { fireEvent, render, screen } from '@testing-library/react';
|
|
4
|
+
import { fireEvent, render, screen, within } from '@testing-library/react';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
@@ -16,15 +16,15 @@ import Sandbox from '../';
|
|
|
16
16
|
describe( 'Sandbox', () => {
|
|
17
17
|
const TestWrapper = () => {
|
|
18
18
|
const [ html, setHtml ] = useState(
|
|
19
|
-
//
|
|
19
|
+
// MutationObserver implementation from JSDom does not work as intended
|
|
20
20
|
// with iframes so we need to ignore it for the time being.
|
|
21
21
|
'<script type="text/javascript">window.MutationObserver = null;</script>' +
|
|
22
|
-
'<iframe
|
|
22
|
+
'<iframe title="Mock Iframe" src="https://super.embed"></iframe>'
|
|
23
23
|
);
|
|
24
24
|
|
|
25
25
|
const updateHtml = () => {
|
|
26
26
|
setHtml(
|
|
27
|
-
'<iframe
|
|
27
|
+
'<iframe title="Mock Iframe" src="https://another.super.embed"></iframe>'
|
|
28
28
|
);
|
|
29
29
|
};
|
|
30
30
|
|
|
@@ -33,18 +33,19 @@ describe( 'Sandbox', () => {
|
|
|
33
33
|
<button onClick={ updateHtml } className="mock-button">
|
|
34
34
|
Mock Button
|
|
35
35
|
</button>
|
|
36
|
-
<Sandbox html={ html } />
|
|
36
|
+
<Sandbox html={ html } title="Sandbox Title" />
|
|
37
37
|
</div>
|
|
38
38
|
);
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
it( 'should rerender with new emdeded content if html prop changes', () => {
|
|
42
|
-
|
|
42
|
+
render( <TestWrapper /> );
|
|
43
43
|
|
|
44
|
-
const iframe =
|
|
44
|
+
const iframe = screen.getByTitle( 'Sandbox Title' );
|
|
45
45
|
|
|
46
|
-
let sandboxedIframe =
|
|
47
|
-
iframe.contentWindow.document.body
|
|
46
|
+
let sandboxedIframe = within(
|
|
47
|
+
iframe.contentWindow.document.body
|
|
48
|
+
).getByTitle( 'Mock Iframe' );
|
|
48
49
|
|
|
49
50
|
expect( sandboxedIframe ).toHaveAttribute(
|
|
50
51
|
'src',
|
|
@@ -53,8 +54,9 @@ describe( 'Sandbox', () => {
|
|
|
53
54
|
|
|
54
55
|
fireEvent.click( screen.getByRole( 'button' ) );
|
|
55
56
|
|
|
56
|
-
sandboxedIframe =
|
|
57
|
-
iframe.contentWindow.document.body
|
|
57
|
+
sandboxedIframe = within(
|
|
58
|
+
iframe.contentWindow.document.body
|
|
59
|
+
).getByTitle( 'Mock Iframe' );
|
|
58
60
|
|
|
59
61
|
expect( sandboxedIframe ).toHaveAttribute(
|
|
60
62
|
'src',
|
package/src/snackbar/README.md
CHANGED
|
@@ -36,17 +36,72 @@ const MySnackbarNotice = () => (
|
|
|
36
36
|
);
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
### Props
|
|
40
40
|
|
|
41
41
|
The following props are used to control the display of the component.
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
- `
|
|
49
|
-
|
|
43
|
+
#### `actions`: `NoticeAction[]`
|
|
44
|
+
|
|
45
|
+
An array of action objects. Each member object should contain a `label` and either a `url` link string or `onClick` callback function.
|
|
46
|
+
|
|
47
|
+
- Required: No
|
|
48
|
+
- Default: `[]`
|
|
49
|
+
|
|
50
|
+
#### `children`: `string`
|
|
51
|
+
|
|
52
|
+
The displayed message of a notice. Also used as the spoken message for assistive technology, unless `spokenMessage` is provided as an alternative message.
|
|
53
|
+
|
|
54
|
+
- Required: Yes
|
|
55
|
+
|
|
56
|
+
#### `explicitDismiss`: `boolean`
|
|
57
|
+
|
|
58
|
+
Whether to require user action to dismiss the snackbar. By default, this is dismissed on a timeout, without user interaction.
|
|
59
|
+
|
|
60
|
+
- Required: No
|
|
61
|
+
- Default: `false`
|
|
62
|
+
|
|
63
|
+
#### `icon`: `ReactNode`
|
|
64
|
+
|
|
65
|
+
The icon to render in the snackbar.
|
|
66
|
+
|
|
67
|
+
- Required: No
|
|
68
|
+
- Default: `null`
|
|
69
|
+
|
|
70
|
+
#### `listRef`: `MutableRefObject< HTMLDivElement | null >`
|
|
71
|
+
|
|
72
|
+
A ref to the list that contains the snackbar.
|
|
73
|
+
|
|
74
|
+
- Required: No
|
|
75
|
+
|
|
76
|
+
#### `onDismiss`: `() => void`
|
|
77
|
+
|
|
78
|
+
A callback executed when the snackbar is dismissed. It is distinct from onRemove, which _looks_ like a callback but is actually the function to call to remove the snackbar from the UI.
|
|
79
|
+
|
|
80
|
+
- Required: No
|
|
81
|
+
|
|
82
|
+
#### `onRemove`: `() => void`
|
|
83
|
+
|
|
84
|
+
Function called when dismissing the notice.
|
|
85
|
+
|
|
86
|
+
- Required: No
|
|
87
|
+
|
|
88
|
+
#### `politeness`: `'polite' | 'assertive'`
|
|
89
|
+
|
|
90
|
+
A politeness level for the notice's spoken message. Should be provided as one of the valid options for [an `aria-live` attribute value](https://www.w3.org/TR/wai-aria-1.1/#aria-live). Note that this value should be considered a suggestion; assistive technologies may override it based on internal heuristics.
|
|
91
|
+
|
|
92
|
+
A value of `'assertive'` is to be used for important, and usually time-sensitive, information. It will interrupt anything else the screen reader is announcing in that moment.
|
|
93
|
+
|
|
94
|
+
A value of `'polite'` is to be used for advisory information. It should not interrupt what the screen reader is announcing in that moment (the "speech queue") or interrupt the current task.
|
|
95
|
+
|
|
96
|
+
- Required: No
|
|
97
|
+
- Default: `'polite'`
|
|
98
|
+
|
|
99
|
+
#### `spokenMessage`: `string`
|
|
100
|
+
|
|
101
|
+
Used to provide a custom spoken message.
|
|
102
|
+
|
|
103
|
+
- Required: No
|
|
104
|
+
- Default: `children`
|
|
50
105
|
|
|
51
106
|
## Related components
|
|
52
107
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
+
import type { ForwardedRef, KeyboardEvent, MouseEvent } from 'react';
|
|
4
5
|
import classnames from 'classnames';
|
|
5
6
|
|
|
6
7
|
/**
|
|
@@ -14,21 +15,23 @@ import warning from '@wordpress/warning';
|
|
|
14
15
|
/**
|
|
15
16
|
* Internal dependencies
|
|
16
17
|
*/
|
|
17
|
-
import
|
|
18
|
+
import Button from '../button';
|
|
19
|
+
import type { NoticeAction, SnackbarProps } from './types';
|
|
20
|
+
import type { WordPressComponentProps } from '../ui/context';
|
|
18
21
|
|
|
19
|
-
const noop = () => {};
|
|
20
22
|
const NOTICE_TIMEOUT = 10000;
|
|
21
23
|
|
|
22
|
-
/** @typedef {import('@wordpress/element').WPElement} WPElement */
|
|
23
|
-
|
|
24
24
|
/**
|
|
25
25
|
* Custom hook which announces the message with the given politeness, if a
|
|
26
26
|
* valid message is provided.
|
|
27
27
|
*
|
|
28
|
-
* @param
|
|
29
|
-
* @param
|
|
28
|
+
* @param message Message to announce.
|
|
29
|
+
* @param politeness Politeness to announce.
|
|
30
30
|
*/
|
|
31
|
-
function useSpokenMessage(
|
|
31
|
+
function useSpokenMessage(
|
|
32
|
+
message: SnackbarProps[ 'spokenMessage' ],
|
|
33
|
+
politeness: NonNullable< SnackbarProps[ 'politeness' ] >
|
|
34
|
+
) {
|
|
32
35
|
const spokenMessage =
|
|
33
36
|
typeof message === 'string' ? message : renderToString( message );
|
|
34
37
|
|
|
@@ -39,42 +42,43 @@ function useSpokenMessage( message, politeness ) {
|
|
|
39
42
|
}, [ spokenMessage, politeness ] );
|
|
40
43
|
}
|
|
41
44
|
|
|
42
|
-
function
|
|
45
|
+
function UnforwardedSnackbar(
|
|
43
46
|
{
|
|
44
47
|
className,
|
|
45
48
|
children,
|
|
46
49
|
spokenMessage = children,
|
|
47
50
|
politeness = 'polite',
|
|
48
51
|
actions = [],
|
|
49
|
-
onRemove
|
|
52
|
+
onRemove,
|
|
50
53
|
icon = null,
|
|
51
54
|
explicitDismiss = false,
|
|
52
55
|
// onDismiss is a callback executed when the snackbar is dismissed.
|
|
53
56
|
// It is distinct from onRemove, which _looks_ like a callback but is
|
|
54
57
|
// actually the function to call to remove the snackbar from the UI.
|
|
55
|
-
onDismiss
|
|
58
|
+
onDismiss,
|
|
56
59
|
listRef,
|
|
57
|
-
},
|
|
58
|
-
ref
|
|
60
|
+
}: WordPressComponentProps< SnackbarProps, 'div' >,
|
|
61
|
+
ref: ForwardedRef< any >
|
|
59
62
|
) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
function dismissMe( event ) {
|
|
63
|
+
function dismissMe( event: KeyboardEvent | MouseEvent ) {
|
|
63
64
|
if ( event && event.preventDefault ) {
|
|
64
65
|
event.preventDefault();
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
// Prevent focus loss by moving it to the list element.
|
|
68
|
-
listRef
|
|
69
|
+
listRef?.current?.focus();
|
|
69
70
|
|
|
70
|
-
onDismiss();
|
|
71
|
-
onRemove();
|
|
71
|
+
onDismiss?.();
|
|
72
|
+
onRemove?.();
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
function onActionClick(
|
|
75
|
+
function onActionClick(
|
|
76
|
+
event: MouseEvent,
|
|
77
|
+
onClick: NoticeAction[ 'onClick' ]
|
|
78
|
+
) {
|
|
75
79
|
event.stopPropagation();
|
|
76
80
|
|
|
77
|
-
onRemove();
|
|
81
|
+
onRemove?.();
|
|
78
82
|
|
|
79
83
|
if ( onClick ) {
|
|
80
84
|
onClick( event );
|
|
@@ -87,8 +91,8 @@ function Snackbar(
|
|
|
87
91
|
useEffect( () => {
|
|
88
92
|
const timeoutHandle = setTimeout( () => {
|
|
89
93
|
if ( ! explicitDismiss ) {
|
|
90
|
-
onDismiss();
|
|
91
|
-
onRemove();
|
|
94
|
+
onDismiss?.();
|
|
95
|
+
onRemove?.();
|
|
92
96
|
}
|
|
93
97
|
}, NOTICE_TIMEOUT );
|
|
94
98
|
|
|
@@ -118,10 +122,10 @@ function Snackbar(
|
|
|
118
122
|
<div
|
|
119
123
|
ref={ ref }
|
|
120
124
|
className={ classes }
|
|
121
|
-
onClick={ ! explicitDismiss ? dismissMe :
|
|
122
|
-
tabIndex=
|
|
125
|
+
onClick={ ! explicitDismiss ? dismissMe : undefined }
|
|
126
|
+
tabIndex={ 0 }
|
|
123
127
|
role={ ! explicitDismiss ? 'button' : '' }
|
|
124
|
-
onKeyPress={ ! explicitDismiss ? dismissMe :
|
|
128
|
+
onKeyPress={ ! explicitDismiss ? dismissMe : undefined }
|
|
125
129
|
aria-label={ ! explicitDismiss ? __( 'Dismiss this notice' ) : '' }
|
|
126
130
|
>
|
|
127
131
|
<div className={ snackbarContentClassnames }>
|
|
@@ -135,7 +139,7 @@ function Snackbar(
|
|
|
135
139
|
key={ index }
|
|
136
140
|
href={ url }
|
|
137
141
|
variant="tertiary"
|
|
138
|
-
onClick={ ( event ) =>
|
|
142
|
+
onClick={ ( event: MouseEvent ) =>
|
|
139
143
|
onActionClick( event, onClick )
|
|
140
144
|
}
|
|
141
145
|
className="components-snackbar__action"
|
|
@@ -148,7 +152,7 @@ function Snackbar(
|
|
|
148
152
|
<span
|
|
149
153
|
role="button"
|
|
150
154
|
aria-label="Dismiss this notice"
|
|
151
|
-
tabIndex=
|
|
155
|
+
tabIndex={ 0 }
|
|
152
156
|
className="components-snackbar__dismiss-button"
|
|
153
157
|
onClick={ dismissMe }
|
|
154
158
|
onKeyPress={ dismissMe }
|
|
@@ -161,4 +165,18 @@ function Snackbar(
|
|
|
161
165
|
);
|
|
162
166
|
}
|
|
163
167
|
|
|
164
|
-
|
|
168
|
+
/**
|
|
169
|
+
* A Snackbar displays a succinct message that is cleared out after a small delay.
|
|
170
|
+
*
|
|
171
|
+
* It can also offer the user options, like viewing a published post.
|
|
172
|
+
* But these options should also be available elsewhere in the UI.
|
|
173
|
+
*
|
|
174
|
+
* ```jsx
|
|
175
|
+
* const MySnackbarNotice = () => (
|
|
176
|
+
* <Snackbar>Post published successfully.</Snackbar>
|
|
177
|
+
* );
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export const Snackbar = forwardRef( UnforwardedSnackbar );
|
|
181
|
+
|
|
182
|
+
export default Snackbar;
|
|
@@ -12,13 +12,14 @@ import { useRef } from '@wordpress/element';
|
|
|
12
12
|
/**
|
|
13
13
|
* Internal dependencies
|
|
14
14
|
*/
|
|
15
|
-
import Snackbar from '
|
|
15
|
+
import Snackbar from '.';
|
|
16
16
|
import {
|
|
17
17
|
__unstableMotion as motion,
|
|
18
18
|
__unstableAnimatePresence as AnimatePresence,
|
|
19
19
|
} from '../animation';
|
|
20
|
+
import type { Notice, SnackbarListProps } from './types';
|
|
21
|
+
import type { WordPressComponentProps } from '../ui/context';
|
|
20
22
|
|
|
21
|
-
const noop = () => {};
|
|
22
23
|
const SNACKBAR_VARIANTS = {
|
|
23
24
|
init: {
|
|
24
25
|
height: 0,
|
|
@@ -39,28 +40,28 @@ const SNACKBAR_VARIANTS = {
|
|
|
39
40
|
},
|
|
40
41
|
};
|
|
41
42
|
|
|
42
|
-
const SNACKBAR_REDUCE_MOTION_VARIANTS = {
|
|
43
|
-
init: false,
|
|
44
|
-
open: false,
|
|
45
|
-
exit: false,
|
|
46
|
-
};
|
|
47
|
-
|
|
48
43
|
/**
|
|
49
44
|
* Renders a list of notices.
|
|
50
45
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
46
|
+
* ```jsx
|
|
47
|
+
* const MySnackbarListNotice = () => (
|
|
48
|
+
* <SnackbarList
|
|
49
|
+
* notices={ notices }
|
|
50
|
+
* onRemove={ removeNotice }
|
|
51
|
+
* />
|
|
52
|
+
* );
|
|
53
|
+
* ```
|
|
58
54
|
*/
|
|
59
|
-
function SnackbarList( {
|
|
60
|
-
|
|
55
|
+
export function SnackbarList( {
|
|
56
|
+
notices,
|
|
57
|
+
className,
|
|
58
|
+
children,
|
|
59
|
+
onRemove,
|
|
60
|
+
}: WordPressComponentProps< SnackbarListProps, 'div' > ) {
|
|
61
|
+
const listRef = useRef< HTMLDivElement | null >( null );
|
|
61
62
|
const isReducedMotion = useReducedMotion();
|
|
62
63
|
className = classnames( 'components-snackbar-list', className );
|
|
63
|
-
const removeNotice = ( notice ) => () => onRemove( notice.id );
|
|
64
|
+
const removeNotice = ( notice: Notice ) => () => onRemove?.( notice.id );
|
|
64
65
|
return (
|
|
65
66
|
<div className={ className } tabIndex={ -1 } ref={ listRef }>
|
|
66
67
|
{ children }
|
|
@@ -76,9 +77,7 @@ function SnackbarList( { notices, className, children, onRemove = noop } ) {
|
|
|
76
77
|
exit={ 'exit' }
|
|
77
78
|
key={ notice.id }
|
|
78
79
|
variants={
|
|
79
|
-
isReducedMotion
|
|
80
|
-
? SNACKBAR_REDUCE_MOTION_VARIANTS
|
|
81
|
-
: SNACKBAR_VARIANTS
|
|
80
|
+
isReducedMotion ? undefined : SNACKBAR_VARIANTS
|
|
82
81
|
}
|
|
83
82
|
>
|
|
84
83
|
<div className="components-snackbar-list__notice-container">
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { ComponentMeta, ComponentStory } from '@storybook/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import Snackbar from '..';
|
|
10
|
+
|
|
11
|
+
const meta: ComponentMeta< typeof Snackbar > = {
|
|
12
|
+
title: 'Components/Snackbar',
|
|
13
|
+
component: Snackbar,
|
|
14
|
+
argTypes: {
|
|
15
|
+
as: { control: { type: null } },
|
|
16
|
+
onRemove: {
|
|
17
|
+
action: 'onRemove',
|
|
18
|
+
control: { type: null },
|
|
19
|
+
},
|
|
20
|
+
onDismiss: {
|
|
21
|
+
action: 'onDismiss',
|
|
22
|
+
control: { type: null },
|
|
23
|
+
},
|
|
24
|
+
listRef: {
|
|
25
|
+
control: { type: null },
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
parameters: {
|
|
29
|
+
controls: {
|
|
30
|
+
expanded: true,
|
|
31
|
+
},
|
|
32
|
+
docs: { source: { state: 'open' } },
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
export default meta;
|
|
36
|
+
|
|
37
|
+
const DefaultTemplate: ComponentStory< typeof Snackbar > = ( {
|
|
38
|
+
children,
|
|
39
|
+
...props
|
|
40
|
+
} ) => {
|
|
41
|
+
return <Snackbar { ...props }>{ children }</Snackbar>;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const Default: ComponentStory< typeof Snackbar > = DefaultTemplate.bind(
|
|
45
|
+
{}
|
|
46
|
+
);
|
|
47
|
+
Default.args = {
|
|
48
|
+
children:
|
|
49
|
+
'Use Snackbars to communicate low priority, non-interruptive messages to the user.',
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export const WithActions: ComponentStory< typeof Snackbar > =
|
|
53
|
+
DefaultTemplate.bind( {} );
|
|
54
|
+
WithActions.args = {
|
|
55
|
+
actions: [
|
|
56
|
+
{
|
|
57
|
+
label: 'Open WP.org',
|
|
58
|
+
url: 'https://wordpress.org',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
children: 'Use Snackbars with an action link to an external page.',
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export const WithIcon: ComponentStory< typeof Snackbar > = DefaultTemplate.bind(
|
|
65
|
+
{}
|
|
66
|
+
);
|
|
67
|
+
WithIcon.args = {
|
|
68
|
+
children: 'Add an icon to make your snackbar stand out',
|
|
69
|
+
icon: (
|
|
70
|
+
<span role="img" aria-label="Icon" style={ { fontSize: 21 } }>
|
|
71
|
+
🌮
|
|
72
|
+
</span>
|
|
73
|
+
),
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const WithExplicitDismiss: ComponentStory< typeof Snackbar > =
|
|
77
|
+
DefaultTemplate.bind( {} );
|
|
78
|
+
WithExplicitDismiss.args = {
|
|
79
|
+
children:
|
|
80
|
+
'Add a cross to explicitly close the snackbar, and do not hide it automatically',
|
|
81
|
+
explicitDismiss: true,
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const WithActionAndExplicitDismiss: ComponentStory< typeof Snackbar > =
|
|
85
|
+
DefaultTemplate.bind( {} );
|
|
86
|
+
WithActionAndExplicitDismiss.args = {
|
|
87
|
+
actions: [
|
|
88
|
+
{
|
|
89
|
+
label: 'Open WP.org',
|
|
90
|
+
url: 'https://wordpress.org',
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
children:
|
|
94
|
+
'Add an action and a cross to explicitly close the snackbar, and do not hide it automatically',
|
|
95
|
+
explicitDismiss: true,
|
|
96
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { ComponentMeta, ComponentStory } from '@storybook/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { useState } from '@wordpress/element';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
import SnackbarList from '../list';
|
|
15
|
+
|
|
16
|
+
const meta: ComponentMeta< typeof SnackbarList > = {
|
|
17
|
+
title: 'Components/SnackbarList',
|
|
18
|
+
component: SnackbarList,
|
|
19
|
+
argTypes: {
|
|
20
|
+
as: { control: { type: null } },
|
|
21
|
+
onRemove: {
|
|
22
|
+
action: 'onRemove',
|
|
23
|
+
control: { type: null },
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
parameters: {
|
|
27
|
+
controls: {
|
|
28
|
+
expanded: true,
|
|
29
|
+
},
|
|
30
|
+
docs: { source: { state: 'open' } },
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
export default meta;
|
|
34
|
+
|
|
35
|
+
export const Default: ComponentStory< typeof SnackbarList > = ( {
|
|
36
|
+
children,
|
|
37
|
+
notices: noticesProp,
|
|
38
|
+
...props
|
|
39
|
+
} ) => {
|
|
40
|
+
const [ notices, setNotices ] = useState( noticesProp );
|
|
41
|
+
|
|
42
|
+
const onRemove = ( id: string ) => {
|
|
43
|
+
const matchIndex = notices.findIndex( ( n ) => n.id === id );
|
|
44
|
+
if ( matchIndex > -1 ) {
|
|
45
|
+
setNotices( [
|
|
46
|
+
...notices.slice( 0, matchIndex ),
|
|
47
|
+
...notices.slice( matchIndex + 1 ),
|
|
48
|
+
] );
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<SnackbarList { ...props } notices={ notices } onRemove={ onRemove }>
|
|
54
|
+
{ children }
|
|
55
|
+
</SnackbarList>
|
|
56
|
+
);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
Default.args = {
|
|
60
|
+
children:
|
|
61
|
+
'Use SnackbarList to communicate multiple low priority, non-interruptive messages to the user.',
|
|
62
|
+
notices: [
|
|
63
|
+
{
|
|
64
|
+
id: 'SAVE_POST_NOTICE_ID_1',
|
|
65
|
+
spokenMessage: 'Post published.',
|
|
66
|
+
actions: [
|
|
67
|
+
{
|
|
68
|
+
label: 'View Post',
|
|
69
|
+
url: 'https://example.com/?p=522',
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
content: 'Post published.',
|
|
73
|
+
isDismissible: true,
|
|
74
|
+
explicitDismiss: false,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 'SAVE_POST_NOTICE_ID_2',
|
|
78
|
+
spokenMessage: 'Post updated',
|
|
79
|
+
actions: [
|
|
80
|
+
{
|
|
81
|
+
label: 'View Post',
|
|
82
|
+
url: 'https://example.com/?p=522',
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
content: 'Post updated.',
|
|
86
|
+
isDismissible: true,
|
|
87
|
+
explicitDismiss: false,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: 'global1',
|
|
91
|
+
spokenMessage: 'All content copied.',
|
|
92
|
+
actions: [],
|
|
93
|
+
content: 'All content copied.',
|
|
94
|
+
isDismissible: true,
|
|
95
|
+
explicitDismiss: false,
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
};
|