@wordpress/components 19.15.0 → 19.16.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 +51 -0
- package/build/angle-picker-control/index.js +2 -2
- package/build/angle-picker-control/index.js.map +1 -1
- package/build/base-control/styles/base-control-styles.js +8 -8
- package/build/base-control/styles/base-control-styles.js.map +1 -1
- package/build/border-control/border-control/component.js +38 -25
- package/build/border-control/border-control/component.js.map +1 -1
- package/build/border-control/border-control/hook.js +4 -7
- package/build/border-control/border-control/hook.js.map +1 -1
- package/build/border-control/border-control-dropdown/component.js +13 -7
- package/build/border-control/border-control-dropdown/component.js.map +1 -1
- package/build/border-control/border-control-dropdown/hook.js +0 -4
- package/build/border-control/border-control-dropdown/hook.js.map +1 -1
- package/build/border-control/styles.js +33 -56
- package/build/border-control/styles.js.map +1 -1
- package/build/box-control/axial-input-controls.js +1 -1
- package/build/box-control/axial-input-controls.js.map +1 -1
- package/build/box-control/utils.js +2 -8
- package/build/box-control/utils.js.map +1 -1
- package/build/color-palette/index.js +14 -2
- package/build/color-palette/index.js.map +1 -1
- package/build/color-picker/hex-input.js +2 -1
- package/build/color-picker/hex-input.js.map +1 -1
- package/build/color-picker/input-with-slider.js +3 -2
- package/build/color-picker/input-with-slider.js.map +1 -1
- package/build/color-picker/styles.js +8 -15
- package/build/color-picker/styles.js.map +1 -1
- package/build/combobox-control/index.js +5 -7
- package/build/combobox-control/index.js.map +1 -1
- package/build/custom-select-control/index.js +26 -8
- package/build/custom-select-control/index.js.map +1 -1
- package/build/divider/component.js +0 -1
- package/build/divider/component.js.map +1 -1
- package/build/divider/index.js.map +1 -1
- package/build/divider/styles.js +5 -5
- package/build/divider/styles.js.map +1 -1
- package/build/dropdown/dropdown-content-wrapper.js +60 -0
- package/build/dropdown/dropdown-content-wrapper.js.map +1 -0
- package/build/dropdown/styles.js +42 -0
- package/build/dropdown/styles.js.map +1 -0
- package/build/dropdown/types.js +6 -0
- package/build/dropdown/types.js.map +1 -0
- package/build/elevation/component.js +15 -15
- package/build/elevation/component.js.map +1 -1
- package/build/elevation/hook.js +5 -17
- package/build/elevation/hook.js.map +1 -1
- package/build/elevation/index.js.map +1 -1
- package/build/elevation/styles.js +1 -1
- package/build/elevation/styles.js.map +1 -1
- package/build/flex/flex/component.js +11 -17
- package/build/flex/flex/component.js.map +1 -1
- package/build/flex/flex-block/component.js +9 -3
- package/build/flex/flex-block/component.js.map +1 -1
- package/build/flex/flex-item/component.js +9 -3
- package/build/flex/flex-item/component.js.map +1 -1
- package/build/index.js +24 -0
- package/build/index.js.map +1 -1
- package/build/input-control/index.js +7 -0
- package/build/input-control/index.js.map +1 -1
- package/build/input-control/input-base.js +23 -1
- package/build/input-control/input-base.js.map +1 -1
- package/build/input-control/input-prefix-wrapper.js +54 -0
- package/build/input-control/input-prefix-wrapper.js.map +1 -0
- package/build/input-control/input-suffix-wrapper.js +54 -0
- package/build/input-control/input-suffix-wrapper.js.map +1 -0
- package/build/input-control/styles/input-control-styles.js +61 -42
- package/build/input-control/styles/input-control-styles.js.map +1 -1
- package/build/mobile/image/index.native.js +7 -4
- package/build/mobile/image/index.native.js.map +1 -1
- package/build/mobile/media-edit/index.native.js +1 -7
- package/build/mobile/media-edit/index.native.js.map +1 -1
- package/build/popover/index.js +13 -10
- package/build/popover/index.js.map +1 -1
- package/build/radio-control/index.js +1 -3
- package/build/radio-control/index.js.map +1 -1
- package/build/range-control/utils.js +1 -1
- package/build/range-control/utils.js.map +1 -1
- package/build/sandbox/index.native.js +13 -2
- package/build/sandbox/index.native.js.map +1 -1
- package/build/scroll-lock/index.js +35 -6
- package/build/scroll-lock/index.js.map +1 -1
- package/build/select-control/index.js +1 -3
- package/build/select-control/index.js.map +1 -1
- package/build/select-control/styles/select-control-styles.js +31 -11
- package/build/select-control/styles/select-control-styles.js.map +1 -1
- package/build/shortcut/index.js +4 -13
- package/build/shortcut/index.js.map +1 -1
- package/build/shortcut/types.js +6 -0
- package/build/shortcut/types.js.map +1 -0
- package/build/spacer/component.js +3 -1
- package/build/spacer/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/component.js +4 -1
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/styles.js +20 -4
- 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 +7 -9
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build/tooltip/index.js +51 -14
- package/build/tooltip/index.js.map +1 -1
- package/build/tree-select/index.js +2 -2
- package/build/tree-select/index.js.map +1 -1
- package/build/ui/context/use-context-system.js +7 -2
- package/build/ui/context/use-context-system.js.map +1 -1
- package/build/ui/utils/space.js +7 -1
- package/build/ui/utils/space.js.map +1 -1
- package/build/unit-control/styles/unit-control-styles.js +10 -26
- package/build/unit-control/styles/unit-control-styles.js.map +1 -1
- package/build-module/angle-picker-control/index.js +2 -2
- package/build-module/angle-picker-control/index.js.map +1 -1
- package/build-module/base-control/styles/base-control-styles.js +8 -8
- package/build-module/base-control/styles/base-control-styles.js.map +1 -1
- package/build-module/border-control/border-control/component.js +37 -25
- package/build-module/border-control/border-control/component.js.map +1 -1
- package/build-module/border-control/border-control/hook.js +4 -7
- package/build-module/border-control/border-control/hook.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/component.js +12 -7
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/hook.js +0 -4
- package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
- package/build-module/border-control/styles.js +33 -49
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/box-control/axial-input-controls.js +1 -1
- package/build-module/box-control/axial-input-controls.js.map +1 -1
- package/build-module/box-control/utils.js +2 -7
- package/build-module/box-control/utils.js.map +1 -1
- package/build-module/color-palette/index.js +10 -1
- package/build-module/color-palette/index.js.map +1 -1
- package/build-module/color-picker/hex-input.js +2 -1
- package/build-module/color-picker/hex-input.js.map +1 -1
- package/build-module/color-picker/input-with-slider.js +3 -2
- package/build-module/color-picker/input-with-slider.js.map +1 -1
- package/build-module/color-picker/styles.js +9 -16
- package/build-module/color-picker/styles.js.map +1 -1
- package/build-module/combobox-control/index.js +5 -6
- package/build-module/combobox-control/index.js.map +1 -1
- package/build-module/custom-select-control/index.js +26 -10
- package/build-module/custom-select-control/index.js.map +1 -1
- package/build-module/divider/component.js +0 -1
- package/build-module/divider/component.js.map +1 -1
- package/build-module/divider/index.js.map +1 -1
- package/build-module/divider/styles.js +5 -5
- package/build-module/divider/styles.js.map +1 -1
- package/build-module/dropdown/dropdown-content-wrapper.js +47 -0
- package/build-module/dropdown/dropdown-content-wrapper.js.map +1 -0
- package/build-module/dropdown/styles.js +31 -0
- package/build-module/dropdown/styles.js.map +1 -0
- package/build-module/dropdown/types.js +2 -0
- package/build-module/dropdown/types.js.map +1 -0
- package/build-module/elevation/component.js +15 -15
- package/build-module/elevation/component.js.map +1 -1
- package/build-module/elevation/hook.js +5 -17
- package/build-module/elevation/hook.js.map +1 -1
- package/build-module/elevation/index.js.map +1 -1
- package/build-module/elevation/styles.js +1 -1
- package/build-module/elevation/styles.js.map +1 -1
- package/build-module/flex/flex/component.js +11 -17
- package/build-module/flex/flex/component.js.map +1 -1
- package/build-module/flex/flex-block/component.js +9 -3
- package/build-module/flex/flex-block/component.js.map +1 -1
- package/build-module/flex/flex-item/component.js +9 -3
- package/build-module/flex/flex-item/component.js.map +1 -1
- package/build-module/index.js +3 -0
- package/build-module/index.js.map +1 -1
- package/build-module/input-control/index.js +6 -0
- package/build-module/input-control/index.js.map +1 -1
- package/build-module/input-control/input-base.js +24 -3
- package/build-module/input-control/input-base.js.map +1 -1
- package/build-module/input-control/input-prefix-wrapper.js +41 -0
- package/build-module/input-control/input-prefix-wrapper.js.map +1 -0
- package/build-module/input-control/input-suffix-wrapper.js +41 -0
- package/build-module/input-control/input-suffix-wrapper.js.map +1 -0
- package/build-module/input-control/styles/input-control-styles.js +57 -41
- package/build-module/input-control/styles/input-control-styles.js.map +1 -1
- package/build-module/mobile/image/index.native.js +9 -6
- package/build-module/mobile/image/index.native.js.map +1 -1
- package/build-module/mobile/media-edit/index.native.js +1 -6
- package/build-module/mobile/media-edit/index.native.js.map +1 -1
- package/build-module/popover/index.js +13 -10
- package/build-module/popover/index.js.map +1 -1
- package/build-module/radio-control/index.js +1 -2
- package/build-module/radio-control/index.js.map +1 -1
- package/build-module/range-control/utils.js +1 -1
- package/build-module/range-control/utils.js.map +1 -1
- package/build-module/sandbox/index.native.js +13 -3
- package/build-module/sandbox/index.native.js.map +1 -1
- package/build-module/scroll-lock/index.js +32 -6
- package/build-module/scroll-lock/index.js.map +1 -1
- package/build-module/select-control/index.js +1 -2
- package/build-module/select-control/index.js.map +1 -1
- package/build-module/select-control/styles/select-control-styles.js +31 -11
- package/build-module/select-control/styles/select-control-styles.js.map +1 -1
- package/build-module/shortcut/index.js +4 -13
- package/build-module/shortcut/index.js.map +1 -1
- package/build-module/shortcut/types.js +2 -0
- package/build-module/shortcut/types.js.map +1 -0
- package/build-module/spacer/component.js +3 -1
- package/build-module/spacer/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js +4 -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 +15 -3
- 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 +6 -7
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build-module/tooltip/index.js +53 -16
- package/build-module/tooltip/index.js.map +1 -1
- package/build-module/tree-select/index.js +3 -3
- package/build-module/tree-select/index.js.map +1 -1
- package/build-module/ui/context/use-context-system.js +7 -2
- package/build-module/ui/context/use-context-system.js.map +1 -1
- package/build-module/ui/utils/space.js +7 -1
- package/build-module/ui/utils/space.js.map +1 -1
- package/build-module/unit-control/styles/unit-control-styles.js +10 -27
- package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
- package/build-style/style-rtl.css +12 -26
- package/build-style/style.css +12 -24
- package/build-types/base-control/styles/base-control-styles.d.ts.map +1 -1
- package/build-types/border-control/border-control/component.d.ts.map +1 -1
- package/build-types/border-control/border-control/hook.d.ts +1 -1
- package/build-types/border-control/border-control/hook.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/hook.d.ts +0 -1
- package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
- package/build-types/border-control/stories/index.d.ts.map +1 -1
- package/build-types/border-control/styles.d.ts +1 -4
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/card/card-divider/hook.d.ts +1 -1
- package/build-types/color-palette/index.d.ts +1 -0
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/color-picker/hex-input.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/divider/component.d.ts +2 -3
- package/build-types/divider/component.d.ts.map +1 -1
- package/build-types/divider/index.d.ts +1 -1
- package/build-types/divider/index.d.ts.map +1 -1
- package/build-types/divider/styles.d.ts +6 -2
- package/build-types/divider/styles.d.ts.map +1 -1
- package/build-types/divider/test/index.d.ts +2 -0
- package/build-types/divider/test/index.d.ts.map +1 -0
- package/build-types/divider/types.d.ts +18 -10
- package/build-types/divider/types.d.ts.map +1 -1
- package/build-types/dropdown/dropdown-content-wrapper.d.ts +23 -0
- package/build-types/dropdown/dropdown-content-wrapper.d.ts.map +1 -0
- package/build-types/dropdown/styles.d.ts +7 -0
- package/build-types/dropdown/styles.d.ts.map +1 -0
- package/build-types/dropdown/types.d.ts +9 -0
- package/build-types/dropdown/types.d.ts.map +1 -0
- package/build-types/elevation/component.d.ts +11 -10
- package/build-types/elevation/component.d.ts.map +1 -1
- package/build-types/elevation/hook.d.ts +6 -7
- package/build-types/elevation/hook.d.ts.map +1 -1
- package/build-types/elevation/index.d.ts +2 -2
- package/build-types/elevation/index.d.ts.map +1 -1
- package/build-types/elevation/stories/index.d.ts +22 -0
- package/build-types/elevation/stories/index.d.ts.map +1 -0
- package/build-types/elevation/styles.d.ts +1 -1
- package/build-types/elevation/styles.d.ts.map +1 -1
- package/build-types/elevation/test/index.d.ts +2 -0
- package/build-types/elevation/test/index.d.ts.map +1 -0
- package/build-types/elevation/types.d.ts +12 -19
- package/build-types/elevation/types.d.ts.map +1 -1
- package/build-types/flex/flex/component.d.ts +11 -17
- package/build-types/flex/flex/component.d.ts.map +1 -1
- package/build-types/flex/flex-block/component.d.ts +9 -3
- package/build-types/flex/flex-block/component.d.ts.map +1 -1
- package/build-types/flex/flex-item/component.d.ts +9 -3
- package/build-types/flex/flex-item/component.d.ts.map +1 -1
- package/build-types/flex/types.d.ts +4 -1
- package/build-types/flex/types.d.ts.map +1 -1
- package/build-types/input-control/index.d.ts +1 -1
- package/build-types/input-control/index.d.ts.map +1 -1
- package/build-types/input-control/input-base.d.ts +1 -1
- package/build-types/input-control/input-base.d.ts.map +1 -1
- package/build-types/input-control/input-prefix-wrapper.d.ts +19 -0
- package/build-types/input-control/input-prefix-wrapper.d.ts.map +1 -0
- package/build-types/input-control/input-suffix-wrapper.d.ts +19 -0
- package/build-types/input-control/input-suffix-wrapper.d.ts.map +1 -0
- package/build-types/input-control/stories/index.d.ts +10 -0
- package/build-types/input-control/stories/index.d.ts.map +1 -1
- package/build-types/input-control/styles/input-control-styles.d.ts +21 -0
- package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
- package/build-types/input-control/types.d.ts +45 -3
- package/build-types/input-control/types.d.ts.map +1 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/radio-control/index.d.ts.map +1 -1
- package/build-types/range-control/types.d.ts +4 -2
- package/build-types/range-control/types.d.ts.map +1 -1
- package/build-types/range-control/utils.d.ts.map +1 -1
- package/build-types/scroll-lock/index.d.ts +32 -3
- package/build-types/scroll-lock/index.d.ts.map +1 -1
- package/build-types/scroll-lock/stories/index.d.ts +9 -0
- package/build-types/scroll-lock/stories/index.d.ts.map +1 -0
- package/build-types/scroll-lock/test/index.d.ts +2 -0
- package/build-types/scroll-lock/test/index.d.ts.map +1 -0
- package/build-types/select-control/index.d.ts.map +1 -1
- package/build-types/select-control/styles/select-control-styles.d.ts +1 -1
- package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
- package/build-types/select-control/types.d.ts +1 -1
- package/build-types/select-control/types.d.ts.map +1 -1
- package/build-types/shortcut/index.d.ts +5 -24
- package/build-types/shortcut/index.d.ts.map +1 -1
- package/build-types/shortcut/test/index.d.ts +2 -0
- package/build-types/shortcut/test/index.d.ts.map +1 -0
- package/build-types/shortcut/types.d.ts +14 -0
- package/build-types/shortcut/types.d.ts.map +1 -0
- package/build-types/spacer/component.d.ts +3 -1
- package/build-types/spacer/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +5 -1
- package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +0 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/types.d.ts +6 -0
- package/build-types/toggle-group-control/types.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/tree-select/types.d.ts +1 -0
- package/build-types/tree-select/types.d.ts.map +1 -1
- package/build-types/ui/context/use-context-system.d.ts.map +1 -1
- package/build-types/ui/utils/space.d.ts +7 -1
- package/build-types/ui/utils/space.d.ts.map +1 -1
- package/build-types/unit-control/index.d.ts +2 -2
- package/build-types/unit-control/index.d.ts.map +1 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts +0 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
- package/build-types/unit-control/types.d.ts +1 -1
- package/build-types/unit-control/types.d.ts.map +1 -1
- package/package.json +17 -17
- package/src/angle-picker-control/index.js +1 -2
- package/src/base-control/styles/base-control-styles.ts +5 -0
- package/src/border-control/border-control/component.tsx +41 -32
- package/src/border-control/border-control/hook.ts +4 -9
- package/src/border-control/border-control-dropdown/component.tsx +50 -45
- package/src/border-control/border-control-dropdown/hook.ts +0 -5
- package/src/border-control/stories/index.tsx +3 -0
- package/src/border-control/styles.ts +23 -69
- package/src/border-control/test/index.js +19 -8
- package/src/box-control/axial-input-controls.js +1 -1
- package/src/box-control/utils.js +6 -13
- package/src/card/test/__snapshots__/index.js.snap +8 -8
- package/src/color-palette/index.js +19 -8
- package/src/color-palette/style.scss +5 -0
- package/src/color-palette/test/utils.ts +19 -1
- package/src/color-picker/hex-input.tsx +2 -1
- package/src/color-picker/input-with-slider.tsx +2 -1
- package/src/color-picker/styles.ts +0 -11
- package/src/combobox-control/index.js +5 -6
- package/src/confirm-dialog/README.md +1 -1
- package/src/custom-select-control/index.js +44 -26
- package/src/custom-select-control/stories/index.js +7 -2
- package/src/custom-select-control/style.scss +4 -29
- package/src/divider/README.md +12 -5
- package/src/divider/component.tsx +2 -3
- package/src/divider/index.ts +1 -1
- package/src/divider/stories/index.tsx +4 -4
- package/src/divider/styles.ts +7 -7
- package/src/divider/test/__snapshots__/{index.js.snap → index.tsx.snap} +7 -7
- package/src/divider/test/index.tsx +40 -0
- package/src/divider/types.ts +21 -15
- package/src/draggable/README.md +1 -1
- package/src/dropdown/dropdown-content-wrapper.tsx +59 -0
- package/src/dropdown/stories/index.js +60 -69
- package/src/dropdown/styles.ts +38 -0
- package/src/dropdown/types.ts +8 -0
- package/src/elevation/README.md +16 -14
- package/src/elevation/component.tsx +48 -0
- package/src/elevation/{hook.js → hook.ts} +20 -17
- package/src/elevation/{index.js → index.ts} +0 -0
- package/src/elevation/stories/index.tsx +85 -0
- package/src/elevation/{styles.js → styles.ts} +0 -0
- package/src/elevation/test/__snapshots__/{index.js.snap → index.tsx.snap} +19 -13
- package/src/elevation/test/index.tsx +64 -0
- package/src/elevation/types.ts +12 -19
- package/src/flex/flex/README.md +1 -5
- package/src/flex/flex/component.js +11 -17
- package/src/flex/flex-block/README.md +0 -4
- package/src/flex/flex-block/component.js +9 -3
- package/src/flex/flex-item/README.md +0 -4
- package/src/flex/flex-item/component.js +9 -3
- package/src/flex/stories/index.js +1 -1
- package/src/flex/types.ts +4 -1
- package/src/form-token-field/test/index.js +1 -1
- package/src/index.js +3 -0
- package/src/input-control/index.tsx +6 -0
- package/src/input-control/input-base.tsx +28 -12
- package/src/input-control/input-prefix-wrapper.tsx +48 -0
- package/src/input-control/input-suffix-wrapper.tsx +48 -0
- package/src/input-control/stories/index.tsx +15 -2
- package/src/input-control/styles/input-control-styles.tsx +25 -11
- package/src/input-control/types.ts +52 -3
- package/src/mobile/image/index.native.js +12 -7
- package/src/mobile/media-edit/index.native.js +2 -7
- package/src/modal/style.scss +5 -1
- package/src/popover/index.js +13 -9
- package/src/popover/stories/index.js +2 -0
- package/src/popover/style.scss +1 -1
- package/src/radio-control/index.tsx +1 -2
- package/src/range-control/README.md +1 -1
- package/src/range-control/test/index.tsx +30 -0
- package/src/range-control/types.ts +4 -2
- package/src/range-control/utils.ts +4 -1
- package/src/sandbox/index.native.js +14 -1
- package/src/scroll-lock/README.md +1 -1
- package/src/scroll-lock/{index.js → index.tsx} +34 -7
- package/src/scroll-lock/stories/index.tsx +96 -0
- package/src/scroll-lock/test/index.tsx +26 -0
- package/src/select-control/index.tsx +1 -2
- package/src/select-control/styles/select-control-styles.ts +33 -9
- package/src/select-control/types.ts +1 -0
- package/src/shortcut/{index.js → index.tsx} +5 -9
- package/src/shortcut/test/__snapshots__/index.tsx.snap +15 -0
- package/src/shortcut/test/index.tsx +41 -0
- package/src/shortcut/types.ts +10 -0
- package/src/spacer/component.tsx +3 -1
- package/src/toggle-group-control/stories/index.js +19 -3
- package/src/toggle-group-control/test/__snapshots__/index.js.snap +4 -4
- package/src/toggle-group-control/toggle-group-control/component.tsx +3 -3
- package/src/toggle-group-control/toggle-group-control/styles.ts +22 -2
- package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +0 -4
- package/src/toggle-group-control/types.ts +6 -0
- package/src/tools-panel/tools-panel/README.md +94 -21
- package/src/tooltip/index.js +56 -10
- package/src/tooltip/stories/index.js +28 -13
- package/src/tooltip/style.scss +1 -1
- package/src/tree-select/index.tsx +5 -4
- package/src/tree-select/types.ts +4 -0
- package/src/ui/context/test/context-system-provider.js +101 -1
- package/src/ui/context/use-context-system.js +7 -2
- package/src/ui/utils/space.ts +7 -1
- package/src/unit-control/styles/unit-control-styles.ts +15 -13
- package/src/unit-control/test/__snapshots__/index.tsx.snap +4 -4
- package/src/unit-control/types.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/src/divider/test/index.js +0 -41
- package/src/elevation/component.js +0 -43
- package/src/elevation/stories/index.js +0 -148
- package/src/elevation/test/index.js +0 -51
- package/src/scroll-lock/stories/index.js +0 -71
- package/src/scroll-lock/test/index.js +0 -53
- package/src/shortcut/test/index.js +0 -37
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { ComponentMeta, ComponentStory } from '@storybook/react';
|
|
5
|
+
import type { ReactNode } from 'react';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* WordPress dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { useState } from '@wordpress/element';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Internal dependencies
|
|
14
|
+
*/
|
|
15
|
+
import Button from '../../button';
|
|
16
|
+
import ScrollLock from '..';
|
|
17
|
+
|
|
18
|
+
const meta: ComponentMeta< typeof ScrollLock > = {
|
|
19
|
+
component: ScrollLock,
|
|
20
|
+
title: 'Components/ScrollLock',
|
|
21
|
+
parameters: {
|
|
22
|
+
controls: { hideNoControlsWarning: true },
|
|
23
|
+
docs: { source: { state: 'open' } },
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
export default meta;
|
|
27
|
+
|
|
28
|
+
function StripedBackground( props: { children: ReactNode } ) {
|
|
29
|
+
return (
|
|
30
|
+
<div
|
|
31
|
+
style={ {
|
|
32
|
+
backgroundColor: '#fff',
|
|
33
|
+
backgroundImage:
|
|
34
|
+
'linear-gradient(transparent 50%, rgba(0, 0, 0, 0.05) 50%)',
|
|
35
|
+
backgroundSize: '50px 50px',
|
|
36
|
+
height: 3000,
|
|
37
|
+
position: 'relative',
|
|
38
|
+
} }
|
|
39
|
+
{ ...props }
|
|
40
|
+
/>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function ToggleContainer( props: { children: ReactNode } ) {
|
|
45
|
+
const { children } = props;
|
|
46
|
+
return (
|
|
47
|
+
<div
|
|
48
|
+
style={ {
|
|
49
|
+
position: 'sticky',
|
|
50
|
+
top: 0,
|
|
51
|
+
padding: 40,
|
|
52
|
+
display: 'flex',
|
|
53
|
+
justifyContent: 'center',
|
|
54
|
+
textAlign: 'center',
|
|
55
|
+
} }
|
|
56
|
+
>
|
|
57
|
+
<div>{ children }</div>
|
|
58
|
+
</div>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export const Default: ComponentStory< typeof ScrollLock > = () => {
|
|
63
|
+
const [ isScrollLocked, setScrollLocked ] = useState( false );
|
|
64
|
+
const toggleLock = () => setScrollLocked( ! isScrollLocked );
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<div style={ { height: 1000 } }>
|
|
68
|
+
<div
|
|
69
|
+
style={ {
|
|
70
|
+
overflow: 'auto',
|
|
71
|
+
height: 240,
|
|
72
|
+
border: '1px solid lightgray',
|
|
73
|
+
} }
|
|
74
|
+
>
|
|
75
|
+
<StripedBackground>
|
|
76
|
+
<div>
|
|
77
|
+
Start scrolling down. Once you scroll to the end of this
|
|
78
|
+
container with the stripes, the rest of the page will
|
|
79
|
+
continue scrolling. <code>ScrollLock</code> prevents
|
|
80
|
+
this "scroll bleed" from happening.
|
|
81
|
+
</div>
|
|
82
|
+
<ToggleContainer>
|
|
83
|
+
<Button variant="primary" onClick={ toggleLock }>
|
|
84
|
+
Toggle Scroll Lock
|
|
85
|
+
</Button>
|
|
86
|
+
{ isScrollLocked && <ScrollLock /> }
|
|
87
|
+
<p>
|
|
88
|
+
Scroll locked:{ ' ' }
|
|
89
|
+
<strong>{ isScrollLocked ? 'Yes' : 'No' }</strong>
|
|
90
|
+
</p>
|
|
91
|
+
</ToggleContainer>
|
|
92
|
+
</StripedBackground>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
);
|
|
96
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { render } from '@testing-library/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import ScrollLock from '..';
|
|
10
|
+
|
|
11
|
+
describe( 'scroll-lock', () => {
|
|
12
|
+
const lockingClassName = 'lockscroll';
|
|
13
|
+
|
|
14
|
+
it( 'locks when mounted', () => {
|
|
15
|
+
expect( document.documentElement ).not.toHaveClass( lockingClassName );
|
|
16
|
+
render( <ScrollLock /> );
|
|
17
|
+
expect( document.documentElement ).toHaveClass( lockingClassName );
|
|
18
|
+
} );
|
|
19
|
+
|
|
20
|
+
it( 'unlocks when unmounted', () => {
|
|
21
|
+
const { unmount } = render( <ScrollLock /> );
|
|
22
|
+
expect( document.documentElement ).toHaveClass( lockingClassName );
|
|
23
|
+
unmount();
|
|
24
|
+
expect( document.documentElement ).not.toHaveClass( lockingClassName );
|
|
25
|
+
} );
|
|
26
|
+
} );
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { isEmpty } from 'lodash';
|
|
5
4
|
import classNames from 'classnames';
|
|
6
5
|
import type { ChangeEvent, FocusEvent, ForwardedRef } from 'react';
|
|
7
6
|
|
|
@@ -59,7 +58,7 @@ function UnforwardedSelectControl(
|
|
|
59
58
|
const helpId = help ? `${ id }__help` : undefined;
|
|
60
59
|
|
|
61
60
|
// Disable reason: A select with an onchange throws a warning.
|
|
62
|
-
if (
|
|
61
|
+
if ( ! options?.length && ! children ) return null;
|
|
63
62
|
|
|
64
63
|
const handleOnBlur = ( event: FocusEvent< HTMLSelectElement > ) => {
|
|
65
64
|
onBlur( event );
|
|
@@ -10,7 +10,8 @@ import styled from '@emotion/styled';
|
|
|
10
10
|
import { COLORS, rtl } from '../../utils';
|
|
11
11
|
import type { SelectControlProps } from '../types';
|
|
12
12
|
|
|
13
|
-
interface SelectProps
|
|
13
|
+
interface SelectProps
|
|
14
|
+
extends Pick< SelectControlProps, '__next36pxDefaultSize' | 'disabled' > {
|
|
14
15
|
// Using `selectSize` instead of `size` to avoid a type conflict with the
|
|
15
16
|
// `size` HTML attribute of the `select` element.
|
|
16
17
|
selectSize?: SelectControlProps[ 'size' ];
|
|
@@ -45,11 +46,14 @@ const fontSizeStyles = ( { selectSize = 'default' }: SelectProps ) => {
|
|
|
45
46
|
`;
|
|
46
47
|
};
|
|
47
48
|
|
|
48
|
-
const sizeStyles = ( {
|
|
49
|
+
const sizeStyles = ( {
|
|
50
|
+
__next36pxDefaultSize,
|
|
51
|
+
selectSize = 'default',
|
|
52
|
+
}: SelectProps ) => {
|
|
49
53
|
const sizes = {
|
|
50
54
|
default: {
|
|
51
|
-
height:
|
|
52
|
-
minHeight:
|
|
55
|
+
height: 36,
|
|
56
|
+
minHeight: 36,
|
|
53
57
|
paddingTop: 0,
|
|
54
58
|
paddingBottom: 0,
|
|
55
59
|
},
|
|
@@ -67,16 +71,28 @@ const sizeStyles = ( { selectSize = 'default' }: SelectProps ) => {
|
|
|
67
71
|
},
|
|
68
72
|
};
|
|
69
73
|
|
|
70
|
-
|
|
74
|
+
if ( ! __next36pxDefaultSize ) {
|
|
75
|
+
sizes.default = {
|
|
76
|
+
height: 30,
|
|
77
|
+
minHeight: 30,
|
|
78
|
+
paddingTop: 0,
|
|
79
|
+
paddingBottom: 0,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const style = sizes[ selectSize ] || sizes.default;
|
|
71
84
|
|
|
72
85
|
return css( style );
|
|
73
86
|
};
|
|
74
87
|
|
|
75
|
-
const sizePaddings = ( {
|
|
88
|
+
const sizePaddings = ( {
|
|
89
|
+
__next36pxDefaultSize,
|
|
90
|
+
selectSize = 'default',
|
|
91
|
+
}: SelectProps ) => {
|
|
76
92
|
const sizes = {
|
|
77
93
|
default: {
|
|
78
|
-
paddingLeft:
|
|
79
|
-
paddingRight:
|
|
94
|
+
paddingLeft: 16,
|
|
95
|
+
paddingRight: 32,
|
|
80
96
|
},
|
|
81
97
|
small: {
|
|
82
98
|
paddingLeft: 8,
|
|
@@ -87,7 +103,15 @@ const sizePaddings = ( { selectSize = 'default' }: SelectProps ) => {
|
|
|
87
103
|
paddingRight: 32,
|
|
88
104
|
},
|
|
89
105
|
};
|
|
90
|
-
|
|
106
|
+
|
|
107
|
+
if ( ! __next36pxDefaultSize ) {
|
|
108
|
+
sizes.default = {
|
|
109
|
+
paddingLeft: 8,
|
|
110
|
+
paddingRight: 24,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return rtl( sizes[ selectSize ] || sizes.default );
|
|
91
115
|
};
|
|
92
116
|
|
|
93
117
|
// TODO: Resolve need to use &&& to increase specificity
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
/** @typedef {string | { display: string, ariaLabel: string }} Shortcut */
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
* @property {Shortcut} shortcut Shortcut configuration
|
|
5
|
-
* @property {string} [className] Classname
|
|
2
|
+
* Internal dependencies
|
|
6
3
|
*/
|
|
4
|
+
import type { ShortcutProps } from './types';
|
|
5
|
+
|
|
6
|
+
function Shortcut( props: ShortcutProps ) {
|
|
7
|
+
const { shortcut, className } = props;
|
|
7
8
|
|
|
8
|
-
/**
|
|
9
|
-
* @param {Props} props Props
|
|
10
|
-
* @return {JSX.Element | null} Element
|
|
11
|
-
*/
|
|
12
|
-
function Shortcut( { shortcut, className } ) {
|
|
13
9
|
if ( ! shortcut ) {
|
|
14
10
|
return null;
|
|
15
11
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Shortcut renders passed className 1`] = `
|
|
4
|
+
<span
|
|
5
|
+
class="my-class"
|
|
6
|
+
>
|
|
7
|
+
shortcut text
|
|
8
|
+
</span>
|
|
9
|
+
`;
|
|
10
|
+
|
|
11
|
+
exports[`Shortcut renders the shortcut display text when a string is passed as the shortcut 1`] = `
|
|
12
|
+
<span>
|
|
13
|
+
shortcut text
|
|
14
|
+
</span>
|
|
15
|
+
`;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import Shortcut from '..';
|
|
10
|
+
|
|
11
|
+
describe( 'Shortcut', () => {
|
|
12
|
+
it( 'does not render anything if no shortcut prop is provided', () => {
|
|
13
|
+
const { container } = render( <Shortcut /> );
|
|
14
|
+
expect( container.firstChild ).toBe( null );
|
|
15
|
+
} );
|
|
16
|
+
|
|
17
|
+
it( 'renders the shortcut display text when a string is passed as the shortcut', () => {
|
|
18
|
+
render( <Shortcut shortcut="shortcut text" /> );
|
|
19
|
+
expect( screen.getByText( 'shortcut text' ) ).toMatchSnapshot();
|
|
20
|
+
} );
|
|
21
|
+
|
|
22
|
+
it( 'renders the shortcut display text and aria-label when an object is passed as the shortcut with the correct properties', () => {
|
|
23
|
+
render(
|
|
24
|
+
<Shortcut
|
|
25
|
+
shortcut={ {
|
|
26
|
+
display: 'shortcut text',
|
|
27
|
+
ariaLabel: 'shortcut label',
|
|
28
|
+
} }
|
|
29
|
+
/>
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
expect( screen.getByLabelText( 'shortcut label' ) ).toHaveTextContent(
|
|
33
|
+
'shortcut text'
|
|
34
|
+
);
|
|
35
|
+
} );
|
|
36
|
+
|
|
37
|
+
it( 'renders passed className', () => {
|
|
38
|
+
render( <Shortcut shortcut="shortcut text" className="my-class" /> );
|
|
39
|
+
expect( screen.getByText( 'shortcut text' ) ).toMatchSnapshot();
|
|
40
|
+
} );
|
|
41
|
+
} );
|
package/src/spacer/component.tsx
CHANGED
|
@@ -23,7 +23,9 @@ function UnconnectedSpacer(
|
|
|
23
23
|
/**
|
|
24
24
|
* `Spacer` is a primitive layout component that providers inner (`padding`) or outer (`margin`) space in-between components. It can also be used to adaptively provide space within an `HStack` or `VStack`.
|
|
25
25
|
*
|
|
26
|
-
* `Spacer` comes with a bunch of shorthand props to adjust `margin` and `padding`. The values of these props
|
|
26
|
+
* `Spacer` comes with a bunch of shorthand props to adjust `margin` and `padding`. The values of these props
|
|
27
|
+
* can either be a number (which will act as a multiplier to the library's grid system base of 4px),
|
|
28
|
+
* or a literal CSS value string.
|
|
27
29
|
*
|
|
28
30
|
* ```jsx
|
|
29
31
|
* import { Spacer } from `@wordpress/components`
|
|
@@ -23,6 +23,12 @@ import Button from '../../button';
|
|
|
23
23
|
export default {
|
|
24
24
|
component: ToggleGroupControl,
|
|
25
25
|
title: 'Components (Experimental)/ToggleGroupControl',
|
|
26
|
+
argTypes: {
|
|
27
|
+
size: {
|
|
28
|
+
control: 'select',
|
|
29
|
+
options: [ 'default', '__unstable-large' ],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
26
32
|
parameters: {
|
|
27
33
|
knobs: { disable: false },
|
|
28
34
|
},
|
|
@@ -33,7 +39,7 @@ const KNOBS_GROUPS = {
|
|
|
33
39
|
ToggleGroupControlOption: 'ToggleGroupControlOption',
|
|
34
40
|
};
|
|
35
41
|
|
|
36
|
-
const _default = ( { options } ) => {
|
|
42
|
+
const _default = ( { options, ...props } ) => {
|
|
37
43
|
const [ value, setValue ] = useState( options[ 0 ].value );
|
|
38
44
|
const label = text(
|
|
39
45
|
`${ KNOBS_GROUPS.ToggleGroupControl }: label`,
|
|
@@ -87,6 +93,7 @@ const _default = ( { options } ) => {
|
|
|
87
93
|
return (
|
|
88
94
|
<View>
|
|
89
95
|
<ToggleGroupControl
|
|
96
|
+
{ ...props }
|
|
90
97
|
onChange={ setValue }
|
|
91
98
|
value={ value }
|
|
92
99
|
label={ label }
|
|
@@ -109,6 +116,7 @@ Default.args = {
|
|
|
109
116
|
{ value: 'right', label: 'Right' },
|
|
110
117
|
{ value: 'justify', label: 'Justify' },
|
|
111
118
|
],
|
|
119
|
+
size: 'default',
|
|
112
120
|
};
|
|
113
121
|
|
|
114
122
|
export const WithTooltip = _default.bind( {} );
|
|
@@ -130,10 +138,11 @@ WithAriaLabel.args = {
|
|
|
130
138
|
],
|
|
131
139
|
};
|
|
132
140
|
|
|
133
|
-
export const WithIcons = () => {
|
|
141
|
+
export const WithIcons = ( props ) => {
|
|
134
142
|
const [ state, setState ] = useState();
|
|
135
143
|
return (
|
|
136
144
|
<ToggleGroupControl
|
|
145
|
+
{ ...props }
|
|
137
146
|
onChange={ setState }
|
|
138
147
|
value={ state }
|
|
139
148
|
label={ 'With icons' }
|
|
@@ -154,8 +163,11 @@ export const WithIcons = () => {
|
|
|
154
163
|
</ToggleGroupControl>
|
|
155
164
|
);
|
|
156
165
|
};
|
|
166
|
+
WithIcons.args = {
|
|
167
|
+
...Default.args,
|
|
168
|
+
};
|
|
157
169
|
|
|
158
|
-
export const WithReset = () => {
|
|
170
|
+
export const WithReset = ( props ) => {
|
|
159
171
|
const [ alignState, setAlignState ] = useState();
|
|
160
172
|
const aligns = [ 'Left', 'Center', 'Right' ];
|
|
161
173
|
const alignOptions = aligns.map( ( key, index ) => (
|
|
@@ -172,6 +184,7 @@ export const WithReset = () => {
|
|
|
172
184
|
return (
|
|
173
185
|
<View>
|
|
174
186
|
<ToggleGroupControl
|
|
187
|
+
{ ...props }
|
|
175
188
|
onChange={ setAlignState }
|
|
176
189
|
value={ alignState }
|
|
177
190
|
label={ 'Toggle Group Control' }
|
|
@@ -185,3 +198,6 @@ export const WithReset = () => {
|
|
|
185
198
|
</View>
|
|
186
199
|
);
|
|
187
200
|
};
|
|
201
|
+
WithReset.args = {
|
|
202
|
+
...Default.args,
|
|
203
|
+
};
|
|
@@ -28,12 +28,12 @@ exports[`ToggleGroupControl should render correctly with icons 1`] = `
|
|
|
28
28
|
display: -webkit-inline-flex;
|
|
29
29
|
display: -ms-inline-flexbox;
|
|
30
30
|
display: inline-flex;
|
|
31
|
-
min-height: 36px;
|
|
32
31
|
min-width: 0;
|
|
33
32
|
padding: 2px;
|
|
34
33
|
position: relative;
|
|
35
34
|
-webkit-transition: -webkit-transform 100ms linear;
|
|
36
35
|
transition: transform 100ms linear;
|
|
36
|
+
min-height: 36px;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
@media ( prefers-reduced-motion: reduce ) {
|
|
@@ -167,7 +167,7 @@ exports[`ToggleGroupControl should render correctly with icons 1`] = `
|
|
|
167
167
|
</div>
|
|
168
168
|
<div
|
|
169
169
|
aria-label="Test Toggle Group Control"
|
|
170
|
-
class="
|
|
170
|
+
class="components-toggle-group-control emotion-6 emotion-7"
|
|
171
171
|
data-wp-c16t="true"
|
|
172
172
|
data-wp-component="ToggleGroupControl"
|
|
173
173
|
id="toggle-group-control-1"
|
|
@@ -281,12 +281,12 @@ exports[`ToggleGroupControl should render correctly with text options 1`] = `
|
|
|
281
281
|
display: -webkit-inline-flex;
|
|
282
282
|
display: -ms-inline-flexbox;
|
|
283
283
|
display: inline-flex;
|
|
284
|
-
min-height: 36px;
|
|
285
284
|
min-width: 0;
|
|
286
285
|
padding: 2px;
|
|
287
286
|
position: relative;
|
|
288
287
|
-webkit-transition: -webkit-transform 100ms linear;
|
|
289
288
|
transition: transform 100ms linear;
|
|
289
|
+
min-height: 36px;
|
|
290
290
|
}
|
|
291
291
|
|
|
292
292
|
@media ( prefers-reduced-motion: reduce ) {
|
|
@@ -393,7 +393,7 @@ exports[`ToggleGroupControl should render correctly with text options 1`] = `
|
|
|
393
393
|
</div>
|
|
394
394
|
<div
|
|
395
395
|
aria-label="Test Toggle Group Control"
|
|
396
|
-
class="
|
|
396
|
+
class="components-toggle-group-control emotion-6 emotion-7"
|
|
397
397
|
data-wp-c16t="true"
|
|
398
398
|
data-wp-component="ToggleGroupControl"
|
|
399
399
|
id="toggle-group-control-0"
|
|
@@ -47,6 +47,7 @@ function ToggleGroupControl(
|
|
|
47
47
|
hideLabelFromVision = false,
|
|
48
48
|
help,
|
|
49
49
|
onChange = noop,
|
|
50
|
+
size = 'default',
|
|
50
51
|
value,
|
|
51
52
|
children,
|
|
52
53
|
...otherProps
|
|
@@ -83,12 +84,11 @@ function ToggleGroupControl(
|
|
|
83
84
|
const classes = useMemo(
|
|
84
85
|
() =>
|
|
85
86
|
cx(
|
|
86
|
-
styles.ToggleGroupControl,
|
|
87
|
+
styles.ToggleGroupControl( { size } ),
|
|
87
88
|
isBlock && styles.block,
|
|
88
|
-
'medium',
|
|
89
89
|
className
|
|
90
90
|
),
|
|
91
|
-
[ className, cx, isBlock ]
|
|
91
|
+
[ className, cx, isBlock, size ]
|
|
92
92
|
);
|
|
93
93
|
return (
|
|
94
94
|
<BaseControl help={ help }>
|
|
@@ -8,19 +8,26 @@ import styled from '@emotion/styled';
|
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
import { CONFIG, COLORS, reduceMotion } from '../../utils';
|
|
11
|
+
import type { ToggleGroupControlProps } from '../types';
|
|
11
12
|
|
|
12
|
-
export const ToggleGroupControl =
|
|
13
|
+
export const ToggleGroupControl = ( {
|
|
14
|
+
size,
|
|
15
|
+
}: {
|
|
16
|
+
size: NonNullable< ToggleGroupControlProps[ 'size' ] >;
|
|
17
|
+
} ) => css`
|
|
13
18
|
background: ${ COLORS.ui.background };
|
|
14
19
|
border: 1px solid;
|
|
15
20
|
border-color: ${ COLORS.ui.border };
|
|
16
21
|
border-radius: ${ CONFIG.controlBorderRadius };
|
|
17
22
|
display: inline-flex;
|
|
18
|
-
min-height: ${ CONFIG.controlHeight };
|
|
19
23
|
min-width: 0;
|
|
20
24
|
padding: 2px;
|
|
21
25
|
position: relative;
|
|
22
26
|
transition: transform ${ CONFIG.transitionDurationFastest } linear;
|
|
23
27
|
${ reduceMotion( 'transition' ) }
|
|
28
|
+
|
|
29
|
+
${ toggleGroupControlSize( size ) }
|
|
30
|
+
|
|
24
31
|
&:hover {
|
|
25
32
|
border-color: ${ COLORS.ui.borderHover };
|
|
26
33
|
}
|
|
@@ -33,6 +40,19 @@ export const ToggleGroupControl = css`
|
|
|
33
40
|
}
|
|
34
41
|
`;
|
|
35
42
|
|
|
43
|
+
export const toggleGroupControlSize = (
|
|
44
|
+
size: NonNullable< ToggleGroupControlProps[ 'size' ] >
|
|
45
|
+
) => {
|
|
46
|
+
const heights = {
|
|
47
|
+
default: '36px',
|
|
48
|
+
'__unstable-large': '40px',
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return css`
|
|
52
|
+
min-height: ${ heights[ size ] };
|
|
53
|
+
`;
|
|
54
|
+
};
|
|
55
|
+
|
|
36
56
|
export const block = css`
|
|
37
57
|
display: flex;
|
|
38
58
|
width: 100%;
|
|
@@ -104,6 +104,12 @@ export type ToggleGroupControlProps = Omit<
|
|
|
104
104
|
* using help property as the content.
|
|
105
105
|
*/
|
|
106
106
|
help?: ReactNode;
|
|
107
|
+
/**
|
|
108
|
+
* The size variant of the control.
|
|
109
|
+
*
|
|
110
|
+
* @default 'default'
|
|
111
|
+
*/
|
|
112
|
+
size?: 'default' | '__unstable-large';
|
|
107
113
|
};
|
|
108
114
|
|
|
109
115
|
export type ToggleGroupControlContextProps = RadioStateReturn & {
|
|
@@ -30,45 +30,118 @@ however they will not be represented within, or controlled by, the `ToolsPanel`
|
|
|
30
30
|
menu. An example scenario that benefits from this could be displaying
|
|
31
31
|
introduction or help text within a panel.
|
|
32
32
|
|
|
33
|
+
### ToolsPanel Layout
|
|
34
|
+
|
|
35
|
+
The `ToolsPanel` has a two-column grid layout. By default, `ToolsPanelItem`
|
|
36
|
+
components within the panel are styled to span both columns as this fits the
|
|
37
|
+
majority of use-cases. Most non-control elements, such as help text, will be
|
|
38
|
+
rendered as children of the related control's `ToolsPanelItem` and not require
|
|
39
|
+
additional styling.
|
|
40
|
+
|
|
41
|
+
Suppose an element is related to multiple controls (e.g. a contrast checker), or
|
|
42
|
+
the panel itself (e.g. a panel description). In that case, these will be
|
|
43
|
+
rendered into the panel without a wrapping `ToolsPanelItem`. They'll then only
|
|
44
|
+
span a single column by default. If this is undesirable, those elements will
|
|
45
|
+
likely need a small style tweak, e.g. `grid-column: 1 / -1;`
|
|
46
|
+
|
|
47
|
+
The usage example below will illustrate a non-`ToolsPanelItem` description
|
|
48
|
+
paragraph, controls that should display in a single row, and others spanning
|
|
49
|
+
both columns.
|
|
50
|
+
|
|
33
51
|
## Usage
|
|
34
52
|
|
|
35
53
|
```jsx
|
|
54
|
+
/**
|
|
55
|
+
* External dependencies
|
|
56
|
+
*/
|
|
57
|
+
import styled from '@emotion/styled';
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* WordPress dependencies
|
|
61
|
+
*/
|
|
36
62
|
import {
|
|
63
|
+
__experimentalBoxControl as BoxControl,
|
|
37
64
|
__experimentalToolsPanel as ToolsPanel,
|
|
38
65
|
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
66
|
+
__experimentalUnitControl as UnitControl,
|
|
39
67
|
} from '@wordpress/components';
|
|
40
68
|
import { __ } from '@wordpress/i18n';
|
|
41
69
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
resetPadding,
|
|
46
|
-
useIsPaddingDisabled,
|
|
47
|
-
} from './padding';
|
|
70
|
+
const PanelDescription = styled.div`
|
|
71
|
+
grid-column: span 2;
|
|
72
|
+
`;
|
|
48
73
|
|
|
74
|
+
const SingleColumnItem = styled( ToolsPanelItem )`
|
|
75
|
+
grid-column: span 1;
|
|
76
|
+
`;
|
|
49
77
|
|
|
50
|
-
export function DimensionPanel(
|
|
51
|
-
const
|
|
78
|
+
export function DimensionPanel() {
|
|
79
|
+
const [ height, setHeight ] = useState();
|
|
80
|
+
const [ width, setWidth ] = useState();
|
|
81
|
+
const [ padding, setPadding ] = useState();
|
|
82
|
+
const [ margin, setMargin ] = useState();
|
|
52
83
|
|
|
53
84
|
const resetAll = () => {
|
|
54
|
-
|
|
85
|
+
setHeight( undefined );
|
|
86
|
+
setWidth( undefined );
|
|
87
|
+
setPadding( undefined );
|
|
88
|
+
setMargin( undefined );
|
|
55
89
|
};
|
|
56
90
|
|
|
57
91
|
return (
|
|
58
92
|
<ToolsPanel label={ __( 'Dimensions' ) } resetAll={ resetAll }>
|
|
59
|
-
<
|
|
60
|
-
Select dimensions or spacing related settings from the
|
|
61
|
-
additional controls.
|
|
62
|
-
</
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
93
|
+
<PanelDescription>
|
|
94
|
+
Select dimensions or spacing related settings from the
|
|
95
|
+
menu for additional controls.
|
|
96
|
+
</PanelDescription>
|
|
97
|
+
<SingleColumnItem
|
|
98
|
+
hasValue={ () => !! height }
|
|
99
|
+
label={ __( 'Height' ) }
|
|
100
|
+
onDeselect={ () => setHeight( undefined ) }
|
|
101
|
+
isShownByDefault
|
|
102
|
+
>
|
|
103
|
+
<UnitControl
|
|
104
|
+
label={ __( 'Height' ) }
|
|
105
|
+
onChange={ setHeight }
|
|
106
|
+
value={ height }
|
|
107
|
+
/>
|
|
108
|
+
</SingleColumnItem>
|
|
109
|
+
<SingleColumnItem
|
|
110
|
+
hasValue={ () => !! width }
|
|
111
|
+
label={ __( 'Width' ) }
|
|
112
|
+
onDeselect={ () => setWidth( undefined ) }
|
|
113
|
+
isShownByDefault
|
|
114
|
+
>
|
|
115
|
+
<UnitControl
|
|
116
|
+
label={ __( 'Width' ) }
|
|
117
|
+
onChange={ setWidth }
|
|
118
|
+
value={ width }
|
|
119
|
+
/>
|
|
120
|
+
</SingleColumnItem>
|
|
121
|
+
<ToolsPanelItem
|
|
122
|
+
hasValue={ () => !! padding }
|
|
123
|
+
label={ __( 'Padding' ) }
|
|
124
|
+
onDeselect={ () => setPadding( undefined ) }
|
|
125
|
+
>
|
|
126
|
+
<BoxControl
|
|
66
127
|
label={ __( 'Padding' ) }
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
128
|
+
onChange={ setPadding }
|
|
129
|
+
values={ padding }
|
|
130
|
+
allowReset={ false }
|
|
131
|
+
/>
|
|
132
|
+
</ToolsPanelItem>
|
|
133
|
+
<ToolsPanelItem
|
|
134
|
+
hasValue={ () => !! margin }
|
|
135
|
+
label={ __( 'Margin' ) }
|
|
136
|
+
onDeselect={ () => setMargin( undefined ) }
|
|
137
|
+
>
|
|
138
|
+
<BoxControl
|
|
139
|
+
label={ __( 'Margin' ) }
|
|
140
|
+
onChange={ setMargin }
|
|
141
|
+
values={ margin }
|
|
142
|
+
allowReset={ false }
|
|
143
|
+
/>
|
|
144
|
+
</ToolsPanelItem>
|
|
72
145
|
</ToolsPanel>
|
|
73
146
|
);
|
|
74
147
|
}
|