@wordpress/components 19.7.0-next.e230fbab09.0 → 19.8.1
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 -1
- package/README.md +38 -0
- package/build/base-control/index.js +41 -32
- package/build/base-control/index.js.map +1 -1
- package/build/base-control/styles/base-control-styles.js +43 -22
- package/build/base-control/styles/base-control-styles.js.map +1 -1
- package/build/base-control/types.js +6 -0
- package/build/base-control/types.js.map +1 -0
- package/build/border-box-control/border-box-control/component.js +124 -0
- package/build/border-box-control/border-box-control/component.js.map +1 -0
- package/build/border-box-control/border-box-control/hook.js +113 -0
- package/build/border-box-control/border-box-control/hook.js.map +1 -0
- package/build/border-box-control/border-box-control/index.js +24 -0
- package/build/border-box-control/border-box-control/index.js.map +1 -0
- package/build/border-box-control/border-box-control-linked-button/component.js +59 -0
- package/build/border-box-control/border-box-control-linked-button/component.js.map +1 -0
- package/build/border-box-control/border-box-control-linked-button/hook.js +41 -0
- package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -0
- package/build/border-box-control/border-box-control-linked-button/index.js +16 -0
- package/build/border-box-control/border-box-control-linked-button/index.js.map +1 -0
- package/build/border-box-control/border-box-control-split-controls/component.js +93 -0
- package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -0
- package/build/border-box-control/border-box-control-split-controls/hook.js +45 -0
- package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -0
- package/build/border-box-control/border-box-control-split-controls/index.js +16 -0
- package/build/border-box-control/border-box-control-split-controls/index.js.map +1 -0
- package/build/border-box-control/border-box-control-visualizer/component.js +40 -0
- package/build/border-box-control/border-box-control-visualizer/component.js.map +1 -0
- package/build/border-box-control/border-box-control-visualizer/hook.js +43 -0
- package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -0
- package/build/border-box-control/border-box-control-visualizer/index.js +16 -0
- package/build/border-box-control/border-box-control-visualizer/index.js.map +1 -0
- package/build/border-box-control/index.js +44 -0
- package/build/border-box-control/index.js.map +1 -0
- package/build/border-box-control/styles.js +76 -0
- package/build/border-box-control/styles.js.map +1 -0
- package/build/border-box-control/types.js +6 -0
- package/build/border-box-control/types.js.map +1 -0
- package/build/border-box-control/utils.js +161 -0
- package/build/border-box-control/utils.js.map +1 -0
- package/build/border-control/border-control/component.js +119 -0
- package/build/border-control/border-control/component.js.map +1 -0
- package/build/border-control/border-control/hook.js +130 -0
- package/build/border-control/border-control/hook.js.map +1 -0
- package/build/border-control/border-control/index.js +24 -0
- package/build/border-control/border-control/index.js.map +1 -0
- package/build/border-control/border-control-dropdown/component.js +196 -0
- package/build/border-control/border-control-dropdown/component.js.map +1 -0
- package/build/border-control/border-control-dropdown/hook.js +105 -0
- package/build/border-control/border-control-dropdown/hook.js.map +1 -0
- package/build/border-control/border-control-dropdown/index.js +16 -0
- package/build/border-control/border-control-dropdown/index.js.map +1 -0
- package/build/border-control/border-control-style-picker/component.js +101 -0
- package/build/border-control/border-control-style-picker/component.js.map +1 -0
- package/build/border-control/border-control-style-picker/hook.js +45 -0
- package/build/border-control/border-control-style-picker/hook.js.map +1 -0
- package/build/border-control/border-control-style-picker/index.js +16 -0
- package/build/border-control/border-control-style-picker/index.js.map +1 -0
- package/build/border-control/index.js +24 -0
- package/build/border-control/index.js.map +1 -0
- package/build/border-control/styles.js +125 -0
- package/build/border-control/styles.js.map +1 -0
- package/build/border-control/types.js +6 -0
- package/build/border-control/types.js.map +1 -0
- package/build/box-control/all-input-control.js +3 -7
- package/build/box-control/all-input-control.js.map +1 -1
- package/build/box-control/axial-input-controls.js +20 -15
- package/build/box-control/axial-input-controls.js.map +1 -1
- package/build/box-control/input-controls.js +21 -16
- package/build/box-control/input-controls.js.map +1 -1
- package/build/box-control/utils.js +25 -11
- package/build/box-control/utils.js.map +1 -1
- package/build/card/styles.js +22 -17
- package/build/card/styles.js.map +1 -1
- package/build/checkbox-control/index.js +21 -1
- package/build/checkbox-control/index.js.map +1 -1
- package/build/color-palette/index.js +53 -4
- package/build/color-palette/index.js.map +1 -1
- package/build/custom-select-control/index.js +12 -4
- package/build/custom-select-control/index.js.map +1 -1
- package/build/divider/styles.js +28 -16
- package/build/divider/styles.js.map +1 -1
- package/build/focal-point-picker/controls.js +2 -3
- package/build/focal-point-picker/controls.js.map +1 -1
- package/build/form-file-upload/index.js +4 -1
- package/build/form-file-upload/index.js.map +1 -1
- package/build/guide/index.js +14 -8
- package/build/guide/index.js.map +1 -1
- package/build/index.js +40 -0
- package/build/index.js.map +1 -1
- package/build/input-control/input-field.js +21 -14
- package/build/input-control/input-field.js.map +1 -1
- package/build/input-control/reducer/actions.js +1 -3
- package/build/input-control/reducer/actions.js.map +1 -1
- package/build/input-control/reducer/reducer.js +1 -43
- package/build/input-control/reducer/reducer.js.map +1 -1
- package/build/item-group/styles.js +14 -14
- package/build/item-group/styles.js.map +1 -1
- package/build/mobile/picker/index.android.js +0 -3
- package/build/mobile/picker/index.android.js.map +1 -1
- package/build/number-control/index.js +15 -10
- package/build/number-control/index.js.map +1 -1
- package/build/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js +4 -4
- package/build/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js.map +1 -1
- package/build/surface/styles.js +8 -8
- package/build/surface/styles.js.map +1 -1
- package/build/toggle-group-control/index.js +8 -0
- package/build/toggle-group-control/index.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/component.js +10 -1
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/styles.js +14 -3
- package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js +90 -0
- package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control-option/component.js +9 -90
- package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/component.js +127 -0
- package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control-option-base/index.js +16 -0
- package/build/toggle-group-control/toggle-group-control-option-base/index.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js +66 -0
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control-option-icon/component.js +55 -0
- package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control-option-icon/index.js +16 -0
- package/build/toggle-group-control/toggle-group-control-option-icon/index.js.map +1 -0
- package/build/toolbar-dropdown-menu/index.js +1 -1
- package/build/toolbar-dropdown-menu/index.js.map +1 -1
- package/build/tree-grid/index.js +4 -1
- package/build/tree-grid/index.js.map +1 -1
- package/build/unit-control/index.js +56 -29
- package/build/unit-control/index.js.map +1 -1
- package/build/unit-control/unit-select-control.js +2 -4
- package/build/unit-control/unit-select-control.js.map +1 -1
- package/build/utils/colors-values.js +5 -3
- package/build/utils/colors-values.js.map +1 -1
- package/build/utils/config-values.js +9 -4
- package/build/utils/config-values.js.map +1 -1
- package/build-module/base-control/index.js +39 -35
- package/build-module/base-control/index.js.map +1 -1
- package/build-module/base-control/styles/base-control-styles.js +44 -16
- package/build-module/base-control/styles/base-control-styles.js.map +1 -1
- package/build-module/base-control/types.js +2 -0
- package/build-module/base-control/types.js.map +1 -0
- package/build-module/border-box-control/border-box-control/component.js +104 -0
- package/build-module/border-box-control/border-box-control/component.js.map +1 -0
- package/build-module/border-box-control/border-box-control/hook.js +97 -0
- package/build-module/border-box-control/border-box-control/hook.js.map +1 -0
- package/build-module/border-box-control/border-box-control/index.js +3 -0
- package/build-module/border-box-control/border-box-control/index.js.map +1 -0
- package/build-module/border-box-control/border-box-control-linked-button/component.js +42 -0
- package/build-module/border-box-control/border-box-control-linked-button/component.js.map +1 -0
- package/build-module/border-box-control/border-box-control-linked-button/hook.js +26 -0
- package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -0
- package/build-module/border-box-control/border-box-control-linked-button/index.js +2 -0
- package/build-module/border-box-control/border-box-control-linked-button/index.js.map +1 -0
- package/build-module/border-box-control/border-box-control-split-controls/component.js +77 -0
- package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -0
- package/build-module/border-box-control/border-box-control-split-controls/hook.js +30 -0
- package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -0
- package/build-module/border-box-control/border-box-control-split-controls/index.js +2 -0
- package/build-module/border-box-control/border-box-control-split-controls/index.js.map +1 -0
- package/build-module/border-box-control/border-box-control-visualizer/component.js +27 -0
- package/build-module/border-box-control/border-box-control-visualizer/component.js.map +1 -0
- package/build-module/border-box-control/border-box-control-visualizer/hook.js +28 -0
- package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -0
- package/build-module/border-box-control/border-box-control-visualizer/index.js +2 -0
- package/build-module/border-box-control/border-box-control-visualizer/index.js.map +1 -0
- package/build-module/border-box-control/index.js +4 -0
- package/build-module/border-box-control/index.js.map +1 -0
- package/build-module/border-box-control/styles.js +66 -0
- package/build-module/border-box-control/styles.js.map +1 -0
- package/build-module/border-box-control/types.js +2 -0
- package/build-module/border-box-control/types.js.map +1 -0
- package/build-module/border-box-control/utils.js +127 -0
- package/build-module/border-box-control/utils.js.map +1 -0
- package/build-module/border-control/border-control/component.js +100 -0
- package/build-module/border-control/border-control/component.js.map +1 -0
- package/build-module/border-control/border-control/hook.js +115 -0
- package/build-module/border-control/border-control/hook.js.map +1 -0
- package/build-module/border-control/border-control/index.js +3 -0
- package/build-module/border-control/border-control/index.js.map +1 -0
- package/build-module/border-control/border-control-dropdown/component.js +174 -0
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -0
- package/build-module/border-control/border-control-dropdown/hook.js +89 -0
- package/build-module/border-control/border-control-dropdown/hook.js.map +1 -0
- package/build-module/border-control/border-control-dropdown/index.js +2 -0
- package/build-module/border-control/border-control-dropdown/index.js.map +1 -0
- package/build-module/border-control/border-control-style-picker/component.js +81 -0
- package/build-module/border-control/border-control-style-picker/component.js.map +1 -0
- package/build-module/border-control/border-control-style-picker/hook.js +30 -0
- package/build-module/border-control/border-control-style-picker/hook.js.map +1 -0
- package/build-module/border-control/border-control-style-picker/index.js +2 -0
- package/build-module/border-control/border-control-style-picker/index.js.map +1 -0
- package/build-module/border-control/index.js +3 -0
- package/build-module/border-control/index.js.map +1 -0
- package/build-module/border-control/styles.js +90 -0
- package/build-module/border-control/styles.js.map +1 -0
- package/build-module/border-control/types.js +2 -0
- package/build-module/border-control/types.js.map +1 -0
- package/build-module/box-control/all-input-control.js +4 -8
- package/build-module/box-control/all-input-control.js.map +1 -1
- package/build-module/box-control/axial-input-controls.js +18 -14
- package/build-module/box-control/axial-input-controls.js.map +1 -1
- package/build-module/box-control/input-controls.js +18 -14
- package/build-module/box-control/input-controls.js.map +1 -1
- package/build-module/box-control/utils.js +25 -11
- package/build-module/box-control/utils.js.map +1 -1
- package/build-module/card/styles.js +23 -18
- package/build-module/card/styles.js.map +1 -1
- package/build-module/checkbox-control/index.js +24 -3
- package/build-module/checkbox-control/index.js.map +1 -1
- package/build-module/color-palette/index.js +52 -4
- package/build-module/color-palette/index.js.map +1 -1
- package/build-module/custom-select-control/index.js +12 -4
- package/build-module/custom-select-control/index.js.map +1 -1
- package/build-module/divider/styles.js +29 -10
- package/build-module/divider/styles.js.map +1 -1
- package/build-module/focal-point-picker/controls.js +2 -3
- package/build-module/focal-point-picker/controls.js.map +1 -1
- package/build-module/form-file-upload/index.js +4 -1
- package/build-module/form-file-upload/index.js.map +1 -1
- package/build-module/guide/index.js +14 -8
- package/build-module/guide/index.js.map +1 -1
- package/build-module/index.js +3 -1
- package/build-module/index.js.map +1 -1
- package/build-module/input-control/input-field.js +21 -13
- package/build-module/input-control/input-field.js.map +1 -1
- package/build-module/input-control/reducer/actions.js +0 -1
- package/build-module/input-control/reducer/actions.js.map +1 -1
- package/build-module/input-control/reducer/reducer.js +2 -39
- package/build-module/input-control/reducer/reducer.js.map +1 -1
- package/build-module/item-group/styles.js +14 -14
- package/build-module/item-group/styles.js.map +1 -1
- package/build-module/mobile/picker/index.android.js +0 -3
- package/build-module/mobile/picker/index.android.js.map +1 -1
- package/build-module/number-control/index.js +15 -9
- package/build-module/number-control/index.js.map +1 -1
- package/build-module/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js +4 -4
- package/build-module/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js.map +1 -1
- package/build-module/surface/styles.js +8 -8
- package/build-module/surface/styles.js.map +1 -1
- package/build-module/toggle-group-control/index.js +1 -0
- package/build-module/toggle-group-control/index.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js +8 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/styles.js +11 -3
- package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js +86 -0
- package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control-option/component.js +9 -79
- package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +105 -0
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control-option-base/index.js +2 -0
- package/build-module/toggle-group-control/toggle-group-control-option-base/index.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +55 -0
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +50 -0
- package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control-option-icon/index.js +2 -0
- package/build-module/toggle-group-control/toggle-group-control-option-icon/index.js.map +1 -0
- package/build-module/toolbar-dropdown-menu/index.js +1 -1
- package/build-module/toolbar-dropdown-menu/index.js.map +1 -1
- package/build-module/tree-grid/index.js +4 -1
- package/build-module/tree-grid/index.js.map +1 -1
- package/build-module/unit-control/index.js +54 -27
- package/build-module/unit-control/index.js.map +1 -1
- package/build-module/unit-control/unit-select-control.js +2 -3
- package/build-module/unit-control/unit-select-control.js.map +1 -1
- package/build-module/utils/colors-values.js +5 -3
- package/build-module/utils/colors-values.js.map +1 -1
- package/build-module/utils/config-values.js +8 -4
- package/build-module/utils/config-values.js.map +1 -1
- package/build-style/style-rtl.css +33 -185
- package/build-style/style.css +33 -185
- package/build-types/base-control/index.d.ts +35 -71
- package/build-types/base-control/index.d.ts.map +1 -1
- package/build-types/base-control/stories/index.d.ts +25 -0
- package/build-types/base-control/stories/index.d.ts.map +1 -0
- package/build-types/base-control/styles/base-control-styles.d.ts +10 -5
- package/build-types/base-control/styles/base-control-styles.d.ts.map +1 -1
- package/build-types/base-control/types.d.ts +41 -0
- package/build-types/base-control/types.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control/component.d.ts +4 -0
- package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control/hook.d.ts +282 -0
- package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control/index.d.ts +3 -0
- package/build-types/border-box-control/border-box-control/index.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-linked-button/component.d.ts +4 -0
- package/build-types/border-box-control/border-box-control-linked-button/component.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +266 -0
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-linked-button/index.d.ts +2 -0
- package/build-types/border-box-control/border-box-control-linked-button/index.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +4 -0
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +274 -0
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-split-controls/index.d.ts +2 -0
- package/build-types/border-box-control/border-box-control-split-controls/index.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-visualizer/component.d.ts +4 -0
- package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +266 -0
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control-visualizer/index.d.ts +2 -0
- package/build-types/border-box-control/border-box-control-visualizer/index.d.ts.map +1 -0
- package/build-types/border-box-control/index.d.ts +4 -0
- package/build-types/border-box-control/index.d.ts.map +1 -0
- package/build-types/border-box-control/styles.d.ts +8 -0
- package/build-types/border-box-control/styles.d.ts.map +1 -0
- package/build-types/border-box-control/types.d.ts +91 -0
- package/build-types/border-box-control/types.d.ts.map +1 -0
- package/build-types/border-box-control/utils.d.ts +24 -0
- package/build-types/border-box-control/utils.d.ts.map +1 -0
- package/build-types/border-control/border-control/component.d.ts +4 -0
- package/build-types/border-control/border-control/component.d.ts.map +1 -0
- package/build-types/border-control/border-control/hook.d.ts +285 -0
- package/build-types/border-control/border-control/hook.d.ts.map +1 -0
- package/build-types/border-control/border-control/index.d.ts +3 -0
- package/build-types/border-control/border-control/index.d.ts.map +1 -0
- package/build-types/border-control/border-control-dropdown/component.d.ts +4 -0
- package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -0
- package/build-types/border-control/border-control-dropdown/hook.d.ts +280 -0
- package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -0
- package/build-types/border-control/border-control-dropdown/index.d.ts +2 -0
- package/build-types/border-control/border-control-dropdown/index.d.ts.map +1 -0
- package/build-types/border-control/border-control-style-picker/component.d.ts +4 -0
- package/build-types/border-control/border-control-style-picker/component.d.ts.map +1 -0
- package/build-types/border-control/border-control-style-picker/hook.d.ts +269 -0
- package/build-types/border-control/border-control-style-picker/hook.d.ts.map +1 -0
- package/build-types/border-control/border-control-style-picker/index.d.ts +2 -0
- package/build-types/border-control/border-control-style-picker/index.d.ts.map +1 -0
- package/build-types/border-control/index.d.ts +3 -0
- package/build-types/border-control/index.d.ts.map +1 -0
- package/build-types/border-control/styles.d.ts +18 -0
- package/build-types/border-control/styles.d.ts.map +1 -0
- package/build-types/border-control/types.d.ts +163 -0
- package/build-types/border-control/types.d.ts.map +1 -0
- package/build-types/card/card-divider/hook.d.ts +1 -1
- package/build-types/card/styles.d.ts.map +1 -1
- package/build-types/color-indicator/index.d.ts +7 -0
- package/build-types/color-indicator/index.d.ts.map +1 -0
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/color-picker/styles.d.ts +1 -1
- package/build-types/divider/stories/index.d.ts +1 -0
- package/build-types/divider/stories/index.d.ts.map +1 -1
- package/build-types/divider/styles.d.ts.map +1 -1
- package/build-types/divider/types.d.ts +8 -1
- package/build-types/divider/types.d.ts.map +1 -1
- package/build-types/input-control/input-field.d.ts.map +1 -1
- package/build-types/input-control/reducer/actions.d.ts +1 -3
- package/build-types/input-control/reducer/actions.d.ts.map +1 -1
- package/build-types/input-control/reducer/reducer.d.ts +3 -9
- package/build-types/input-control/reducer/reducer.d.ts.map +1 -1
- package/build-types/input-control/stories/index.d.ts +17 -0
- package/build-types/input-control/stories/index.d.ts.map +1 -0
- package/build-types/input-control/types.d.ts +2 -2
- package/build-types/input-control/types.d.ts.map +1 -1
- package/build-types/item-group/styles.d.ts.map +1 -1
- package/build-types/number-control/index.d.ts +3 -3
- package/build-types/number-control/index.d.ts.map +1 -1
- package/build-types/range-control/styles/range-control-styles.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/styles/resize-tooltip.styles.d.ts.map +1 -1
- package/build-types/spinner/styles/spinner-styles.d.ts +5 -0
- package/build-types/spinner/styles/spinner-styles.d.ts.map +1 -0
- package/build-types/toggle-group-control/index.d.ts +1 -0
- package/build-types/toggle-group-control/index.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +5 -0
- package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts +9 -0
- package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +6 -2
- package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts +0 -4
- package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts +25 -0
- package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control-option-base/index.d.ts +2 -0
- package/build-types/toggle-group-control/toggle-group-control-option-base/index.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +15 -0
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +37 -0
- package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control-option-icon/index.d.ts +2 -0
- package/build-types/toggle-group-control/toggle-group-control-option-icon/index.d.ts.map +1 -0
- package/build-types/toggle-group-control/types.d.ts +24 -8
- package/build-types/toggle-group-control/types.d.ts.map +1 -1
- package/build-types/ui/form-group/form-group.d.ts +2 -2
- package/build-types/unit-control/index.d.ts +12 -5
- package/build-types/unit-control/index.d.ts.map +1 -1
- package/build-types/unit-control/stories/index.d.ts +33 -0
- package/build-types/unit-control/stories/index.d.ts.map +1 -0
- package/build-types/unit-control/styles/unit-control-styles.d.ts +1 -1
- package/build-types/unit-control/types.d.ts +28 -7
- package/build-types/unit-control/types.d.ts.map +1 -1
- package/build-types/unit-control/unit-select-control.d.ts.map +1 -1
- package/build-types/utils/colors-values.d.ts +78 -18
- package/build-types/utils/colors-values.d.ts.map +1 -1
- package/build-types/utils/config-values.d.ts +71 -71
- package/build-types/utils/config-values.d.ts.map +1 -1
- package/package.json +17 -17
- package/src/animate/README.md +1 -1
- package/src/base-control/README.md +20 -12
- package/src/base-control/index.tsx +124 -0
- package/src/base-control/stories/index.tsx +80 -0
- package/src/base-control/styles/{base-control-styles.js → base-control-styles.ts} +23 -1
- package/src/base-control/types.ts +42 -0
- package/src/border-box-control/border-box-control/README.md +178 -0
- package/src/border-box-control/border-box-control/component.tsx +123 -0
- package/src/border-box-control/border-box-control/hook.ts +119 -0
- package/src/border-box-control/border-box-control/index.ts +2 -0
- package/src/border-box-control/border-box-control-linked-button/component.tsx +50 -0
- package/src/border-box-control/border-box-control-linked-button/hook.ts +30 -0
- package/src/border-box-control/border-box-control-linked-button/index.ts +1 -0
- package/src/border-box-control/border-box-control-split-controls/component.tsx +90 -0
- package/src/border-box-control/border-box-control-split-controls/hook.ts +34 -0
- package/src/border-box-control/border-box-control-split-controls/index.ts +1 -0
- package/src/border-box-control/border-box-control-visualizer/component.tsx +28 -0
- package/src/border-box-control/border-box-control-visualizer/hook.ts +30 -0
- package/src/border-box-control/border-box-control-visualizer/index.ts +1 -0
- package/src/border-box-control/index.ts +3 -0
- package/src/border-box-control/stories/index.js +104 -0
- package/src/border-box-control/styles.ts +69 -0
- package/src/border-box-control/test/index.js +354 -0
- package/src/border-box-control/test/utils.js +305 -0
- package/src/border-box-control/types.ts +98 -0
- package/src/border-box-control/utils.ts +151 -0
- package/src/border-control/border-control/README.md +181 -0
- package/src/border-control/border-control/component.tsx +112 -0
- package/src/border-control/border-control/hook.ts +145 -0
- package/src/border-control/border-control/index.ts +2 -0
- package/src/border-control/border-control-dropdown/component.tsx +252 -0
- package/src/border-control/border-control-dropdown/hook.ts +98 -0
- package/src/border-control/border-control-dropdown/index.ts +1 -0
- package/src/border-control/border-control-style-picker/component.tsx +89 -0
- package/src/border-control/border-control-style-picker/hook.ts +34 -0
- package/src/border-control/border-control-style-picker/index.ts +1 -0
- package/src/border-control/index.ts +2 -0
- package/src/border-control/stories/index.js +118 -0
- package/src/border-control/styles.ts +190 -0
- package/src/border-control/test/index.js +436 -0
- package/src/border-control/types.ts +173 -0
- package/src/box-control/all-input-control.js +2 -10
- package/src/box-control/axial-input-controls.js +32 -21
- package/src/box-control/input-controls.js +30 -19
- package/src/box-control/utils.js +29 -12
- package/src/card/styles.js +11 -5
- package/src/card/test/__snapshots__/index.js.snap +83 -66
- package/src/card/test/index.js +7 -5
- package/src/checkbox-control/index.js +34 -3
- package/src/checkbox-control/stories/index.js +44 -0
- package/src/checkbox-control/style.scss +4 -2
- package/src/color-palette/README.md +6 -0
- package/src/color-palette/index.js +73 -8
- package/src/color-palette/stories/index.js +69 -26
- package/src/color-palette/style.scss +11 -3
- package/src/color-palette/test/__snapshots__/index.js.snap +662 -12
- package/src/color-palette/test/index.js +1 -1
- package/src/custom-select-control/index.js +15 -3
- package/src/custom-select-control/stories/index.js +77 -74
- package/src/custom-select-control/style.scss +23 -4
- package/src/disabled/README.md +7 -10
- package/src/divider/stories/index.tsx +26 -23
- package/src/divider/styles.ts +9 -0
- package/src/divider/types.ts +11 -1
- package/src/flyout/test/__snapshots__/index.js.snap +7 -7
- package/src/focal-point-picker/controls.js +2 -3
- package/src/font-size-picker/test/index.js +0 -2
- package/src/form-file-upload/README.md +18 -0
- package/src/form-file-upload/index.js +3 -0
- package/src/form-file-upload/test/index.js +73 -11
- package/src/form-toggle/README.md +1 -1
- package/src/guide/index.js +12 -13
- package/src/guide/style.scss +0 -4
- package/src/index.js +8 -0
- package/src/input-control/input-field.tsx +23 -12
- package/src/input-control/reducer/actions.ts +1 -7
- package/src/input-control/reducer/reducer.ts +0 -29
- package/src/input-control/types.ts +2 -1
- package/src/item-group/styles.ts +1 -0
- package/src/item-group/test/__snapshots__/index.js.snap +11 -10
- package/src/mobile/picker/index.android.js +0 -1
- package/src/number-control/README.md +14 -0
- package/src/number-control/index.js +13 -12
- package/src/number-control/stories/index.js +14 -7
- package/src/number-control/test/index.js +79 -1
- package/src/range-control/stories/index.js +91 -119
- package/src/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js +1 -0
- package/src/surface/styles.js +1 -1
- package/src/surface/test/__snapshots__/index.js.snap +11 -11
- package/src/toggle-group-control/index.ts +1 -0
- package/src/toggle-group-control/stories/index.js +37 -7
- package/src/toggle-group-control/test/__snapshots__/index.js.snap +269 -32
- package/src/toggle-group-control/test/index.js +43 -10
- package/src/toggle-group-control/toggle-group-control/component.tsx +10 -0
- package/src/toggle-group-control/toggle-group-control/styles.ts +14 -0
- package/src/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.tsx +86 -0
- package/src/toggle-group-control/toggle-group-control-option/README.md +8 -5
- package/src/toggle-group-control/toggle-group-control-option/component.tsx +18 -97
- package/src/toggle-group-control/toggle-group-control-option-base/README.md +27 -0
- package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +129 -0
- package/src/toggle-group-control/toggle-group-control-option-base/index.ts +1 -0
- package/src/toggle-group-control/{toggle-group-control-option → toggle-group-control-option-base}/styles.ts +4 -13
- package/src/toggle-group-control/toggle-group-control-option-icon/README.md +56 -0
- package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +56 -0
- package/src/toggle-group-control/toggle-group-control-option-icon/index.ts +1 -0
- package/src/toggle-group-control/types.ts +33 -8
- package/src/toolbar-dropdown-menu/index.js +1 -1
- package/src/toolbar-group/style.scss +0 -73
- package/src/tools-panel/test/__snapshots__/index.js.snap +8 -8
- package/src/tree-grid/README.md +1 -1
- package/src/tree-grid/index.js +4 -0
- package/src/tree-grid/test/index.js +61 -17
- package/src/unit-control/README.md +7 -3
- package/src/unit-control/index.tsx +65 -31
- package/src/unit-control/stories/index.tsx +170 -0
- package/src/unit-control/test/index.js +263 -100
- package/src/unit-control/types.ts +65 -42
- package/src/unit-control/unit-select-control.tsx +2 -3
- package/src/utils/colors-values.js +4 -3
- package/src/utils/config-values.js +9 -4
- package/tsconfig.json +3 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/guide/finish-button.js +0 -44
- package/build/guide/finish-button.js.map +0 -1
- package/build/toggle-group-control/toggle-group-control-option/styles.js +0 -73
- package/build/toggle-group-control/toggle-group-control-option/styles.js.map +0 -1
- package/build-module/guide/finish-button.js +0 -34
- package/build-module/guide/finish-button.js.map +0 -1
- package/build-module/toggle-group-control/toggle-group-control-option/styles.js +0 -61
- package/build-module/toggle-group-control/toggle-group-control-option/styles.js.map +0 -1
- package/src/base-control/index.js +0 -111
- package/src/base-control/stories/index.js +0 -81
- package/src/guide/finish-button.js +0 -26
- package/src/guide/test/finish-button.js +0 -49
- package/src/unit-control/stories/index.js +0 -127
package/src/guide/index.js
CHANGED
|
@@ -6,10 +6,11 @@ import classnames from 'classnames';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { useState, useEffect, Children } from '@wordpress/element';
|
|
9
|
+
import { useState, useEffect, Children, useRef } from '@wordpress/element';
|
|
10
10
|
import deprecated from '@wordpress/deprecated';
|
|
11
11
|
import { __ } from '@wordpress/i18n';
|
|
12
12
|
import { LEFT, RIGHT } from '@wordpress/keycodes';
|
|
13
|
+
import { focus } from '@wordpress/dom';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Internal dependencies
|
|
@@ -17,7 +18,6 @@ import { LEFT, RIGHT } from '@wordpress/keycodes';
|
|
|
17
18
|
import Modal from '../modal';
|
|
18
19
|
import Button from '../button';
|
|
19
20
|
import PageControl from './page-control';
|
|
20
|
-
import FinishButton from './finish-button';
|
|
21
21
|
|
|
22
22
|
export default function Guide( {
|
|
23
23
|
children,
|
|
@@ -27,6 +27,7 @@ export default function Guide( {
|
|
|
27
27
|
onFinish,
|
|
28
28
|
pages = [],
|
|
29
29
|
} ) {
|
|
30
|
+
const guideContainer = useRef();
|
|
30
31
|
const [ currentPage, setCurrentPage ] = useState( 0 );
|
|
31
32
|
|
|
32
33
|
useEffect( () => {
|
|
@@ -38,6 +39,12 @@ export default function Guide( {
|
|
|
38
39
|
}
|
|
39
40
|
}, [ children ] );
|
|
40
41
|
|
|
42
|
+
useEffect( () => {
|
|
43
|
+
// Each time we change the current page, start from the first element of the page.
|
|
44
|
+
// This also solves any focus loss that can happen.
|
|
45
|
+
focus.tabbable.find( guideContainer.current )?.[ 0 ]?.focus();
|
|
46
|
+
}, [ currentPage ] );
|
|
47
|
+
|
|
41
48
|
if ( Children.count( children ) ) {
|
|
42
49
|
pages = Children.map( children, ( child ) => ( { content: child } ) );
|
|
43
50
|
}
|
|
@@ -73,6 +80,7 @@ export default function Guide( {
|
|
|
73
80
|
goForward();
|
|
74
81
|
}
|
|
75
82
|
} }
|
|
83
|
+
ref={ guideContainer }
|
|
76
84
|
>
|
|
77
85
|
<div className="components-guide__container">
|
|
78
86
|
<div className="components-guide__page">
|
|
@@ -87,15 +95,6 @@ export default function Guide( {
|
|
|
87
95
|
) }
|
|
88
96
|
|
|
89
97
|
{ pages[ currentPage ].content }
|
|
90
|
-
|
|
91
|
-
{ ! canGoForward && (
|
|
92
|
-
<FinishButton
|
|
93
|
-
className="components-guide__inline-finish-button"
|
|
94
|
-
onClick={ onFinish }
|
|
95
|
-
>
|
|
96
|
-
{ finishButtonText || __( 'Finish' ) }
|
|
97
|
-
</FinishButton>
|
|
98
|
-
) }
|
|
99
98
|
</div>
|
|
100
99
|
|
|
101
100
|
<div className="components-guide__footer">
|
|
@@ -116,12 +115,12 @@ export default function Guide( {
|
|
|
116
115
|
</Button>
|
|
117
116
|
) }
|
|
118
117
|
{ ! canGoForward && (
|
|
119
|
-
<
|
|
118
|
+
<Button
|
|
120
119
|
className="components-guide__finish-button"
|
|
121
120
|
onClick={ onFinish }
|
|
122
121
|
>
|
|
123
122
|
{ finishButtonText || __( 'Finish' ) }
|
|
124
|
-
</
|
|
123
|
+
</Button>
|
|
125
124
|
) }
|
|
126
125
|
</div>
|
|
127
126
|
</div>
|
package/src/guide/style.scss
CHANGED
package/src/index.js
CHANGED
|
@@ -23,6 +23,13 @@ export {
|
|
|
23
23
|
useAutocompleteProps as __unstableUseAutocompleteProps,
|
|
24
24
|
} from './autocomplete';
|
|
25
25
|
export { default as BaseControl } from './base-control';
|
|
26
|
+
export {
|
|
27
|
+
BorderBoxControl as __experimentalBorderBoxControl,
|
|
28
|
+
hasSplitBorders as __experimentalHasSplitBorders,
|
|
29
|
+
isDefinedBorder as __experimentalIsDefinedBorder,
|
|
30
|
+
isEmptyBorder as __experimentalIsEmptyBorder,
|
|
31
|
+
} from './border-box-control';
|
|
32
|
+
export { BorderControl as __experimentalBorderControl } from './border-control';
|
|
26
33
|
export { default as __experimentalBoxControl } from './box-control';
|
|
27
34
|
export { default as Button } from './button';
|
|
28
35
|
export { default as ButtonGroup } from './button-group';
|
|
@@ -139,6 +146,7 @@ export { default as ToggleControl } from './toggle-control';
|
|
|
139
146
|
export {
|
|
140
147
|
ToggleGroupControl as __experimentalToggleGroupControl,
|
|
141
148
|
ToggleGroupControlOption as __experimentalToggleGroupControlOption,
|
|
149
|
+
ToggleGroupControlOptionIcon as __experimentalToggleGroupControlOptionIcon,
|
|
142
150
|
} from './toggle-group-control';
|
|
143
151
|
export { default as Toolbar } from './toolbar';
|
|
144
152
|
export { default as ToolbarButton } from './toolbar-button';
|
|
@@ -17,7 +17,6 @@ import type {
|
|
|
17
17
|
* WordPress dependencies
|
|
18
18
|
*/
|
|
19
19
|
import { forwardRef, useRef } from '@wordpress/element';
|
|
20
|
-
import { UP, DOWN, ENTER, ESCAPE } from '@wordpress/keycodes';
|
|
21
20
|
/**
|
|
22
21
|
* Internal dependencies
|
|
23
22
|
*/
|
|
@@ -68,7 +67,6 @@ function InputField(
|
|
|
68
67
|
pressEnter,
|
|
69
68
|
pressUp,
|
|
70
69
|
reset,
|
|
71
|
-
update,
|
|
72
70
|
} = useInputControlStateReducer( stateReducer, {
|
|
73
71
|
isDragEnabled,
|
|
74
72
|
value: valueProp,
|
|
@@ -92,10 +90,12 @@ function InputField(
|
|
|
92
90
|
return;
|
|
93
91
|
}
|
|
94
92
|
if ( ! isFocused && ! wasDirtyOnBlur.current ) {
|
|
95
|
-
|
|
93
|
+
commit( valueProp, _event as SyntheticEvent );
|
|
96
94
|
} else if ( ! isDirty ) {
|
|
97
95
|
onChange( value, {
|
|
98
|
-
event: _event as
|
|
96
|
+
event: _event as
|
|
97
|
+
| ChangeEvent< HTMLInputElement >
|
|
98
|
+
| PointerEvent< HTMLInputElement >,
|
|
99
99
|
} );
|
|
100
100
|
wasDirtyOnBlur.current = false;
|
|
101
101
|
}
|
|
@@ -109,7 +109,7 @@ function InputField(
|
|
|
109
109
|
* If isPressEnterToChange is set, this commits the value to
|
|
110
110
|
* the onChange callback.
|
|
111
111
|
*/
|
|
112
|
-
if (
|
|
112
|
+
if ( isDirty || ! event.target.validity.valid ) {
|
|
113
113
|
wasDirtyOnBlur.current = true;
|
|
114
114
|
handleOnCommit( event );
|
|
115
115
|
}
|
|
@@ -137,19 +137,19 @@ function InputField(
|
|
|
137
137
|
};
|
|
138
138
|
|
|
139
139
|
const handleOnKeyDown = ( event: KeyboardEvent< HTMLInputElement > ) => {
|
|
140
|
-
const {
|
|
140
|
+
const { key } = event;
|
|
141
141
|
onKeyDown( event );
|
|
142
142
|
|
|
143
|
-
switch (
|
|
144
|
-
case
|
|
143
|
+
switch ( key ) {
|
|
144
|
+
case 'ArrowUp':
|
|
145
145
|
pressUp( event );
|
|
146
146
|
break;
|
|
147
147
|
|
|
148
|
-
case
|
|
148
|
+
case 'ArrowDown':
|
|
149
149
|
pressDown( event );
|
|
150
150
|
break;
|
|
151
151
|
|
|
152
|
-
case
|
|
152
|
+
case 'Enter':
|
|
153
153
|
pressEnter( event );
|
|
154
154
|
|
|
155
155
|
if ( isPressEnterToChange ) {
|
|
@@ -158,7 +158,7 @@ function InputField(
|
|
|
158
158
|
}
|
|
159
159
|
break;
|
|
160
160
|
|
|
161
|
-
case
|
|
161
|
+
case 'Escape':
|
|
162
162
|
if ( isPressEnterToChange && isDirty ) {
|
|
163
163
|
event.preventDefault();
|
|
164
164
|
reset( valueProp, event );
|
|
@@ -169,7 +169,18 @@ function InputField(
|
|
|
169
169
|
|
|
170
170
|
const dragGestureProps = useDrag< PointerEvent< HTMLInputElement > >(
|
|
171
171
|
( dragProps ) => {
|
|
172
|
-
const { distance, dragging, event } = dragProps;
|
|
172
|
+
const { distance, dragging, event, target } = dragProps;
|
|
173
|
+
|
|
174
|
+
// The `target` prop always references the `input` element while, by
|
|
175
|
+
// default, the `dragProps.event.target` property would reference the real
|
|
176
|
+
// event target (i.e. any DOM element that the pointer is hovering while
|
|
177
|
+
// dragging). Ensuring that the `target` is always the `input` element
|
|
178
|
+
// allows consumers of `InputControl` (or any higher-level control) to
|
|
179
|
+
// check the input's validity by accessing `event.target.validity.valid`.
|
|
180
|
+
dragProps.event = {
|
|
181
|
+
...dragProps.event,
|
|
182
|
+
target,
|
|
183
|
+
};
|
|
173
184
|
|
|
174
185
|
if ( ! distance ) return;
|
|
175
186
|
event.stopPropagation();
|
|
@@ -18,7 +18,6 @@ export const PRESS_DOWN = 'PRESS_DOWN';
|
|
|
18
18
|
export const PRESS_ENTER = 'PRESS_ENTER';
|
|
19
19
|
export const PRESS_UP = 'PRESS_UP';
|
|
20
20
|
export const RESET = 'RESET';
|
|
21
|
-
export const UPDATE = 'UPDATE';
|
|
22
21
|
|
|
23
22
|
interface EventPayload {
|
|
24
23
|
event?: SyntheticEvent;
|
|
@@ -42,14 +41,9 @@ export type DragStartAction = Action< typeof DRAG_START, DragProps >;
|
|
|
42
41
|
export type DragEndAction = Action< typeof DRAG_END, DragProps >;
|
|
43
42
|
export type DragAction = Action< typeof DRAG, DragProps >;
|
|
44
43
|
export type ResetAction = Action< typeof RESET, Partial< ValuePayload > >;
|
|
45
|
-
export type UpdateAction = Action< typeof UPDATE, ValuePayload >;
|
|
46
44
|
export type InvalidateAction = Action< typeof INVALIDATE, { error: unknown } >;
|
|
47
45
|
|
|
48
|
-
export type ChangeEventAction =
|
|
49
|
-
| ChangeAction
|
|
50
|
-
| ResetAction
|
|
51
|
-
| CommitAction
|
|
52
|
-
| UpdateAction;
|
|
46
|
+
export type ChangeEventAction = ChangeAction | ResetAction | CommitAction;
|
|
53
47
|
|
|
54
48
|
export type DragEventAction = DragStartAction | DragEndAction | DragAction;
|
|
55
49
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { isEmpty } from 'lodash';
|
|
5
4
|
import type { SyntheticEvent } from 'react';
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -38,27 +37,6 @@ function mergeInitialState(
|
|
|
38
37
|
} as InputState;
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
/**
|
|
42
|
-
* Composes multiple stateReducers into a single stateReducer, building
|
|
43
|
-
* the pipeline to control the flow for state and actions.
|
|
44
|
-
*
|
|
45
|
-
* @param fns State reducers.
|
|
46
|
-
* @return The single composed stateReducer.
|
|
47
|
-
*/
|
|
48
|
-
export const composeStateReducers = (
|
|
49
|
-
...fns: StateReducer[]
|
|
50
|
-
): StateReducer => {
|
|
51
|
-
return ( ...args ) => {
|
|
52
|
-
return fns.reduceRight( ( state, fn ) => {
|
|
53
|
-
// TODO: Assess whether this can be replaced with a more standard `compose` implementation
|
|
54
|
-
// like wp.data.compose() (aka lodash flowRight) or Redux compose().
|
|
55
|
-
// The current implementation only works by functions mutating the original state object.
|
|
56
|
-
const fnState = fn( ...args );
|
|
57
|
-
return isEmpty( fnState ) ? state : { ...state, ...fnState };
|
|
58
|
-
}, {} as InputState );
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
|
|
62
40
|
/**
|
|
63
41
|
* Creates a reducer that opens the channel for external state subscription
|
|
64
42
|
* and modification.
|
|
@@ -122,11 +100,6 @@ function inputControlStateReducer(
|
|
|
122
100
|
nextState.value = action.payload.value || state.initialValue;
|
|
123
101
|
break;
|
|
124
102
|
|
|
125
|
-
case actions.UPDATE:
|
|
126
|
-
nextState.value = action.payload.value;
|
|
127
|
-
nextState.isDirty = false;
|
|
128
|
-
break;
|
|
129
|
-
|
|
130
103
|
/**
|
|
131
104
|
* Validation
|
|
132
105
|
*/
|
|
@@ -219,7 +192,6 @@ export function useInputControlStateReducer(
|
|
|
219
192
|
dispatch( { type: actions.INVALIDATE, payload: { error, event } } );
|
|
220
193
|
const reset = createChangeEvent( actions.RESET );
|
|
221
194
|
const commit = createChangeEvent( actions.COMMIT );
|
|
222
|
-
const update = createChangeEvent( actions.UPDATE );
|
|
223
195
|
|
|
224
196
|
const dragStart = createDragEvent( actions.DRAG_START );
|
|
225
197
|
const drag = createDragEvent( actions.DRAG );
|
|
@@ -242,6 +214,5 @@ export function useInputControlStateReducer(
|
|
|
242
214
|
pressUp,
|
|
243
215
|
reset,
|
|
244
216
|
state,
|
|
245
|
-
update,
|
|
246
217
|
} as const;
|
|
247
218
|
}
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
ReactNode,
|
|
7
7
|
ChangeEvent,
|
|
8
8
|
SyntheticEvent,
|
|
9
|
+
PointerEvent,
|
|
9
10
|
} from 'react';
|
|
10
11
|
import type { useDrag } from '@use-gesture/react';
|
|
11
12
|
|
|
@@ -33,7 +34,7 @@ interface BaseProps {
|
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
export type InputChangeCallback<
|
|
36
|
-
E = ChangeEvent< HTMLInputElement >,
|
|
37
|
+
E = ChangeEvent< HTMLInputElement > | PointerEvent< HTMLInputElement >,
|
|
37
38
|
P = {}
|
|
38
39
|
> = ( nextValue: string | undefined, extra: { event: E } & P ) => void;
|
|
39
40
|
|
package/src/item-group/styles.ts
CHANGED
|
@@ -11,8 +11,8 @@ Snapshot Diff:
|
|
|
11
11
|
role="listitem"
|
|
12
12
|
>
|
|
13
13
|
<div
|
|
14
|
-
- class="components-item css-
|
|
15
|
-
+ class="components-item css-
|
|
14
|
+
- class="components-item css-1uo9kmu-View-medium-item-spacedAround em57xhy0"
|
|
15
|
+
+ class="components-item css-10mizr-View-large-item-spacedAround em57xhy0"
|
|
16
16
|
data-wp-c16t="true"
|
|
17
17
|
data-wp-component="Item"
|
|
18
18
|
>
|
|
@@ -24,8 +24,8 @@ Snapshot Diff:
|
|
|
24
24
|
role="listitem"
|
|
25
25
|
>
|
|
26
26
|
<div
|
|
27
|
-
- class="components-item css-
|
|
28
|
-
+ class="components-item css-
|
|
27
|
+
- class="components-item css-1uo9kmu-View-medium-item-spacedAround em57xhy0"
|
|
28
|
+
+ class="components-item css-10mizr-View-large-item-spacedAround em57xhy0"
|
|
29
29
|
data-wp-c16t="true"
|
|
30
30
|
data-wp-component="Item"
|
|
31
31
|
>
|
|
@@ -44,8 +44,8 @@ Snapshot Diff:
|
|
|
44
44
|
role="listitem"
|
|
45
45
|
>
|
|
46
46
|
<div
|
|
47
|
-
- class="components-item css-
|
|
48
|
-
+ class="components-item css-
|
|
47
|
+
- class="components-item css-bsdqin-View-medium-item em57xhy0"
|
|
48
|
+
+ class="components-item css-1ohjtsa-View-large-item em57xhy0"
|
|
49
49
|
data-wp-c16t="true"
|
|
50
50
|
data-wp-component="Item"
|
|
51
51
|
>
|
|
@@ -78,6 +78,7 @@ exports[`ItemGroup ItemGroup component should render correctly 1`] = `
|
|
|
78
78
|
width: 100%;
|
|
79
79
|
display: block;
|
|
80
80
|
margin: 0;
|
|
81
|
+
color: inherit;
|
|
81
82
|
border-radius: 2px;
|
|
82
83
|
}
|
|
83
84
|
|
|
@@ -120,8 +121,8 @@ Snapshot Diff:
|
|
|
120
121
|
role="listitem"
|
|
121
122
|
>
|
|
122
123
|
<div
|
|
123
|
-
- class="components-item css-
|
|
124
|
-
+ class="components-item css-
|
|
124
|
+
- class="components-item css-1uo9kmu-View-medium-item-spacedAround em57xhy0"
|
|
125
|
+
+ class="components-item css-bsdqin-View-medium-item em57xhy0"
|
|
125
126
|
data-wp-c16t="true"
|
|
126
127
|
data-wp-component="Item"
|
|
127
128
|
>
|
|
@@ -147,8 +148,8 @@ Snapshot Diff:
|
|
|
147
148
|
role="listitem"
|
|
148
149
|
>
|
|
149
150
|
<div
|
|
150
|
-
- class="components-item css-
|
|
151
|
-
+ class="components-item css-
|
|
151
|
+
- class="components-item css-1uo9kmu-View-medium-item-spacedAround em57xhy0"
|
|
152
|
+
+ class="components-item css-bsdqin-View-medium-item em57xhy0"
|
|
152
153
|
data-wp-c16t="true"
|
|
153
154
|
data-wp-component="Item"
|
|
154
155
|
>
|
|
@@ -97,6 +97,20 @@ The minimum `value` allowed.
|
|
|
97
97
|
- Required: No
|
|
98
98
|
- Default: `-Infinity`
|
|
99
99
|
|
|
100
|
+
### onChange
|
|
101
|
+
|
|
102
|
+
Callback fired whenever the value of the input changes.
|
|
103
|
+
|
|
104
|
+
The callback receives two arguments:
|
|
105
|
+
|
|
106
|
+
1. `newValue`: the new value of the input
|
|
107
|
+
2. `extra`: an object containing, under the `event` key, the original browser event.
|
|
108
|
+
|
|
109
|
+
Note that the value received as the first argument of the callback is _not_ guaranteed to be a valid value (e.g. it could be outside of the range defined by the [`min`, `max`] props, or it could not match the `step`). In order to check the value's validity, check the `event.target?.validity.valid` property from the callback's second argument.
|
|
110
|
+
|
|
111
|
+
- Type: `(newValue, extra) => void`
|
|
112
|
+
- Required: No
|
|
113
|
+
|
|
100
114
|
### required
|
|
101
115
|
|
|
102
116
|
If `true` enforces a valid number within the control's min/max range. If `false` allows an empty string as a valid value.
|
|
@@ -15,13 +15,12 @@ import { isRTL } from '@wordpress/i18n';
|
|
|
15
15
|
*/
|
|
16
16
|
import { Input } from './styles/number-control-styles';
|
|
17
17
|
import * as inputControlActionTypes from '../input-control/reducer/actions';
|
|
18
|
-
import { composeStateReducers } from '../input-control/reducer/reducer';
|
|
19
18
|
import { add, subtract, roundClamp } from '../utils/math';
|
|
20
19
|
import { isValueEmpty } from '../utils/values';
|
|
21
20
|
|
|
22
21
|
export function NumberControl(
|
|
23
22
|
{
|
|
24
|
-
__unstableStateReducer:
|
|
23
|
+
__unstableStateReducer: stateReducerProp,
|
|
25
24
|
className,
|
|
26
25
|
dragDirection = 'n',
|
|
27
26
|
hideHTMLArrows = false,
|
|
@@ -62,9 +61,11 @@ export function NumberControl(
|
|
|
62
61
|
* @return {Object} The updated state to apply to InputControl
|
|
63
62
|
*/
|
|
64
63
|
const numberControlStateReducer = ( state, action ) => {
|
|
64
|
+
const nextState = { ...state };
|
|
65
|
+
|
|
65
66
|
const { type, payload } = action;
|
|
66
67
|
const event = payload?.event;
|
|
67
|
-
const currentValue =
|
|
68
|
+
const currentValue = nextState.value;
|
|
68
69
|
|
|
69
70
|
/**
|
|
70
71
|
* Handles custom UP and DOWN Keyboard events
|
|
@@ -94,7 +95,7 @@ export function NumberControl(
|
|
|
94
95
|
nextValue = subtract( nextValue, incrementalValue );
|
|
95
96
|
}
|
|
96
97
|
|
|
97
|
-
|
|
98
|
+
nextState.value = constrainValue(
|
|
98
99
|
nextValue,
|
|
99
100
|
enableShift ? incrementalValue : null
|
|
100
101
|
);
|
|
@@ -139,7 +140,7 @@ export function NumberControl(
|
|
|
139
140
|
delta = Math.ceil( Math.abs( delta ) ) * Math.sign( delta );
|
|
140
141
|
const distance = delta * modifier * directionModifier;
|
|
141
142
|
|
|
142
|
-
|
|
143
|
+
nextState.value = constrainValue(
|
|
143
144
|
add( currentValue, distance ),
|
|
144
145
|
enableShift ? modifier : null
|
|
145
146
|
);
|
|
@@ -147,7 +148,7 @@ export function NumberControl(
|
|
|
147
148
|
}
|
|
148
149
|
|
|
149
150
|
/**
|
|
150
|
-
* Handles commit (ENTER key press or
|
|
151
|
+
* Handles commit (ENTER key press or blur)
|
|
151
152
|
*/
|
|
152
153
|
if (
|
|
153
154
|
type === inputControlActionTypes.PRESS_ENTER ||
|
|
@@ -155,12 +156,12 @@ export function NumberControl(
|
|
|
155
156
|
) {
|
|
156
157
|
const applyEmptyValue = required === false && currentValue === '';
|
|
157
158
|
|
|
158
|
-
|
|
159
|
+
nextState.value = applyEmptyValue
|
|
159
160
|
? currentValue
|
|
160
161
|
: constrainValue( currentValue );
|
|
161
162
|
}
|
|
162
163
|
|
|
163
|
-
return
|
|
164
|
+
return nextState;
|
|
164
165
|
};
|
|
165
166
|
|
|
166
167
|
return (
|
|
@@ -180,10 +181,10 @@ export function NumberControl(
|
|
|
180
181
|
step={ step }
|
|
181
182
|
type={ typeProp }
|
|
182
183
|
value={ valueProp }
|
|
183
|
-
__unstableStateReducer={
|
|
184
|
-
numberControlStateReducer,
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
__unstableStateReducer={ ( state, action ) => {
|
|
185
|
+
const baseState = numberControlStateReducer( state, action );
|
|
186
|
+
return stateReducerProp?.( baseState, action ) ?? baseState;
|
|
187
|
+
} }
|
|
187
188
|
/>
|
|
188
189
|
);
|
|
189
190
|
}
|
|
@@ -23,6 +23,7 @@ export default {
|
|
|
23
23
|
|
|
24
24
|
function Example() {
|
|
25
25
|
const [ value, setValue ] = useState( '0' );
|
|
26
|
+
const [ isValidValue, setIsValidValue ] = useState( true );
|
|
26
27
|
|
|
27
28
|
const props = {
|
|
28
29
|
disabled: boolean( 'disabled', false ),
|
|
@@ -32,18 +33,24 @@ function Example() {
|
|
|
32
33
|
label: text( 'label', 'Number' ),
|
|
33
34
|
min: number( 'min', 0 ),
|
|
34
35
|
max: number( 'max', 100 ),
|
|
35
|
-
placeholder: text( 'placeholder', 0 ),
|
|
36
|
+
placeholder: text( 'placeholder', '0' ),
|
|
36
37
|
required: boolean( 'required', false ),
|
|
37
38
|
shiftStep: number( 'shiftStep', 10 ),
|
|
38
|
-
step: text( 'step', 1 ),
|
|
39
|
+
step: text( 'step', '1' ),
|
|
39
40
|
};
|
|
40
41
|
|
|
41
42
|
return (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
<>
|
|
44
|
+
<NumberControl
|
|
45
|
+
{ ...props }
|
|
46
|
+
value={ value }
|
|
47
|
+
onChange={ ( v, extra ) => {
|
|
48
|
+
setValue( v );
|
|
49
|
+
setIsValidValue( extra.event.target.validity.valid );
|
|
50
|
+
} }
|
|
51
|
+
/>
|
|
52
|
+
<p>Is valid? { isValidValue ? 'Yes' : 'No' }</p>
|
|
53
|
+
</>
|
|
47
54
|
);
|
|
48
55
|
}
|
|
49
56
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { render, screen, fireEvent } from '@testing-library/react';
|
|
4
|
+
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
@@ -63,6 +63,68 @@ describe( 'NumberControl', () => {
|
|
|
63
63
|
|
|
64
64
|
expect( spy ).toHaveBeenCalledWith( '10' );
|
|
65
65
|
} );
|
|
66
|
+
|
|
67
|
+
it( 'should call onChange callback when value is clamped on blur', async () => {
|
|
68
|
+
const spy = jest.fn();
|
|
69
|
+
render(
|
|
70
|
+
<NumberControl
|
|
71
|
+
value={ 5 }
|
|
72
|
+
min={ 4 }
|
|
73
|
+
max={ 10 }
|
|
74
|
+
onChange={ ( v ) => spy( v ) }
|
|
75
|
+
/>
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
const input = getInput();
|
|
79
|
+
input.focus();
|
|
80
|
+
fireEvent.change( input, { target: { value: 1 } } );
|
|
81
|
+
|
|
82
|
+
// Before blurring, the value is still un-clamped
|
|
83
|
+
expect( input.value ).toBe( '1' );
|
|
84
|
+
|
|
85
|
+
input.blur();
|
|
86
|
+
|
|
87
|
+
// After blur, value is clamped
|
|
88
|
+
expect( input.value ).toBe( '4' );
|
|
89
|
+
|
|
90
|
+
// After the blur, the `onChange` callback fires asynchronously.
|
|
91
|
+
await waitFor( () => {
|
|
92
|
+
expect( spy ).toHaveBeenCalledTimes( 2 );
|
|
93
|
+
expect( spy ).toHaveBeenNthCalledWith( 1, '1' );
|
|
94
|
+
expect( spy ).toHaveBeenNthCalledWith( 2, 4 );
|
|
95
|
+
} );
|
|
96
|
+
} );
|
|
97
|
+
|
|
98
|
+
it( 'should call onChange callback when value is not valid', () => {
|
|
99
|
+
const spy = jest.fn();
|
|
100
|
+
render(
|
|
101
|
+
<NumberControl
|
|
102
|
+
value={ 5 }
|
|
103
|
+
min={ 1 }
|
|
104
|
+
max={ 10 }
|
|
105
|
+
onChange={ ( v, extra ) =>
|
|
106
|
+
spy( v, extra.event.target.validity.valid )
|
|
107
|
+
}
|
|
108
|
+
/>
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
const input = getInput();
|
|
112
|
+
input.focus();
|
|
113
|
+
fireEvent.change( input, { target: { value: 14 } } );
|
|
114
|
+
|
|
115
|
+
expect( input.value ).toBe( '14' );
|
|
116
|
+
|
|
117
|
+
fireKeyDown( { keyCode: ENTER } );
|
|
118
|
+
|
|
119
|
+
expect( input.value ).toBe( '10' );
|
|
120
|
+
|
|
121
|
+
expect( spy ).toHaveBeenCalledTimes( 2 );
|
|
122
|
+
|
|
123
|
+
// First call: invalid, unclamped value
|
|
124
|
+
expect( spy ).toHaveBeenNthCalledWith( 1, '14', false );
|
|
125
|
+
// Second call: valid, clamped value
|
|
126
|
+
expect( spy ).toHaveBeenNthCalledWith( 2, 10, true );
|
|
127
|
+
} );
|
|
66
128
|
} );
|
|
67
129
|
|
|
68
130
|
describe( 'Validation', () => {
|
|
@@ -82,6 +144,22 @@ describe( 'NumberControl', () => {
|
|
|
82
144
|
expect( input.value ).toBe( '0' );
|
|
83
145
|
} );
|
|
84
146
|
|
|
147
|
+
it( 'should clamp value within range on blur', () => {
|
|
148
|
+
render( <NumberControl value={ 5 } min={ 0 } max={ 10 } /> );
|
|
149
|
+
|
|
150
|
+
const input = getInput();
|
|
151
|
+
input.focus();
|
|
152
|
+
fireEvent.change( input, { target: { value: 41 } } );
|
|
153
|
+
|
|
154
|
+
// Before blurring, the value is still un-clamped
|
|
155
|
+
expect( input.value ).toBe( '41' );
|
|
156
|
+
|
|
157
|
+
input.blur();
|
|
158
|
+
|
|
159
|
+
// After blur, value is clamped
|
|
160
|
+
expect( input.value ).toBe( '10' );
|
|
161
|
+
} );
|
|
162
|
+
|
|
85
163
|
it( 'should parse to number value on ENTER keypress when required', () => {
|
|
86
164
|
render( <NumberControl value={ 5 } required={ true } /> );
|
|
87
165
|
|