@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
|
@@ -7,10 +7,13 @@ import type { ComponentMeta, ComponentStory } from '@storybook/react';
|
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
9
|
import InputControl from '..';
|
|
10
|
+
import { InputControlPrefixWrapper } from '../input-prefix-wrapper';
|
|
11
|
+
import { InputControlSuffixWrapper } from '../input-suffix-wrapper';
|
|
10
12
|
|
|
11
13
|
const meta: ComponentMeta< typeof InputControl > = {
|
|
12
14
|
title: 'Components (Experimental)/InputControl',
|
|
13
15
|
component: InputControl,
|
|
16
|
+
subcomponents: { InputControlPrefixWrapper, InputControlSuffixWrapper },
|
|
14
17
|
argTypes: {
|
|
15
18
|
__unstableInputWidth: { control: { type: 'text' } },
|
|
16
19
|
__unstableStateReducer: { control: { type: null } },
|
|
@@ -37,16 +40,26 @@ Default.args = {
|
|
|
37
40
|
placeholder: 'Placeholder',
|
|
38
41
|
};
|
|
39
42
|
|
|
43
|
+
/**
|
|
44
|
+
* A `prefix` can be inserted before the input. By default, the prefix is aligned with the edge of the input border,
|
|
45
|
+
* with no padding. If you want to apply standard padding in accordance with the size variant, use the provided
|
|
46
|
+
* `<InputControlPrefixWrapper>` convenience wrapper.
|
|
47
|
+
*/
|
|
40
48
|
export const WithPrefix = Template.bind( {} );
|
|
41
49
|
WithPrefix.args = {
|
|
42
50
|
...Default.args,
|
|
43
|
-
prefix: <
|
|
51
|
+
prefix: <InputControlPrefixWrapper>@</InputControlPrefixWrapper>,
|
|
44
52
|
};
|
|
45
53
|
|
|
54
|
+
/**
|
|
55
|
+
* A `suffix` can be inserted after the input. By default, the suffix is aligned with the edge of the input border,
|
|
56
|
+
* with no padding. If you want to apply standard padding in accordance with the size variant, use the provided
|
|
57
|
+
* `<InputControlSuffixWrapper>` convenience wrapper.
|
|
58
|
+
*/
|
|
46
59
|
export const WithSuffix = Template.bind( {} );
|
|
47
60
|
WithSuffix.args = {
|
|
48
61
|
...Default.args,
|
|
49
|
-
suffix: <
|
|
62
|
+
suffix: <InputControlSuffixWrapper>%</InputControlSuffixWrapper>,
|
|
50
63
|
};
|
|
51
64
|
|
|
52
65
|
export const WithSideLabel = Template.bind( {} );
|
|
@@ -13,6 +13,7 @@ import { Flex, FlexItem } from '../../flex';
|
|
|
13
13
|
import { Text } from '../../text';
|
|
14
14
|
import { COLORS, rtl } from '../../utils';
|
|
15
15
|
import type { LabelPosition, Size } from '../types';
|
|
16
|
+
import { space } from '../../ui/utils/space';
|
|
16
17
|
|
|
17
18
|
type ContainerProps = {
|
|
18
19
|
disabled?: boolean;
|
|
@@ -110,6 +111,8 @@ type InputProps = {
|
|
|
110
111
|
inputSize?: Size;
|
|
111
112
|
isDragging?: boolean;
|
|
112
113
|
dragCursor?: CSSProperties[ 'cursor' ];
|
|
114
|
+
paddingInlineStart?: CSSProperties[ 'paddingInlineStart' ];
|
|
115
|
+
paddingInlineEnd?: CSSProperties[ 'paddingInlineEnd' ];
|
|
113
116
|
};
|
|
114
117
|
|
|
115
118
|
const disabledStyles = ( { disabled }: InputProps ) => {
|
|
@@ -141,31 +144,32 @@ const fontSizeStyles = ( { inputSize: size }: InputProps ) => {
|
|
|
141
144
|
`;
|
|
142
145
|
};
|
|
143
146
|
|
|
144
|
-
const
|
|
147
|
+
export const getSizeConfig = ( {
|
|
145
148
|
inputSize: size,
|
|
146
149
|
__next36pxDefaultSize,
|
|
147
150
|
}: InputProps ) => {
|
|
151
|
+
// Paddings may be overridden by the custom paddings props.
|
|
148
152
|
const sizes = {
|
|
149
153
|
default: {
|
|
150
154
|
height: 36,
|
|
151
155
|
lineHeight: 1,
|
|
152
156
|
minHeight: 36,
|
|
153
|
-
paddingLeft:
|
|
154
|
-
paddingRight:
|
|
157
|
+
paddingLeft: space( 4 ),
|
|
158
|
+
paddingRight: space( 4 ),
|
|
155
159
|
},
|
|
156
160
|
small: {
|
|
157
161
|
height: 24,
|
|
158
162
|
lineHeight: 1,
|
|
159
163
|
minHeight: 24,
|
|
160
|
-
paddingLeft:
|
|
161
|
-
paddingRight:
|
|
164
|
+
paddingLeft: space( 2 ),
|
|
165
|
+
paddingRight: space( 2 ),
|
|
162
166
|
},
|
|
163
167
|
'__unstable-large': {
|
|
164
168
|
height: 40,
|
|
165
169
|
lineHeight: 1,
|
|
166
170
|
minHeight: 40,
|
|
167
|
-
paddingLeft:
|
|
168
|
-
paddingRight:
|
|
171
|
+
paddingLeft: space( 4 ),
|
|
172
|
+
paddingRight: space( 4 ),
|
|
169
173
|
},
|
|
170
174
|
};
|
|
171
175
|
|
|
@@ -174,14 +178,23 @@ const sizeStyles = ( {
|
|
|
174
178
|
height: 30,
|
|
175
179
|
lineHeight: 1,
|
|
176
180
|
minHeight: 30,
|
|
177
|
-
paddingLeft:
|
|
178
|
-
paddingRight:
|
|
181
|
+
paddingLeft: space( 2 ),
|
|
182
|
+
paddingRight: space( 2 ),
|
|
179
183
|
};
|
|
180
184
|
}
|
|
181
185
|
|
|
182
|
-
|
|
186
|
+
return sizes[ size as Size ] || sizes.default;
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
const sizeStyles = ( props: InputProps ) => {
|
|
190
|
+
return css( getSizeConfig( props ) );
|
|
191
|
+
};
|
|
183
192
|
|
|
184
|
-
|
|
193
|
+
const customPaddings = ( {
|
|
194
|
+
paddingInlineStart,
|
|
195
|
+
paddingInlineEnd,
|
|
196
|
+
}: InputProps ) => {
|
|
197
|
+
return css( { paddingInlineStart, paddingInlineEnd } );
|
|
185
198
|
};
|
|
186
199
|
|
|
187
200
|
const dragStyles = ( { isDragging, dragCursor }: InputProps ) => {
|
|
@@ -235,6 +248,7 @@ export const Input = styled.input< InputProps >`
|
|
|
235
248
|
${ disabledStyles }
|
|
236
249
|
${ fontSizeStyles }
|
|
237
250
|
${ sizeStyles }
|
|
251
|
+
${ customPaddings }
|
|
238
252
|
|
|
239
253
|
&::-webkit-input-placeholder {
|
|
240
254
|
line-height: normal;
|
|
@@ -102,6 +102,8 @@ export interface InputFieldProps extends BaseProps {
|
|
|
102
102
|
nextValue: string,
|
|
103
103
|
event?: SyntheticEvent< HTMLInputElement >
|
|
104
104
|
) => void;
|
|
105
|
+
paddingInlineStart?: CSSProperties[ 'paddingInlineStart' ];
|
|
106
|
+
paddingInlineEnd?: CSSProperties[ 'paddingInlineEnd' ];
|
|
105
107
|
setIsFocused: ( isFocused: boolean ) => void;
|
|
106
108
|
stateReducer?: StateReducer;
|
|
107
109
|
/**
|
|
@@ -123,10 +125,38 @@ export interface InputBaseProps extends BaseProps, FlexProps {
|
|
|
123
125
|
children: ReactNode;
|
|
124
126
|
/**
|
|
125
127
|
* Renders an element on the left side of the input.
|
|
128
|
+
*
|
|
129
|
+
* By default, the prefix is aligned with the edge of the input border, with no padding.
|
|
130
|
+
* If you want to apply standard padding in accordance with the size variant, wrap the element in
|
|
131
|
+
* the provided `<InputControlPrefixWrapper>` component.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* import {
|
|
135
|
+
* __experimentalInputControl as InputControl,
|
|
136
|
+
* __experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,
|
|
137
|
+
* } from '@wordpress/components';
|
|
138
|
+
*
|
|
139
|
+
* <InputControl
|
|
140
|
+
* prefix={<InputControlPrefixWrapper>@</InputControlPrefixWrapper>}
|
|
141
|
+
* />
|
|
126
142
|
*/
|
|
127
143
|
prefix?: ReactNode;
|
|
128
144
|
/**
|
|
129
145
|
* Renders an element on the right side of the input.
|
|
146
|
+
*
|
|
147
|
+
* By default, the suffix is aligned with the edge of the input border, with no padding.
|
|
148
|
+
* If you want to apply standard padding in accordance with the size variant, wrap the element in
|
|
149
|
+
* the provided `<InputControlSuffixWrapper>` component.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* import {
|
|
153
|
+
* __experimentalInputControl as InputControl,
|
|
154
|
+
* __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,
|
|
155
|
+
* } from '@wordpress/components';
|
|
156
|
+
*
|
|
157
|
+
* <InputControl
|
|
158
|
+
* suffix={<InputControlSuffixWrapper>%</InputControlSuffixWrapper>}
|
|
159
|
+
* />
|
|
130
160
|
*/
|
|
131
161
|
suffix?: ReactNode;
|
|
132
162
|
/**
|
|
@@ -152,12 +182,17 @@ export interface InputControlProps
|
|
|
152
182
|
* be the only prefix prop. Otherwise it tries to do a union of the two prefix properties and you end up
|
|
153
183
|
* with an unresolvable type.
|
|
154
184
|
*
|
|
155
|
-
* `isFocused` and `
|
|
156
|
-
* for InputField are passed through.
|
|
185
|
+
* `isFocused`, `setIsFocused`, `paddingInlineStart`, and `paddingInlineEnd` are managed internally by
|
|
186
|
+
* the InputControl, but the rest of the props for InputField are passed through.
|
|
157
187
|
*/
|
|
158
188
|
Omit<
|
|
159
189
|
WordPressComponentProps< InputFieldProps, 'input', false >,
|
|
160
|
-
|
|
190
|
+
| 'stateReducer'
|
|
191
|
+
| 'prefix'
|
|
192
|
+
| 'isFocused'
|
|
193
|
+
| 'setIsFocused'
|
|
194
|
+
| 'paddingInlineStart'
|
|
195
|
+
| 'paddingInlineEnd'
|
|
161
196
|
> {
|
|
162
197
|
__unstableStateReducer?: InputFieldProps[ 'stateReducer' ];
|
|
163
198
|
}
|
|
@@ -168,3 +203,17 @@ export interface InputControlLabelProps {
|
|
|
168
203
|
labelPosition?: BaseProps[ 'labelPosition' ];
|
|
169
204
|
size?: BaseProps[ 'size' ];
|
|
170
205
|
}
|
|
206
|
+
|
|
207
|
+
export type InputControlPrefixWrapperProps = {
|
|
208
|
+
/**
|
|
209
|
+
* The prefix to be inserted.
|
|
210
|
+
*/
|
|
211
|
+
children: ReactNode;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
export type InputControlSuffixWrapperProps = {
|
|
215
|
+
/**
|
|
216
|
+
* The suffix to be inserted.
|
|
217
|
+
*/
|
|
218
|
+
children: ReactNode;
|
|
219
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { Image, Text, View } from 'react-native';
|
|
4
|
+
import { Image as RNImage, Text, View } from 'react-native';
|
|
5
5
|
import FastImage from 'react-native-fast-image';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -37,6 +37,7 @@ const ImageComponent = ( {
|
|
|
37
37
|
height: imageHeight,
|
|
38
38
|
highlightSelected = true,
|
|
39
39
|
isSelected,
|
|
40
|
+
shouldUseFastImage,
|
|
40
41
|
isUploadFailed,
|
|
41
42
|
isUploadInProgress,
|
|
42
43
|
mediaPickerOptions,
|
|
@@ -53,11 +54,15 @@ const ImageComponent = ( {
|
|
|
53
54
|
} ) => {
|
|
54
55
|
const [ imageData, setImageData ] = useState( null );
|
|
55
56
|
const [ containerSize, setContainerSize ] = useState( null );
|
|
57
|
+
const Image = ! shouldUseFastImage ? RNImage : FastImage;
|
|
58
|
+
const imageResizeMode = ! shouldUseFastImage
|
|
59
|
+
? resizeMode
|
|
60
|
+
: FastImage.resizeMode[ resizeMode ];
|
|
56
61
|
|
|
57
62
|
useEffect( () => {
|
|
58
63
|
let isCurrent = true;
|
|
59
64
|
if ( url ) {
|
|
60
|
-
|
|
65
|
+
RNImage.getSize( url, ( imgWidth, imgHeight ) => {
|
|
61
66
|
if ( ! isCurrent ) {
|
|
62
67
|
return;
|
|
63
68
|
}
|
|
@@ -152,6 +157,9 @@ const ImageComponent = ( {
|
|
|
152
157
|
opacity: isUploadInProgress ? 0.3 : 1,
|
|
153
158
|
height: containerSize?.height,
|
|
154
159
|
},
|
|
160
|
+
! resizeMode && {
|
|
161
|
+
aspectRatio: imageData?.aspectRatio,
|
|
162
|
+
},
|
|
155
163
|
focalPoint && styles.focalPoint,
|
|
156
164
|
focalPoint &&
|
|
157
165
|
getImageWithFocalPointStyles(
|
|
@@ -211,16 +219,13 @@ const ImageComponent = ( {
|
|
|
211
219
|
</View>
|
|
212
220
|
) : (
|
|
213
221
|
<View style={ focalPoint && styles.focalPointContent }>
|
|
214
|
-
<
|
|
215
|
-
{ ...( ! resizeMode && {
|
|
216
|
-
aspectRatio: imageData?.aspectRatio,
|
|
217
|
-
} ) }
|
|
222
|
+
<Image
|
|
218
223
|
style={ imageStyles }
|
|
219
224
|
source={ { uri: url } }
|
|
220
225
|
{ ...( ! focalPoint && {
|
|
221
226
|
resizeMethod: 'scale',
|
|
222
227
|
} ) }
|
|
223
|
-
resizeMode={
|
|
228
|
+
resizeMode={ imageResizeMode }
|
|
224
229
|
/>
|
|
225
230
|
</View>
|
|
226
231
|
) }
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { compact } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -46,11 +41,11 @@ export class MediaEdit extends Component {
|
|
|
46
41
|
getMediaOptionsItems() {
|
|
47
42
|
const { pickerOptions, openReplaceMediaOptions, source } = this.props;
|
|
48
43
|
|
|
49
|
-
return
|
|
44
|
+
return [
|
|
50
45
|
source?.uri && editOption,
|
|
51
46
|
openReplaceMediaOptions && replaceOption,
|
|
52
47
|
...( pickerOptions ? pickerOptions : [] ),
|
|
53
|
-
] );
|
|
48
|
+
].filter( Boolean );
|
|
54
49
|
}
|
|
55
50
|
|
|
56
51
|
getDestructiveButtonIndex() {
|
package/src/modal/style.scss
CHANGED
|
@@ -95,6 +95,10 @@
|
|
|
95
95
|
.components-modal__content.has-scrolled-content:not(.hide-header) & {
|
|
96
96
|
border-bottom-color: $gray-300;
|
|
97
97
|
}
|
|
98
|
+
|
|
99
|
+
& + p {
|
|
100
|
+
margin-top: 0;
|
|
101
|
+
}
|
|
98
102
|
}
|
|
99
103
|
|
|
100
104
|
.components-modal__header-heading-container {
|
|
@@ -119,7 +123,7 @@
|
|
|
119
123
|
.components-modal__content {
|
|
120
124
|
flex: 1;
|
|
121
125
|
margin-top: $header-height + $grid-unit-20;
|
|
122
|
-
padding: 0 $grid-unit-40 $grid-unit-
|
|
126
|
+
padding: 0 $grid-unit-40 $grid-unit-40;
|
|
123
127
|
overflow: auto;
|
|
124
128
|
|
|
125
129
|
&.hide-header {
|
package/src/popover/index.js
CHANGED
|
@@ -210,15 +210,19 @@ const Popover = (
|
|
|
210
210
|
const slotName = useContext( slotNameContext ) || __unstableSlotName;
|
|
211
211
|
const slot = useSlot( slotName );
|
|
212
212
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
213
|
+
let onDialogClose;
|
|
214
|
+
|
|
215
|
+
if ( onClose || onFocusOutside ) {
|
|
216
|
+
onDialogClose = ( type, event ) => {
|
|
217
|
+
// Ideally the popover should have just a single onClose prop and
|
|
218
|
+
// not three props that potentially do the same thing.
|
|
219
|
+
if ( type === 'focus-outside' && onFocusOutside ) {
|
|
220
|
+
onFocusOutside( event );
|
|
221
|
+
} else if ( onClose ) {
|
|
222
|
+
onClose();
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
}
|
|
222
226
|
|
|
223
227
|
const [ dialogRef, dialogProps ] = useDialog( {
|
|
224
228
|
focusOnMount,
|
|
@@ -27,6 +27,7 @@ export const _default = () => {
|
|
|
27
27
|
const show = boolean( 'Example: Show', true );
|
|
28
28
|
const children = text( 'children', 'Popover Content' );
|
|
29
29
|
const animate = boolean( 'animate', false );
|
|
30
|
+
const expandOnMobile = boolean( 'expandOnMobile', false );
|
|
30
31
|
const focusOnMount = select(
|
|
31
32
|
'focusOnMount',
|
|
32
33
|
{
|
|
@@ -41,6 +42,7 @@ export const _default = () => {
|
|
|
41
42
|
const props = {
|
|
42
43
|
animate,
|
|
43
44
|
children,
|
|
45
|
+
expandOnMobile,
|
|
44
46
|
focusOnMount,
|
|
45
47
|
noArrow,
|
|
46
48
|
isAlternate,
|
package/src/popover/style.scss
CHANGED
|
@@ -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 } from 'react';
|
|
7
6
|
|
|
@@ -65,7 +64,7 @@ export function RadioControl(
|
|
|
65
64
|
const onChangeValue = ( event: ChangeEvent< HTMLInputElement > ) =>
|
|
66
65
|
onChange( event.target.value );
|
|
67
66
|
|
|
68
|
-
if (
|
|
67
|
+
if ( ! options?.length ) {
|
|
69
68
|
return null;
|
|
70
69
|
}
|
|
71
70
|
|
|
@@ -184,7 +184,7 @@ An icon to be shown above the slider next to its container title.
|
|
|
184
184
|
|
|
185
185
|
### `initialPosition`: `number`
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
The slider starting position, used when no `value` is passed. The `initialPosition` will be clamped between the provided `min` and `max` prop values.
|
|
188
188
|
|
|
189
189
|
- Required: No
|
|
190
190
|
- Platform: Web | Mobile
|
|
@@ -200,6 +200,36 @@ describe( 'RangeControl', () => {
|
|
|
200
200
|
|
|
201
201
|
expect( rangeInput?.value ).toBe( '10' );
|
|
202
202
|
} );
|
|
203
|
+
|
|
204
|
+
it( 'should clamp initialPosition between min and max on first render, and on reset', () => {
|
|
205
|
+
render(
|
|
206
|
+
<RangeControl
|
|
207
|
+
initialPosition={ 200 }
|
|
208
|
+
min={ 0 }
|
|
209
|
+
max={ 100 }
|
|
210
|
+
allowReset
|
|
211
|
+
/>
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
const numberInput = getNumberInput();
|
|
215
|
+
const rangeInput = getRangeInput();
|
|
216
|
+
const resetButton = getResetButton();
|
|
217
|
+
|
|
218
|
+
// Value should be clamped on initial load
|
|
219
|
+
expect( numberInput?.value ).toBe( '100' );
|
|
220
|
+
expect( rangeInput?.value ).toBe( '100' );
|
|
221
|
+
|
|
222
|
+
fireChangeEvent( numberInput, '50' );
|
|
223
|
+
|
|
224
|
+
expect( numberInput?.value ).toBe( '50' );
|
|
225
|
+
expect( rangeInput?.value ).toBe( '50' );
|
|
226
|
+
|
|
227
|
+
// Value should be clamped after resetting
|
|
228
|
+
fireEvent.click( resetButton as Element );
|
|
229
|
+
|
|
230
|
+
expect( numberInput?.value ).toBe( '100' );
|
|
231
|
+
expect( rangeInput?.value ).toBe( '100' );
|
|
232
|
+
} );
|
|
203
233
|
} );
|
|
204
234
|
|
|
205
235
|
describe( 'input field', () => {
|
|
@@ -88,7 +88,7 @@ export type RangeControlProps< IconProps = unknown > = Pick<
|
|
|
88
88
|
*/
|
|
89
89
|
afterIcon?: IconType< IconProps >;
|
|
90
90
|
/**
|
|
91
|
-
* If this property is true, a button to reset the
|
|
91
|
+
* If this property is true, a button to reset the slider is
|
|
92
92
|
* rendered.
|
|
93
93
|
*
|
|
94
94
|
* @default false
|
|
@@ -119,7 +119,9 @@ export type RangeControlProps< IconProps = unknown > = Pick<
|
|
|
119
119
|
*/
|
|
120
120
|
icon?: string;
|
|
121
121
|
/**
|
|
122
|
-
*
|
|
122
|
+
* The slider starting position, used when no `value` is passed.
|
|
123
|
+
* The `initialPosition` will be clamped between the provided `min`
|
|
124
|
+
* and `max` prop values.
|
|
123
125
|
*/
|
|
124
126
|
initialPosition?: number;
|
|
125
127
|
/**
|
|
@@ -50,7 +50,10 @@ export function useControlledRangeValue(
|
|
|
50
50
|
const { min, max, value: valueProp, initial } = settings;
|
|
51
51
|
const [ state, setInternalState ] = useControlledState(
|
|
52
52
|
floatClamp( valueProp, min, max ),
|
|
53
|
-
{
|
|
53
|
+
{
|
|
54
|
+
initial: floatClamp( initial ?? null, min, max ),
|
|
55
|
+
fallback: null,
|
|
56
|
+
}
|
|
54
57
|
);
|
|
55
58
|
|
|
56
59
|
const setState = useCallback(
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { Dimensions,
|
|
4
|
+
import { Dimensions, StyleSheet } from 'react-native';
|
|
5
5
|
import { WebView } from 'react-native-webview';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
10
|
import {
|
|
11
|
+
Platform,
|
|
11
12
|
renderToString,
|
|
12
13
|
memo,
|
|
13
14
|
useRef,
|
|
@@ -307,6 +308,7 @@ function Sandbox( {
|
|
|
307
308
|
style={ [
|
|
308
309
|
sandboxStyles[ 'sandbox-webview__content' ],
|
|
309
310
|
getSizeStyle(),
|
|
311
|
+
Platform.isAndroid && workaroundStyles.webView,
|
|
310
312
|
] }
|
|
311
313
|
onMessage={ checkMessageForResize }
|
|
312
314
|
scrollEnabled={ false }
|
|
@@ -317,4 +319,15 @@ function Sandbox( {
|
|
|
317
319
|
);
|
|
318
320
|
}
|
|
319
321
|
|
|
322
|
+
const workaroundStyles = StyleSheet.create( {
|
|
323
|
+
webView: {
|
|
324
|
+
/**
|
|
325
|
+
* The slight opacity below is a workaround for an Android crash caused from combining Android
|
|
326
|
+
* 12's new scroll overflow behavior and webviews.
|
|
327
|
+
* https://github.com/react-native-webview/react-native-webview/issues/1915#issuecomment-808869253
|
|
328
|
+
*/
|
|
329
|
+
opacity: 0.99,
|
|
330
|
+
},
|
|
331
|
+
} );
|
|
332
|
+
|
|
320
333
|
export default memo( Sandbox );
|
|
@@ -7,7 +7,7 @@ ScrollLock is a content-free React component for declaratively preventing scroll
|
|
|
7
7
|
Declare scroll locking as part of modal UI.
|
|
8
8
|
|
|
9
9
|
```jsx
|
|
10
|
-
import { ScrollLock } from '@wordpress/components';
|
|
10
|
+
import { ScrollLock, Button } from '@wordpress/components';
|
|
11
11
|
import { useState } from '@wordpress/element';
|
|
12
12
|
|
|
13
13
|
const MyScrollLock = () => {
|
|
@@ -12,10 +12,7 @@ import { useEffect } from '@wordpress/element';
|
|
|
12
12
|
*/
|
|
13
13
|
let previousScrollTop = 0;
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
* @param {boolean} locked
|
|
17
|
-
*/
|
|
18
|
-
function setLocked( locked ) {
|
|
15
|
+
function setLocked( locked: boolean ) {
|
|
19
16
|
const scrollingElement = document.scrollingElement || document.body;
|
|
20
17
|
|
|
21
18
|
if ( locked ) {
|
|
@@ -36,11 +33,39 @@ function setLocked( locked ) {
|
|
|
36
33
|
let lockCounter = 0;
|
|
37
34
|
|
|
38
35
|
/**
|
|
39
|
-
*
|
|
36
|
+
* ScrollLock is a content-free React component for declaratively preventing
|
|
37
|
+
* scroll bleed from modal UI to the page body. This component applies a
|
|
38
|
+
* `lockscroll` class to the `document.documentElement` and
|
|
39
|
+
* `document.scrollingElement` elements to stop the body from scrolling. When it
|
|
40
|
+
* is present, the lock is applied.
|
|
41
|
+
*
|
|
42
|
+
* ```jsx
|
|
43
|
+
* import { ScrollLock, Button } from '@wordpress/components';
|
|
44
|
+
* import { useState } from '@wordpress/element';
|
|
40
45
|
*
|
|
41
|
-
*
|
|
46
|
+
* const MyScrollLock = () => {
|
|
47
|
+
* const [ isScrollLocked, setIsScrollLocked ] = useState( false );
|
|
48
|
+
*
|
|
49
|
+
* const toggleLock = () => {
|
|
50
|
+
* setIsScrollLocked( ( locked ) => ! locked ) );
|
|
51
|
+
* };
|
|
52
|
+
*
|
|
53
|
+
* return (
|
|
54
|
+
* <div>
|
|
55
|
+
* <Button variant="secondary" onClick={ toggleLock }>
|
|
56
|
+
* Toggle scroll lock
|
|
57
|
+
* </Button>
|
|
58
|
+
* { isScrollLocked && <ScrollLock /> }
|
|
59
|
+
* <p>
|
|
60
|
+
* Scroll locked:
|
|
61
|
+
* <strong>{ isScrollLocked ? 'Yes' : 'No' }</strong>
|
|
62
|
+
* </p>
|
|
63
|
+
* </div>
|
|
64
|
+
* );
|
|
65
|
+
* };
|
|
66
|
+
* ```
|
|
42
67
|
*/
|
|
43
|
-
export
|
|
68
|
+
export function ScrollLock(): null {
|
|
44
69
|
useEffect( () => {
|
|
45
70
|
if ( lockCounter === 0 ) {
|
|
46
71
|
setLocked( true );
|
|
@@ -59,3 +84,5 @@ export default function ScrollLock() {
|
|
|
59
84
|
|
|
60
85
|
return null;
|
|
61
86
|
}
|
|
87
|
+
|
|
88
|
+
export default ScrollLock;
|