@wordpress/components 23.6.0 → 23.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -4
- package/build/angle-picker-control/angle-circle.js +1 -4
- package/build/angle-picker-control/angle-circle.js.map +1 -1
- package/build/angle-picker-control/index.js +10 -22
- package/build/angle-picker-control/index.js.map +1 -1
- package/build/angle-picker-control/styles/angle-picker-control-styles.js +24 -15
- package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
- package/build/animate/index.js +27 -19
- package/build/animate/index.js.map +1 -1
- package/build/animate/types.js.map +1 -0
- package/build/box-control/axial-input-controls.js.map +1 -1
- package/build/color-picker/color-input.js +0 -4
- package/build/color-picker/color-input.js.map +1 -1
- package/build/color-picker/component.js +5 -4
- package/build/color-picker/component.js.map +1 -1
- package/build/color-picker/hex-input.js.map +1 -1
- package/build/color-picker/hsl-input.js.map +1 -1
- package/build/color-picker/input-with-slider.js.map +1 -1
- package/build/color-picker/legacy-adapter.js.map +1 -1
- package/build/color-picker/picker.js.map +1 -1
- package/build/color-picker/rgb-input.js.map +1 -1
- package/build/color-picker/use-deprecated-props.js.map +1 -1
- package/build/custom-gradient-picker/constants.js +1 -1
- package/build/custom-gradient-picker/constants.js.map +1 -1
- package/build/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
- package/build/custom-gradient-picker/gradient-bar/control-points.js +9 -5
- package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
- package/build/custom-gradient-picker/gradient-bar/index.js +14 -9
- package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -1
- package/build/custom-gradient-picker/gradient-bar/utils.js +34 -54
- package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
- package/build/custom-gradient-picker/index.js +45 -16
- package/build/custom-gradient-picker/index.js.map +1 -1
- package/build/custom-gradient-picker/serializer.js +10 -4
- package/build/custom-gradient-picker/serializer.js.map +1 -1
- package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
- package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
- package/build/custom-gradient-picker/types.js +6 -0
- package/build/custom-gradient-picker/types.js.map +1 -0
- package/build/custom-gradient-picker/utils.js +17 -12
- package/build/custom-gradient-picker/utils.js.map +1 -1
- package/build/drop-zone/index.js +8 -8
- package/build/drop-zone/index.js.map +1 -1
- package/build/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
- package/build/duotone-picker/color-list-picker/index.js.map +1 -0
- package/build/duotone-picker/color-list-picker/types.js +6 -0
- package/build/duotone-picker/color-list-picker/types.js.map +1 -0
- package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
- package/build/duotone-picker/duotone-picker.js +39 -2
- package/build/duotone-picker/duotone-picker.js.map +1 -1
- package/build/duotone-picker/duotone-swatch.js.map +1 -1
- package/build/duotone-picker/index.js.map +1 -1
- package/build/duotone-picker/types.js +6 -0
- package/build/duotone-picker/types.js.map +1 -0
- package/build/duotone-picker/utils.js +13 -11
- package/build/duotone-picker/utils.js.map +1 -1
- package/build/form-token-field/index.js +9 -3
- package/build/form-token-field/index.js.map +1 -1
- package/build/gradient-picker/index.js +61 -9
- package/build/gradient-picker/index.js.map +1 -1
- package/build/gradient-picker/types.js +6 -0
- package/build/gradient-picker/types.js.map +1 -0
- package/build/index.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/index.android.js +0 -4
- package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/index.ios.js +100 -55
- package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +82 -0
- package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
- package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +85 -0
- package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
- package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +44 -0
- package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
- package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +53 -0
- package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
- package/build/navigator/navigator-provider/component.js +4 -2
- package/build/navigator/navigator-provider/component.js.map +1 -1
- package/build/navigator/navigator-screen/component.js +4 -3
- package/build/navigator/navigator-screen/component.js.map +1 -1
- package/build/palette-edit/index.js +1 -2
- package/build/palette-edit/index.js.map +1 -1
- package/build/private-apis.js.map +1 -1
- package/build/query-controls/author-select.js +2 -1
- package/build/query-controls/author-select.js.map +1 -1
- package/build/query-controls/category-select.js +3 -1
- package/build/query-controls/category-select.js.map +1 -1
- package/build/query-controls/index.js +7 -1
- package/build/query-controls/index.js.map +1 -1
- package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
- package/build/sandbox/index.native.js +129 -93
- package/build/sandbox/index.native.js.map +1 -1
- package/build/tab-panel/index.js +1 -1
- package/build/tab-panel/index.js.map +1 -1
- package/build/tools-panel/tools-panel/hook.js +45 -6
- package/build/tools-panel/tools-panel/hook.js.map +1 -1
- package/build/utils/input/input-control.js +1 -1
- package/build/utils/input/input-control.js.map +1 -1
- package/build-module/angle-picker-control/angle-circle.js +1 -4
- package/build-module/angle-picker-control/angle-circle.js.map +1 -1
- package/build-module/angle-picker-control/index.js +12 -21
- package/build-module/angle-picker-control/index.js.map +1 -1
- package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +20 -13
- package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
- package/build-module/animate/index.js +25 -17
- package/build-module/animate/index.js.map +1 -1
- package/build-module/box-control/axial-input-controls.js.map +1 -1
- package/build-module/color-picker/color-input.js +0 -4
- package/build-module/color-picker/color-input.js.map +1 -1
- package/build-module/color-picker/component.js +3 -3
- package/build-module/color-picker/component.js.map +1 -1
- package/build-module/color-picker/hex-input.js.map +1 -1
- package/build-module/color-picker/hsl-input.js.map +1 -1
- package/build-module/color-picker/input-with-slider.js.map +1 -1
- package/build-module/color-picker/legacy-adapter.js.map +1 -1
- package/build-module/color-picker/picker.js +4 -0
- package/build-module/color-picker/picker.js.map +1 -1
- package/build-module/color-picker/rgb-input.js.map +1 -1
- package/build-module/color-picker/use-deprecated-props.js.map +1 -1
- package/build-module/custom-gradient-picker/constants.js +1 -1
- package/build-module/custom-gradient-picker/constants.js.map +1 -1
- package/build-module/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
- package/build-module/custom-gradient-picker/gradient-bar/control-points.js +9 -4
- package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
- package/build-module/custom-gradient-picker/gradient-bar/index.js +14 -8
- package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -1
- package/build-module/custom-gradient-picker/gradient-bar/utils.js +34 -54
- package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
- package/build-module/custom-gradient-picker/index.js +44 -17
- package/build-module/custom-gradient-picker/index.js.map +1 -1
- package/build-module/custom-gradient-picker/serializer.js +10 -4
- package/build-module/custom-gradient-picker/serializer.js.map +1 -1
- package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
- package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
- package/build-module/custom-gradient-picker/types.js +2 -0
- package/build-module/custom-gradient-picker/utils.js +17 -12
- package/build-module/custom-gradient-picker/utils.js.map +1 -1
- package/build-module/drop-zone/index.js +8 -8
- package/build-module/drop-zone/index.js.map +1 -1
- package/build-module/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
- package/build-module/duotone-picker/color-list-picker/index.js.map +1 -0
- package/build-module/duotone-picker/color-list-picker/types.js +2 -0
- package/build-module/duotone-picker/color-list-picker/types.js.map +1 -0
- package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
- package/build-module/duotone-picker/duotone-picker.js +38 -2
- package/build-module/duotone-picker/duotone-picker.js.map +1 -1
- package/build-module/duotone-picker/duotone-swatch.js.map +1 -1
- package/build-module/duotone-picker/index.js.map +1 -1
- package/build-module/duotone-picker/types.js +2 -0
- package/build-module/duotone-picker/types.js.map +1 -0
- package/build-module/duotone-picker/utils.js +17 -11
- package/build-module/duotone-picker/utils.js.map +1 -1
- package/build-module/form-token-field/index.js +9 -4
- package/build-module/form-token-field/index.js.map +1 -1
- package/build-module/gradient-picker/index.js +61 -10
- package/build-module/gradient-picker/index.js.map +1 -1
- package/build-module/gradient-picker/types.js +2 -0
- package/build-module/gradient-picker/types.js.map +1 -0
- package/build-module/index.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/index.android.js +0 -4
- package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +97 -54
- package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +73 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +76 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +33 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +40 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
- package/build-module/navigator/navigator-provider/component.js +4 -2
- package/build-module/navigator/navigator-provider/component.js.map +1 -1
- package/build-module/navigator/navigator-screen/component.js +4 -3
- package/build-module/navigator/navigator-screen/component.js.map +1 -1
- package/build-module/palette-edit/index.js +1 -2
- package/build-module/palette-edit/index.js.map +1 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/query-controls/author-select.js +2 -1
- package/build-module/query-controls/author-select.js.map +1 -1
- package/build-module/query-controls/category-select.js +3 -1
- package/build-module/query-controls/category-select.js.map +1 -1
- package/build-module/query-controls/index.js +7 -2
- package/build-module/query-controls/index.js.map +1 -1
- package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
- package/build-module/sandbox/index.native.js +121 -87
- package/build-module/sandbox/index.native.js.map +1 -1
- package/build-module/tab-panel/index.js +2 -2
- package/build-module/tab-panel/index.js.map +1 -1
- package/build-module/tools-panel/tools-panel/hook.js +45 -6
- package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
- package/build-module/utils/input/input-control.js +1 -1
- package/build-module/utils/input/input-control.js.map +1 -1
- package/build-style/style-rtl.css +41 -29
- package/build-style/style.css +43 -29
- package/build-types/angle-picker-control/angle-circle.d.ts.map +1 -1
- package/build-types/angle-picker-control/index.d.ts.map +1 -1
- package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts +6 -1
- package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -1
- package/build-types/animate/index.d.ts +27 -22
- package/build-types/animate/index.d.ts.map +1 -1
- package/build-types/animate/stories/index.d.ts +18 -0
- package/build-types/animate/stories/index.d.ts.map +1 -0
- package/build-types/animate/types.d.ts +30 -0
- package/build-types/animate/types.d.ts.map +1 -0
- package/build-types/border-box-control/border-box-control/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
- package/build-types/border-control/border-control/hook.d.ts +2 -2
- package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -2
- package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
- package/build-types/box-control/styles/box-control-styles.d.ts +5 -5
- package/build-types/button/deprecated.d.ts +2 -2
- package/build-types/card/card/hook.d.ts +2 -2
- package/build-types/card/card-body/hook.d.ts +2 -2
- package/build-types/card/card-divider/hook.d.ts +2 -2
- package/build-types/card/card-footer/hook.d.ts +2 -2
- package/build-types/card/card-header/hook.d.ts +2 -2
- package/build-types/card/card-media/hook.d.ts +2 -2
- package/build-types/color-palette/styles.d.ts +1 -1
- package/build-types/color-picker/color-input.d.ts +1 -11
- package/build-types/color-picker/color-input.d.ts.map +1 -1
- package/build-types/color-picker/component.d.ts +8 -9
- package/build-types/color-picker/component.d.ts.map +1 -1
- package/build-types/color-picker/hex-input.d.ts +1 -10
- package/build-types/color-picker/hex-input.d.ts.map +1 -1
- package/build-types/color-picker/hsl-input.d.ts +1 -10
- package/build-types/color-picker/hsl-input.d.ts.map +1 -1
- package/build-types/color-picker/input-with-slider.d.ts +1 -9
- package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
- package/build-types/color-picker/legacy-adapter.d.ts +1 -3
- package/build-types/color-picker/legacy-adapter.d.ts.map +1 -1
- package/build-types/color-picker/picker.d.ts +4 -7
- package/build-types/color-picker/picker.d.ts.map +1 -1
- package/build-types/color-picker/rgb-input.d.ts +1 -10
- package/build-types/color-picker/rgb-input.d.ts.map +1 -1
- package/build-types/color-picker/stories/index.d.ts +19 -0
- package/build-types/color-picker/stories/index.d.ts.map +1 -0
- package/build-types/color-picker/styles.d.ts +5 -5
- package/build-types/color-picker/test/index.d.ts +2 -0
- package/build-types/color-picker/test/index.d.ts.map +1 -0
- package/build-types/color-picker/types.d.ts +105 -1
- package/build-types/color-picker/types.d.ts.map +1 -1
- package/build-types/color-picker/use-deprecated-props.d.ts +1 -44
- package/build-types/color-picker/use-deprecated-props.d.ts.map +1 -1
- package/build-types/combobox-control/styles.d.ts +1 -1
- package/build-types/custom-gradient-picker/constants.d.ts +8 -8
- package/build-types/custom-gradient-picker/constants.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts +7 -7
- package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts +5 -22
- package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/gradient-bar/index.d.ts +3 -9
- package/build-types/custom-gradient-picker/gradient-bar/index.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts +2 -0
- package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts.map +1 -0
- package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts +44 -92
- package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/index.d.ts +27 -6
- package/build-types/custom-gradient-picker/index.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/serializer.d.ts +9 -16
- package/build-types/custom-gradient-picker/serializer.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/stories/index.d.ts +12 -0
- package/build-types/custom-gradient-picker/stories/index.d.ts.map +1 -0
- package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +3 -2
- package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/test/serializer.d.ts +2 -0
- package/build-types/custom-gradient-picker/test/serializer.d.ts.map +1 -0
- package/build-types/custom-gradient-picker/types.d.ts +118 -0
- package/build-types/custom-gradient-picker/types.d.ts.map +1 -0
- package/build-types/custom-gradient-picker/utils.d.ts +12 -4
- package/build-types/custom-gradient-picker/utils.d.ts.map +1 -1
- package/build-types/date-time/date/styles.d.ts +2 -2
- package/build-types/date-time/date-time/styles.d.ts +1 -1
- package/build-types/date-time/time/styles.d.ts +8 -8
- package/build-types/drop-zone/index.d.ts.map +1 -1
- package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -0
- package/build-types/{color-list-picker → duotone-picker/color-list-picker}/types.d.ts +2 -2
- package/build-types/duotone-picker/color-list-picker/types.d.ts.map +1 -0
- package/build-types/duotone-picker/custom-duotone-bar.d.ts +6 -0
- package/build-types/duotone-picker/custom-duotone-bar.d.ts.map +1 -0
- package/build-types/duotone-picker/duotone-picker.d.ts +38 -0
- package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -0
- package/build-types/duotone-picker/duotone-swatch.d.ts +5 -0
- package/build-types/duotone-picker/duotone-swatch.d.ts.map +1 -0
- package/build-types/duotone-picker/index.d.ts +3 -0
- package/build-types/duotone-picker/index.d.ts.map +1 -0
- package/build-types/duotone-picker/stories/duotone-picker.d.ts +12 -0
- package/build-types/duotone-picker/stories/duotone-picker.d.ts.map +1 -0
- package/build-types/duotone-picker/stories/duotone-swatch.d.ts +14 -0
- package/build-types/duotone-picker/stories/duotone-swatch.d.ts.map +1 -0
- package/build-types/duotone-picker/types.d.ts +60 -0
- package/build-types/duotone-picker/types.d.ts.map +1 -0
- package/build-types/duotone-picker/utils.d.ts +52 -0
- package/build-types/duotone-picker/utils.d.ts.map +1 -0
- package/build-types/elevation/hook.d.ts +2 -2
- package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
- package/build-types/flex/flex/hook.d.ts +2 -2
- package/build-types/flex/flex-block/hook.d.ts +2 -2
- package/build-types/flex/flex-item/hook.d.ts +2 -2
- package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -2
- package/build-types/form-token-field/index.d.ts.map +1 -1
- package/build-types/form-token-field/styles.d.ts +1 -1
- package/build-types/form-token-field/types.d.ts +6 -0
- package/build-types/form-token-field/types.d.ts.map +1 -1
- package/build-types/gradient-picker/index.d.ts +49 -11
- package/build-types/gradient-picker/index.d.ts.map +1 -1
- package/build-types/gradient-picker/stories/index.d.ts +14 -0
- package/build-types/gradient-picker/stories/index.d.ts.map +1 -0
- package/build-types/gradient-picker/types.d.ts +87 -0
- package/build-types/gradient-picker/types.d.ts.map +1 -0
- package/build-types/grid/hook.d.ts +2 -2
- package/build-types/h-stack/hook.d.ts +2 -2
- package/build-types/heading/hook.d.ts +2 -2
- package/build-types/index.d.ts +128 -0
- package/build-types/index.d.ts.map +1 -0
- package/build-types/input-control/styles/input-control-styles.d.ts +2 -2
- package/build-types/item-group/item/hook.d.ts +2 -2
- package/build-types/item-group/item-group/hook.d.ts +2 -2
- package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
- package/build-types/navigator/navigator-back-button/hook.d.ts +2 -2
- package/build-types/navigator/navigator-button/hook.d.ts +2 -2
- package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-screen/component.d.ts +1 -1
- package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
- package/build-types/navigator/stories/index.d.ts +1 -0
- package/build-types/navigator/stories/index.d.ts.map +1 -1
- package/build-types/navigator/types.d.ts +2 -2
- package/build-types/navigator/types.d.ts.map +1 -1
- package/build-types/number-control/index.d.ts +2 -2
- package/build-types/number-control/stories/index.d.ts +2 -2
- package/build-types/palette-edit/index.d.ts.map +1 -1
- package/build-types/palette-edit/styles.d.ts +3 -3
- package/build-types/popover/index.d.ts +1 -1
- package/build-types/popover/stories/e2e/index.d.ts +1 -1
- package/build-types/private-apis.d.ts +2 -3
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/query-controls/author-select.d.ts.map +1 -1
- package/build-types/query-controls/category-select.d.ts.map +1 -1
- package/build-types/query-controls/index.d.ts.map +1 -1
- package/build-types/range-control/index.d.ts +1 -1
- package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
- package/build-types/resizable-box/index.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/utils.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
- package/build-types/resizable-box/stories/index.d.ts +2 -2
- package/build-types/scrollable/hook.d.ts +2 -2
- package/build-types/search-control/index.d.ts +1 -1
- package/build-types/search-control/stories/index.d.ts +2 -2
- package/build-types/spacer/hook.d.ts +2 -2
- package/build-types/spinner/index.d.ts +1 -1
- package/build-types/surface/hook.d.ts +2 -2
- package/build-types/tab-panel/index.d.ts.map +1 -1
- package/build-types/text/hook.d.ts +2 -2
- package/build-types/text-control/index.d.ts +1 -1
- package/build-types/toolbar/toolbar-button/index.d.ts +2 -2
- package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
- package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
- package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
- package/build-types/tools-panel/types.d.ts +1 -0
- package/build-types/tools-panel/types.d.ts.map +1 -1
- package/build-types/truncate/hook.d.ts +2 -2
- package/build-types/ui/control-group/hook.d.ts +2 -2
- package/build-types/ui/control-label/hook.d.ts +2 -2
- package/build-types/ui/form-group/form-group.d.ts +2 -2
- package/build-types/ui/form-group/use-form-group.d.ts +2 -2
- package/build-types/unit-control/index.d.ts +1 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
- package/build-types/utils/input/input-control.d.ts.map +1 -1
- package/build-types/v-stack/hook.d.ts +2 -2
- package/package.json +20 -19
- package/src/angle-picker-control/angle-circle.tsx +0 -1
- package/src/angle-picker-control/index.tsx +14 -27
- package/src/angle-picker-control/styles/angle-picker-control-styles.tsx +16 -9
- package/src/animate/index.tsx +75 -0
- package/src/animate/stories/index.tsx +102 -0
- package/src/animate/types.ts +32 -0
- package/src/border-box-control/stories/index.tsx +1 -1
- package/src/box-control/axial-input-controls.tsx +1 -1
- package/src/circular-option-picker/style.scss +10 -0
- package/src/color-indicator/style.scss +1 -0
- package/src/color-picker/README.md +2 -2
- package/src/color-picker/color-input.tsx +1 -12
- package/src/color-picker/component.tsx +9 -18
- package/src/color-picker/hex-input.tsx +2 -7
- package/src/color-picker/hsl-input.tsx +2 -7
- package/src/color-picker/input-with-slider.tsx +1 -9
- package/src/color-picker/legacy-adapter.tsx +1 -2
- package/src/color-picker/picker.tsx +5 -6
- package/src/color-picker/rgb-input.tsx +2 -7
- package/src/color-picker/stories/index.tsx +51 -0
- package/src/color-picker/test/{index.js → index.tsx} +36 -18
- package/src/color-picker/types.ts +128 -1
- package/src/color-picker/use-deprecated-props.ts +2 -53
- package/src/combobox-control/stories/index.tsx +1 -1
- package/src/custom-gradient-picker/{constants.js → constants.ts} +2 -2
- package/src/custom-gradient-picker/gradient-bar/{control-points.js → control-points.tsx} +171 -134
- package/src/custom-gradient-picker/gradient-bar/{index.js → index.tsx} +32 -10
- package/src/custom-gradient-picker/gradient-bar/test/{utils.js → utils.ts} +58 -31
- package/src/custom-gradient-picker/gradient-bar/utils.ts +193 -0
- package/src/custom-gradient-picker/{index.js → index.tsx} +63 -22
- package/src/custom-gradient-picker/serializer.ts +78 -0
- package/src/custom-gradient-picker/stories/index.tsx +45 -0
- package/src/custom-gradient-picker/style.scss +25 -4
- package/src/custom-gradient-picker/test/{serializer.js → serializer.ts} +39 -33
- package/src/custom-gradient-picker/types.ts +119 -0
- package/src/custom-gradient-picker/{utils.js → utils.ts} +37 -22
- package/src/custom-select-control/test/index.js +6 -4
- package/src/drop-zone/index.tsx +12 -8
- package/src/drop-zone/style.scss +1 -1
- package/src/{color-list-picker → duotone-picker/color-list-picker}/index.tsx +7 -6
- package/src/{color-list-picker → duotone-picker/color-list-picker}/types.ts +2 -2
- package/src/duotone-picker/{custom-duotone-bar.js → custom-duotone-bar.tsx} +7 -1
- package/src/duotone-picker/{duotone-picker.js → duotone-picker.tsx} +39 -2
- package/src/duotone-picker/{duotone-swatch.js → duotone-swatch.tsx} +2 -1
- package/src/duotone-picker/stories/{duotone-picker.js → duotone-picker.tsx} +15 -8
- package/src/duotone-picker/stories/{duotone-swatch.js → duotone-swatch.tsx} +9 -3
- package/src/duotone-picker/types.ts +61 -0
- package/src/duotone-picker/{utils.js → utils.ts} +29 -14
- package/src/flex/flex-item/README.md +1 -1
- package/src/form-token-field/README.md +1 -0
- package/src/form-token-field/index.tsx +10 -3
- package/src/form-token-field/style.scss +0 -7
- package/src/form-token-field/test/index.tsx +1 -0
- package/src/form-token-field/types.ts +6 -0
- package/src/gradient-picker/README.md +16 -23
- package/src/gradient-picker/{index.js → index.tsx} +70 -16
- package/src/gradient-picker/stories/{index.js → index.tsx} +19 -8
- package/src/gradient-picker/types.ts +89 -0
- package/src/item-group/test/index.js +5 -3
- package/src/mobile/keyboard-aware-flat-list/index.android.js +0 -4
- package/src/mobile/keyboard-aware-flat-list/index.ios.js +118 -67
- package/src/mobile/keyboard-aware-flat-list/test/use-keyboard-offset.native.js +203 -0
- package/src/mobile/keyboard-aware-flat-list/test/use-scroll-to-text-input.native.js +140 -0
- package/src/mobile/keyboard-aware-flat-list/test/use-text-input-caret-position.native.js +82 -0
- package/src/mobile/keyboard-aware-flat-list/test/use-text-input-offset.native.js +147 -0
- package/src/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +87 -0
- package/src/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +105 -0
- package/src/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +36 -0
- package/src/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +54 -0
- package/src/navigator/navigator-provider/component.tsx +2 -0
- package/src/navigator/navigator-screen/component.tsx +5 -2
- package/src/navigator/stories/index.tsx +68 -0
- package/src/navigator/test/index.tsx +52 -0
- package/src/navigator/types.ts +2 -1
- package/src/palette-edit/index.tsx +4 -5
- package/src/query-controls/author-select.tsx +1 -0
- package/src/query-controls/category-select.tsx +1 -0
- package/src/query-controls/index.tsx +4 -2
- package/src/resizable-box/resize-tooltip/utils.ts +1 -1
- package/src/sandbox/index.native.js +139 -112
- package/src/slot-fill/test/slot.js +8 -6
- package/src/style.scss +1 -1
- package/src/tab-panel/index.tsx +7 -2
- package/src/tools-panel/test/index.tsx +86 -0
- package/src/tools-panel/tools-panel/hook.ts +44 -4
- package/src/tools-panel/types.ts +1 -0
- package/src/tooltip/test/index.js +251 -301
- package/src/utils/input/input-control.js +1 -0
- package/tsconfig.json +1 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/build/color-list-picker/index.js.map +0 -1
- package/build-module/color-list-picker/index.js.map +0 -1
- package/build-types/color-list-picker/index.d.ts.map +0 -1
- package/build-types/color-list-picker/types.d.ts.map +0 -1
- package/src/animate/index.js +0 -60
- package/src/animate/stories/index.js +0 -53
- package/src/color-picker/stories/index.js +0 -41
- package/src/custom-gradient-picker/gradient-bar/utils.js +0 -189
- package/src/custom-gradient-picker/serializer.js +0 -48
- package/src/custom-gradient-picker/stories/index.js +0 -33
- /package/build/{color-list-picker → animate}/types.js +0 -0
- /package/build-module/{color-list-picker → animate}/types.js +0 -0
- /package/build-module/{color-list-picker → animate}/types.js.map +0 -0
- /package/{build/color-list-picker → build-module/custom-gradient-picker}/types.js.map +0 -0
- /package/build-types/{color-list-picker → duotone-picker/color-list-picker}/index.d.ts +0 -0
- /package/src/custom-gradient-picker/gradient-bar/{constants.js → constants.ts} +0 -0
- /package/src/custom-gradient-picker/styles/{custom-gradient-picker-styles.js → custom-gradient-picker-styles.tsx} +0 -0
- /package/src/{color-list-picker → duotone-picker/color-list-picker}/style.scss +0 -0
- /package/src/duotone-picker/{index.js → index.ts} +0 -0
- /package/src/{index.js → index.ts} +0 -0
- /package/src/{private-apis.js → private-apis.ts} +0 -0
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
NavigatorToParentButton,
|
|
23
23
|
useNavigator,
|
|
24
24
|
} from '..';
|
|
25
|
+
import type { NavigateOptions } from '../types';
|
|
25
26
|
|
|
26
27
|
const INVALID_HTML_ATTRIBUTE = {
|
|
27
28
|
raw: ' "\'><=invalid_path',
|
|
@@ -57,6 +58,7 @@ const BUTTON_TEXT = {
|
|
|
57
58
|
'Navigate to screen with an invalid HTML value as a path.',
|
|
58
59
|
back: 'Go back',
|
|
59
60
|
backUsingGoTo: 'Go back using goTo',
|
|
61
|
+
goToWithSkipFocus: 'Go to with skipFocus',
|
|
60
62
|
};
|
|
61
63
|
|
|
62
64
|
type CustomTestOnClickHandler = (
|
|
@@ -64,6 +66,7 @@ type CustomTestOnClickHandler = (
|
|
|
64
66
|
| {
|
|
65
67
|
type: 'goTo';
|
|
66
68
|
path: string;
|
|
69
|
+
options?: NavigateOptions;
|
|
67
70
|
}
|
|
68
71
|
| { type: 'goBack' }
|
|
69
72
|
| { type: 'goToParent' }
|
|
@@ -108,6 +111,26 @@ function CustomNavigatorGoToBackButton( {
|
|
|
108
111
|
);
|
|
109
112
|
}
|
|
110
113
|
|
|
114
|
+
function CustomNavigatorGoToSkipFocusButton( {
|
|
115
|
+
path,
|
|
116
|
+
onClick,
|
|
117
|
+
...props
|
|
118
|
+
}: Omit< ComponentPropsWithoutRef< typeof NavigatorButton >, 'onClick' > & {
|
|
119
|
+
onClick?: CustomTestOnClickHandler;
|
|
120
|
+
} ) {
|
|
121
|
+
const { goTo } = useNavigator();
|
|
122
|
+
return (
|
|
123
|
+
<Button
|
|
124
|
+
onClick={ () => {
|
|
125
|
+
goTo( path, { skipFocus: true } );
|
|
126
|
+
// Used to spy on the values passed to `navigator.goTo`.
|
|
127
|
+
onClick?.( { type: 'goTo', path } );
|
|
128
|
+
} }
|
|
129
|
+
{ ...props }
|
|
130
|
+
/>
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
111
134
|
function CustomNavigatorBackButton( {
|
|
112
135
|
onClick,
|
|
113
136
|
...props
|
|
@@ -342,6 +365,12 @@ const MyHierarchicalNavigation = ( {
|
|
|
342
365
|
{ BUTTON_TEXT.backUsingGoTo }
|
|
343
366
|
</CustomNavigatorGoToBackButton>
|
|
344
367
|
</NavigatorScreen>
|
|
368
|
+
<CustomNavigatorGoToSkipFocusButton
|
|
369
|
+
path={ PATHS.NESTED }
|
|
370
|
+
onClick={ onNavigatorButtonClick }
|
|
371
|
+
>
|
|
372
|
+
{ BUTTON_TEXT.goToWithSkipFocus }
|
|
373
|
+
</CustomNavigatorGoToSkipFocusButton>
|
|
345
374
|
</NavigatorProvider>
|
|
346
375
|
</>
|
|
347
376
|
);
|
|
@@ -716,6 +745,29 @@ describe( 'Navigator', () => {
|
|
|
716
745
|
await user.click( getNavigationButton( 'back' ) );
|
|
717
746
|
expect( getNavigationButton( 'toChildScreen' ) ).toHaveFocus();
|
|
718
747
|
} );
|
|
748
|
+
|
|
749
|
+
it( 'should skip focus based on location `skipFocus` option', async () => {
|
|
750
|
+
const user = userEvent.setup();
|
|
751
|
+
render( <MyHierarchicalNavigation /> );
|
|
752
|
+
|
|
753
|
+
// Navigate to child screen with skipFocus.
|
|
754
|
+
await user.click( getNavigationButton( 'goToWithSkipFocus' ) );
|
|
755
|
+
expect( queryScreen( 'home' ) ).not.toBeInTheDocument();
|
|
756
|
+
expect( getScreen( 'nested' ) ).toBeInTheDocument();
|
|
757
|
+
|
|
758
|
+
// The clicked button should remain focused.
|
|
759
|
+
expect( getNavigationButton( 'goToWithSkipFocus' ) ).toHaveFocus();
|
|
760
|
+
|
|
761
|
+
// Navigate back to parent screen.
|
|
762
|
+
await user.click( getNavigationButton( 'back' ) );
|
|
763
|
+
expect( getScreen( 'child' ) ).toBeInTheDocument();
|
|
764
|
+
// The first tabbable element receives focus.
|
|
765
|
+
expect(
|
|
766
|
+
screen.getByRole( 'button', {
|
|
767
|
+
name: 'First tabbable child screen button',
|
|
768
|
+
} )
|
|
769
|
+
).toHaveFocus();
|
|
770
|
+
} );
|
|
719
771
|
} );
|
|
720
772
|
|
|
721
773
|
describe( 'animation', () => {
|
package/src/navigator/types.ts
CHANGED
|
@@ -10,9 +10,10 @@ import type { ButtonAsButtonProps } from '../button/types';
|
|
|
10
10
|
|
|
11
11
|
export type MatchParams = Record< string, string | string[] >;
|
|
12
12
|
|
|
13
|
-
type NavigateOptions = {
|
|
13
|
+
export type NavigateOptions = {
|
|
14
14
|
focusTargetSelector?: string;
|
|
15
15
|
isBack?: boolean;
|
|
16
|
+
skipFocus?: boolean;
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
export type NavigatorLocation = NavigateOptions & {
|
|
@@ -133,7 +133,7 @@ function ColorPickerPopover< T extends Color | Gradient >( {
|
|
|
133
133
|
__nextHasNoMargin
|
|
134
134
|
__experimentalIsRenderedInSidebar
|
|
135
135
|
value={ element.gradient }
|
|
136
|
-
onChange={ ( newGradient
|
|
136
|
+
onChange={ ( newGradient ) => {
|
|
137
137
|
onChange( {
|
|
138
138
|
...element,
|
|
139
139
|
gradient: newGradient,
|
|
@@ -532,7 +532,7 @@ export function PaletteEdit( {
|
|
|
532
532
|
{ hasElements && (
|
|
533
533
|
<>
|
|
534
534
|
{ isEditing && (
|
|
535
|
-
<PaletteEditListView< typeof elements[ number ] >
|
|
535
|
+
<PaletteEditListView< ( typeof elements )[ number ] >
|
|
536
536
|
canOnlyChangeValues={ canOnlyChangeValues }
|
|
537
537
|
elements={ elements }
|
|
538
538
|
// @ts-expect-error TODO: Don't know how to resolve
|
|
@@ -548,13 +548,13 @@ export function PaletteEdit( {
|
|
|
548
548
|
isGradient={ isGradient }
|
|
549
549
|
onClose={ () => setEditingElement( null ) }
|
|
550
550
|
onChange={ (
|
|
551
|
-
newElement: typeof elements[ number ]
|
|
551
|
+
newElement: ( typeof elements )[ number ]
|
|
552
552
|
) => {
|
|
553
553
|
debounceOnChange(
|
|
554
554
|
// @ts-expect-error TODO: Don't know how to resolve
|
|
555
555
|
elements.map(
|
|
556
556
|
(
|
|
557
|
-
currentElement: typeof elements[ number ],
|
|
557
|
+
currentElement: ( typeof elements )[ number ],
|
|
558
558
|
currentIndex: number
|
|
559
559
|
) => {
|
|
560
560
|
if (
|
|
@@ -572,7 +572,6 @@ export function PaletteEdit( {
|
|
|
572
572
|
) }
|
|
573
573
|
{ ! isEditing &&
|
|
574
574
|
( isGradient ? (
|
|
575
|
-
// @ts-expect-error TODO: Remove when GradientPicker is typed.
|
|
576
575
|
<GradientPicker
|
|
577
576
|
__nextHasNoMargin
|
|
578
577
|
gradients={ gradients }
|
|
@@ -11,6 +11,7 @@ import CategorySelect from './category-select';
|
|
|
11
11
|
import FormTokenField from '../form-token-field';
|
|
12
12
|
import RangeControl from '../range-control';
|
|
13
13
|
import SelectControl from '../select-control';
|
|
14
|
+
import { VStack } from '../v-stack';
|
|
14
15
|
import type {
|
|
15
16
|
QueryControlsProps,
|
|
16
17
|
QueryControlsWithMultipleCategorySelectionProps,
|
|
@@ -75,7 +76,7 @@ export function QueryControls( {
|
|
|
75
76
|
...props
|
|
76
77
|
}: QueryControlsProps ) {
|
|
77
78
|
return (
|
|
78
|
-
|
|
79
|
+
<VStack spacing="4" className="components-query-controls">
|
|
79
80
|
{ [
|
|
80
81
|
onOrderChange && onOrderByChange && (
|
|
81
82
|
<SelectControl
|
|
@@ -142,6 +143,7 @@ export function QueryControls( {
|
|
|
142
143
|
props.categorySuggestions &&
|
|
143
144
|
props.onCategoryChange && (
|
|
144
145
|
<FormTokenField
|
|
146
|
+
__nextHasNoMarginBottom
|
|
145
147
|
key="query-controls-categories-select"
|
|
146
148
|
label={ __( 'Categories' ) }
|
|
147
149
|
value={
|
|
@@ -185,7 +187,7 @@ export function QueryControls( {
|
|
|
185
187
|
/>
|
|
186
188
|
),
|
|
187
189
|
] }
|
|
188
|
-
|
|
190
|
+
</VStack>
|
|
189
191
|
);
|
|
190
192
|
}
|
|
191
193
|
|
|
@@ -13,7 +13,7 @@ export const POSITIONS = {
|
|
|
13
13
|
corner: 'corner',
|
|
14
14
|
} as const;
|
|
15
15
|
|
|
16
|
-
export type Position = typeof POSITIONS[ keyof typeof POSITIONS ];
|
|
16
|
+
export type Position = ( typeof POSITIONS )[ keyof typeof POSITIONS ];
|
|
17
17
|
|
|
18
18
|
interface UseResizeLabelProps {
|
|
19
19
|
/** The label value. */
|
|
@@ -14,6 +14,8 @@ import {
|
|
|
14
14
|
useRef,
|
|
15
15
|
useState,
|
|
16
16
|
useEffect,
|
|
17
|
+
forwardRef,
|
|
18
|
+
useCallback,
|
|
17
19
|
} from '@wordpress/element';
|
|
18
20
|
import { usePreferredColorScheme } from '@wordpress/compose';
|
|
19
21
|
|
|
@@ -22,85 +24,84 @@ import { usePreferredColorScheme } from '@wordpress/compose';
|
|
|
22
24
|
*/
|
|
23
25
|
import sandboxStyles from './style.scss';
|
|
24
26
|
|
|
25
|
-
const observeAndResizeJS =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// https://github.com/facebook/hermes/issues/114#issuecomment-887106990
|
|
29
|
-
'show source';
|
|
30
|
-
const { MutationObserver } = window;
|
|
27
|
+
const observeAndResizeJS = `
|
|
28
|
+
(function() {
|
|
29
|
+
const { MutationObserver } = window;
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
function sendResize() {
|
|
37
|
-
const clientBoundingRect = document.body.getBoundingClientRect();
|
|
38
|
-
|
|
39
|
-
// The function postMessage is exposed by the react-native-webview library
|
|
40
|
-
// to communicate between React Native and the WebView, in this case,
|
|
41
|
-
// we use it for notifying resize changes.
|
|
42
|
-
window.ReactNativeWebView.postMessage(
|
|
43
|
-
JSON.stringify( {
|
|
44
|
-
action: 'resize',
|
|
45
|
-
width: clientBoundingRect.width,
|
|
46
|
-
height: clientBoundingRect.height,
|
|
47
|
-
} )
|
|
48
|
-
);
|
|
49
|
-
}
|
|
31
|
+
if ( ! MutationObserver || ! document.body || ! window.parent ) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
50
34
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
35
|
+
function sendResize() {
|
|
36
|
+
const clientBoundingRect = document.body.getBoundingClientRect();
|
|
37
|
+
|
|
38
|
+
// The function postMessage is exposed by the react-native-webview library
|
|
39
|
+
// to communicate between React Native and the WebView, in this case,
|
|
40
|
+
// we use it for notifying resize changes.
|
|
41
|
+
window.ReactNativeWebView.postMessage(
|
|
42
|
+
JSON.stringify( {
|
|
43
|
+
action: 'resize',
|
|
44
|
+
width: clientBoundingRect.width,
|
|
45
|
+
height: clientBoundingRect.height,
|
|
46
|
+
} )
|
|
47
|
+
);
|
|
48
|
+
}
|
|
60
49
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
50
|
+
const observer = new MutationObserver( sendResize );
|
|
51
|
+
observer.observe( document.body, {
|
|
52
|
+
attributes: true,
|
|
53
|
+
attributeOldValue: false,
|
|
54
|
+
characterData: true,
|
|
55
|
+
characterDataOldValue: false,
|
|
56
|
+
childList: true,
|
|
57
|
+
subtree: true,
|
|
58
|
+
} );
|
|
59
|
+
|
|
60
|
+
window.addEventListener( 'load', sendResize, true );
|
|
61
|
+
|
|
62
|
+
// Hack: Remove viewport unit styles, as these are relative
|
|
63
|
+
// the iframe root and interfere with our mechanism for
|
|
64
|
+
// determining the unconstrained page bounds.
|
|
65
|
+
function removeViewportStyles( ruleOrNode ) {
|
|
66
|
+
if ( ruleOrNode.style ) {
|
|
67
|
+
[ 'width', 'height', 'minHeight', 'maxHeight' ].forEach( function (
|
|
68
|
+
style
|
|
73
69
|
) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
if (
|
|
71
|
+
/^\\d+(vmin|vmax|vh|vw)$/.test( ruleOrNode.style[ style ] )
|
|
72
|
+
) {
|
|
73
|
+
ruleOrNode.style[ style ] = '';
|
|
74
|
+
}
|
|
75
|
+
} );
|
|
76
|
+
}
|
|
77
77
|
}
|
|
78
|
-
}
|
|
79
78
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
79
|
+
Array.prototype.forEach.call(
|
|
80
|
+
document.querySelectorAll( '[style]' ),
|
|
81
|
+
removeViewportStyles
|
|
82
|
+
);
|
|
83
|
+
Array.prototype.forEach.call(
|
|
84
|
+
document.styleSheets,
|
|
85
|
+
function ( stylesheet ) {
|
|
86
|
+
Array.prototype.forEach.call(
|
|
87
|
+
stylesheet.cssRules || stylesheet.rules,
|
|
88
|
+
removeViewportStyles
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
);
|
|
93
92
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
document.body.style.position = 'absolute';
|
|
94
|
+
document.body.style.width = '100%';
|
|
95
|
+
document.body.setAttribute( 'data-resizable-iframe-connected', '' );
|
|
97
96
|
|
|
98
|
-
|
|
97
|
+
sendResize();
|
|
99
98
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
// Resize events can change the width of elements with 100% width, but we don't
|
|
100
|
+
// get an DOM mutations for that, so do the resize when the window is resized, too.
|
|
101
|
+
window.addEventListener( 'resize', sendResize, true );
|
|
102
|
+
window.addEventListener( 'orientationchange', sendResize, true );
|
|
103
|
+
})();
|
|
104
|
+
`;
|
|
104
105
|
|
|
105
106
|
const style = `
|
|
106
107
|
body {
|
|
@@ -171,20 +172,23 @@ const style = `
|
|
|
171
172
|
|
|
172
173
|
const EMPTY_ARRAY = [];
|
|
173
174
|
|
|
174
|
-
function Sandbox(
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
175
|
+
const Sandbox = forwardRef( function Sandbox(
|
|
176
|
+
{
|
|
177
|
+
containerStyle,
|
|
178
|
+
customJS,
|
|
179
|
+
html = '',
|
|
180
|
+
lang = 'en',
|
|
181
|
+
providerUrl = '',
|
|
182
|
+
scripts = EMPTY_ARRAY,
|
|
183
|
+
styles = EMPTY_ARRAY,
|
|
184
|
+
title = '',
|
|
185
|
+
type,
|
|
186
|
+
url,
|
|
187
|
+
onWindowEvents = {},
|
|
188
|
+
},
|
|
189
|
+
ref
|
|
190
|
+
) {
|
|
186
191
|
const colorScheme = usePreferredColorScheme();
|
|
187
|
-
const ref = useRef();
|
|
188
192
|
const [ height, setHeight ] = useState( 0 );
|
|
189
193
|
const [ contentHtml, setContentHtml ] = useState( getHtmlDoc() );
|
|
190
194
|
|
|
@@ -230,14 +234,6 @@ function Sandbox( {
|
|
|
230
234
|
className={ type }
|
|
231
235
|
>
|
|
232
236
|
<div dangerouslySetInnerHTML={ { __html: html } } />
|
|
233
|
-
<script
|
|
234
|
-
type="text/javascript"
|
|
235
|
-
dangerouslySetInnerHTML={ {
|
|
236
|
-
__html:
|
|
237
|
-
customJS ||
|
|
238
|
-
`(${ observeAndResizeJS.toString() })();`,
|
|
239
|
-
} }
|
|
240
|
-
/>
|
|
241
237
|
{ scripts.map( ( src ) => (
|
|
242
238
|
<script key={ src } src={ src } />
|
|
243
239
|
) ) }
|
|
@@ -247,6 +243,21 @@ function Sandbox( {
|
|
|
247
243
|
return '<!DOCTYPE html>' + renderToString( htmlDoc );
|
|
248
244
|
}
|
|
249
245
|
|
|
246
|
+
const getInjectedJavaScript = useCallback( () => {
|
|
247
|
+
// Allow parent to override the resize observers with prop.customJS (legacy support)
|
|
248
|
+
let injectedJS = customJS || observeAndResizeJS;
|
|
249
|
+
|
|
250
|
+
// Add any event listeners that were passed in.
|
|
251
|
+
Object.keys( onWindowEvents ).forEach( ( eventType ) => {
|
|
252
|
+
injectedJS += `
|
|
253
|
+
window.addEventListener( '${ eventType }', function( event ) {
|
|
254
|
+
window.ReactNativeWebView.postMessage( JSON.stringify( { type: '${ eventType }', ...event.data } ) );
|
|
255
|
+
});`;
|
|
256
|
+
} );
|
|
257
|
+
|
|
258
|
+
return injectedJS;
|
|
259
|
+
}, [ customJS, onWindowEvents ] );
|
|
260
|
+
|
|
250
261
|
function updateContentHtml( forceRerender = false ) {
|
|
251
262
|
const newContentHtml = getHtmlDoc();
|
|
252
263
|
|
|
@@ -261,25 +272,6 @@ function Sandbox( {
|
|
|
261
272
|
}
|
|
262
273
|
}
|
|
263
274
|
|
|
264
|
-
function checkMessageForResize( event ) {
|
|
265
|
-
// Attempt to parse the message data as JSON if passed as string.
|
|
266
|
-
let data = event.nativeEvent.data || {};
|
|
267
|
-
|
|
268
|
-
if ( 'string' === typeof data ) {
|
|
269
|
-
try {
|
|
270
|
-
data = JSON.parse( data );
|
|
271
|
-
} catch ( e ) {}
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
// Update the state only if the message is formatted as we expect,
|
|
275
|
-
// i.e. as an object with a 'resize' action.
|
|
276
|
-
if ( 'resize' !== data.action ) {
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
setHeight( data.height );
|
|
281
|
-
}
|
|
282
|
-
|
|
283
275
|
function getSizeStyle() {
|
|
284
276
|
const contentHeight = Math.ceil( height );
|
|
285
277
|
|
|
@@ -290,6 +282,39 @@ function Sandbox( {
|
|
|
290
282
|
setIsLandscape( dimensions.window.width >= dimensions.window.height );
|
|
291
283
|
}
|
|
292
284
|
|
|
285
|
+
const onMessage = useCallback(
|
|
286
|
+
( message ) => {
|
|
287
|
+
let data = message?.nativeEvent?.data;
|
|
288
|
+
|
|
289
|
+
try {
|
|
290
|
+
data = JSON.parse( data );
|
|
291
|
+
} catch ( e ) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// check for resize event
|
|
296
|
+
if ( 'resize' === data?.action ) {
|
|
297
|
+
setHeight( data.height );
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Forward the event to parent event listeners
|
|
301
|
+
Object.keys( onWindowEvents ).forEach( ( eventType ) => {
|
|
302
|
+
if ( data?.type === eventType ) {
|
|
303
|
+
try {
|
|
304
|
+
onWindowEvents[ eventType ]( data );
|
|
305
|
+
} catch ( e ) {
|
|
306
|
+
// eslint-disable-next-line no-console
|
|
307
|
+
console.warn(
|
|
308
|
+
`Error handling event ${ eventType }`,
|
|
309
|
+
e
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
} );
|
|
314
|
+
},
|
|
315
|
+
[ onWindowEvents ]
|
|
316
|
+
);
|
|
317
|
+
|
|
293
318
|
useEffect( () => {
|
|
294
319
|
const dimensionsChangeSubscription = Dimensions.addEventListener(
|
|
295
320
|
'change',
|
|
@@ -322,6 +347,7 @@ function Sandbox( {
|
|
|
322
347
|
sandboxStyles[ 'sandbox-webview__container' ],
|
|
323
348
|
containerStyle,
|
|
324
349
|
] }
|
|
350
|
+
injectedJavaScript={ getInjectedJavaScript() }
|
|
325
351
|
key={ key }
|
|
326
352
|
ref={ ref }
|
|
327
353
|
source={ { baseUrl: providerUrl, html: contentHtml } }
|
|
@@ -333,14 +359,15 @@ function Sandbox( {
|
|
|
333
359
|
getSizeStyle(),
|
|
334
360
|
Platform.isAndroid && workaroundStyles.webView,
|
|
335
361
|
] }
|
|
336
|
-
onMessage={
|
|
362
|
+
onMessage={ onMessage }
|
|
337
363
|
scrollEnabled={ false }
|
|
338
364
|
setBuiltInZoomControls={ false }
|
|
339
365
|
showsHorizontalScrollIndicator={ false }
|
|
340
366
|
showsVerticalScrollIndicator={ false }
|
|
367
|
+
mediaPlaybackRequiresUserAction={ false }
|
|
341
368
|
/>
|
|
342
369
|
);
|
|
343
|
-
}
|
|
370
|
+
} );
|
|
344
371
|
|
|
345
372
|
const workaroundStyles = StyleSheet.create( {
|
|
346
373
|
webView: {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { render,
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Internal dependencies
|
|
@@ -92,9 +93,9 @@ describe( 'Slot', () => {
|
|
|
92
93
|
expect( container ).toMatchSnapshot();
|
|
93
94
|
} );
|
|
94
95
|
|
|
95
|
-
it( 'calls the functions passed as the Slot’s fillProps in the Fill', () => {
|
|
96
|
+
it( 'calls the functions passed as the Slot’s fillProps in the Fill', async () => {
|
|
96
97
|
const onClose = jest.fn();
|
|
97
|
-
|
|
98
|
+
const user = userEvent.setup();
|
|
98
99
|
render(
|
|
99
100
|
<Provider>
|
|
100
101
|
<Slot name="chicken" fillProps={ { onClose } } />
|
|
@@ -108,7 +109,7 @@ describe( 'Slot', () => {
|
|
|
108
109
|
</Provider>
|
|
109
110
|
);
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
await user.click( screen.getByText( 'Click me' ) );
|
|
112
113
|
|
|
113
114
|
expect( onClose ).toHaveBeenCalledTimes( 1 );
|
|
114
115
|
} );
|
|
@@ -149,7 +150,8 @@ describe( 'Slot', () => {
|
|
|
149
150
|
expect( container ).toMatchSnapshot();
|
|
150
151
|
} );
|
|
151
152
|
|
|
152
|
-
it( 'should re-render Slot when not bubbling virtually', () => {
|
|
153
|
+
it( 'should re-render Slot when not bubbling virtually', async () => {
|
|
154
|
+
const user = userEvent.setup();
|
|
153
155
|
const { container } = render(
|
|
154
156
|
<Provider>
|
|
155
157
|
<div>
|
|
@@ -161,7 +163,7 @@ describe( 'Slot', () => {
|
|
|
161
163
|
|
|
162
164
|
expect( container ).toMatchSnapshot();
|
|
163
165
|
|
|
164
|
-
|
|
166
|
+
await user.click( screen.getByRole( 'button' ) );
|
|
165
167
|
|
|
166
168
|
expect( container ).toMatchSnapshot();
|
|
167
169
|
} );
|
package/src/style.scss
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
@import "./palette-edit/style.scss";
|
|
12
12
|
@import "./color-indicator/style.scss";
|
|
13
13
|
@import "./combobox-control/style.scss";
|
|
14
|
-
@import "./color-list-picker/style.scss";
|
|
15
14
|
@import "./color-palette/style.scss";
|
|
16
15
|
@import "./custom-gradient-picker/style.scss";
|
|
17
16
|
@import "./custom-select-control/style.scss";
|
|
@@ -21,6 +20,7 @@
|
|
|
21
20
|
@import "./dropdown/style.scss";
|
|
22
21
|
@import "./dropdown-menu/style.scss";
|
|
23
22
|
@import "./duotone-picker/style.scss";
|
|
23
|
+
@import "./duotone-picker/color-list-picker/style.scss";
|
|
24
24
|
@import "./form-toggle/style.scss";
|
|
25
25
|
@import "./form-token-field/style.scss";
|
|
26
26
|
@import "./guide/style.scss";
|
package/src/tab-panel/index.tsx
CHANGED
|
@@ -6,7 +6,12 @@ import classnames from 'classnames';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
useState,
|
|
11
|
+
useEffect,
|
|
12
|
+
useLayoutEffect,
|
|
13
|
+
useCallback,
|
|
14
|
+
} from '@wordpress/element';
|
|
10
15
|
import { useInstanceId } from '@wordpress/compose';
|
|
11
16
|
|
|
12
17
|
/**
|
|
@@ -104,7 +109,7 @@ export function TabPanel( {
|
|
|
104
109
|
const selectedId = `${ instanceId }-${ selectedTab?.name ?? 'none' }`;
|
|
105
110
|
|
|
106
111
|
// Handle selecting the initial tab.
|
|
107
|
-
|
|
112
|
+
useLayoutEffect( () => {
|
|
108
113
|
// If there's a selected tab, don't override it.
|
|
109
114
|
if ( selectedTab ) {
|
|
110
115
|
return;
|