@wordpress/components 22.1.0 → 23.1.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 +67 -0
- package/CONTRIBUTING.md +0 -21
- 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 +39 -12
- 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-box-control/border-box-control/component.js +0 -3
- package/build/border-box-control/border-box-control/component.js.map +1 -1
- package/build/border-box-control/border-box-control/hook.js +0 -2
- package/build/border-box-control/border-box-control/hook.js.map +1 -1
- package/build/border-box-control/border-box-control-split-controls/component.js +0 -2
- package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
- package/build/border-box-control/border-box-control-split-controls/hook.js +0 -2
- package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
- package/build/border-control/border-control/component.js +1 -2
- package/build/border-control/border-control/component.js.map +1 -1
- package/build/border-control/border-control/hook.js +0 -2
- package/build/border-control/border-control/hook.js.map +1 -1
- package/build/border-control/border-control-dropdown/component.js +6 -11
- package/build/border-control/border-control-dropdown/component.js.map +1 -1
- package/build/border-control/border-control-dropdown/hook.js +0 -2
- package/build/border-control/border-control-dropdown/hook.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 +7 -15
- 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/dimension-control/index.js.map +1 -1
- package/build/dropdown/index.js +45 -10
- package/build/dropdown/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 +4 -11
- package/build/gradient-picker/index.js.map +1 -1
- package/build/higher-order/navigate-regions/index.js +4 -3
- package/build/higher-order/navigate-regions/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 -9
- 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/picker-cell.native.js +1 -9
- package/build/mobile/bottom-sheet/picker-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/global-styles-context/utils.native.js +30 -12
- package/build/mobile/global-styles-context/utils.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 +15 -9
- 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 +39 -11
- 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-box-control/border-box-control/component.js +0 -3
- package/build-module/border-box-control/border-box-control/component.js.map +1 -1
- package/build-module/border-box-control/border-box-control/hook.js +0 -2
- package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
- package/build-module/border-box-control/border-box-control-split-controls/component.js +0 -2
- package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
- package/build-module/border-box-control/border-box-control-split-controls/hook.js +0 -2
- package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
- package/build-module/border-control/border-control/component.js +1 -2
- package/build-module/border-control/border-control/component.js.map +1 -1
- package/build-module/border-control/border-control/hook.js +0 -2
- package/build-module/border-control/border-control/hook.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/component.js +6 -11
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/hook.js +0 -2
- package/build-module/border-control/border-control-dropdown/hook.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 +7 -15
- 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/dimension-control/index.js +1 -2
- package/build-module/dimension-control/index.js.map +1 -1
- package/build-module/dropdown/index.js +44 -10
- package/build-module/dropdown/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 +4 -10
- package/build-module/gradient-picker/index.js.map +1 -1
- package/build-module/higher-order/navigate-regions/index.js +4 -3
- package/build-module/higher-order/navigate-regions/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 -3
- 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/picker-cell.native.js +1 -8
- package/build-module/mobile/bottom-sheet/picker-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/global-styles-context/utils.native.js +31 -13
- package/build-module/mobile/global-styles-context/utils.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 +15 -8
- 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 +108 -104
- package/build-style/style.css +108 -104
- 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/component.d.ts +1 -1
- package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control/hook.d.ts +2 -3
- package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
- 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/component.d.ts +1 -1
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -3
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
- package/build-types/border-box-control/stories/index.d.ts +1 -1
- package/build-types/border-control/border-control/component.d.ts +1 -1
- package/build-types/border-control/border-control/component.d.ts.map +1 -1
- package/build-types/border-control/border-control/hook.d.ts +2 -3
- package/build-types/border-control/border-control/hook.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts +1 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -3
- package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
- package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
- package/build-types/border-control/stories/index.d.ts +6 -6
- package/build-types/border-control/stories/index.d.ts.map +1 -1
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/border-control/types.d.ts +1 -1
- package/build-types/border-control/types.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 +3 -4
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/color-palette/stories/index.d.ts +6 -14
- 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 +4 -17
- 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/disabled/stories/index.d.ts.map +1 -1
- package/build-types/dropdown/index.d.ts +29 -1
- package/build-types/dropdown/index.d.ts.map +1 -1
- package/build-types/dropdown/stories/index.d.ts +23 -0
- package/build-types/dropdown/stories/index.d.ts.map +1 -0
- package/build-types/dropdown/test/index.d.ts +2 -0
- package/build-types/dropdown/test/index.d.ts.map +1 -0
- package/build-types/dropdown/types.d.ts +101 -0
- package/build-types/dropdown/types.d.ts.map +1 -1
- 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/icon/stories/index.d.ts +22 -0
- package/build-types/icon/stories/index.d.ts.map +1 -0
- 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 +44 -15
- package/src/autocomplete/test/index.js +2 -0
- 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 +53 -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/border-box-control/component.tsx +0 -7
- package/src/border-box-control/border-box-control/hook.ts +0 -2
- package/src/border-box-control/border-box-control-split-controls/component.tsx +0 -2
- package/src/border-box-control/border-box-control-split-controls/hook.ts +0 -2
- package/src/border-box-control/test/index.js +5 -1
- package/src/border-control/border-control/component.tsx +1 -4
- package/src/border-control/border-control/hook.ts +0 -2
- package/src/border-control/border-control-dropdown/component.tsx +11 -17
- package/src/border-control/border-control-dropdown/hook.ts +0 -2
- package/src/border-control/stories/index.tsx +0 -1
- package/src/border-control/styles.ts +1 -10
- package/src/border-control/test/index.js +70 -67
- package/src/border-control/types.ts +1 -4
- package/src/box-control/linked-button.js +8 -11
- package/src/box-control/test/index.js +207 -134
- 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/checkbox-control/test/index.tsx +2 -0
- package/src/circular-option-picker/style.scss +1 -0
- package/src/color-palette/index.tsx +16 -18
- package/src/color-palette/stories/index.tsx +1 -18
- package/src/color-palette/test/__snapshots__/index.tsx.snap +4 -4
- package/src/color-palette/test/index.tsx +86 -36
- package/src/color-palette/types.ts +4 -18
- 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/color-picker/test/index.js +2 -0
- package/src/combobox-control/test/index.js +2 -0
- package/src/confirm-dialog/README.md +3 -2
- package/src/confirm-dialog/test/index.js +2 -0
- 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/test/index.tsx +2 -0
- package/src/date-time/date-time/index.tsx +2 -2
- package/src/date-time/time/test/index.tsx +2 -0
- package/src/dimension-control/index.js +2 -3
- package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -8
- package/src/dimension-control/test/index.test.js +2 -0
- package/src/disabled/stories/index.tsx +6 -2
- package/src/disabled/test/index.tsx +23 -11
- package/src/dropdown/README.md +41 -46
- package/src/dropdown/{index.js → index.tsx} +57 -13
- package/src/dropdown/stories/{index.js → index.tsx} +21 -8
- package/src/dropdown/test/index.tsx +88 -0
- package/src/dropdown/types.ts +107 -0
- package/src/dropdown-menu/README.md +2 -3
- package/src/dropdown-menu/test/index.js +20 -12
- package/src/duotone-picker/duotone-picker.js +2 -2
- package/src/external-link/test/index.tsx +2 -0
- package/src/focal-point-picker/test/index.js +2 -0
- package/src/focal-point-picker/test/media.js +26 -21
- package/src/font-size-picker/test/index.tsx +2 -0
- package/src/form-file-upload/test/index.tsx +2 -0
- package/src/form-toggle/test/index.tsx +2 -0
- package/src/form-token-field/style.scss +1 -1
- package/src/form-token-field/test/index.tsx +3 -0
- package/src/gradient-picker/index.js +6 -10
- package/src/gradient-picker/stories/index.js +0 -1
- package/src/grid/test/grid.tsx +31 -31
- package/src/guide/test/index.js +2 -0
- package/src/higher-order/navigate-regions/index.js +5 -2
- package/src/higher-order/navigate-regions/style.scss +13 -59
- package/src/higher-order/with-fallback-styles/index.js +4 -2
- package/src/higher-order/with-filters/test/index.js +32 -43
- package/src/higher-order/with-focus-outside/test/index.js +2 -0
- package/src/higher-order/with-focus-return/test/index.js +3 -4
- package/src/higher-order/with-notices/test/index.js +1 -0
- package/src/icon/stories/index.tsx +103 -0
- package/src/index.js +2 -3
- 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 +21 -0
- package/src/input-control/types.ts +2 -0
- package/src/isolated-event-container/test/index.js +2 -0
- package/src/mobile/bottom-sheet/cell.native.js +1 -1
- package/src/mobile/bottom-sheet/picker-cell.native.js +1 -6
- 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/global-styles-context/utils.native.js +17 -16
- 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 +13 -0
- package/src/navigable-container/test/navigable-menu.js +2 -0
- package/src/navigable-container/test/tababble-container.js +2 -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/navigation/test/index.js +2 -0
- package/src/navigator/navigator-provider/component.tsx +13 -10
- package/src/navigator/test/index.tsx +2 -0
- package/src/notice/test/index.js +8 -3
- 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 +602 -0
- package/src/palette-edit/index.js +88 -39
- package/src/palette-edit/test/index.js +25 -1
- package/src/panel/test/__snapshots__/body.js.snap +9 -0
- package/src/panel/test/body.js +71 -62
- package/src/placeholder/test/index.tsx +3 -0
- 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/select-control/test/select-control.tsx +2 -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 +15 -5
- package/src/tab-panel/style.scss +46 -34
- package/src/tab-panel/test/index.tsx +113 -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/text-highlight/test/index.tsx +1 -0
- 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 +15 -2
- package/src/toolbar/style.scss +1 -1
- package/src/toolbar-group/test/index.js +10 -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/stories/index.js +68 -78
- package/src/tooltip/style.scss +2 -2
- package/src/tooltip/test/index.js +111 -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 +4 -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/test/use-latest-ref.js +2 -0
- 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/dropdown/test/index.js +0 -98
- package/src/icon/stories/index.js +0 -128
- package/src/number-control/test/index.js +0 -478
- package/src/snackbar/stories/index.js +0 -89
|
@@ -2,20 +2,25 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
|
+
/**
|
|
6
|
+
* Internal dependencies
|
|
7
|
+
*/
|
|
8
|
+
import type { AlignmentMatrixControlValue } from './types';
|
|
5
9
|
|
|
6
|
-
export const GRID = [
|
|
10
|
+
export const GRID: AlignmentMatrixControlValue[][] = [
|
|
7
11
|
[ 'top left', 'top center', 'top right' ],
|
|
8
12
|
[ 'center left', 'center center', 'center right' ],
|
|
9
13
|
[ 'bottom left', 'bottom center', 'bottom right' ],
|
|
10
14
|
];
|
|
11
15
|
|
|
12
16
|
// Stored as map as i18n __() only accepts strings (not variables)
|
|
13
|
-
export const ALIGNMENT_LABEL = {
|
|
17
|
+
export const ALIGNMENT_LABEL: Record< AlignmentMatrixControlValue, string > = {
|
|
14
18
|
'top left': __( 'Top Left' ),
|
|
15
19
|
'top center': __( 'Top Center' ),
|
|
16
20
|
'top right': __( 'Top Right' ),
|
|
17
21
|
'center left': __( 'Center Left' ),
|
|
18
22
|
'center center': __( 'Center Center' ),
|
|
23
|
+
center: __( 'Center Center' ),
|
|
19
24
|
'center right': __( 'Center Right' ),
|
|
20
25
|
'bottom left': __( 'Bottom Left' ),
|
|
21
26
|
'bottom center': __( 'Bottom Center' ),
|
|
@@ -28,25 +33,28 @@ export const ALIGNMENTS = GRID.flat();
|
|
|
28
33
|
/**
|
|
29
34
|
* Parses and transforms an incoming value to better match the alignment values
|
|
30
35
|
*
|
|
31
|
-
* @param
|
|
36
|
+
* @param value An alignment value to parse.
|
|
32
37
|
*
|
|
33
|
-
* @return
|
|
38
|
+
* @return The parsed value.
|
|
34
39
|
*/
|
|
35
|
-
export function transformValue( value ) {
|
|
40
|
+
export function transformValue( value: AlignmentMatrixControlValue ) {
|
|
36
41
|
const nextValue = value === 'center' ? 'center center' : value;
|
|
37
42
|
|
|
38
|
-
return nextValue.replace( '-', ' ' );
|
|
43
|
+
return nextValue.replace( '-', ' ' ) as AlignmentMatrixControlValue;
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
/**
|
|
42
47
|
* Creates an item ID based on a prefix ID and an alignment value.
|
|
43
48
|
*
|
|
44
|
-
* @param
|
|
45
|
-
* @param
|
|
49
|
+
* @param prefixId An ID to prefix.
|
|
50
|
+
* @param value An alignment value.
|
|
46
51
|
*
|
|
47
|
-
* @return
|
|
52
|
+
* @return The item id.
|
|
48
53
|
*/
|
|
49
|
-
export function getItemId(
|
|
54
|
+
export function getItemId(
|
|
55
|
+
prefixId: string,
|
|
56
|
+
value: AlignmentMatrixControlValue
|
|
57
|
+
) {
|
|
50
58
|
const valueId = transformValue( value ).replace( ' ', '-' );
|
|
51
59
|
|
|
52
60
|
return `${ prefixId }-${ valueId }`;
|
|
@@ -55,12 +63,14 @@ export function getItemId( prefixId, value ) {
|
|
|
55
63
|
/**
|
|
56
64
|
* Retrieves the alignment index from a value.
|
|
57
65
|
*
|
|
58
|
-
* @param
|
|
66
|
+
* @param alignment Value to check.
|
|
59
67
|
*
|
|
60
|
-
* @return
|
|
68
|
+
* @return The index of a matching alignment.
|
|
61
69
|
*/
|
|
62
|
-
export function getAlignmentIndex(
|
|
63
|
-
|
|
70
|
+
export function getAlignmentIndex(
|
|
71
|
+
alignment: AlignmentMatrixControlValue = 'center'
|
|
72
|
+
) {
|
|
73
|
+
const item = transformValue( alignment );
|
|
64
74
|
const index = ALIGNMENTS.indexOf( item );
|
|
65
75
|
|
|
66
76
|
return index > -1 ? index : undefined;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { find } from 'lodash';
|
|
5
4
|
import removeAccents from 'remove-accents';
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -290,8 +289,7 @@ function useAutocomplete( {
|
|
|
290
289
|
const textAfterSelection = getTextContent(
|
|
291
290
|
slice( record, undefined, getTextContent( record ).length )
|
|
292
291
|
);
|
|
293
|
-
const completer = find(
|
|
294
|
-
completers,
|
|
292
|
+
const completer = completers?.find(
|
|
295
293
|
( { triggerPrefix, allowContext } ) => {
|
|
296
294
|
const index = text.lastIndexOf( triggerPrefix );
|
|
297
295
|
|
|
@@ -415,26 +413,57 @@ function useAutocomplete( {
|
|
|
415
413
|
}
|
|
416
414
|
|
|
417
415
|
export function useAutocompleteProps( options ) {
|
|
416
|
+
const [ isVisible, setIsVisible ] = useState( false );
|
|
418
417
|
const ref = useRef();
|
|
418
|
+
const recordAfterInput = useRef();
|
|
419
419
|
const onKeyDownRef = useRef();
|
|
420
420
|
const { popover, listBoxId, activeId, onKeyDown } = useAutocomplete( {
|
|
421
421
|
...options,
|
|
422
422
|
contentRef: ref,
|
|
423
423
|
} );
|
|
424
424
|
onKeyDownRef.current = onKeyDown;
|
|
425
|
+
|
|
426
|
+
useEffect( () => {
|
|
427
|
+
if ( isVisible ) {
|
|
428
|
+
if ( ! recordAfterInput.current ) {
|
|
429
|
+
recordAfterInput.current = options.record;
|
|
430
|
+
} else if (
|
|
431
|
+
recordAfterInput.current.start !== options.record.start ||
|
|
432
|
+
recordAfterInput.current.end !== options.record.end
|
|
433
|
+
) {
|
|
434
|
+
setIsVisible( false );
|
|
435
|
+
recordAfterInput.current = null;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
439
|
+
}, [ options.record ] );
|
|
440
|
+
|
|
441
|
+
const mergedRefs = useMergeRefs( [
|
|
442
|
+
ref,
|
|
443
|
+
useRefEffect( ( element ) => {
|
|
444
|
+
function _onKeyDown( event ) {
|
|
445
|
+
onKeyDownRef.current( event );
|
|
446
|
+
}
|
|
447
|
+
function _onInput() {
|
|
448
|
+
// Only show auto complete UI if the user is inputting text.
|
|
449
|
+
setIsVisible( true );
|
|
450
|
+
recordAfterInput.current = null;
|
|
451
|
+
}
|
|
452
|
+
element.addEventListener( 'keydown', _onKeyDown );
|
|
453
|
+
element.addEventListener( 'input', _onInput );
|
|
454
|
+
return () => {
|
|
455
|
+
element.removeEventListener( 'keydown', _onKeyDown );
|
|
456
|
+
element.removeEventListener( 'input', _onInput );
|
|
457
|
+
};
|
|
458
|
+
}, [] ),
|
|
459
|
+
] );
|
|
460
|
+
|
|
461
|
+
if ( ! isVisible ) {
|
|
462
|
+
return { ref: mergedRefs };
|
|
463
|
+
}
|
|
464
|
+
|
|
425
465
|
return {
|
|
426
|
-
ref:
|
|
427
|
-
ref,
|
|
428
|
-
useRefEffect( ( element ) => {
|
|
429
|
-
function _onKeyDown( event ) {
|
|
430
|
-
onKeyDownRef.current( event );
|
|
431
|
-
}
|
|
432
|
-
element.addEventListener( 'keydown', _onKeyDown );
|
|
433
|
-
return () => {
|
|
434
|
-
element.removeEventListener( 'keydown', _onKeyDown );
|
|
435
|
-
};
|
|
436
|
-
}, [] ),
|
|
437
|
-
] ),
|
|
466
|
+
ref: mergedRefs,
|
|
438
467
|
children: popover,
|
|
439
468
|
'aria-autocomplete': listBoxId ? 'list' : undefined,
|
|
440
469
|
'aria-owns': listBoxId,
|
|
@@ -14,6 +14,8 @@ import { useRef } from '@wordpress/element';
|
|
|
14
14
|
*/
|
|
15
15
|
import { getAutoCompleterUI } from '../autocompleter-ui';
|
|
16
16
|
|
|
17
|
+
jest.useFakeTimers();
|
|
18
|
+
|
|
17
19
|
describe( 'AutocompleterUI', () => {
|
|
18
20
|
describe( 'click outside behavior', () => {
|
|
19
21
|
it( 'should call reset function when a click on another element occurs', async () => {
|
|
@@ -4,16 +4,23 @@
|
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
7
|
-
Render a `BaseControl` for a textarea input:
|
|
8
|
-
|
|
9
7
|
```jsx
|
|
10
|
-
import { BaseControl } from '@wordpress/components';
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
import { BaseControl, useBaseControlProps } from '@wordpress/components';
|
|
9
|
+
|
|
10
|
+
// Render a `BaseControl` for a textarea input
|
|
11
|
+
const MyCustomTextareaControl = ({ children, ...baseProps }) => (
|
|
12
|
+
// `useBaseControlProps` is a convenience hook to get the props for the `BaseControl`
|
|
13
|
+
// and the inner control itself. Namely, it takes care of generating a unique `id`,
|
|
14
|
+
// properly associating it with the `label` and `help` elements.
|
|
15
|
+
const { baseControlProps, controlProps } = useBaseControlProps( baseProps );
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<BaseControl { ...baseControlProps } __nextHasNoMarginBottom={ true }>
|
|
19
|
+
<textarea { ...controlProps }>
|
|
20
|
+
{ children }
|
|
21
|
+
</textarea>
|
|
22
|
+
</BaseControl>
|
|
23
|
+
);
|
|
17
24
|
);
|
|
18
25
|
```
|
|
19
26
|
|
|
@@ -23,7 +30,9 @@ The component accepts the following props:
|
|
|
23
30
|
|
|
24
31
|
### id
|
|
25
32
|
|
|
26
|
-
The HTML `id` of the element (passed in as a child to `BaseControl`) to which labels and help text are being generated. This is necessary to accessibly associate the label with that element.
|
|
33
|
+
The HTML `id` of the control element (passed in as a child to `BaseControl`) to which labels and help text are being generated. This is necessary to accessibly associate the label with that element.
|
|
34
|
+
|
|
35
|
+
The recommended way is to use the `useBaseControlProps` hook, which takes care of generating a unique `id` for you. Otherwise, if you choose to pass an explicit `id` to this prop, you are responsible for ensuring the uniqueness of the `id`.
|
|
27
36
|
|
|
28
37
|
- Type: `String`
|
|
29
38
|
- Required: No
|
|
@@ -44,9 +53,9 @@ If true, the label will only be visible to screen readers.
|
|
|
44
53
|
|
|
45
54
|
### help
|
|
46
55
|
|
|
47
|
-
|
|
56
|
+
Additional description for the control. It is preferable to use plain text for `help`, as it can be accessibly associated with the control using `aria-describedby`. When the `help` contains links, or otherwise non-plain text content, it will be associated with the control using `aria-details`.
|
|
48
57
|
|
|
49
|
-
- Type: `
|
|
58
|
+
- Type: `ReactNode`
|
|
50
59
|
- Required: No
|
|
51
60
|
|
|
52
61
|
### className
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useInstanceId } from '@wordpress/compose';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import BaseControl from '.';
|
|
10
|
+
import type { BaseControlProps } from './types';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Generate props for the `BaseControl` and the inner control itself.
|
|
14
|
+
*
|
|
15
|
+
* Namely, it takes care of generating a unique `id`, properly associating it with the `label` and `help` elements.
|
|
16
|
+
*
|
|
17
|
+
* @param props
|
|
18
|
+
*/
|
|
19
|
+
export function useBaseControlProps(
|
|
20
|
+
props: Omit< BaseControlProps, 'children' >
|
|
21
|
+
) {
|
|
22
|
+
const { help, id: preferredId, ...restProps } = props;
|
|
23
|
+
|
|
24
|
+
const uniqueId = useInstanceId(
|
|
25
|
+
BaseControl,
|
|
26
|
+
'wp-components-base-control',
|
|
27
|
+
preferredId
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
// ARIA descriptions can only contain plain text, so fall back to aria-details if not.
|
|
31
|
+
const helpPropName =
|
|
32
|
+
typeof help === 'string' ? 'aria-describedby' : 'aria-details';
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
baseControlProps: {
|
|
36
|
+
id: uniqueId,
|
|
37
|
+
help,
|
|
38
|
+
...restProps,
|
|
39
|
+
},
|
|
40
|
+
controlProps: {
|
|
41
|
+
id: uniqueId,
|
|
42
|
+
...( !! help ? { [ helpPropName ]: `${ uniqueId }__help` } : {} ),
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -17,19 +17,30 @@ import {
|
|
|
17
17
|
} from './styles/base-control-styles';
|
|
18
18
|
import type { WordPressComponentProps } from '../ui/context';
|
|
19
19
|
|
|
20
|
+
export { useBaseControlProps } from './hooks';
|
|
21
|
+
|
|
20
22
|
/**
|
|
21
23
|
* `BaseControl` is a component used to generate labels and help text for components handling user inputs.
|
|
22
24
|
*
|
|
23
|
-
*
|
|
25
|
+
* ```jsx
|
|
26
|
+
* import { BaseControl, useBaseControlProps } from '@wordpress/components';
|
|
27
|
+
*
|
|
24
28
|
* // Render a `BaseControl` for a textarea input
|
|
25
|
-
*
|
|
29
|
+
* const MyCustomTextareaControl = ({ children, ...baseProps }) => (
|
|
30
|
+
* // `useBaseControlProps` is a convenience hook to get the props for the `BaseControl`
|
|
31
|
+
* // and the inner control itself. Namely, it takes care of generating a unique `id`,
|
|
32
|
+
* // properly associating it with the `label` and `help` elements.
|
|
33
|
+
* const { baseControlProps, controlProps } = useBaseControlProps( baseProps );
|
|
26
34
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
35
|
+
* return (
|
|
36
|
+
* <BaseControl { ...baseControlProps } __nextHasNoMarginBottom={ true }>
|
|
37
|
+
* <textarea { ...controlProps }>
|
|
38
|
+
* { children }
|
|
39
|
+
* </textarea>
|
|
40
|
+
* </BaseControl>
|
|
41
|
+
* );
|
|
32
42
|
* );
|
|
43
|
+
* ```
|
|
33
44
|
*/
|
|
34
45
|
export const BaseControl = ( {
|
|
35
46
|
__nextHasNoMarginBottom = false,
|
|
@@ -6,7 +6,7 @@ import type { ComponentMeta, ComponentStory } from '@storybook/react';
|
|
|
6
6
|
/**
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
|
-
import BaseControl from '..';
|
|
9
|
+
import BaseControl, { useBaseControlProps } from '..';
|
|
10
10
|
import Button from '../../button';
|
|
11
11
|
|
|
12
12
|
const meta: ComponentMeta< typeof BaseControl > = {
|
|
@@ -24,13 +24,14 @@ const meta: ComponentMeta< typeof BaseControl > = {
|
|
|
24
24
|
};
|
|
25
25
|
export default meta;
|
|
26
26
|
|
|
27
|
-
const BaseControlWithTextarea: ComponentStory< typeof BaseControl > = (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
27
|
+
const BaseControlWithTextarea: ComponentStory< typeof BaseControl > = (
|
|
28
|
+
props
|
|
29
|
+
) => {
|
|
30
|
+
const { baseControlProps, controlProps } = useBaseControlProps( props );
|
|
31
|
+
|
|
31
32
|
return (
|
|
32
|
-
<BaseControl
|
|
33
|
-
<textarea style={ { display: 'block' } }
|
|
33
|
+
<BaseControl { ...baseControlProps }>
|
|
34
|
+
<textarea style={ { display: 'block' } } { ...controlProps } />
|
|
34
35
|
</BaseControl>
|
|
35
36
|
);
|
|
36
37
|
};
|
|
@@ -39,14 +40,12 @@ export const Default: ComponentStory< typeof BaseControl > =
|
|
|
39
40
|
BaseControlWithTextarea.bind( {} );
|
|
40
41
|
Default.args = {
|
|
41
42
|
__nextHasNoMarginBottom: true,
|
|
42
|
-
id: 'textarea-default-1',
|
|
43
43
|
label: 'Label text',
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
export const WithHelpText = BaseControlWithTextarea.bind( {} );
|
|
47
47
|
WithHelpText.args = {
|
|
48
48
|
...Default.args,
|
|
49
|
-
id: 'textarea-with-help-text-1',
|
|
50
49
|
help: 'Help text adds more explanation.',
|
|
51
50
|
};
|
|
52
51
|
|
|
@@ -75,6 +74,5 @@ export const WithVisualLabel: ComponentStory< typeof BaseControl > = (
|
|
|
75
74
|
WithVisualLabel.args = {
|
|
76
75
|
...Default.args,
|
|
77
76
|
help: 'This button is already accessibly labeled.',
|
|
78
|
-
id: undefined,
|
|
79
77
|
label: undefined,
|
|
80
78
|
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import BaseControl from '..';
|
|
10
|
+
import { useBaseControlProps } from '../hooks';
|
|
11
|
+
import type { BaseControlProps } from '../types';
|
|
12
|
+
|
|
13
|
+
const MyBaseControl = ( props: Omit< BaseControlProps, 'children' > ) => {
|
|
14
|
+
const { baseControlProps, controlProps } = useBaseControlProps( props );
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<BaseControl { ...baseControlProps } __nextHasNoMarginBottom={ true }>
|
|
18
|
+
<textarea { ...controlProps } />
|
|
19
|
+
</BaseControl>
|
|
20
|
+
);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
describe( 'BaseControl', () => {
|
|
24
|
+
it( 'should render help text as description', () => {
|
|
25
|
+
render( <MyBaseControl label="Text" help="My help text" /> );
|
|
26
|
+
|
|
27
|
+
expect(
|
|
28
|
+
screen.getByRole( 'textbox', {
|
|
29
|
+
description: 'My help text',
|
|
30
|
+
} )
|
|
31
|
+
).toBeInTheDocument();
|
|
32
|
+
} );
|
|
33
|
+
|
|
34
|
+
it( 'should render help as aria-details when not plain text', () => {
|
|
35
|
+
render(
|
|
36
|
+
<MyBaseControl
|
|
37
|
+
label="Text"
|
|
38
|
+
help={ <a href="/foo">My help text</a> }
|
|
39
|
+
/>
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
const textarea = screen.getByRole( 'textbox' );
|
|
43
|
+
const help = screen.getByRole( 'link', {
|
|
44
|
+
name: 'My help text',
|
|
45
|
+
} );
|
|
46
|
+
|
|
47
|
+
expect( textarea ).toHaveAttribute( 'aria-details' );
|
|
48
|
+
expect(
|
|
49
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
50
|
+
help.closest( `#${ textarea.getAttribute( 'aria-details' ) }` )
|
|
51
|
+
).toBeVisible();
|
|
52
|
+
} );
|
|
53
|
+
} );
|
|
@@ -11,12 +11,18 @@ export type BaseControlProps = {
|
|
|
11
11
|
*/
|
|
12
12
|
__nextHasNoMarginBottom?: boolean;
|
|
13
13
|
/**
|
|
14
|
-
* The HTML `id` of the element (passed in as a child to `BaseControl`) to which labels and help text are being generated.
|
|
14
|
+
* The HTML `id` of the control element (passed in as a child to `BaseControl`) to which labels and help text are being generated.
|
|
15
15
|
* This is necessary to accessibly associate the label with that element.
|
|
16
|
+
*
|
|
17
|
+
* The recommended way is to use the `useBaseControlProps` hook, which takes care of generating a unique `id` for you.
|
|
18
|
+
* Otherwise, if you choose to pass an explicit `id` to this prop, you are responsible for ensuring the uniqueness of the `id`.
|
|
16
19
|
*/
|
|
17
20
|
id?: string;
|
|
18
21
|
/**
|
|
19
|
-
*
|
|
22
|
+
* Additional description for the control.
|
|
23
|
+
*
|
|
24
|
+
* It is preferable to use plain text for `help`, as it can be accessibly associated with the control using `aria-describedby`.
|
|
25
|
+
* When the `help` contains links, or otherwise non-plain text content, it will be associated with the control using `aria-details`.
|
|
20
26
|
*/
|
|
21
27
|
help?: ReactNode;
|
|
22
28
|
/**
|
package/src/base-field/README.md
CHANGED
|
@@ -12,37 +12,25 @@ This feature is still experimental. “Experimental” means this is an early im
|
|
|
12
12
|
|
|
13
13
|
```js
|
|
14
14
|
function useExampleField( props ) {
|
|
15
|
-
const {
|
|
16
|
-
as = 'input',
|
|
17
|
-
...baseProps,
|
|
18
|
-
} = useBaseField( props );
|
|
15
|
+
const { as = 'input', ...baseProps } = useBaseField( props );
|
|
19
16
|
|
|
20
17
|
const inputProps = {
|
|
21
18
|
as,
|
|
22
19
|
// more cool stuff here
|
|
23
|
-
}
|
|
20
|
+
};
|
|
24
21
|
|
|
25
22
|
return { inputProps, ...baseProps };
|
|
26
23
|
}
|
|
27
24
|
|
|
28
25
|
function ExampleField( props, forwardRef ) {
|
|
29
|
-
const {
|
|
30
|
-
|
|
31
|
-
affix,
|
|
32
|
-
disabled,
|
|
33
|
-
inputProps,
|
|
34
|
-
...baseProps
|
|
35
|
-
} = useExampleField( props );
|
|
26
|
+
const { preFix, affix, disabled, inputProps, ...baseProps } =
|
|
27
|
+
useExampleField( props );
|
|
36
28
|
|
|
37
29
|
return (
|
|
38
30
|
<View { ...baseProps } disabled={ disabled }>
|
|
39
|
-
{preFix}
|
|
40
|
-
<View
|
|
41
|
-
|
|
42
|
-
{ ...inputProps }
|
|
43
|
-
disabled={ disabled }
|
|
44
|
-
/>
|
|
45
|
-
{affix}
|
|
31
|
+
{ preFix }
|
|
32
|
+
<View autocomplete="off" { ...inputProps } disabled={ disabled } />
|
|
33
|
+
{ affix }
|
|
46
34
|
</View>
|
|
47
35
|
);
|
|
48
36
|
}
|
|
@@ -50,18 +38,29 @@ function ExampleField( props, forwardRef ) {
|
|
|
50
38
|
|
|
51
39
|
## Props
|
|
52
40
|
|
|
41
|
+
### `disabled`: `boolean`
|
|
42
|
+
|
|
43
|
+
Whether the field is disabled.
|
|
44
|
+
|
|
45
|
+
- Required: No
|
|
46
|
+
|
|
53
47
|
### `hasError`: `boolean`
|
|
54
48
|
|
|
55
49
|
Renders an error style around the component.
|
|
56
50
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
Whether the field is disabled.
|
|
51
|
+
- Required: No
|
|
52
|
+
- Default: `false`
|
|
60
53
|
|
|
61
54
|
### `isInline`: `boolean`
|
|
62
55
|
|
|
63
56
|
Renders a component that can be inlined in some text.
|
|
64
57
|
|
|
58
|
+
- Required: No
|
|
59
|
+
- Default: `false`
|
|
60
|
+
|
|
65
61
|
### `isSubtle`: `boolean`
|
|
66
62
|
|
|
67
63
|
Renders a subtle variant of the component.
|
|
64
|
+
|
|
65
|
+
- Required: No
|
|
66
|
+
- Default: `false`
|
|
@@ -6,26 +6,16 @@ import { useMemo } from '@wordpress/element';
|
|
|
6
6
|
/**
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { useContextSystem } from '../ui/context';
|
|
9
|
+
import { useContextSystem, WordPressComponentProps } from '../ui/context';
|
|
10
10
|
import { useControlGroupContext } from '../ui/control-group';
|
|
11
11
|
import { useFlex } from '../flex';
|
|
12
12
|
import * as styles from './styles';
|
|
13
13
|
import { useCx } from '../utils/hooks/use-cx';
|
|
14
|
+
import type { BaseFieldProps } from './types';
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* @property {boolean} [disabled] Whether the field is disabled.
|
|
19
|
-
* @property {boolean} [isInline=false] Renders as an inline element (layout).
|
|
20
|
-
* @property {boolean} [isSubtle=false] Renders a subtle variant.
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
/** @typedef {import('../flex/types').FlexProps & OwnProps} Props */
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @param {import('../ui/context').WordPressComponentProps<Props, 'div'>} props
|
|
27
|
-
*/
|
|
28
|
-
export function useBaseField( props ) {
|
|
16
|
+
export function useBaseField(
|
|
17
|
+
props: WordPressComponentProps< BaseFieldProps, 'div' >
|
|
18
|
+
) {
|
|
29
19
|
const {
|
|
30
20
|
className,
|
|
31
21
|
hasError = false,
|
|
File without changes
|
|
@@ -13,7 +13,7 @@ export const BaseField = css`
|
|
|
13
13
|
background: ${ CONFIG.controlBackgroundColor };
|
|
14
14
|
border-radius: ${ CONFIG.controlBorderRadius };
|
|
15
15
|
border: 1px solid;
|
|
16
|
-
border-color: ${
|
|
16
|
+
border-color: ${ COLORS.ui.border };
|
|
17
17
|
box-shadow: ${ CONFIG.controlBoxShadow };
|
|
18
18
|
display: flex;
|
|
19
19
|
flex: 1;
|
|
@@ -30,7 +30,7 @@ export const BaseField = css`
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
&:hover {
|
|
33
|
-
border-color: ${
|
|
33
|
+
border-color: ${ COLORS.ui.borderHover };
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
&:focus,
|
|
@@ -12,7 +12,7 @@ Snapshot Diff:
|
|
|
12
12
|
"background": "#fff",
|
|
13
13
|
"border": "1px solid",
|
|
14
14
|
- "border-color": "#d94f4f",
|
|
15
|
-
+ "border-color": "#
|
|
15
|
+
+ "border-color": "#949494",
|
|
16
16
|
"border-radius": "2px",
|
|
17
17
|
"box-shadow": "transparent",
|
|
18
18
|
"display": "flex",
|
|
@@ -28,7 +28,7 @@ Snapshot Diff:
|
|
|
28
28
|
@@ -14,19 +14,18 @@
|
|
29
29
|
"background": "#fff",
|
|
30
30
|
"border": "1px solid",
|
|
31
|
-
"border-color": "#
|
|
31
|
+
"border-color": "#949494",
|
|
32
32
|
"border-radius": "2px",
|
|
33
33
|
"box-shadow": "transparent",
|
|
34
34
|
- "display": "inline-flex",
|
|
@@ -62,7 +62,7 @@ Snapshot Diff:
|
|
|
62
62
|
"background": "#fff",
|
|
63
63
|
- "background-color": "transparent",
|
|
64
64
|
"border": "1px solid",
|
|
65
|
-
"border-color": "#
|
|
65
|
+
"border-color": "#949494",
|
|
66
66
|
"border-radius": "2px",
|
|
67
67
|
"box-shadow": "transparent",
|
|
68
68
|
"display": "flex",
|
|
@@ -89,7 +89,7 @@ exports[`base field should render correctly 1`] = `
|
|
|
89
89
|
background: #fff;
|
|
90
90
|
border-radius: 2px;
|
|
91
91
|
border: 1px solid;
|
|
92
|
-
border-color: #
|
|
92
|
+
border-color: #949494;
|
|
93
93
|
box-shadow: transparent;
|
|
94
94
|
display: -webkit-box;
|
|
95
95
|
display: -webkit-flex;
|
|
@@ -8,9 +8,10 @@ import { render, screen } from '@testing-library/react';
|
|
|
8
8
|
*/
|
|
9
9
|
import { useBaseField } from '../index';
|
|
10
10
|
import { View } from '../../view';
|
|
11
|
+
import type { BaseFieldProps } from '../types';
|
|
11
12
|
|
|
12
|
-
const TestField = ( props ) => {
|
|
13
|
-
return <View { ...useBaseField( props ) } />;
|
|
13
|
+
const TestField = ( props: Omit< BaseFieldProps, 'children' > ) => {
|
|
14
|
+
return <View { ...useBaseField( { ...props, children: '' } ) } />;
|
|
14
15
|
};
|
|
15
16
|
|
|
16
17
|
describe( 'base field', () => {
|
|
@@ -62,10 +63,14 @@ describe( 'base field', () => {
|
|
|
62
63
|
// wrap this in a component so that `useContext` calls don't fail inside the hook
|
|
63
64
|
// assertions will still run as normal when we `render` the component :)
|
|
64
65
|
const Component = () => {
|
|
65
|
-
const disabled =
|
|
66
|
-
const defaultValue =
|
|
66
|
+
const disabled = true;
|
|
67
|
+
const defaultValue = 'Lorem ipsum';
|
|
67
68
|
|
|
68
|
-
const result = useBaseField( {
|
|
69
|
+
const result = useBaseField( {
|
|
70
|
+
disabled,
|
|
71
|
+
defaultValue,
|
|
72
|
+
children: '',
|
|
73
|
+
} );
|
|
69
74
|
|
|
70
75
|
expect( result.disabled ).toBe( disabled );
|
|
71
76
|
expect( result.defaultValue ).toBe( defaultValue );
|