@wordpress/components 28.5.0 → 28.6.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 +82 -0
- package/CONTRIBUTING.md +155 -64
- package/build/alignment-matrix-control/cell.js +2 -2
- package/build/alignment-matrix-control/cell.js.map +1 -1
- package/build/alignment-matrix-control/index.js +6 -5
- package/build/alignment-matrix-control/index.js.map +1 -1
- package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +8 -17
- package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
- package/build/angle-picker-control/styles/angle-picker-control-styles.js +4 -4
- package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
- package/build/base-control/index.js +54 -41
- package/build/base-control/index.js.map +1 -1
- package/build/base-control/types.js.map +1 -1
- package/build/border-control/styles.js +13 -13
- package/build/border-control/styles.js.map +1 -1
- package/build/checkbox-control/index.js +1 -0
- package/build/checkbox-control/index.js.map +1 -1
- package/build/circular-option-picker/circular-option-picker-option.js +4 -4
- package/build/circular-option-picker/circular-option-picker-option.js.map +1 -1
- package/build/circular-option-picker/circular-option-picker.js +3 -3
- package/build/circular-option-picker/circular-option-picker.js.map +1 -1
- package/build/circular-option-picker/types.js.map +1 -1
- package/build/color-palette/utils.js +17 -5
- package/build/color-palette/utils.js.map +1 -1
- package/build/color-picker/input-with-slider.js +1 -0
- package/build/color-picker/input-with-slider.js.map +1 -1
- package/build/combobox-control/index.js +1 -0
- package/build/combobox-control/index.js.map +1 -1
- package/build/composite/context.js +19 -0
- package/build/composite/context.js.map +1 -0
- package/build/composite/index.js +287 -9
- package/build/composite/index.js.map +1 -1
- package/build/composite/legacy/index.js +10 -8
- package/build/composite/legacy/index.js.map +1 -1
- package/build/composite/types.js +6 -0
- package/build/composite/types.js.map +1 -0
- package/build/custom-select-control/types.js.map +1 -1
- package/build/custom-select-control-v2/custom-select.js +3 -2
- package/build/custom-select-control-v2/custom-select.js.map +1 -1
- package/build/date-time/time/index.js +11 -3
- package/build/date-time/time/index.js.map +1 -1
- package/build/date-time/types.js.map +1 -1
- package/build/dimension-control/index.js +25 -8
- package/build/dimension-control/index.js.map +1 -1
- package/build/dimension-control/types.js.map +1 -1
- package/build/dropdown-menu-v2/index.js +3 -2
- package/build/dropdown-menu-v2/index.js.map +1 -1
- package/build/dropdown-menu-v2/styles.js +23 -21
- package/build/dropdown-menu-v2/styles.js.map +1 -1
- package/build/focal-point-picker/controls.js +1 -3
- package/build/focal-point-picker/controls.js.map +1 -1
- package/build/focal-point-picker/index.js +1 -2
- package/build/focal-point-picker/index.js.map +1 -1
- package/build/focal-point-picker/styles/focal-point-picker-style.js +11 -11
- package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
- package/build/focal-point-picker/types.js.map +1 -1
- package/build/form-file-upload/types.js.map +1 -1
- package/build/index.js +5 -5
- package/build/index.js.map +1 -1
- package/build/item-group/styles.js +11 -11
- package/build/item-group/styles.js.map +1 -1
- package/build/mobile/utils/alignments.native.js +1 -1
- package/build/mobile/utils/alignments.native.js.map +1 -1
- package/build/navigator/navigator-back-button/component.js +1 -1
- package/build/navigator/navigator-back-button/component.js.map +1 -1
- package/build/navigator/navigator-back-button/hook.js +3 -9
- package/build/navigator/navigator-back-button/hook.js.map +1 -1
- package/build/navigator/navigator-provider/component.js +17 -9
- package/build/navigator/navigator-provider/component.js.map +1 -1
- package/build/navigator/navigator-to-parent-button/component.js +13 -40
- package/build/navigator/navigator-to-parent-button/component.js.map +1 -1
- package/build/navigator/types.js.map +1 -1
- package/build/palette-edit/styles.js +11 -11
- package/build/palette-edit/styles.js.map +1 -1
- package/build/popover/index.js +6 -1
- package/build/popover/index.js.map +1 -1
- package/build/private-apis.js +6 -6
- package/build/private-apis.js.map +1 -1
- package/build/progress-bar/styles.js +5 -5
- package/build/progress-bar/styles.js.map +1 -1
- package/build/query-controls/index.js +5 -6
- package/build/query-controls/index.js.map +1 -1
- package/build/query-controls/types.js.map +1 -1
- package/build/radio-control/index.js +20 -19
- package/build/radio-control/index.js.map +1 -1
- package/build/radio-group/radio.js +3 -2
- package/build/radio-group/radio.js.map +1 -1
- package/build/range-control/index.js +32 -9
- package/build/range-control/index.js.map +1 -1
- package/build/range-control/styles/range-control-styles.js +29 -29
- package/build/range-control/styles/range-control-styles.js.map +1 -1
- package/build/search-control/index.js +5 -4
- package/build/search-control/index.js.map +1 -1
- package/build/select-control/index.js +1 -0
- package/build/select-control/index.js.map +1 -1
- package/build/tab-panel/index.js +3 -2
- package/build/tab-panel/index.js.map +1 -1
- package/build/tabs/index.js +3 -2
- package/build/tabs/index.js.map +1 -1
- package/build/tabs/tablist.js +6 -4
- package/build/tabs/tablist.js.map +1 -1
- package/build/tabs/tabpanel.js +6 -1
- package/build/tabs/tabpanel.js.map +1 -1
- package/build/text/styles.js +7 -7
- package/build/text/styles.js.map +1 -1
- package/build/text-control/index.js +1 -0
- package/build/text-control/index.js.map +1 -1
- package/build/textarea-control/index.js +1 -0
- package/build/textarea-control/index.js.map +1 -1
- package/build/textarea-control/styles/textarea-control-styles.js +8 -2
- package/build/textarea-control/styles/textarea-control-styles.js.map +1 -1
- package/build/toggle-control/index.js +9 -1
- package/build/toggle-control/index.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js +3 -2
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/component.js +1 -0
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/styles.js +7 -7
- package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build/tools-panel/styles.js +13 -13
- package/build/tools-panel/styles.js.map +1 -1
- package/build/tooltip/index.js +3 -2
- package/build/tooltip/index.js.map +1 -1
- package/build/tree-select/index.js +19 -6
- package/build/tree-select/index.js.map +1 -1
- package/build/unit-control/styles/unit-control-styles.js +7 -7
- package/build/unit-control/styles/unit-control-styles.js.map +1 -1
- package/build/utils/config-values.js +4 -3
- package/build/utils/config-values.js.map +1 -1
- package/build-module/alignment-matrix-control/cell.js +2 -2
- package/build-module/alignment-matrix-control/cell.js.map +1 -1
- package/build-module/alignment-matrix-control/index.js +4 -3
- package/build-module/alignment-matrix-control/index.js.map +1 -1
- package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +9 -18
- package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
- package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +4 -4
- package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
- package/build-module/base-control/index.js +54 -42
- package/build-module/base-control/index.js.map +1 -1
- package/build-module/base-control/types.js.map +1 -1
- package/build-module/border-control/styles.js +13 -13
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/checkbox-control/index.js +1 -0
- package/build-module/checkbox-control/index.js.map +1 -1
- package/build-module/circular-option-picker/circular-option-picker-option.js +4 -4
- package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -1
- package/build-module/circular-option-picker/circular-option-picker.js +1 -1
- package/build-module/circular-option-picker/circular-option-picker.js.map +1 -1
- package/build-module/circular-option-picker/types.js.map +1 -1
- package/build-module/color-palette/utils.js +17 -5
- package/build-module/color-palette/utils.js.map +1 -1
- package/build-module/color-picker/input-with-slider.js +1 -0
- package/build-module/color-picker/input-with-slider.js.map +1 -1
- package/build-module/combobox-control/index.js +1 -0
- package/build-module/combobox-control/index.js.map +1 -1
- package/build-module/composite/context.js +12 -0
- package/build-module/composite/context.js.map +1 -0
- package/build-module/composite/index.js +284 -6
- package/build-module/composite/index.js.map +1 -1
- package/build-module/composite/legacy/index.js +10 -6
- package/build-module/composite/legacy/index.js.map +1 -1
- package/build-module/composite/types.js +2 -0
- package/build-module/composite/types.js.map +1 -0
- package/build-module/custom-select-control/types.js.map +1 -1
- package/build-module/custom-select-control-v2/custom-select.js +2 -1
- package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
- package/build-module/date-time/time/index.js +11 -3
- package/build-module/date-time/time/index.js.map +1 -1
- package/build-module/date-time/types.js.map +1 -1
- package/build-module/dimension-control/index.js +25 -8
- package/build-module/dimension-control/index.js.map +1 -1
- package/build-module/dimension-control/types.js.map +1 -1
- package/build-module/dropdown-menu-v2/index.js +2 -1
- package/build-module/dropdown-menu-v2/index.js.map +1 -1
- package/build-module/dropdown-menu-v2/styles.js +23 -21
- package/build-module/dropdown-menu-v2/styles.js.map +1 -1
- package/build-module/focal-point-picker/controls.js +1 -3
- package/build-module/focal-point-picker/controls.js.map +1 -1
- package/build-module/focal-point-picker/index.js +1 -2
- package/build-module/focal-point-picker/index.js.map +1 -1
- package/build-module/focal-point-picker/styles/focal-point-picker-style.js +11 -11
- package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
- package/build-module/focal-point-picker/types.js.map +1 -1
- package/build-module/form-file-upload/types.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/item-group/styles.js +11 -11
- package/build-module/item-group/styles.js.map +1 -1
- package/build-module/mobile/utils/alignments.native.js +1 -1
- package/build-module/mobile/utils/alignments.native.js.map +1 -1
- package/build-module/navigator/navigator-back-button/component.js +1 -1
- package/build-module/navigator/navigator-back-button/component.js.map +1 -1
- package/build-module/navigator/navigator-back-button/hook.js +3 -9
- package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
- package/build-module/navigator/navigator-provider/component.js +17 -9
- package/build-module/navigator/navigator-provider/component.js.map +1 -1
- package/build-module/navigator/navigator-to-parent-button/component.js +12 -41
- package/build-module/navigator/navigator-to-parent-button/component.js.map +1 -1
- package/build-module/navigator/types.js.map +1 -1
- package/build-module/palette-edit/styles.js +11 -11
- package/build-module/palette-edit/styles.js.map +1 -1
- package/build-module/popover/index.js +6 -1
- package/build-module/popover/index.js.map +1 -1
- package/build-module/private-apis.js +6 -6
- package/build-module/private-apis.js.map +1 -1
- package/build-module/progress-bar/styles.js +5 -5
- package/build-module/progress-bar/styles.js.map +1 -1
- package/build-module/query-controls/index.js +5 -6
- package/build-module/query-controls/index.js.map +1 -1
- package/build-module/query-controls/types.js.map +1 -1
- package/build-module/radio-control/index.js +20 -19
- package/build-module/radio-control/index.js.map +1 -1
- package/build-module/radio-group/radio.js +2 -1
- package/build-module/radio-group/radio.js.map +1 -1
- package/build-module/range-control/index.js +32 -9
- package/build-module/range-control/index.js.map +1 -1
- package/build-module/range-control/styles/range-control-styles.js +29 -29
- package/build-module/range-control/styles/range-control-styles.js.map +1 -1
- package/build-module/search-control/index.js +5 -4
- package/build-module/search-control/index.js.map +1 -1
- package/build-module/select-control/index.js +1 -0
- package/build-module/select-control/index.js.map +1 -1
- package/build-module/tab-panel/index.js +2 -1
- package/build-module/tab-panel/index.js.map +1 -1
- package/build-module/tabs/index.js +2 -1
- package/build-module/tabs/index.js.map +1 -1
- package/build-module/tabs/tablist.js +5 -3
- package/build-module/tabs/tablist.js.map +1 -1
- package/build-module/tabs/tabpanel.js +6 -2
- package/build-module/tabs/tabpanel.js.map +1 -1
- package/build-module/text/styles.js +7 -7
- package/build-module/text/styles.js.map +1 -1
- package/build-module/text-control/index.js +1 -0
- package/build-module/text-control/index.js.map +1 -1
- package/build-module/textarea-control/index.js +1 -0
- package/build-module/textarea-control/index.js.map +1 -1
- package/build-module/textarea-control/styles/textarea-control-styles.js +9 -2
- package/build-module/textarea-control/styles/textarea-control-styles.js.map +1 -1
- package/build-module/toggle-control/index.js +9 -1
- package/build-module/toggle-control/index.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +2 -1
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js +1 -0
- 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 +7 -7
- package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build-module/tools-panel/styles.js +13 -13
- package/build-module/tools-panel/styles.js.map +1 -1
- package/build-module/tooltip/index.js +2 -1
- package/build-module/tooltip/index.js.map +1 -1
- package/build-module/tree-select/index.js +19 -6
- package/build-module/tree-select/index.js.map +1 -1
- package/build-module/unit-control/styles/unit-control-styles.js +7 -7
- package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
- package/build-module/utils/config-values.js +4 -3
- package/build-module/utils/config-values.js.map +1 -1
- package/build-style/style-rtl.css +19 -9
- package/build-style/style.css +19 -9
- package/build-types/alignment-matrix-control/index.d.ts.map +1 -1
- package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -1
- package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -1
- package/build-types/base-control/hooks.d.ts +1 -0
- package/build-types/base-control/hooks.d.ts.map +1 -1
- package/build-types/base-control/index.d.ts +44 -0
- package/build-types/base-control/index.d.ts.map +1 -1
- package/build-types/base-control/types.d.ts +7 -0
- package/build-types/base-control/types.d.ts.map +1 -1
- package/build-types/checkbox-control/index.d.ts.map +1 -1
- package/build-types/checkbox-control/stories/index.story.d.ts.map +1 -1
- package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -1
- package/build-types/circular-option-picker/types.d.ts +2 -3
- package/build-types/circular-option-picker/types.d.ts.map +1 -1
- package/build-types/color-palette/utils.d.ts.map +1 -1
- package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
- package/build-types/color-picker/styles.d.ts.map +1 -1
- package/build-types/combobox-control/index.d.ts.map +1 -1
- package/build-types/combobox-control/stories/index.story.d.ts.map +1 -1
- package/build-types/composite/context.d.ts +7 -0
- package/build-types/composite/context.d.ts.map +1 -0
- package/build-types/composite/index.d.ts +181 -1
- package/build-types/composite/index.d.ts.map +1 -1
- package/build-types/composite/legacy/index.d.ts +7 -2
- package/build-types/composite/legacy/index.d.ts.map +1 -1
- package/build-types/composite/legacy/stories/utils.d.ts +19 -0
- package/build-types/composite/legacy/stories/utils.d.ts.map +1 -1
- package/build-types/composite/stories/index.story.d.ts +13 -0
- package/build-types/composite/stories/index.story.d.ts.map +1 -0
- package/build-types/composite/stories/utils.d.ts +29 -0
- package/build-types/composite/stories/utils.d.ts.map +1 -0
- package/build-types/composite/types.d.ts +288 -0
- package/build-types/composite/types.d.ts.map +1 -0
- package/build-types/custom-select-control/types.d.ts +3 -3
- package/build-types/custom-select-control/types.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
- package/build-types/date-time/date-time/index.d.ts +1 -1
- package/build-types/date-time/time/index.d.ts +1 -1
- package/build-types/date-time/time/index.d.ts.map +1 -1
- package/build-types/date-time/types.d.ts +7 -1
- package/build-types/date-time/types.d.ts.map +1 -1
- package/build-types/dimension-control/index.d.ts +1 -0
- package/build-types/dimension-control/index.d.ts.map +1 -1
- package/build-types/dimension-control/stories/index.story.d.ts +8 -1
- package/build-types/dimension-control/stories/index.story.d.ts.map +1 -1
- package/build-types/dimension-control/types.d.ts +2 -7
- package/build-types/dimension-control/types.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
- package/build-types/focal-point-picker/controls.d.ts +1 -1
- package/build-types/focal-point-picker/controls.d.ts.map +1 -1
- package/build-types/focal-point-picker/index.d.ts +1 -1
- package/build-types/focal-point-picker/index.d.ts.map +1 -1
- package/build-types/focal-point-picker/stories/index.story.d.ts.map +1 -1
- package/build-types/focal-point-picker/types.d.ts +2 -2
- package/build-types/focal-point-picker/types.d.ts.map +1 -1
- package/build-types/form-file-upload/types.d.ts +6 -0
- package/build-types/form-file-upload/types.d.ts.map +1 -1
- package/build-types/index.d.ts +1 -1
- package/build-types/index.d.ts.map +1 -1
- package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
- package/build-types/navigator/navigator-back-button/hook.d.ts +2 -2
- package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
- package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-to-parent-button/component.d.ts +6 -0
- package/build-types/navigator/navigator-to-parent-button/component.d.ts.map +1 -1
- package/build-types/navigator/types.d.ts +45 -9
- package/build-types/navigator/types.d.ts.map +1 -1
- package/build-types/popover/index.d.ts +1 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/query-controls/index.d.ts +1 -1
- package/build-types/query-controls/index.d.ts.map +1 -1
- package/build-types/query-controls/types.d.ts +2 -1
- package/build-types/query-controls/types.d.ts.map +1 -1
- package/build-types/radio-control/index.d.ts.map +1 -1
- package/build-types/radio-group/radio.d.ts.map +1 -1
- package/build-types/range-control/index.d.ts.map +1 -1
- package/build-types/range-control/stories/index.story.d.ts.map +1 -1
- package/build-types/search-control/index.d.ts.map +1 -1
- package/build-types/search-control/stories/index.story.d.ts.map +1 -1
- package/build-types/select-control/index.d.ts.map +1 -1
- package/build-types/select-control/stories/index.story.d.ts +4 -2
- package/build-types/select-control/stories/index.story.d.ts.map +1 -1
- package/build-types/tab-panel/index.d.ts.map +1 -1
- package/build-types/tabs/index.d.ts.map +1 -1
- package/build-types/tabs/tablist.d.ts.map +1 -1
- package/build-types/tabs/tabpanel.d.ts +0 -3
- package/build-types/tabs/tabpanel.d.ts.map +1 -1
- package/build-types/text-control/index.d.ts.map +1 -1
- package/build-types/text-control/stories/index.story.d.ts.map +1 -1
- package/build-types/textarea-control/index.d.ts.map +1 -1
- package/build-types/textarea-control/styles/textarea-control-styles.d.ts.map +1 -1
- package/build-types/toggle-control/index.d.ts.map +1 -1
- package/build-types/toggle-control/stories/index.story.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/build-types/tree-select/index.d.ts.map +1 -1
- package/build-types/utils/config-values.d.ts +4 -3
- package/package.json +20 -20
- package/src/alignment-matrix-control/cell.tsx +3 -3
- package/src/alignment-matrix-control/index.tsx +5 -4
- package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.ts +2 -2
- package/src/angle-picker-control/styles/angle-picker-control-styles.tsx +2 -2
- package/src/base-control/README.md +5 -2
- package/src/base-control/index.tsx +61 -41
- package/src/base-control/types.ts +7 -0
- package/src/border-box-control/border-box-control/README.md +7 -0
- package/src/border-control/border-control/README.md +7 -0
- package/src/border-control/styles.ts +1 -1
- package/src/button/README.md +7 -0
- package/src/button/style.scss +2 -2
- package/src/button-group/style.scss +2 -2
- package/src/checkbox-control/index.tsx +1 -0
- package/src/checkbox-control/stories/index.story.tsx +1 -0
- package/src/checkbox-control/test/index.tsx +8 -1
- package/src/circular-option-picker/circular-option-picker-option.tsx +8 -6
- package/src/circular-option-picker/circular-option-picker.tsx +1 -1
- package/src/circular-option-picker/style.scss +3 -3
- package/src/circular-option-picker/types.ts +2 -3
- package/src/color-indicator/style.scss +1 -1
- package/src/color-palette/style.scss +2 -2
- package/src/color-palette/utils.ts +23 -10
- package/src/color-picker/input-with-slider.tsx +1 -0
- package/src/combobox-control/README.md +8 -0
- package/src/combobox-control/index.tsx +1 -0
- package/src/combobox-control/stories/index.story.tsx +3 -4
- package/src/combobox-control/test/index.tsx +5 -1
- package/src/composite/README.md +325 -0
- package/src/composite/context.ts +14 -0
- package/src/composite/index.tsx +341 -0
- package/src/composite/legacy/index.tsx +15 -14
- package/src/composite/legacy/stories/utils.tsx +19 -0
- package/src/composite/stories/index.story.tsx +466 -0
- package/src/composite/{current/stories → stories}/utils.tsx +22 -7
- package/src/composite/types.ts +298 -0
- package/src/custom-gradient-picker/style.scss +2 -2
- package/src/custom-select-control/README.md +7 -0
- package/src/custom-select-control/test/index.tsx +125 -0
- package/src/custom-select-control/types.ts +3 -3
- package/src/custom-select-control-v2/custom-select.tsx +2 -1
- package/src/date-time/time/index.tsx +26 -12
- package/src/date-time/types.ts +11 -1
- package/src/dimension-control/README.md +17 -0
- package/src/dimension-control/index.tsx +26 -9
- package/src/dimension-control/stories/index.story.tsx +1 -0
- package/src/dimension-control/test/__snapshots__/index.test.js.snap +0 -16
- package/src/dimension-control/test/index.test.js +5 -1
- package/src/dimension-control/types.ts +5 -7
- package/src/drop-zone/style.scss +1 -1
- package/src/dropdown-menu-v2/index.tsx +5 -3
- package/src/dropdown-menu-v2/styles.ts +17 -15
- package/src/focal-point-picker/README.md +9 -1
- package/src/focal-point-picker/controls.tsx +1 -3
- package/src/focal-point-picker/index.tsx +1 -2
- package/src/focal-point-picker/stories/index.story.tsx +3 -0
- package/src/focal-point-picker/styles/focal-point-picker-style.ts +1 -1
- package/src/focal-point-picker/test/index.tsx +5 -1
- package/src/focal-point-picker/types.ts +2 -2
- package/src/font-size-picker/README.md +7 -0
- package/src/form-file-upload/README.md +8 -0
- package/src/form-file-upload/types.ts +6 -0
- package/src/form-token-field/README.md +1 -0
- package/src/guide/style.scss +0 -1
- package/src/index.ts +1 -1
- package/src/input-control/README.md +8 -0
- package/src/item-group/styles.ts +1 -1
- package/src/mobile/utils/alignments.native.js +1 -0
- package/src/modal/style.scss +3 -3
- package/src/navigator/navigator-back-button/component.tsx +1 -1
- package/src/navigator/navigator-back-button/hook.ts +6 -10
- package/src/navigator/navigator-provider/README.md +38 -36
- package/src/navigator/navigator-provider/component.tsx +13 -7
- package/src/navigator/navigator-screen/README.md +13 -1
- package/src/navigator/navigator-to-parent-button/README.md +2 -0
- package/src/navigator/navigator-to-parent-button/component.tsx +14 -43
- package/src/navigator/test/index.tsx +136 -6
- package/src/navigator/types.ts +45 -10
- package/src/number-control/README.md +8 -0
- package/src/palette-edit/styles.ts +5 -5
- package/src/placeholder/style.scss +4 -1
- package/src/popover/index.tsx +9 -3
- package/src/popover/style.scss +2 -2
- package/src/popover/test/index.tsx +34 -0
- package/src/private-apis.ts +6 -12
- package/src/progress-bar/styles.ts +2 -2
- package/src/query-controls/README.md +7 -0
- package/src/query-controls/index.tsx +5 -6
- package/src/query-controls/types.ts +2 -1
- package/src/radio-control/index.tsx +28 -20
- package/src/radio-control/style.scss +13 -2
- package/src/radio-control/test/index.tsx +43 -40
- package/src/radio-group/radio.tsx +2 -1
- package/src/range-control/README.md +7 -0
- package/src/range-control/index.tsx +39 -9
- package/src/range-control/stories/index.story.tsx +7 -0
- package/src/range-control/styles/range-control-styles.ts +2 -2
- package/src/range-control/test/index.tsx +54 -14
- package/src/search-control/index.tsx +7 -4
- package/src/search-control/stories/index.story.tsx +1 -0
- package/src/search-control/test/index.tsx +1 -0
- package/src/select-control/README.md +8 -0
- package/src/select-control/index.tsx +1 -0
- package/src/select-control/stories/index.story.tsx +8 -5
- package/src/select-control/test/select-control.tsx +12 -6
- package/src/snackbar/style.scss +2 -2
- package/src/tab-panel/index.tsx +4 -1
- package/src/tab-panel/style.scss +1 -1
- package/src/tabs/index.tsx +2 -1
- package/src/tabs/tablist.tsx +6 -4
- package/src/tabs/tabpanel.tsx +6 -2
- package/src/text/styles.ts +1 -1
- package/src/text-control/README.md +8 -0
- package/src/text-control/index.tsx +1 -0
- package/src/text-control/stories/index.story.tsx +3 -1
- package/src/text-control/test/text-control.tsx +5 -1
- package/src/textarea-control/index.tsx +1 -0
- package/src/textarea-control/stories/index.story.tsx +2 -0
- package/src/textarea-control/styles/textarea-control-styles.ts +75 -2
- package/src/toggle-control/index.tsx +9 -0
- package/src/toggle-control/stories/index.story.tsx +1 -0
- package/src/toggle-control/test/index.tsx +7 -1
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +8 -24
- package/src/toggle-group-control/test/index.tsx +5 -1
- package/src/toggle-group-control/toggle-group-control/README.md +7 -0
- package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +2 -1
- package/src/toggle-group-control/toggle-group-control/component.tsx +1 -0
- package/src/toggle-group-control/toggle-group-control/styles.ts +1 -1
- package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +2 -2
- package/src/toolbar/toolbar/style.scss +2 -2
- package/src/tools-panel/styles.ts +1 -1
- package/src/tooltip/index.tsx +2 -1
- package/src/tooltip/style.scss +1 -1
- package/src/tree-select/index.tsx +16 -5
- package/src/tree-select/stories/index.story.tsx +1 -0
- package/src/unit-control/README.md +7 -0
- package/src/unit-control/styles/unit-control-styles.ts +1 -1
- package/src/utils/config-values.js +4 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/build/composite/current/index.js +0 -43
- package/build/composite/current/index.js.map +0 -1
- package/build/composite/v2.js +0 -17
- package/build/composite/v2.js.map +0 -1
- package/build/utils/input/base.js +0 -20
- package/build/utils/input/base.js.map +0 -1
- package/build/utils/input/index.js +0 -17
- package/build/utils/input/index.js.map +0 -1
- package/build/utils/input/input-control.js +0 -21
- package/build/utils/input/input-control.js.map +0 -1
- package/build-module/composite/current/index.js +0 -12
- package/build-module/composite/current/index.js.map +0 -1
- package/build-module/composite/v2.js +0 -5
- package/build-module/composite/v2.js.map +0 -1
- package/build-module/utils/input/base.js +0 -13
- package/build-module/utils/input/base.js.map +0 -1
- package/build-module/utils/input/index.js +0 -2
- package/build-module/utils/input/index.js.map +0 -1
- package/build-module/utils/input/input-control.js +0 -14
- package/build-module/utils/input/input-control.js.map +0 -1
- package/build-types/composite/current/index.d.ts +0 -12
- package/build-types/composite/current/index.d.ts.map +0 -1
- package/build-types/composite/current/stories/index.story.d.ts +0 -13
- package/build-types/composite/current/stories/index.story.d.ts.map +0 -1
- package/build-types/composite/current/stories/utils.d.ts +0 -14
- package/build-types/composite/current/stories/utils.d.ts.map +0 -1
- package/build-types/composite/v2.d.ts +0 -2
- package/build-types/composite/v2.d.ts.map +0 -1
- package/build-types/utils/input/base.d.ts +0 -3
- package/build-types/utils/input/base.d.ts.map +0 -1
- package/build-types/utils/input/index.d.ts +0 -2
- package/build-types/utils/input/index.d.ts.map +0 -1
- package/build-types/utils/input/input-control.d.ts +0 -2
- package/build-types/utils/input/input-control.d.ts.map +0 -1
- package/src/composite/current/index.ts +0 -20
- package/src/composite/current/stories/index.story.tsx +0 -86
- package/src/composite/index.ts +0 -7
- package/src/composite/v2.ts +0 -4
- package/src/utils/input/base.js +0 -30
- package/src/utils/input/index.js +0 -1
- package/src/utils/input/input-control.js +0 -63
|
@@ -60,7 +60,6 @@ function isMultipleCategorySelection(
|
|
|
60
60
|
* ```
|
|
61
61
|
*/
|
|
62
62
|
export function QueryControls( {
|
|
63
|
-
__next40pxDefaultSize = false,
|
|
64
63
|
authorList,
|
|
65
64
|
selectedAuthorId,
|
|
66
65
|
numberOfItems,
|
|
@@ -82,7 +81,7 @@ export function QueryControls( {
|
|
|
82
81
|
onOrderChange && onOrderByChange && (
|
|
83
82
|
<SelectControl
|
|
84
83
|
__nextHasNoMarginBottom
|
|
85
|
-
__next40pxDefaultSize
|
|
84
|
+
__next40pxDefaultSize
|
|
86
85
|
key="query-controls-order-select"
|
|
87
86
|
label={ __( 'Order by' ) }
|
|
88
87
|
value={
|
|
@@ -137,7 +136,7 @@ export function QueryControls( {
|
|
|
137
136
|
props.categoriesList &&
|
|
138
137
|
props.onCategoryChange && (
|
|
139
138
|
<CategorySelect
|
|
140
|
-
__next40pxDefaultSize
|
|
139
|
+
__next40pxDefaultSize
|
|
141
140
|
key="query-controls-category-select"
|
|
142
141
|
categoriesList={ props.categoriesList }
|
|
143
142
|
label={ __( 'Category' ) }
|
|
@@ -150,7 +149,7 @@ export function QueryControls( {
|
|
|
150
149
|
props.categorySuggestions &&
|
|
151
150
|
props.onCategoryChange && (
|
|
152
151
|
<FormTokenField
|
|
153
|
-
__next40pxDefaultSize
|
|
152
|
+
__next40pxDefaultSize
|
|
154
153
|
__nextHasNoMarginBottom
|
|
155
154
|
key="query-controls-categories-select"
|
|
156
155
|
label={ __( 'Categories' ) }
|
|
@@ -174,7 +173,7 @@ export function QueryControls( {
|
|
|
174
173
|
),
|
|
175
174
|
onAuthorChange && (
|
|
176
175
|
<AuthorSelect
|
|
177
|
-
__next40pxDefaultSize
|
|
176
|
+
__next40pxDefaultSize
|
|
178
177
|
key="query-controls-author-select"
|
|
179
178
|
authorList={ authorList }
|
|
180
179
|
label={ __( 'Author' ) }
|
|
@@ -186,7 +185,7 @@ export function QueryControls( {
|
|
|
186
185
|
onNumberOfItemsChange && (
|
|
187
186
|
<RangeControl
|
|
188
187
|
__nextHasNoMarginBottom
|
|
189
|
-
__next40pxDefaultSize
|
|
188
|
+
__next40pxDefaultSize
|
|
190
189
|
key="query-controls-range-control"
|
|
191
190
|
label={ __( 'Number of items' ) }
|
|
192
191
|
value={ numberOfItems }
|
|
@@ -107,7 +107,8 @@ type BaseQueryControlsProps = {
|
|
|
107
107
|
* Start opting into the larger default height that will become the
|
|
108
108
|
* default size in a future version.
|
|
109
109
|
*
|
|
110
|
-
* @
|
|
110
|
+
* @deprecated Default behavior since WP 6.7. Prop can be safely removed.
|
|
111
|
+
* @ignore
|
|
111
112
|
*/
|
|
112
113
|
__next40pxDefaultSize?: boolean;
|
|
113
114
|
};
|
|
@@ -16,8 +16,8 @@ import BaseControl from '../base-control';
|
|
|
16
16
|
import type { WordPressComponentProps } from '../context';
|
|
17
17
|
import type { RadioControlProps } from './types';
|
|
18
18
|
import { VStack } from '../v-stack';
|
|
19
|
-
import { useBaseControlProps } from '../base-control/hooks';
|
|
20
19
|
import { StyledHelp } from '../base-control/styles/base-control-styles';
|
|
20
|
+
import { VisuallyHidden } from '../visually-hidden';
|
|
21
21
|
|
|
22
22
|
function generateOptionDescriptionId( radioGroupId: string, index: number ) {
|
|
23
23
|
return `${ radioGroupId }-${ index }-option-description`;
|
|
@@ -27,6 +27,10 @@ function generateOptionId( radioGroupId: string, index: number ) {
|
|
|
27
27
|
return `${ radioGroupId }-${ index }`;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
function generateHelpId( radioGroupId: string ) {
|
|
31
|
+
return `${ radioGroupId }__help`;
|
|
32
|
+
}
|
|
33
|
+
|
|
30
34
|
/**
|
|
31
35
|
* Render a user interface to select the user type using radio inputs.
|
|
32
36
|
*
|
|
@@ -75,24 +79,24 @@ export function RadioControl(
|
|
|
75
79
|
const onChangeValue = ( event: ChangeEvent< HTMLInputElement > ) =>
|
|
76
80
|
onChange( event.target.value );
|
|
77
81
|
|
|
78
|
-
// Use `useBaseControlProps` to get the id of the help text.
|
|
79
|
-
const {
|
|
80
|
-
controlProps: { 'aria-describedby': helpTextId },
|
|
81
|
-
} = useBaseControlProps( { id, help } );
|
|
82
|
-
|
|
83
82
|
if ( ! options?.length ) {
|
|
84
83
|
return null;
|
|
85
84
|
}
|
|
86
85
|
|
|
87
86
|
return (
|
|
88
|
-
<
|
|
89
|
-
__nextHasNoMarginBottom
|
|
90
|
-
label={ label }
|
|
87
|
+
<fieldset
|
|
91
88
|
id={ id }
|
|
92
|
-
hideLabelFromVision={ hideLabelFromVision }
|
|
93
|
-
help={ help }
|
|
94
89
|
className={ clsx( className, 'components-radio-control' ) }
|
|
90
|
+
aria-describedby={ !! help ? generateHelpId( id ) : undefined }
|
|
95
91
|
>
|
|
92
|
+
{ hideLabelFromVision ? (
|
|
93
|
+
<VisuallyHidden as="legend">{ label }</VisuallyHidden>
|
|
94
|
+
) : (
|
|
95
|
+
<BaseControl.VisualLabel as="legend">
|
|
96
|
+
{ label }
|
|
97
|
+
</BaseControl.VisualLabel>
|
|
98
|
+
) }
|
|
99
|
+
|
|
96
100
|
<VStack
|
|
97
101
|
spacing={ 3 }
|
|
98
102
|
className={ clsx( 'components-radio-control__group-wrapper', {
|
|
@@ -113,14 +117,9 @@ export function RadioControl(
|
|
|
113
117
|
onChange={ onChangeValue }
|
|
114
118
|
checked={ option.value === selected }
|
|
115
119
|
aria-describedby={
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
id,
|
|
120
|
-
index
|
|
121
|
-
),
|
|
122
|
-
helpTextId,
|
|
123
|
-
] ) || undefined
|
|
120
|
+
!! option.description
|
|
121
|
+
? generateOptionDescriptionId( id, index )
|
|
122
|
+
: undefined
|
|
124
123
|
}
|
|
125
124
|
{ ...additionalProps }
|
|
126
125
|
/>
|
|
@@ -142,7 +141,16 @@ export function RadioControl(
|
|
|
142
141
|
</div>
|
|
143
142
|
) ) }
|
|
144
143
|
</VStack>
|
|
145
|
-
|
|
144
|
+
{ !! help && (
|
|
145
|
+
<StyledHelp
|
|
146
|
+
__nextHasNoMarginBottom
|
|
147
|
+
id={ generateHelpId( id ) }
|
|
148
|
+
className="components-base-control__help"
|
|
149
|
+
>
|
|
150
|
+
{ help }
|
|
151
|
+
</StyledHelp>
|
|
152
|
+
) }
|
|
153
|
+
</fieldset>
|
|
146
154
|
);
|
|
147
155
|
}
|
|
148
156
|
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
.components-radio-control {
|
|
2
|
+
border: 0;
|
|
3
|
+
margin: 0;
|
|
4
|
+
padding: 0;
|
|
5
|
+
|
|
6
|
+
font-family: $default-font;
|
|
7
|
+
font-size: $default-font-size;
|
|
8
|
+
}
|
|
9
|
+
|
|
1
10
|
.components-radio-control__group-wrapper.has-help {
|
|
2
11
|
margin-block-end: $grid-unit-15;
|
|
3
12
|
}
|
|
@@ -32,7 +41,7 @@
|
|
|
32
41
|
|
|
33
42
|
&::before {
|
|
34
43
|
content: "";
|
|
35
|
-
border-radius:
|
|
44
|
+
border-radius: $radius-round;
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
47
|
}
|
|
@@ -57,5 +66,7 @@
|
|
|
57
66
|
|
|
58
67
|
// Override the top margin of the StyledHelp component from BaseControl.
|
|
59
68
|
// TODO: we should tweak the StyledHelp component to not have a top margin.
|
|
60
|
-
|
|
69
|
+
&.components-radio-control__option-description {
|
|
70
|
+
margin-top: 0;
|
|
71
|
+
}
|
|
61
72
|
}
|
|
@@ -56,6 +56,47 @@ describe.each( [
|
|
|
56
56
|
const [ , Component ] = modeAndComponent;
|
|
57
57
|
|
|
58
58
|
describe( 'semantics and labelling', () => {
|
|
59
|
+
it( 'should group all radios under a fieldset with an accessible label (legend)', () => {
|
|
60
|
+
const onChangeSpy = jest.fn();
|
|
61
|
+
render(
|
|
62
|
+
<Component { ...defaultProps } onChange={ onChangeSpy } />
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
expect(
|
|
66
|
+
screen.getByRole( 'group', { name: defaultProps.label } )
|
|
67
|
+
).toBeVisible();
|
|
68
|
+
} );
|
|
69
|
+
|
|
70
|
+
it( 'should group all radios under a fieldset with an accessible label even when the label is visually hidden', () => {
|
|
71
|
+
const onChangeSpy = jest.fn();
|
|
72
|
+
render(
|
|
73
|
+
<Component
|
|
74
|
+
{ ...defaultProps }
|
|
75
|
+
hideLabelFromVision
|
|
76
|
+
onChange={ onChangeSpy }
|
|
77
|
+
/>
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
expect(
|
|
81
|
+
screen.getByRole( 'group', { name: defaultProps.label } )
|
|
82
|
+
).toBeVisible();
|
|
83
|
+
} );
|
|
84
|
+
|
|
85
|
+
it( 'should describe the radio group with the help text', () => {
|
|
86
|
+
const onChangeSpy = jest.fn();
|
|
87
|
+
render(
|
|
88
|
+
<Component
|
|
89
|
+
{ ...defaultProps }
|
|
90
|
+
help="Test help text"
|
|
91
|
+
onChange={ onChangeSpy }
|
|
92
|
+
/>
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
expect(
|
|
96
|
+
screen.getByRole( 'group', { name: defaultProps.label } )
|
|
97
|
+
).toHaveAccessibleDescription( 'Test help text' );
|
|
98
|
+
} );
|
|
99
|
+
|
|
59
100
|
it( 'should render radio inputs with accessible labels', () => {
|
|
60
101
|
const onChangeSpy = jest.fn();
|
|
61
102
|
render(
|
|
@@ -101,46 +142,7 @@ describe.each( [
|
|
|
101
142
|
).toHaveAccessibleName( defaultProps.options[ 1 ].label );
|
|
102
143
|
} );
|
|
103
144
|
|
|
104
|
-
it( 'should use the group help text to describe individual options', () => {
|
|
105
|
-
const onChangeSpy = jest.fn();
|
|
106
|
-
render(
|
|
107
|
-
<Component
|
|
108
|
-
{ ...defaultProps }
|
|
109
|
-
onChange={ onChangeSpy }
|
|
110
|
-
selected={ defaultProps.options[ 1 ].value }
|
|
111
|
-
help="Select your favorite animal."
|
|
112
|
-
/>
|
|
113
|
-
);
|
|
114
|
-
|
|
115
|
-
for ( const option of defaultProps.options ) {
|
|
116
|
-
expect(
|
|
117
|
-
screen.getByRole( 'radio', { name: option.label } )
|
|
118
|
-
).toHaveAccessibleDescription( 'Select your favorite animal.' );
|
|
119
|
-
}
|
|
120
|
-
} );
|
|
121
|
-
|
|
122
145
|
it( 'should use the option description text to describe individual options', () => {
|
|
123
|
-
const onChangeSpy = jest.fn();
|
|
124
|
-
render(
|
|
125
|
-
<Component
|
|
126
|
-
{ ...defaultPropsWithDescriptions }
|
|
127
|
-
onChange={ onChangeSpy }
|
|
128
|
-
selected={ defaultProps.options[ 1 ].value }
|
|
129
|
-
/>
|
|
130
|
-
);
|
|
131
|
-
|
|
132
|
-
let index = 1;
|
|
133
|
-
for ( const option of defaultProps.options ) {
|
|
134
|
-
expect(
|
|
135
|
-
screen.getByRole( 'radio', { name: option.label } )
|
|
136
|
-
).toHaveAccessibleDescription(
|
|
137
|
-
`This is the option number ${ index }.`
|
|
138
|
-
);
|
|
139
|
-
index += 1;
|
|
140
|
-
}
|
|
141
|
-
} );
|
|
142
|
-
|
|
143
|
-
it( 'should use both the option description text and the group help text to describe individual options', () => {
|
|
144
146
|
const onChangeSpy = jest.fn();
|
|
145
147
|
render(
|
|
146
148
|
<Component
|
|
@@ -151,12 +153,13 @@ describe.each( [
|
|
|
151
153
|
/>
|
|
152
154
|
);
|
|
153
155
|
|
|
156
|
+
// Group help text should not be used to describe individual options.
|
|
154
157
|
let index = 1;
|
|
155
158
|
for ( const option of defaultProps.options ) {
|
|
156
159
|
expect(
|
|
157
160
|
screen.getByRole( 'radio', { name: option.label } )
|
|
158
161
|
).toHaveAccessibleDescription(
|
|
159
|
-
`This is the option number ${ index }
|
|
162
|
+
`This is the option number ${ index }.`
|
|
160
163
|
);
|
|
161
164
|
index += 1;
|
|
162
165
|
}
|
|
@@ -7,6 +7,7 @@ import { forwardRef, useContext } from '@wordpress/element';
|
|
|
7
7
|
* External dependencies
|
|
8
8
|
*/
|
|
9
9
|
import * as Ariakit from '@ariakit/react';
|
|
10
|
+
import { useStoreState } from '@ariakit/react';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Internal dependencies
|
|
@@ -26,7 +27,7 @@ function UnforwardedRadio(
|
|
|
26
27
|
) {
|
|
27
28
|
const { store, disabled } = useContext( RadioGroupContext );
|
|
28
29
|
|
|
29
|
-
const selectedValue =
|
|
30
|
+
const selectedValue = useStoreState( store, 'value' );
|
|
30
31
|
const isChecked = selectedValue !== undefined && selectedValue === value;
|
|
31
32
|
|
|
32
33
|
return (
|
|
@@ -362,6 +362,13 @@ Determines if the `input` number field will render next to the RangeControl. Thi
|
|
|
362
362
|
- Required: No
|
|
363
363
|
- Platform: Web
|
|
364
364
|
|
|
365
|
+
### `__next40pxDefaultSize`: `boolean`
|
|
366
|
+
|
|
367
|
+
Start opting into the larger default height that will become the default size in a future version.
|
|
368
|
+
|
|
369
|
+
- Required: No
|
|
370
|
+
- Default: `false`
|
|
371
|
+
|
|
365
372
|
### `__nextHasNoMarginBottom`: `boolean`
|
|
366
373
|
|
|
367
374
|
Start opting into the new margin-free styles that will become the default in a future version.
|
|
@@ -41,6 +41,25 @@ import { space } from '../utils/space';
|
|
|
41
41
|
|
|
42
42
|
const noop = () => {};
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Computes the value that `RangeControl` should reset to when pressing
|
|
46
|
+
* the reset button.
|
|
47
|
+
*/
|
|
48
|
+
function computeResetValue( {
|
|
49
|
+
resetFallbackValue,
|
|
50
|
+
initialPosition,
|
|
51
|
+
}: Pick< RangeControlProps, 'resetFallbackValue' | 'initialPosition' > ) {
|
|
52
|
+
if ( resetFallbackValue !== undefined ) {
|
|
53
|
+
return ! Number.isNaN( resetFallbackValue ) ? resetFallbackValue : null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if ( initialPosition !== undefined ) {
|
|
57
|
+
return ! Number.isNaN( initialPosition ) ? initialPosition : null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
44
63
|
function UnforwardedRangeControl(
|
|
45
64
|
props: WordPressComponentProps< RangeControlProps, 'input', false >,
|
|
46
65
|
forwardedRef: ForwardedRef< HTMLInputElement >
|
|
@@ -166,13 +185,12 @@ function UnforwardedRangeControl(
|
|
|
166
185
|
};
|
|
167
186
|
|
|
168
187
|
const handleOnReset = () => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
188
|
+
// Reset to `resetFallbackValue` if defined, otherwise set internal value
|
|
189
|
+
// to `null` — which, if propagated to the `value` prop, will cause
|
|
190
|
+
// the value to be reset to the `initialPosition` prop if defined.
|
|
191
|
+
const resetValue = Number.isNaN( resetFallbackValue )
|
|
192
|
+
? null
|
|
193
|
+
: resetFallbackValue ?? null;
|
|
176
194
|
|
|
177
195
|
setValue( resetValue );
|
|
178
196
|
|
|
@@ -189,7 +207,7 @@ function UnforwardedRangeControl(
|
|
|
189
207
|
* preserve the undefined callback argument, except when a
|
|
190
208
|
* resetFallbackValue is defined.
|
|
191
209
|
*/
|
|
192
|
-
onChange(
|
|
210
|
+
onChange( resetValue ?? undefined );
|
|
193
211
|
};
|
|
194
212
|
|
|
195
213
|
const handleShowTooltip = () => setShowTooltip( true );
|
|
@@ -210,9 +228,11 @@ function UnforwardedRangeControl(
|
|
|
210
228
|
const offsetStyle = {
|
|
211
229
|
[ isRTL() ? 'right' : 'left' ]: fillValueOffset,
|
|
212
230
|
};
|
|
231
|
+
|
|
213
232
|
return (
|
|
214
233
|
<BaseControl
|
|
215
234
|
__nextHasNoMarginBottom={ __nextHasNoMarginBottom }
|
|
235
|
+
__associatedWPComponentName="RangeControl"
|
|
216
236
|
className={ classes }
|
|
217
237
|
label={ label }
|
|
218
238
|
hideLabelFromVision={ hideLabelFromVision }
|
|
@@ -328,7 +348,17 @@ function UnforwardedRangeControl(
|
|
|
328
348
|
className="components-range-control__reset"
|
|
329
349
|
// If the RangeControl itself is disabled, the reset button shouldn't be in the tab sequence.
|
|
330
350
|
accessibleWhenDisabled={ ! disabled }
|
|
331
|
-
|
|
351
|
+
// The reset button should be disabled if RangeControl itself is disabled,
|
|
352
|
+
// or if the current `value` is equal to the value that would be currently
|
|
353
|
+
// assigned when clicking the button.
|
|
354
|
+
disabled={
|
|
355
|
+
disabled ||
|
|
356
|
+
value ===
|
|
357
|
+
computeResetValue( {
|
|
358
|
+
resetFallbackValue,
|
|
359
|
+
initialPosition,
|
|
360
|
+
} )
|
|
361
|
+
}
|
|
332
362
|
variant="secondary"
|
|
333
363
|
size="small"
|
|
334
364
|
onClick={ handleOnReset }
|
|
@@ -70,6 +70,7 @@ const Template: StoryFn< typeof RangeControl > = ( { onChange, ...args } ) => {
|
|
|
70
70
|
|
|
71
71
|
export const Default: StoryFn< typeof RangeControl > = Template.bind( {} );
|
|
72
72
|
Default.args = {
|
|
73
|
+
__nextHasNoMarginBottom: true,
|
|
73
74
|
help: 'Please select how transparent you would like this.',
|
|
74
75
|
initialPosition: 50,
|
|
75
76
|
label: 'Opacity',
|
|
@@ -104,6 +105,7 @@ export const WithAnyStep: StoryFn< typeof RangeControl > = ( {
|
|
|
104
105
|
);
|
|
105
106
|
};
|
|
106
107
|
WithAnyStep.args = {
|
|
108
|
+
__nextHasNoMarginBottom: true,
|
|
107
109
|
label: 'Brightness',
|
|
108
110
|
step: 'any',
|
|
109
111
|
};
|
|
@@ -167,6 +169,7 @@ export const WithIntegerStepAndMarks: StoryFn< typeof RangeControl > =
|
|
|
167
169
|
MarkTemplate.bind( {} );
|
|
168
170
|
|
|
169
171
|
WithIntegerStepAndMarks.args = {
|
|
172
|
+
__nextHasNoMarginBottom: true,
|
|
170
173
|
label: 'Integer Step',
|
|
171
174
|
marks: marksBase,
|
|
172
175
|
max: 10,
|
|
@@ -183,6 +186,7 @@ export const WithDecimalStepAndMarks: StoryFn< typeof RangeControl > =
|
|
|
183
186
|
MarkTemplate.bind( {} );
|
|
184
187
|
|
|
185
188
|
WithDecimalStepAndMarks.args = {
|
|
189
|
+
__nextHasNoMarginBottom: true,
|
|
186
190
|
marks: [
|
|
187
191
|
...marksBase,
|
|
188
192
|
{ value: 3.5, label: '3.5' },
|
|
@@ -202,6 +206,7 @@ export const WithNegativeMinimumAndMarks: StoryFn< typeof RangeControl > =
|
|
|
202
206
|
MarkTemplate.bind( {} );
|
|
203
207
|
|
|
204
208
|
WithNegativeMinimumAndMarks.args = {
|
|
209
|
+
__nextHasNoMarginBottom: true,
|
|
205
210
|
marks: marksWithNegatives,
|
|
206
211
|
max: 10,
|
|
207
212
|
min: -10,
|
|
@@ -217,6 +222,7 @@ export const WithNegativeRangeAndMarks: StoryFn< typeof RangeControl > =
|
|
|
217
222
|
MarkTemplate.bind( {} );
|
|
218
223
|
|
|
219
224
|
WithNegativeRangeAndMarks.args = {
|
|
225
|
+
__nextHasNoMarginBottom: true,
|
|
220
226
|
marks: marksWithNegatives,
|
|
221
227
|
max: -1,
|
|
222
228
|
min: -10,
|
|
@@ -232,6 +238,7 @@ export const WithAnyStepAndMarks: StoryFn< typeof RangeControl > =
|
|
|
232
238
|
MarkTemplate.bind( {} );
|
|
233
239
|
|
|
234
240
|
WithAnyStepAndMarks.args = {
|
|
241
|
+
__nextHasNoMarginBottom: true,
|
|
235
242
|
marks: marksBase,
|
|
236
243
|
max: 10,
|
|
237
244
|
min: 0,
|
|
@@ -154,7 +154,7 @@ export const Mark = styled.span`
|
|
|
154
154
|
height: ${ thumbSize }px;
|
|
155
155
|
left: 0;
|
|
156
156
|
position: absolute;
|
|
157
|
-
top:
|
|
157
|
+
top: 9px;
|
|
158
158
|
width: 1px;
|
|
159
159
|
|
|
160
160
|
${ markFill };
|
|
@@ -170,7 +170,7 @@ export const MarkLabel = styled.span`
|
|
|
170
170
|
color: ${ COLORS.gray[ 300 ] };
|
|
171
171
|
font-size: 11px;
|
|
172
172
|
position: absolute;
|
|
173
|
-
top:
|
|
173
|
+
top: 22px;
|
|
174
174
|
white-space: nowrap;
|
|
175
175
|
|
|
176
176
|
${ rtl( { left: 0 } ) };
|
|
@@ -6,7 +6,7 @@ import { act, fireEvent, render, screen } from '@testing-library/react';
|
|
|
6
6
|
/**
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
|
-
import
|
|
9
|
+
import _RangeControl from '../';
|
|
10
10
|
|
|
11
11
|
const getRangeInput = (): HTMLInputElement => screen.getByRole( 'slider' );
|
|
12
12
|
const getNumberInput = (): HTMLInputElement => screen.getByRole( 'spinbutton' );
|
|
@@ -15,6 +15,12 @@ const getResetButton = (): HTMLButtonElement => screen.getByRole( 'button' );
|
|
|
15
15
|
const fireChangeEvent = ( input: HTMLInputElement, value?: number | string ) =>
|
|
16
16
|
fireEvent.change( input, { target: { value } } );
|
|
17
17
|
|
|
18
|
+
const RangeControl = (
|
|
19
|
+
props: React.ComponentProps< typeof _RangeControl >
|
|
20
|
+
) => {
|
|
21
|
+
return <_RangeControl { ...props } __nextHasNoMarginBottom />;
|
|
22
|
+
};
|
|
23
|
+
|
|
18
24
|
describe( 'RangeControl', () => {
|
|
19
25
|
describe( '#render()', () => {
|
|
20
26
|
it( 'should trigger change callback with numeric value', () => {
|
|
@@ -292,14 +298,37 @@ describe( 'RangeControl', () => {
|
|
|
292
298
|
} );
|
|
293
299
|
|
|
294
300
|
describe( 'reset', () => {
|
|
295
|
-
it( 'should
|
|
301
|
+
it( 'should clear the input value when clicking the reset button', () => {
|
|
302
|
+
const spy = jest.fn();
|
|
303
|
+
render( <RangeControl allowReset onChange={ spy } /> );
|
|
304
|
+
|
|
305
|
+
const resetButton = getResetButton();
|
|
306
|
+
const rangeInput = getRangeInput();
|
|
307
|
+
const numberInput = getNumberInput();
|
|
308
|
+
|
|
309
|
+
fireChangeEvent( numberInput, '14' );
|
|
310
|
+
|
|
311
|
+
expect( rangeInput.value ).toBe( '14' );
|
|
312
|
+
expect( numberInput.value ).toBe( '14' );
|
|
313
|
+
expect( spy ).toHaveBeenCalledWith( 14 );
|
|
314
|
+
|
|
315
|
+
fireEvent.click( resetButton );
|
|
316
|
+
|
|
317
|
+
// range input resets to min + (max-min)/2
|
|
318
|
+
expect( rangeInput.value ).toBe( '50' );
|
|
319
|
+
expect( numberInput.value ).toBe( '' );
|
|
320
|
+
expect( spy ).toHaveBeenCalledWith( undefined );
|
|
321
|
+
|
|
322
|
+
expect( resetButton ).toHaveAttribute( 'aria-disabled', 'true' );
|
|
323
|
+
} );
|
|
324
|
+
|
|
325
|
+
it( 'should reset to the `initialPosition` value when clicking the reset button', () => {
|
|
296
326
|
const spy = jest.fn();
|
|
297
327
|
render(
|
|
298
328
|
<RangeControl
|
|
299
|
-
initialPosition={ 10 }
|
|
300
329
|
allowReset
|
|
330
|
+
initialPosition={ 23 }
|
|
301
331
|
onChange={ spy }
|
|
302
|
-
resetFallbackValue={ 33 }
|
|
303
332
|
/>
|
|
304
333
|
);
|
|
305
334
|
|
|
@@ -307,21 +336,29 @@ describe( 'RangeControl', () => {
|
|
|
307
336
|
const rangeInput = getRangeInput();
|
|
308
337
|
const numberInput = getNumberInput();
|
|
309
338
|
|
|
339
|
+
fireChangeEvent( numberInput, '14' );
|
|
340
|
+
|
|
341
|
+
expect( rangeInput.value ).toBe( '14' );
|
|
342
|
+
expect( numberInput.value ).toBe( '14' );
|
|
343
|
+
expect( spy ).toHaveBeenCalledWith( 14 );
|
|
344
|
+
|
|
310
345
|
fireEvent.click( resetButton );
|
|
311
346
|
|
|
312
|
-
expect( rangeInput.value ).toBe( '
|
|
313
|
-
expect( numberInput.value ).toBe( '
|
|
314
|
-
expect( spy ).toHaveBeenCalledWith(
|
|
347
|
+
expect( rangeInput.value ).toBe( '23' );
|
|
348
|
+
expect( numberInput.value ).toBe( '23' );
|
|
349
|
+
expect( spy ).toHaveBeenCalledWith( undefined );
|
|
350
|
+
|
|
351
|
+
expect( resetButton ).toHaveAttribute( 'aria-disabled', 'true' );
|
|
315
352
|
} );
|
|
316
353
|
|
|
317
|
-
it( 'should reset to
|
|
354
|
+
it( 'should reset to the `resetFallbackValue` value when clicking the reset button', () => {
|
|
355
|
+
const spy = jest.fn();
|
|
318
356
|
render(
|
|
319
357
|
<RangeControl
|
|
320
|
-
initialPosition={
|
|
321
|
-
min={ 0 }
|
|
322
|
-
max={ 100 }
|
|
358
|
+
initialPosition={ 10 }
|
|
323
359
|
allowReset
|
|
324
|
-
|
|
360
|
+
onChange={ spy }
|
|
361
|
+
resetFallbackValue={ 33 }
|
|
325
362
|
/>
|
|
326
363
|
);
|
|
327
364
|
|
|
@@ -331,8 +368,11 @@ describe( 'RangeControl', () => {
|
|
|
331
368
|
|
|
332
369
|
fireEvent.click( resetButton );
|
|
333
370
|
|
|
334
|
-
expect( rangeInput.value ).toBe( '
|
|
335
|
-
expect( numberInput.value ).toBe( '' );
|
|
371
|
+
expect( rangeInput.value ).toBe( '33' );
|
|
372
|
+
expect( numberInput.value ).toBe( '33' );
|
|
373
|
+
expect( spy ).toHaveBeenCalledWith( 33 );
|
|
374
|
+
|
|
375
|
+
expect( resetButton ).toHaveAttribute( 'aria-disabled', 'true' );
|
|
336
376
|
} );
|
|
337
377
|
} );
|
|
338
378
|
} );
|
|
@@ -77,10 +77,13 @@ function UnforwardedSearchControl(
|
|
|
77
77
|
|
|
78
78
|
const contextValue = useMemo(
|
|
79
79
|
() => ( {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
BaseControl: {
|
|
81
|
+
// Overrides the underlying BaseControl `__nextHasNoMarginBottom` via the context system
|
|
82
|
+
// to provide backwards compatibile margin for SearchControl.
|
|
83
|
+
// (In a standard InputControl, the BaseControl `__nextHasNoMarginBottom` is always set to true.)
|
|
84
|
+
_overrides: { __nextHasNoMarginBottom },
|
|
85
|
+
__associatedWPComponentName: 'SearchControl',
|
|
86
|
+
},
|
|
84
87
|
// `isBorderless` is still experimental and not a public prop for InputControl yet.
|
|
85
88
|
InputBase: { isBorderless: true },
|
|
86
89
|
} ),
|
|
@@ -229,6 +229,14 @@ The style variant of the control.
|
|
|
229
229
|
- Required: No
|
|
230
230
|
- Default: `'default'`
|
|
231
231
|
|
|
232
|
+
### __next40pxDefaultSize
|
|
233
|
+
|
|
234
|
+
Start opting into the larger default height that will become the default size in a future version.
|
|
235
|
+
|
|
236
|
+
- Type: `Boolean`
|
|
237
|
+
- Required: No
|
|
238
|
+
- Default: `false`
|
|
239
|
+
|
|
232
240
|
### __nextHasNoMarginBottom
|
|
233
241
|
|
|
234
242
|
Start opting into the new margin-free styles that will become the default in a future version.
|