@wordpress/components 19.6.1 → 19.8.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 +54 -0
- 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/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 -87
- 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/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/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 -76
- 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/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 -182
- package/build-style/style.css +33 -182
- 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/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/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-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 → toggle-group-control-option-base}/styles.d.ts +0 -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/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/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 -5
- 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 -94
- 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 -1
- 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/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/toggle-group-control/toggle-group-control-option/styles.js +0 -66
- package/build/toggle-group-control/toggle-group-control-option/styles.js.map +0 -1
- package/build-module/toggle-group-control/toggle-group-control-option/styles.js +0 -55
- package/build-module/toggle-group-control/toggle-group-control-option/styles.js.map +0 -1
- package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts.map +0 -1
- package/src/base-control/index.js +0 -111
- package/src/base-control/stories/index.js +0 -81
- package/src/unit-control/stories/index.js +0 -127
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { fireEvent, render, screen } from '@testing-library/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { BorderControl } from '../';
|
|
10
|
+
|
|
11
|
+
const colors = [
|
|
12
|
+
{ name: 'Gray', color: '#f6f7f7' },
|
|
13
|
+
{ name: 'Blue', color: '#72aee6' },
|
|
14
|
+
{ name: 'Red', color: '#e65054' },
|
|
15
|
+
{ name: 'Green', color: '#00a32a' },
|
|
16
|
+
{ name: 'Yellow', color: '#bd8600' },
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const defaultBorder = {
|
|
20
|
+
color: '#72aee6',
|
|
21
|
+
style: 'solid',
|
|
22
|
+
width: '1px',
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const props = {
|
|
26
|
+
colors,
|
|
27
|
+
label: 'Border',
|
|
28
|
+
onChange: jest.fn().mockImplementation( ( newValue ) => {
|
|
29
|
+
props.value = newValue;
|
|
30
|
+
} ),
|
|
31
|
+
value: defaultBorder,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const toggleLabelRegex = /Border color( and style)* picker/;
|
|
35
|
+
|
|
36
|
+
const renderBorderControl = ( customProps ) => {
|
|
37
|
+
return render( <BorderControl { ...{ ...props, ...customProps } } /> );
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const rerenderBorderControl = ( rerender, customProps ) => {
|
|
41
|
+
return rerender( <BorderControl { ...{ ...props, ...customProps } } /> );
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const openPopover = () => {
|
|
45
|
+
const toggleButton = screen.getByLabelText( toggleLabelRegex );
|
|
46
|
+
fireEvent.click( toggleButton );
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const getButton = ( name ) => {
|
|
50
|
+
return screen.getByRole( 'button', { name } );
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const queryButton = ( name ) => {
|
|
54
|
+
return screen.queryByRole( 'button', { name } );
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const clickButton = ( name ) => {
|
|
58
|
+
fireEvent.click( getButton( name ) );
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const setWidthInput = ( value ) => {
|
|
62
|
+
const widthInput = screen.getByRole( 'spinbutton' );
|
|
63
|
+
widthInput.focus();
|
|
64
|
+
fireEvent.change( widthInput, { target: { value } } );
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const clearWidthInput = () => setWidthInput( '' );
|
|
68
|
+
|
|
69
|
+
describe( 'BorderControl', () => {
|
|
70
|
+
describe( 'basic rendering', () => {
|
|
71
|
+
it( 'should render standard border control', () => {
|
|
72
|
+
renderBorderControl();
|
|
73
|
+
|
|
74
|
+
const label = screen.getByText( props.label );
|
|
75
|
+
const colorButton = screen.getByLabelText( toggleLabelRegex );
|
|
76
|
+
const widthInput = screen.getByRole( 'spinbutton' );
|
|
77
|
+
const unitSelect = screen.getByRole( 'combobox' );
|
|
78
|
+
const slider = screen.queryByRole( 'slider' );
|
|
79
|
+
|
|
80
|
+
expect( label ).toBeInTheDocument();
|
|
81
|
+
expect( colorButton ).toBeInTheDocument();
|
|
82
|
+
expect( widthInput ).toBeInTheDocument();
|
|
83
|
+
expect( unitSelect ).toBeInTheDocument();
|
|
84
|
+
expect( slider ).not.toBeInTheDocument();
|
|
85
|
+
} );
|
|
86
|
+
|
|
87
|
+
it( 'should hide label', () => {
|
|
88
|
+
renderBorderControl( { hideLabelFromVision: true } );
|
|
89
|
+
const label = screen.getByText( props.label );
|
|
90
|
+
|
|
91
|
+
// As visually hidden labels are still included in the document
|
|
92
|
+
// and do not have `display: none` styling, we can't rely on
|
|
93
|
+
// `.toBeInTheDocument()` or `.toBeVisible()` assertions.
|
|
94
|
+
expect( label ).toHaveAttribute(
|
|
95
|
+
'data-wp-component',
|
|
96
|
+
'VisuallyHidden'
|
|
97
|
+
);
|
|
98
|
+
} );
|
|
99
|
+
|
|
100
|
+
it( 'should render with slider', () => {
|
|
101
|
+
renderBorderControl( { withSlider: true } );
|
|
102
|
+
|
|
103
|
+
const slider = screen.getByRole( 'slider' );
|
|
104
|
+
expect( slider ).toBeInTheDocument();
|
|
105
|
+
} );
|
|
106
|
+
|
|
107
|
+
it( 'should render placeholder in UnitControl', () => {
|
|
108
|
+
renderBorderControl( { placeholder: 'Mixed' } );
|
|
109
|
+
const widthInput = screen.getByRole( 'spinbutton' );
|
|
110
|
+
|
|
111
|
+
expect( widthInput ).toHaveAttribute( 'placeholder', 'Mixed' );
|
|
112
|
+
} );
|
|
113
|
+
|
|
114
|
+
it( 'should render color and style popover', () => {
|
|
115
|
+
renderBorderControl();
|
|
116
|
+
openPopover();
|
|
117
|
+
|
|
118
|
+
const customColorPicker = getButton( /Custom color picker/ );
|
|
119
|
+
const colorSwatchButtons = screen.getAllByRole( 'button', {
|
|
120
|
+
name: /^Color:/,
|
|
121
|
+
} );
|
|
122
|
+
const styleLabel = screen.getByText( 'Style' );
|
|
123
|
+
const solidButton = getButton( 'Solid' );
|
|
124
|
+
const dashedButton = getButton( 'Dashed' );
|
|
125
|
+
const dottedButton = getButton( 'Dotted' );
|
|
126
|
+
const resetButton = getButton( 'Reset to default' );
|
|
127
|
+
|
|
128
|
+
expect( customColorPicker ).toBeInTheDocument();
|
|
129
|
+
expect( colorSwatchButtons.length ).toEqual( colors.length );
|
|
130
|
+
expect( styleLabel ).toBeInTheDocument();
|
|
131
|
+
expect( solidButton ).toBeInTheDocument();
|
|
132
|
+
expect( dashedButton ).toBeInTheDocument();
|
|
133
|
+
expect( dottedButton ).toBeInTheDocument();
|
|
134
|
+
expect( resetButton ).toBeInTheDocument();
|
|
135
|
+
} );
|
|
136
|
+
|
|
137
|
+
it( 'should render color and style popover header', () => {
|
|
138
|
+
renderBorderControl( { showDropdownHeader: true } );
|
|
139
|
+
openPopover();
|
|
140
|
+
|
|
141
|
+
const headerLabel = screen.getByText( 'Border color' );
|
|
142
|
+
const closeButton = getButton( 'Close border color' );
|
|
143
|
+
|
|
144
|
+
expect( headerLabel ).toBeInTheDocument();
|
|
145
|
+
expect( closeButton ).toBeInTheDocument();
|
|
146
|
+
} );
|
|
147
|
+
|
|
148
|
+
it( 'should not render style options when opted out of', () => {
|
|
149
|
+
renderBorderControl( { enableStyle: false } );
|
|
150
|
+
openPopover();
|
|
151
|
+
|
|
152
|
+
const styleLabel = screen.queryByText( 'Style' );
|
|
153
|
+
const solidButton = queryButton( 'Solid' );
|
|
154
|
+
const dashedButton = queryButton( 'Dashed' );
|
|
155
|
+
const dottedButton = queryButton( 'Dotted' );
|
|
156
|
+
|
|
157
|
+
expect( styleLabel ).not.toBeInTheDocument();
|
|
158
|
+
expect( solidButton ).not.toBeInTheDocument();
|
|
159
|
+
expect( dashedButton ).not.toBeInTheDocument();
|
|
160
|
+
expect( dottedButton ).not.toBeInTheDocument();
|
|
161
|
+
} );
|
|
162
|
+
} );
|
|
163
|
+
|
|
164
|
+
describe( 'color and style picker aria labels', () => {
|
|
165
|
+
describe( 'with style selection enabled', () => {
|
|
166
|
+
it( 'should include both color and style in label', () => {
|
|
167
|
+
renderBorderControl( { value: undefined } );
|
|
168
|
+
|
|
169
|
+
expect(
|
|
170
|
+
screen.getByLabelText( 'Border color and style picker.' )
|
|
171
|
+
).toBeInTheDocument();
|
|
172
|
+
} );
|
|
173
|
+
|
|
174
|
+
it( 'should correctly describe named color selection', () => {
|
|
175
|
+
renderBorderControl( { value: { color: '#72aee6' } } );
|
|
176
|
+
|
|
177
|
+
expect(
|
|
178
|
+
screen.getByLabelText(
|
|
179
|
+
'Border color and style picker. The currently selected color is called "Blue" and has a value of "#72aee6".'
|
|
180
|
+
)
|
|
181
|
+
).toBeInTheDocument();
|
|
182
|
+
} );
|
|
183
|
+
|
|
184
|
+
it( 'should correctly describe custom color selection', () => {
|
|
185
|
+
renderBorderControl( { value: { color: '#4b1d80' } } );
|
|
186
|
+
|
|
187
|
+
expect(
|
|
188
|
+
screen.getByLabelText(
|
|
189
|
+
'Border color and style picker. The currently selected color has a value of "#4b1d80".'
|
|
190
|
+
)
|
|
191
|
+
).toBeInTheDocument();
|
|
192
|
+
} );
|
|
193
|
+
|
|
194
|
+
it( 'should correctly describe named color and style selections', () => {
|
|
195
|
+
renderBorderControl( {
|
|
196
|
+
value: { color: '#72aee6', style: 'dotted' },
|
|
197
|
+
} );
|
|
198
|
+
|
|
199
|
+
expect(
|
|
200
|
+
screen.getByLabelText(
|
|
201
|
+
'Border color and style picker. The currently selected color is called "Blue" and has a value of "#72aee6". The currently selected style is "dotted".'
|
|
202
|
+
)
|
|
203
|
+
).toBeInTheDocument();
|
|
204
|
+
} );
|
|
205
|
+
|
|
206
|
+
it( 'should correctly describe custom color and style selections', () => {
|
|
207
|
+
renderBorderControl( {
|
|
208
|
+
value: { color: '#4b1d80', style: 'dashed' },
|
|
209
|
+
} );
|
|
210
|
+
|
|
211
|
+
expect(
|
|
212
|
+
screen.getByLabelText(
|
|
213
|
+
'Border color and style picker. The currently selected color has a value of "#4b1d80". The currently selected style is "dashed".'
|
|
214
|
+
)
|
|
215
|
+
).toBeInTheDocument();
|
|
216
|
+
} );
|
|
217
|
+
} );
|
|
218
|
+
|
|
219
|
+
describe( 'with style selection disabled', () => {
|
|
220
|
+
it( 'should only include color in the label', () => {
|
|
221
|
+
renderBorderControl( { value: undefined, enableStyle: false } );
|
|
222
|
+
|
|
223
|
+
expect(
|
|
224
|
+
screen.getByLabelText( 'Border color picker.' )
|
|
225
|
+
).toBeInTheDocument();
|
|
226
|
+
} );
|
|
227
|
+
|
|
228
|
+
it( 'should correctly describe named color selection', () => {
|
|
229
|
+
renderBorderControl( {
|
|
230
|
+
value: { color: '#72aee6' },
|
|
231
|
+
enableStyle: false,
|
|
232
|
+
} );
|
|
233
|
+
|
|
234
|
+
expect(
|
|
235
|
+
screen.getByLabelText(
|
|
236
|
+
'Border color picker. The currently selected color is called "Blue" and has a value of "#72aee6".'
|
|
237
|
+
)
|
|
238
|
+
).toBeInTheDocument();
|
|
239
|
+
} );
|
|
240
|
+
|
|
241
|
+
it( 'should correctly describe custom color selection', () => {
|
|
242
|
+
renderBorderControl( {
|
|
243
|
+
value: { color: '#4b1d80' },
|
|
244
|
+
enableStyle: false,
|
|
245
|
+
} );
|
|
246
|
+
|
|
247
|
+
expect(
|
|
248
|
+
screen.getByLabelText(
|
|
249
|
+
'Border color picker. The currently selected color has a value of "#4b1d80".'
|
|
250
|
+
)
|
|
251
|
+
).toBeInTheDocument();
|
|
252
|
+
} );
|
|
253
|
+
} );
|
|
254
|
+
} );
|
|
255
|
+
|
|
256
|
+
describe( 'onChange handling', () => {
|
|
257
|
+
beforeEach( () => {
|
|
258
|
+
jest.clearAllMocks();
|
|
259
|
+
props.value = defaultBorder;
|
|
260
|
+
} );
|
|
261
|
+
|
|
262
|
+
it( 'should update width with slider value', () => {
|
|
263
|
+
const { rerender } = renderBorderControl( { withSlider: true } );
|
|
264
|
+
|
|
265
|
+
const slider = screen.getByRole( 'slider' );
|
|
266
|
+
fireEvent.change( slider, { target: { value: '5' } } );
|
|
267
|
+
|
|
268
|
+
expect( props.onChange ).toHaveBeenNthCalledWith( 1, {
|
|
269
|
+
...defaultBorder,
|
|
270
|
+
width: '5px',
|
|
271
|
+
} );
|
|
272
|
+
|
|
273
|
+
rerenderBorderControl( rerender, { withSlider: true } );
|
|
274
|
+
const widthInput = screen.getByRole( 'spinbutton' );
|
|
275
|
+
|
|
276
|
+
expect( widthInput.value ).toEqual( '5' );
|
|
277
|
+
} );
|
|
278
|
+
|
|
279
|
+
it( 'should update color selection', () => {
|
|
280
|
+
renderBorderControl();
|
|
281
|
+
openPopover();
|
|
282
|
+
clickButton( 'Color: Green' );
|
|
283
|
+
|
|
284
|
+
expect( props.onChange ).toHaveBeenNthCalledWith( 1, {
|
|
285
|
+
...defaultBorder,
|
|
286
|
+
color: '#00a32a',
|
|
287
|
+
} );
|
|
288
|
+
} );
|
|
289
|
+
|
|
290
|
+
it( 'should clear color selection when toggling swatch off', () => {
|
|
291
|
+
renderBorderControl();
|
|
292
|
+
openPopover();
|
|
293
|
+
clickButton( 'Color: Blue' );
|
|
294
|
+
|
|
295
|
+
expect( props.onChange ).toHaveBeenNthCalledWith( 1, {
|
|
296
|
+
...defaultBorder,
|
|
297
|
+
color: undefined,
|
|
298
|
+
} );
|
|
299
|
+
} );
|
|
300
|
+
|
|
301
|
+
it( 'should update style selection', () => {
|
|
302
|
+
renderBorderControl();
|
|
303
|
+
openPopover();
|
|
304
|
+
clickButton( 'Dashed' );
|
|
305
|
+
|
|
306
|
+
expect( props.onChange ).toHaveBeenNthCalledWith( 1, {
|
|
307
|
+
...defaultBorder,
|
|
308
|
+
style: 'dashed',
|
|
309
|
+
} );
|
|
310
|
+
} );
|
|
311
|
+
|
|
312
|
+
it( 'should take no action when color and style popover is closed', () => {
|
|
313
|
+
renderBorderControl( { showDropdownHeader: true } );
|
|
314
|
+
openPopover();
|
|
315
|
+
clickButton( 'Close border color' );
|
|
316
|
+
|
|
317
|
+
expect( props.onChange ).not.toHaveBeenCalled();
|
|
318
|
+
} );
|
|
319
|
+
|
|
320
|
+
it( 'should reset color and style only when popover reset button clicked', () => {
|
|
321
|
+
renderBorderControl();
|
|
322
|
+
openPopover();
|
|
323
|
+
clickButton( 'Reset to default' );
|
|
324
|
+
|
|
325
|
+
expect( props.onChange ).toHaveBeenNthCalledWith( 1, {
|
|
326
|
+
color: undefined,
|
|
327
|
+
style: undefined,
|
|
328
|
+
width: defaultBorder.width,
|
|
329
|
+
} );
|
|
330
|
+
} );
|
|
331
|
+
|
|
332
|
+
it( 'should sanitize border when width and color are undefined', () => {
|
|
333
|
+
const { rerender } = renderBorderControl();
|
|
334
|
+
clearWidthInput();
|
|
335
|
+
rerenderBorderControl( rerender );
|
|
336
|
+
openPopover();
|
|
337
|
+
clickButton( 'Color: Blue' );
|
|
338
|
+
|
|
339
|
+
expect( props.onChange ).toHaveBeenCalledWith( undefined );
|
|
340
|
+
} );
|
|
341
|
+
|
|
342
|
+
it( 'should not sanitize border when requested', () => {
|
|
343
|
+
const { rerender } = renderBorderControl( {
|
|
344
|
+
shouldSanitizeBorder: false,
|
|
345
|
+
} );
|
|
346
|
+
clearWidthInput();
|
|
347
|
+
rerenderBorderControl( rerender, { shouldSanitizeBorder: false } );
|
|
348
|
+
openPopover();
|
|
349
|
+
clickButton( 'Color: Blue' );
|
|
350
|
+
|
|
351
|
+
expect( props.onChange ).toHaveBeenNthCalledWith( 2, {
|
|
352
|
+
color: undefined,
|
|
353
|
+
style: defaultBorder.style,
|
|
354
|
+
width: undefined,
|
|
355
|
+
} );
|
|
356
|
+
} );
|
|
357
|
+
|
|
358
|
+
it( 'should clear color and set style to `none` when setting zero width', () => {
|
|
359
|
+
renderBorderControl();
|
|
360
|
+
openPopover();
|
|
361
|
+
clickButton( 'Color: Green' );
|
|
362
|
+
clickButton( 'Dotted' );
|
|
363
|
+
setWidthInput( '0' );
|
|
364
|
+
|
|
365
|
+
expect( props.onChange ).toHaveBeenNthCalledWith( 3, {
|
|
366
|
+
color: undefined,
|
|
367
|
+
style: 'none',
|
|
368
|
+
width: '0px',
|
|
369
|
+
} );
|
|
370
|
+
} );
|
|
371
|
+
|
|
372
|
+
it( 'should reselect color and style selections when changing to non-zero width', () => {
|
|
373
|
+
const { rerender } = renderBorderControl();
|
|
374
|
+
openPopover();
|
|
375
|
+
clickButton( 'Color: Green' );
|
|
376
|
+
rerenderBorderControl( rerender );
|
|
377
|
+
clickButton( 'Dotted' );
|
|
378
|
+
rerenderBorderControl( rerender );
|
|
379
|
+
setWidthInput( '0' );
|
|
380
|
+
setWidthInput( '5' );
|
|
381
|
+
|
|
382
|
+
expect( props.onChange ).toHaveBeenNthCalledWith( 4, {
|
|
383
|
+
color: '#00a32a',
|
|
384
|
+
style: 'dotted',
|
|
385
|
+
width: '5px',
|
|
386
|
+
} );
|
|
387
|
+
} );
|
|
388
|
+
|
|
389
|
+
it( 'should set a non-zero width when applying color to zero width border', () => {
|
|
390
|
+
const { rerender } = renderBorderControl( { value: undefined } );
|
|
391
|
+
openPopover();
|
|
392
|
+
clickButton( 'Color: Yellow' );
|
|
393
|
+
|
|
394
|
+
expect( props.onChange ).toHaveBeenCalledWith( {
|
|
395
|
+
color: '#bd8600',
|
|
396
|
+
style: undefined,
|
|
397
|
+
width: undefined,
|
|
398
|
+
} );
|
|
399
|
+
|
|
400
|
+
setWidthInput( '0' );
|
|
401
|
+
rerenderBorderControl( rerender );
|
|
402
|
+
clickButton( 'Color: Green' );
|
|
403
|
+
|
|
404
|
+
expect( props.onChange ).toHaveBeenCalledWith( {
|
|
405
|
+
color: '#00a32a',
|
|
406
|
+
style: undefined,
|
|
407
|
+
width: '1px',
|
|
408
|
+
} );
|
|
409
|
+
} );
|
|
410
|
+
|
|
411
|
+
it( 'should set a non-zero width when applying style to zero width border', () => {
|
|
412
|
+
const { rerender } = renderBorderControl( {
|
|
413
|
+
value: undefined,
|
|
414
|
+
shouldSanitizeBorder: false,
|
|
415
|
+
} );
|
|
416
|
+
openPopover();
|
|
417
|
+
clickButton( 'Dashed' );
|
|
418
|
+
|
|
419
|
+
expect( props.onChange ).toHaveBeenCalledWith( {
|
|
420
|
+
color: undefined,
|
|
421
|
+
style: 'dashed',
|
|
422
|
+
width: undefined,
|
|
423
|
+
} );
|
|
424
|
+
|
|
425
|
+
setWidthInput( '0' );
|
|
426
|
+
rerenderBorderControl( rerender, { shouldSanitizeBorder: false } );
|
|
427
|
+
clickButton( 'Dotted' );
|
|
428
|
+
|
|
429
|
+
expect( props.onChange ).toHaveBeenCalledWith( {
|
|
430
|
+
color: undefined,
|
|
431
|
+
style: 'dotted',
|
|
432
|
+
width: '1px',
|
|
433
|
+
} );
|
|
434
|
+
} );
|
|
435
|
+
} );
|
|
436
|
+
} );
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { CSSProperties } from 'react';
|
|
5
|
+
|
|
6
|
+
export type Border = {
|
|
7
|
+
color?: CSSProperties[ 'borderColor' ];
|
|
8
|
+
style?: CSSProperties[ 'borderStyle' ];
|
|
9
|
+
width?: CSSProperties[ 'borderWidth' ];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export type Color = {
|
|
13
|
+
name: string;
|
|
14
|
+
color: CSSProperties[ 'color' ];
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type ColorOrigin = {
|
|
18
|
+
name: string;
|
|
19
|
+
colors: Color[];
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type Colors = ColorOrigin[] | Color[];
|
|
23
|
+
|
|
24
|
+
export type ColorProps = {
|
|
25
|
+
/**
|
|
26
|
+
* An array of color definitions. This may also be a multi-dimensional array
|
|
27
|
+
* where colors are organized by multiple origins.
|
|
28
|
+
*/
|
|
29
|
+
colors?: Colors;
|
|
30
|
+
/**
|
|
31
|
+
* This toggles the ability to choose custom colors.
|
|
32
|
+
*/
|
|
33
|
+
disableCustomColors?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* This controls whether the alpha channel will be offered when selecting
|
|
36
|
+
* custom colors.
|
|
37
|
+
*/
|
|
38
|
+
enableAlpha?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* This is passed on to the color related sub-components which need to be
|
|
41
|
+
* made aware of whether the colors prop contains multiple origins.
|
|
42
|
+
*/
|
|
43
|
+
__experimentalHasMultipleOrigins?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* This is passed on to the color related sub-components so they may render
|
|
46
|
+
* more effectively when used within a sidebar.
|
|
47
|
+
*/
|
|
48
|
+
__experimentalIsRenderedInSidebar?: boolean;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export type LabelProps = {
|
|
52
|
+
/**
|
|
53
|
+
* Provides control over whether the label will only be visible to
|
|
54
|
+
* screen readers.
|
|
55
|
+
*/
|
|
56
|
+
hideLabelFromVision?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* If provided, a label will be generated using this as the content.
|
|
59
|
+
*/
|
|
60
|
+
label?: string;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export type BorderControlProps = ColorProps &
|
|
64
|
+
LabelProps & {
|
|
65
|
+
/**
|
|
66
|
+
* This controls whether to include border style options within the
|
|
67
|
+
* `BorderDropdown` sub-component.
|
|
68
|
+
*
|
|
69
|
+
* @default true
|
|
70
|
+
*/
|
|
71
|
+
enableStyle?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* This flags the `BorderControl` to render with a more compact
|
|
74
|
+
* appearance. It restricts the width of the control and prevents it
|
|
75
|
+
* from expanding to take up additional space.
|
|
76
|
+
*/
|
|
77
|
+
isCompact?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* A callback function invoked when the border value is changed via an
|
|
80
|
+
* interaction that selects or clears, border color, style, or width.
|
|
81
|
+
*/
|
|
82
|
+
onChange: ( value?: Border ) => void;
|
|
83
|
+
/**
|
|
84
|
+
* A custom CSS class name to be assigned to the border control's
|
|
85
|
+
* dropdown popover content.
|
|
86
|
+
*/
|
|
87
|
+
popoverContentClassName?: string;
|
|
88
|
+
/**
|
|
89
|
+
* If opted into, sanitizing the border means that if no width or color
|
|
90
|
+
* have been selected, the border style is also cleared and `undefined`
|
|
91
|
+
* is returned as the new border value.
|
|
92
|
+
*
|
|
93
|
+
* @default true
|
|
94
|
+
*/
|
|
95
|
+
shouldSanitizeBorder?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Whether or not to show the header for the border color and style
|
|
98
|
+
* picker dropdown. The header includes a label for the color picker
|
|
99
|
+
* and a close button.
|
|
100
|
+
*/
|
|
101
|
+
showDropdownHeader?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* An object representing a border or `undefined`. Used to set the
|
|
104
|
+
* current border configuration for this component.
|
|
105
|
+
*/
|
|
106
|
+
value?: Border;
|
|
107
|
+
/**
|
|
108
|
+
* Controls the visual width of the `BorderControl`. It has no effect if
|
|
109
|
+
* the `isCompact` prop is set to `true`.
|
|
110
|
+
*/
|
|
111
|
+
width?: CSSProperties[ 'width' ];
|
|
112
|
+
/**
|
|
113
|
+
* Flags whether this `BorderControl` should also render a
|
|
114
|
+
* `RangeControl` for additional control over a border's width.
|
|
115
|
+
*/
|
|
116
|
+
withSlider?: boolean;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export type DropdownProps = ColorProps & {
|
|
120
|
+
/**
|
|
121
|
+
* An object representing a border or `undefined`. This component will
|
|
122
|
+
* extract the border color and style selections from this object to use as
|
|
123
|
+
* values for its popover controls.
|
|
124
|
+
*/
|
|
125
|
+
border?: Border;
|
|
126
|
+
/**
|
|
127
|
+
* A custom CSS class name to be assigned to the border control's
|
|
128
|
+
* dropdown popover content.
|
|
129
|
+
*/
|
|
130
|
+
contentClassName?: string;
|
|
131
|
+
/**
|
|
132
|
+
* This controls whether to render border style options.
|
|
133
|
+
*
|
|
134
|
+
* @default true
|
|
135
|
+
*/
|
|
136
|
+
enableStyle?: boolean;
|
|
137
|
+
/**
|
|
138
|
+
* A callback invoked when the border color or style selections change.
|
|
139
|
+
*/
|
|
140
|
+
onChange: ( newBorder?: Border ) => void;
|
|
141
|
+
/**
|
|
142
|
+
* Any previous style selection made by the user. This can be used to
|
|
143
|
+
* reapply that previous selection when, for example, a zero border width is
|
|
144
|
+
* to a non-zero value.
|
|
145
|
+
*/
|
|
146
|
+
previousStyleSelection?: string;
|
|
147
|
+
/**
|
|
148
|
+
* Whether or not to render a header for the border color and style picker
|
|
149
|
+
* dropdown. The header includes a label for the color picker and a
|
|
150
|
+
* close button.
|
|
151
|
+
*/
|
|
152
|
+
showDropdownHeader?: boolean;
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
export type StylePickerProps = LabelProps & {
|
|
156
|
+
/**
|
|
157
|
+
* A callback function invoked when a border style is selected or cleared.
|
|
158
|
+
*/
|
|
159
|
+
onChange: ( style?: string ) => void;
|
|
160
|
+
/**
|
|
161
|
+
* The currently selected border style if there is one. Styles available via
|
|
162
|
+
* this control are `solid`, `dashed` & `dotted`, however the possibility
|
|
163
|
+
* to store other valid CSS values is maintained e.g. `none`, `inherit` etc.
|
|
164
|
+
*/
|
|
165
|
+
value?: string;
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
export type PopoverProps = {
|
|
169
|
+
/**
|
|
170
|
+
* Callback function to invoke when closing the border dropdown's popover.
|
|
171
|
+
*/
|
|
172
|
+
onClose: () => void;
|
|
173
|
+
};
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
ALL_SIDES,
|
|
11
11
|
LABELS,
|
|
12
12
|
getAllValue,
|
|
13
|
-
getAllUnitFallback,
|
|
14
13
|
isValuesMixed,
|
|
15
14
|
isValuesDefined,
|
|
16
15
|
} from './utils';
|
|
@@ -26,17 +25,11 @@ export default function AllInputControl( {
|
|
|
26
25
|
setSelectedUnits,
|
|
27
26
|
...props
|
|
28
27
|
} ) {
|
|
29
|
-
const allValue = getAllValue( values, sides );
|
|
28
|
+
const allValue = getAllValue( values, selectedUnits, sides );
|
|
30
29
|
const hasValues = isValuesDefined( values );
|
|
31
|
-
const isMixed = hasValues && isValuesMixed( values, sides );
|
|
30
|
+
const isMixed = hasValues && isValuesMixed( values, selectedUnits, sides );
|
|
32
31
|
const allPlaceholder = isMixed ? LABELS.mixed : null;
|
|
33
32
|
|
|
34
|
-
// Set meaningful unit selection if no allValue and user has previously
|
|
35
|
-
// selected units without assigning values while controls were unlinked.
|
|
36
|
-
const allUnitFallback = ! allValue
|
|
37
|
-
? getAllUnitFallback( selectedUnits )
|
|
38
|
-
: undefined;
|
|
39
|
-
|
|
40
33
|
const handleOnFocus = ( event ) => {
|
|
41
34
|
onFocus( event, { side: 'all' } );
|
|
42
35
|
};
|
|
@@ -104,7 +97,6 @@ export default function AllInputControl( {
|
|
|
104
97
|
disableUnits={ isMixed }
|
|
105
98
|
isOnly
|
|
106
99
|
value={ allValue }
|
|
107
|
-
unit={ allUnitFallback }
|
|
108
100
|
onChange={ handleOnChange }
|
|
109
101
|
onUnitChange={ handleOnUnitChange }
|
|
110
102
|
onFocus={ handleOnFocus }
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
|
+
import { parseQuantityAndUnitFromRawValue } from '../unit-control/utils';
|
|
4
5
|
import UnitControl from './unit-control';
|
|
5
6
|
import { LABELS } from './utils';
|
|
6
7
|
import { Layout } from './styles/box-control-styles';
|
|
@@ -113,27 +114,37 @@ export default function AxialInputControls( {
|
|
|
113
114
|
align="top"
|
|
114
115
|
className="component-box-control__vertical-horizontal-input-controls"
|
|
115
116
|
>
|
|
116
|
-
{ filteredSides.map( ( side ) =>
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
117
|
+
{ filteredSides.map( ( side ) => {
|
|
118
|
+
const [
|
|
119
|
+
parsedQuantity,
|
|
120
|
+
parsedUnit,
|
|
121
|
+
] = parseQuantityAndUnitFromRawValue(
|
|
122
|
+
side === 'vertical' ? values.top : values.left
|
|
123
|
+
);
|
|
124
|
+
const selectedUnit =
|
|
125
|
+
side === 'vertical'
|
|
126
|
+
? selectedUnits.top
|
|
127
|
+
: selectedUnits.left;
|
|
128
|
+
return (
|
|
129
|
+
<UnitControl
|
|
130
|
+
{ ...props }
|
|
131
|
+
isFirst={ first === side }
|
|
132
|
+
isLast={ last === side }
|
|
133
|
+
isOnly={ only === side }
|
|
134
|
+
value={ [
|
|
135
|
+
parsedQuantity,
|
|
136
|
+
selectedUnit ?? parsedUnit,
|
|
137
|
+
].join( '' ) }
|
|
138
|
+
onChange={ createHandleOnChange( side ) }
|
|
139
|
+
onUnitChange={ createHandleOnUnitChange( side ) }
|
|
140
|
+
onFocus={ createHandleOnFocus( side ) }
|
|
141
|
+
onHoverOn={ createHandleOnHoverOn( side ) }
|
|
142
|
+
onHoverOff={ createHandleOnHoverOff( side ) }
|
|
143
|
+
label={ LABELS[ side ] }
|
|
144
|
+
key={ side }
|
|
145
|
+
/>
|
|
146
|
+
);
|
|
147
|
+
} ) }
|
|
137
148
|
</Layout>
|
|
138
149
|
);
|
|
139
150
|
}
|