@wordpress/block-editor 16.0.1-next.v.202607070741.0 → 16.1.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 +27 -1
- package/README.md +8 -0
- package/build/components/alignment-control/ui.cjs +2 -4
- package/build/components/alignment-control/ui.cjs.map +2 -2
- package/build/components/background-image-control/index.cjs +40 -10
- package/build/components/background-image-control/index.cjs.map +2 -2
- package/build/components/block-alignment-control/ui.cjs +5 -3
- package/build/components/block-alignment-control/ui.cjs.map +2 -2
- package/build/components/block-canvas/index.cjs +6 -1
- package/build/components/block-canvas/index.cjs.map +2 -2
- package/build/components/block-controls/groups.cjs +3 -1
- package/build/components/block-controls/groups.cjs.map +2 -2
- package/build/components/block-edit/edit.cjs +10 -18
- package/build/components/block-edit/edit.cjs.map +2 -2
- package/build/components/block-inspector/index.cjs +73 -46
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-list/block-html.cjs +4 -1
- package/build/components/block-list/block-html.cjs.map +2 -2
- package/build/components/block-list/block.cjs +9 -3
- package/build/components/block-list/block.cjs.map +3 -3
- package/build/components/block-list/index.cjs +1 -3
- package/build/components/block-list/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/index.cjs +7 -2
- package/build/components/block-list/use-block-props/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-focus-first-element.cjs +9 -4
- package/build/components/block-list/use-block-props/use-focus-first-element.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-focus-handler.cjs +11 -4
- package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs +48 -0
- package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs.map +7 -0
- package/build/components/block-parent-selector/index.cjs +2 -2
- package/build/components/block-parent-selector/index.cjs.map +2 -2
- package/build/components/block-toolbar/index.cjs +43 -24
- package/build/components/block-toolbar/index.cjs.map +2 -2
- package/build/components/block-toolbar/switch-section-style.cjs +4 -2
- package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
- package/build/components/block-tools/empty-block-inserter.cjs +2 -7
- package/build/components/block-tools/empty-block-inserter.cjs.map +2 -2
- package/build/components/block-tools/index.cjs +7 -2
- package/build/components/block-tools/index.cjs.map +2 -2
- package/build/components/block-vertical-alignment-control/ui.cjs +3 -5
- package/build/components/block-vertical-alignment-control/ui.cjs.map +2 -2
- package/build/components/block-visibility/modal.cjs +20 -6
- package/build/components/block-visibility/modal.cjs.map +2 -2
- package/build/components/block-visibility/use-block-visibility.cjs +16 -6
- package/build/components/block-visibility/use-block-visibility.cjs.map +3 -3
- package/build/components/block-visibility/utils.cjs +15 -2
- package/build/components/block-visibility/utils.cjs.map +3 -3
- package/build/components/block-visibility/viewport-menu-item.cjs +7 -1
- package/build/components/block-visibility/viewport-menu-item.cjs.map +2 -2
- package/build/components/block-visibility/viewport-toolbar.cjs +5 -0
- package/build/components/block-visibility/viewport-toolbar.cjs.map +2 -2
- package/build/components/block-visibility/viewport-visibility-info.cjs +5 -1
- package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
- package/build/components/border-radius-control/utils.cjs +8 -58
- package/build/components/border-radius-control/utils.cjs.map +2 -2
- package/build/components/child-layout-control/index.cjs +0 -4
- package/build/components/child-layout-control/index.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs +5 -3
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/dimension-control/index.cjs +30 -20
- package/build/components/dimension-control/index.cjs.map +3 -3
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs +9 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
- package/build/components/editor-styles/index.cjs +9 -1
- package/build/components/editor-styles/index.cjs.map +2 -2
- package/build/components/global-styles/background-panel.cjs +66 -25
- package/build/components/global-styles/background-panel.cjs.map +3 -3
- package/build/components/global-styles/border-panel.cjs +153 -55
- package/build/components/global-styles/border-panel.cjs.map +3 -3
- package/build/components/global-styles/color-gradient-dropdown-item.cjs +46 -14
- package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +3 -3
- package/build/components/global-styles/color-panel.cjs +63 -17
- package/build/components/global-styles/color-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +242 -64
- package/build/components/global-styles/dimensions-panel.cjs.map +3 -3
- package/build/components/global-styles/filters-panel.cjs +59 -20
- package/build/components/global-styles/filters-panel.cjs.map +3 -3
- package/build/components/global-styles/hooks.cjs +4 -1
- package/build/components/global-styles/hooks.cjs.map +2 -2
- package/build/components/global-styles/inheritance/index.cjs +142 -0
- package/build/components/global-styles/inheritance/index.cjs.map +7 -0
- package/build/components/global-styles/inherited-value-context.cjs +173 -0
- package/build/components/global-styles/inherited-value-context.cjs.map +7 -0
- package/build/components/global-styles/shadow-panel-components.cjs +38 -20
- package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
- package/build/components/global-styles/state-control-badges.cjs +39 -3
- package/build/components/global-styles/state-control-badges.cjs.map +2 -2
- package/build/components/global-styles/state-control.cjs +1 -1
- package/build/components/global-styles/state-control.cjs.map +2 -2
- package/build/components/global-styles/typography-panel.cjs +271 -79
- package/build/components/global-styles/typography-panel.cjs.map +3 -3
- package/build/components/image-size-control/index.cjs +2 -4
- package/build/components/image-size-control/index.cjs.map +2 -2
- package/build/components/inserter/media-tab/hooks.cjs +33 -6
- package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-panel.cjs +78 -16
- package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
- package/build/components/inspector-controls-tabs/styles-tab.cjs +10 -1
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
- package/build/components/keyboard-shortcuts/index.cjs +19 -11
- package/build/components/keyboard-shortcuts/index.cjs.map +2 -2
- package/build/components/line-height-control/index.cjs +1 -2
- package/build/components/line-height-control/index.cjs.map +2 -2
- package/build/components/link-control/index.cjs +3 -1
- package/build/components/link-control/index.cjs.map +2 -2
- package/build/components/list-view/block.cjs +13 -4
- package/build/components/list-view/block.cjs.map +2 -2
- package/build/components/media-placeholder/index.cjs +0 -1
- package/build/components/media-placeholder/index.cjs.map +2 -2
- package/build/components/preset-input-control/index.cjs +2 -1
- package/build/components/preset-input-control/index.cjs.map +2 -2
- package/build/components/provider/block-refs-provider.cjs +8 -2
- package/build/components/provider/block-refs-provider.cjs.map +2 -2
- package/build/components/provider/index.cjs +1 -1
- package/build/components/provider/index.cjs.map +2 -2
- package/build/components/provider/use-block-sync.cjs +18 -6
- package/build/components/provider/use-block-sync.cjs.map +2 -2
- package/build/components/provider/use-media-upload-settings.cjs +3 -1
- package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/before-input-rules.cjs +3 -4
- package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/delete.cjs +2 -3
- package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/enter.cjs +3 -2
- package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/input-events.cjs +3 -3
- package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/input-rules.cjs +3 -4
- package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +3 -3
- package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/paste-handler.cjs +2 -1
- package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +3 -3
- package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/shortcuts.cjs +3 -3
- package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +3 -3
- package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
- package/build/components/rich-text/index.cjs +76 -17
- package/build/components/rich-text/index.cjs.map +2 -2
- package/build/components/spacing-sizes-control/utils.cjs +6 -19
- package/build/components/spacing-sizes-control/utils.cjs.map +2 -2
- package/build/components/text-indent-control/index.cjs +8 -2
- package/build/components/text-indent-control/index.cjs.map +2 -2
- package/build/components/typewriter/index.cjs +129 -136
- package/build/components/typewriter/index.cjs.map +3 -3
- package/build/components/url-input/index.cjs +303 -344
- package/build/components/url-input/index.cjs.map +3 -3
- package/build/components/use-block-commands/index.cjs +21 -17
- package/build/components/use-block-commands/index.cjs.map +2 -2
- package/build/components/use-on-block-drop/index.cjs +1 -1
- package/build/components/use-on-block-drop/index.cjs.map +2 -2
- package/build/components/writing-flow/index.cjs +14 -1
- package/build/components/writing-flow/index.cjs.map +3 -3
- package/build/components/writing-flow/use-arrow-nav.cjs +42 -6
- package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
- package/build/components/writing-flow/use-click-selection.cjs +29 -3
- package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
- package/build/components/writing-flow/use-clipboard-handler.cjs +4 -1
- package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
- package/build/components/writing-flow/use-drag-selection.cjs +3 -8
- package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
- package/build/components/writing-flow/use-editable-root-event-handlers.cjs +179 -0
- package/build/components/writing-flow/use-editable-root-event-handlers.cjs.map +7 -0
- package/build/components/writing-flow/use-editable-root.cjs +75 -0
- package/build/components/writing-flow/use-editable-root.cjs.map +7 -0
- package/build/components/writing-flow/use-home-end.cjs +64 -0
- package/build/components/writing-flow/use-home-end.cjs.map +7 -0
- package/build/components/writing-flow/use-input.cjs +15 -5
- package/build/components/writing-flow/use-input.cjs.map +2 -2
- package/build/components/writing-flow/use-multi-selection.cjs +2 -2
- package/build/components/writing-flow/use-multi-selection.cjs.map +2 -2
- package/build/components/writing-flow/use-select-all.cjs +14 -2
- package/build/components/writing-flow/use-select-all.cjs.map +2 -2
- package/build/components/writing-flow/use-selection-observer.cjs +132 -22
- package/build/components/writing-flow/use-selection-observer.cjs.map +3 -3
- package/build/components/writing-flow/utils.cjs +28 -2
- package/build/components/writing-flow/utils.cjs.map +2 -2
- package/build/hooks/background.cjs +14 -10
- package/build/hooks/background.cjs.map +2 -2
- package/build/hooks/block-fields/rich-text/index.cjs +2 -3
- package/build/hooks/block-fields/rich-text/index.cjs.map +3 -3
- package/build/hooks/block-style-variation.cjs +4 -45
- package/build/hooks/block-style-variation.cjs.map +3 -3
- package/build/hooks/border.cjs +19 -4
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/custom-css.cjs +6 -2
- package/build/hooks/custom-css.cjs.map +2 -2
- package/build/hooks/dimensions.cjs +15 -4
- package/build/hooks/dimensions.cjs.map +2 -2
- package/build/hooks/duotone.cjs +26 -14
- package/build/hooks/duotone.cjs.map +3 -3
- package/build/hooks/elements.cjs +15 -5
- package/build/hooks/elements.cjs.map +2 -2
- package/build/hooks/grid-visualizer.cjs +5 -3
- package/build/hooks/grid-visualizer.cjs.map +2 -2
- package/build/hooks/layout-child.cjs +22 -12
- package/build/hooks/layout-child.cjs.map +3 -3
- package/build/hooks/layout.cjs +28 -13
- package/build/hooks/layout.cjs.map +3 -3
- package/build/hooks/line-height.cjs +1 -2
- package/build/hooks/line-height.cjs.map +2 -2
- package/build/hooks/states.cjs +27 -7
- package/build/hooks/states.cjs.map +3 -3
- package/build/hooks/style.cjs +31 -9
- package/build/hooks/style.cjs.map +3 -3
- package/build/hooks/text-align.cjs +36 -6
- package/build/hooks/text-align.cjs.map +3 -3
- package/build/hooks/typography.cjs +14 -5
- package/build/hooks/typography.cjs.map +2 -2
- package/build/layouts/constrained.cjs +14 -6
- package/build/layouts/constrained.cjs.map +2 -2
- package/build/layouts/flex.cjs +27 -19
- package/build/layouts/flex.cjs.map +2 -2
- package/build/layouts/grid.cjs +0 -2
- package/build/layouts/grid.cjs.map +2 -2
- package/build/private-apis.cjs +9 -5
- package/build/private-apis.cjs.map +3 -3
- package/build/store/actions.cjs +11 -6
- package/build/store/actions.cjs.map +2 -2
- package/build/store/private-selectors.cjs +41 -3
- package/build/store/private-selectors.cjs.map +3 -3
- package/build/store/reducer.cjs +6 -6
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/selectors.cjs +23 -0
- package/build/store/selectors.cjs.map +2 -2
- package/build/utils/block-bindings.cjs +29 -0
- package/build/utils/block-bindings.cjs.map +2 -2
- package/build/utils/dom.cjs +14 -0
- package/build/utils/dom.cjs.map +2 -2
- package/build/{components/rich-text/input-event.cjs → utils/native-undo.cjs} +29 -24
- package/build/utils/native-undo.cjs.map +7 -0
- package/build-module/components/alignment-control/ui.mjs +2 -4
- package/build-module/components/alignment-control/ui.mjs.map +2 -2
- package/build-module/components/background-image-control/index.mjs +43 -10
- package/build-module/components/background-image-control/index.mjs.map +2 -2
- package/build-module/components/block-alignment-control/ui.mjs +5 -3
- package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
- package/build-module/components/block-canvas/index.mjs +7 -2
- package/build-module/components/block-canvas/index.mjs.map +2 -2
- package/build-module/components/block-controls/groups.mjs +3 -1
- package/build-module/components/block-controls/groups.mjs.map +2 -2
- package/build-module/components/block-edit/edit.mjs +11 -18
- package/build-module/components/block-edit/edit.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +74 -46
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-list/block-html.mjs +4 -1
- package/build-module/components/block-list/block-html.mjs.map +2 -2
- package/build-module/components/block-list/block.mjs +9 -3
- package/build-module/components/block-list/block.mjs.map +3 -3
- package/build-module/components/block-list/index.mjs +1 -3
- package/build-module/components/block-list/index.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/index.mjs +7 -2
- package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +9 -4
- package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +11 -4
- package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs +28 -0
- package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs.map +7 -0
- package/build-module/components/block-parent-selector/index.mjs +2 -2
- package/build-module/components/block-parent-selector/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/index.mjs +43 -24
- package/build-module/components/block-toolbar/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs +4 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
- package/build-module/components/block-tools/empty-block-inserter.mjs +2 -7
- package/build-module/components/block-tools/empty-block-inserter.mjs.map +2 -2
- package/build-module/components/block-tools/index.mjs +7 -2
- package/build-module/components/block-tools/index.mjs.map +2 -2
- package/build-module/components/block-vertical-alignment-control/ui.mjs +4 -6
- package/build-module/components/block-vertical-alignment-control/ui.mjs.map +2 -2
- package/build-module/components/block-visibility/modal.mjs +22 -10
- package/build-module/components/block-visibility/modal.mjs.map +2 -2
- package/build-module/components/block-visibility/use-block-visibility.mjs +17 -7
- package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
- package/build-module/components/block-visibility/utils.mjs +18 -3
- package/build-module/components/block-visibility/utils.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-menu-item.mjs +7 -1
- package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-toolbar.mjs +5 -0
- package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs +5 -1
- package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
- package/build-module/components/border-radius-control/utils.mjs +11 -53
- package/build-module/components/border-radius-control/utils.mjs.map +2 -2
- package/build-module/components/child-layout-control/index.mjs +0 -4
- package/build-module/components/child-layout-control/index.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs +5 -3
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/dimension-control/index.mjs +30 -20
- package/build-module/components/dimension-control/index.mjs.map +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +10 -6
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
- package/build-module/components/editor-styles/index.mjs +9 -1
- package/build-module/components/editor-styles/index.mjs.map +2 -2
- package/build-module/components/global-styles/background-panel.mjs +71 -29
- package/build-module/components/global-styles/background-panel.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +157 -56
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +51 -15
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
- package/build-module/components/global-styles/color-panel.mjs +63 -17
- package/build-module/components/global-styles/color-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +248 -66
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/filters-panel.mjs +64 -21
- package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
- package/build-module/components/global-styles/hooks.mjs +4 -1
- package/build-module/components/global-styles/hooks.mjs.map +2 -2
- package/build-module/components/global-styles/inheritance/index.mjs +108 -0
- package/build-module/components/global-styles/inheritance/index.mjs.map +7 -0
- package/build-module/components/global-styles/inherited-value-context.mjs +141 -0
- package/build-module/components/global-styles/inherited-value-context.mjs.map +7 -0
- package/build-module/components/global-styles/shadow-panel-components.mjs +38 -20
- package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
- package/build-module/components/global-styles/state-control-badges.mjs +41 -5
- package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
- package/build-module/components/global-styles/state-control.mjs +1 -1
- package/build-module/components/global-styles/state-control.mjs.map +2 -2
- package/build-module/components/global-styles/typography-panel.mjs +276 -80
- package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
- package/build-module/components/image-size-control/index.mjs +2 -4
- package/build-module/components/image-size-control/index.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/hooks.mjs +33 -6
- package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-panel.mjs +86 -18
- package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs +6 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/keyboard-shortcuts/index.mjs +19 -11
- package/build-module/components/keyboard-shortcuts/index.mjs.map +2 -2
- package/build-module/components/line-height-control/index.mjs +1 -2
- package/build-module/components/line-height-control/index.mjs.map +2 -2
- package/build-module/components/link-control/index.mjs +4 -2
- package/build-module/components/link-control/index.mjs.map +2 -2
- package/build-module/components/list-view/block.mjs +13 -4
- package/build-module/components/list-view/block.mjs.map +2 -2
- package/build-module/components/media-placeholder/index.mjs +0 -1
- package/build-module/components/media-placeholder/index.mjs.map +2 -2
- package/build-module/components/preset-input-control/index.mjs +2 -1
- package/build-module/components/preset-input-control/index.mjs.map +2 -2
- package/build-module/components/provider/block-refs-provider.mjs +8 -2
- package/build-module/components/provider/block-refs-provider.mjs.map +2 -2
- package/build-module/components/provider/index.mjs +1 -1
- package/build-module/components/provider/index.mjs.map +2 -2
- package/build-module/components/provider/use-block-sync.mjs +18 -6
- package/build-module/components/provider/use-block-sync.mjs.map +2 -2
- package/build-module/components/provider/use-media-upload-settings.mjs +3 -1
- package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +8 -5
- package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/delete.mjs +7 -4
- package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +8 -3
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/input-events.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/input-rules.mjs +8 -5
- package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/paste-handler.mjs +8 -2
- package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/shortcuts.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
- package/build-module/components/rich-text/index.mjs +79 -14
- package/build-module/components/rich-text/index.mjs.map +2 -2
- package/build-module/components/spacing-sizes-control/utils.mjs +6 -18
- package/build-module/components/spacing-sizes-control/utils.mjs.map +2 -2
- package/build-module/components/text-indent-control/index.mjs +8 -2
- package/build-module/components/text-indent-control/index.mjs.map +2 -2
- package/build-module/components/typewriter/index.mjs +129 -136
- package/build-module/components/typewriter/index.mjs.map +2 -2
- package/build-module/components/url-input/index.mjs +306 -353
- package/build-module/components/url-input/index.mjs.map +2 -2
- package/build-module/components/use-block-commands/index.mjs +21 -17
- package/build-module/components/use-block-commands/index.mjs.map +2 -2
- package/build-module/components/use-on-block-drop/index.mjs +2 -2
- package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
- package/build-module/components/writing-flow/index.mjs +14 -1
- package/build-module/components/writing-flow/index.mjs.map +2 -2
- package/build-module/components/writing-flow/use-arrow-nav.mjs +43 -7
- package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
- package/build-module/components/writing-flow/use-click-selection.mjs +29 -3
- package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
- package/build-module/components/writing-flow/use-clipboard-handler.mjs +5 -2
- package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
- package/build-module/components/writing-flow/use-drag-selection.mjs +1 -6
- package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
- package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs +154 -0
- package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs.map +7 -0
- package/build-module/components/writing-flow/use-editable-root.mjs +54 -0
- package/build-module/components/writing-flow/use-editable-root.mjs.map +7 -0
- package/build-module/components/writing-flow/use-home-end.mjs +43 -0
- package/build-module/components/writing-flow/use-home-end.mjs.map +7 -0
- package/build-module/components/writing-flow/use-input.mjs +15 -5
- package/build-module/components/writing-flow/use-input.mjs.map +2 -2
- package/build-module/components/writing-flow/use-multi-selection.mjs +2 -2
- package/build-module/components/writing-flow/use-multi-selection.mjs.map +2 -2
- package/build-module/components/writing-flow/use-select-all.mjs +19 -3
- package/build-module/components/writing-flow/use-select-all.mjs.map +2 -2
- package/build-module/components/writing-flow/use-selection-observer.mjs +134 -21
- package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
- package/build-module/components/writing-flow/utils.mjs +26 -1
- package/build-module/components/writing-flow/utils.mjs.map +2 -2
- package/build-module/hooks/background.mjs +14 -10
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/block-fields/rich-text/index.mjs +2 -6
- package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
- package/build-module/hooks/block-style-variation.mjs +8 -44
- package/build-module/hooks/block-style-variation.mjs.map +2 -2
- package/build-module/hooks/border.mjs +19 -4
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/custom-css.mjs +7 -3
- package/build-module/hooks/custom-css.mjs.map +2 -2
- package/build-module/hooks/dimensions.mjs +15 -4
- package/build-module/hooks/dimensions.mjs.map +2 -2
- package/build-module/hooks/duotone.mjs +20 -9
- package/build-module/hooks/duotone.mjs.map +2 -2
- package/build-module/hooks/elements.mjs +15 -5
- package/build-module/hooks/elements.mjs.map +2 -2
- package/build-module/hooks/grid-visualizer.mjs +5 -3
- package/build-module/hooks/grid-visualizer.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs +22 -12
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +28 -13
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/line-height.mjs +1 -2
- package/build-module/hooks/line-height.mjs.map +2 -2
- package/build-module/hooks/states.mjs +27 -7
- package/build-module/hooks/states.mjs.map +2 -2
- package/build-module/hooks/style.mjs +40 -11
- package/build-module/hooks/style.mjs.map +2 -2
- package/build-module/hooks/text-align.mjs +39 -10
- package/build-module/hooks/text-align.mjs.map +2 -2
- package/build-module/hooks/typography.mjs +14 -5
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/layouts/constrained.mjs +14 -6
- package/build-module/layouts/constrained.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +27 -19
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/layouts/grid.mjs +0 -2
- package/build-module/layouts/grid.mjs.map +2 -2
- package/build-module/private-apis.mjs +7 -3
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/actions.mjs +12 -7
- package/build-module/store/actions.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +42 -3
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs +6 -6
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/selectors.mjs +23 -0
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-module/utils/block-bindings.mjs +28 -0
- package/build-module/utils/block-bindings.mjs.map +2 -2
- package/build-module/utils/dom.mjs +13 -0
- package/build-module/utils/dom.mjs.map +2 -2
- package/build-module/utils/native-undo.mjs +29 -0
- package/build-module/utils/native-undo.mjs.map +7 -0
- package/build-style/content-rtl.css +14 -27
- package/build-style/content.css +14 -27
- package/build-style/default-editor-styles-rtl.css +1 -1
- package/build-style/default-editor-styles.css +1 -1
- package/build-style/style-rtl.css +191 -61
- package/build-style/style.css +191 -61
- package/build-types/components/block-context/index.d.ts +7 -0
- package/build-types/components/block-context/index.d.ts.map +1 -1
- package/build-types/utils/block-bindings.d.ts +19 -0
- package/build-types/utils/block-bindings.d.ts.map +1 -1
- package/build-types/utils/dom.d.ts +11 -0
- package/build-types/utils/dom.d.ts.map +1 -1
- package/build-types/utils/get-px-from-css-unit.d.ts +2 -2
- package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -1
- package/build-types/utils/pasting.d.ts +1 -1
- package/build-types/utils/pasting.d.ts.map +1 -1
- package/package.json +43 -44
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +1 -1
- package/src/components/alignment-control/ui.js +2 -4
- package/src/components/background-image-control/index.js +74 -37
- package/src/components/background-image-control/style.scss +13 -4
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +3 -3
- package/src/components/block-alignment-control/test/index.js +1 -1
- package/src/components/block-alignment-control/ui.js +4 -2
- package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +1 -1
- package/src/components/block-canvas/index.js +9 -2
- package/src/components/block-card/style.scss +1 -1
- package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
- package/src/components/block-controls/groups.js +2 -0
- package/src/components/block-edit/edit.js +13 -31
- package/src/components/block-icon/test/__snapshots__/index.js.snap +1 -1
- package/src/components/block-inspector/index.js +60 -31
- package/src/components/block-list/block-html.js +5 -0
- package/src/components/block-list/block.js +6 -0
- package/src/components/block-list/content.scss +1 -11
- package/src/components/block-list/index.js +0 -2
- package/src/components/block-list/use-block-props/index.js +7 -1
- package/src/components/block-list/use-block-props/use-focus-first-element.js +23 -4
- package/src/components/block-list/use-block-props/use-focus-handler.js +35 -9
- package/src/components/block-list/use-block-props/use-register-block-event-handlers.js +45 -0
- package/src/components/block-lock/style.scss +1 -1
- package/src/components/block-manager/style.scss +1 -1
- package/src/components/block-navigation/style.scss +1 -1
- package/src/components/block-parent-selector/index.js +5 -2
- package/src/components/block-quick-navigation/style.scss +1 -3
- package/src/components/block-styles/style.scss +2 -2
- package/src/components/block-toolbar/index.js +41 -18
- package/src/components/block-toolbar/switch-section-style.js +5 -2
- package/src/components/block-tools/empty-block-inserter.js +3 -7
- package/src/components/block-tools/index.js +7 -0
- package/src/components/block-types-list/style.scss +0 -1
- package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +3 -3
- package/src/components/block-vertical-alignment-control/test/index.js +18 -2
- package/src/components/block-vertical-alignment-control/ui.js +3 -5
- package/src/components/block-visibility/modal.js +24 -10
- package/src/components/block-visibility/style.scss +1 -1
- package/src/components/block-visibility/test/use-block-visibility.js +128 -35
- package/src/components/block-visibility/test/utils.js +11 -0
- package/src/components/block-visibility/use-block-visibility.js +33 -11
- package/src/components/block-visibility/utils.js +31 -6
- package/src/components/block-visibility/viewport-menu-item.js +10 -1
- package/src/components/block-visibility/viewport-toolbar.js +6 -0
- package/src/components/block-visibility/viewport-visibility-info.js +5 -1
- package/src/components/border-radius-control/test/utils.js +0 -41
- package/src/components/border-radius-control/utils.js +16 -107
- package/src/components/button-block-appender/content.scss +7 -9
- package/src/components/child-layout-control/index.js +0 -4
- package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -3
- package/src/components/colors-gradients/control.js +6 -3
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +1 -1
- package/src/components/dimension-control/index.js +13 -1
- package/src/components/dimensions-tool/aspect-ratio-tool.js +13 -6
- package/src/components/editor-styles/index.js +16 -1
- package/src/components/font-family/stories/index.story.jsx +1 -1
- package/src/components/global-styles/background-panel.js +107 -34
- package/src/components/global-styles/border-panel.js +219 -48
- package/src/components/global-styles/color-gradient-dropdown-item.js +93 -28
- package/src/components/global-styles/color-panel.js +92 -11
- package/src/components/global-styles/dimensions-panel.js +422 -71
- package/src/components/global-styles/filters-panel.js +88 -28
- package/src/components/global-styles/hooks.js +8 -1
- package/src/components/global-styles/inheritance/index.js +204 -0
- package/src/components/global-styles/inheritance/style.scss +184 -0
- package/src/components/global-styles/inheritance/test/index.js +281 -0
- package/src/components/global-styles/inherited-value-context.js +271 -0
- package/src/components/global-styles/shadow-panel-components.js +48 -26
- package/src/components/global-styles/state-control-badges.js +45 -6
- package/src/components/global-styles/state-control.js +2 -2
- package/src/components/global-styles/style.scss +5 -0
- package/src/components/global-styles/test/background-panel.js +338 -1
- package/src/components/global-styles/test/border-panel.js +441 -0
- package/src/components/global-styles/test/color-panel.js +182 -2
- package/src/components/global-styles/test/dimensions-panel.js +753 -0
- package/src/components/global-styles/test/filters-panel.js +194 -0
- package/src/components/global-styles/test/inherited-value-context-core.js +98 -0
- package/src/components/global-styles/test/inherited-value-context.js +454 -0
- package/src/components/global-styles/test/state-control-badges.js +65 -0
- package/src/components/global-styles/test/typography-panel-core.js +185 -0
- package/src/components/global-styles/test/typography-panel.js +849 -12
- package/src/components/global-styles/typography-panel.js +449 -101
- package/src/components/image-editor/style.scss +33 -0
- package/src/components/image-size-control/index.js +0 -2
- package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
- package/src/components/inserter/media-tab/hooks.js +55 -7
- package/src/components/inserter/media-tab/media-panel.js +117 -21
- package/src/components/inserter/media-tab/test/hooks.js +63 -0
- package/src/components/inserter/media-tab/test/media-panel.js +127 -0
- package/src/components/inserter/style.scss +19 -16
- package/src/components/inserter-list-item/style.scss +0 -15
- package/src/components/inspector-controls-tabs/styles-tab.js +5 -1
- package/src/components/keyboard-shortcuts/index.js +28 -11
- package/src/components/line-height-control/index.js +1 -2
- package/src/components/link-control/index.js +7 -2
- package/src/components/link-control/style.scss +2 -2
- package/src/components/link-control/test/index.js +6 -6
- package/src/components/link-picker/style.scss +1 -2
- package/src/components/list-view/block.js +13 -4
- package/src/components/list-view/style.scss +4 -5
- package/src/components/media-placeholder/index.js +0 -1
- package/src/components/multi-selection-inspector/style.scss +1 -1
- package/src/components/preset-input-control/index.js +4 -1
- package/src/components/provider/block-refs-provider.js +12 -2
- package/src/components/provider/index.js +2 -2
- package/src/components/provider/use-block-sync.js +18 -6
- package/src/components/provider/use-media-upload-settings.js +2 -0
- package/src/components/responsive-block-control/style.scss +1 -1
- package/src/components/rich-text/event-listeners/before-input-rules.js +8 -5
- package/src/components/rich-text/event-listeners/delete.js +7 -4
- package/src/components/rich-text/event-listeners/enter.js +10 -4
- package/src/components/rich-text/event-listeners/input-events.js +4 -3
- package/src/components/rich-text/event-listeners/input-rules.js +8 -5
- package/src/components/rich-text/event-listeners/insert-replacement-text.js +4 -3
- package/src/components/rich-text/event-listeners/paste-handler.js +15 -3
- package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +4 -3
- package/src/components/rich-text/event-listeners/shortcuts.js +4 -3
- package/src/components/rich-text/event-listeners/undo-automatic-change.js +4 -3
- package/src/components/rich-text/index.js +116 -26
- package/src/components/skip-to-selected-block/style.scss +1 -1
- package/src/components/spacing-sizes-control/test/utils.js +16 -5
- package/src/components/spacing-sizes-control/utils.js +11 -28
- package/src/components/text-indent-control/index.js +8 -0
- package/src/components/typewriter/index.js +228 -224
- package/src/components/url-input/index.js +363 -431
- package/src/components/url-input/test/index.js +592 -0
- package/src/components/use-block-commands/index.js +27 -17
- package/src/components/use-on-block-drop/index.js +2 -2
- package/src/components/warning/test/__snapshots__/index.js.snap +1 -1
- package/src/components/writing-flow/index.js +17 -1
- package/src/components/writing-flow/use-arrow-nav.js +90 -13
- package/src/components/writing-flow/use-click-selection.js +55 -5
- package/src/components/writing-flow/use-clipboard-handler.js +5 -2
- package/src/components/writing-flow/use-drag-selection.js +1 -14
- package/src/components/writing-flow/use-editable-root-event-handlers.js +266 -0
- package/src/components/writing-flow/use-editable-root.js +112 -0
- package/src/components/writing-flow/use-home-end.js +71 -0
- package/src/components/writing-flow/use-input.js +25 -8
- package/src/components/writing-flow/use-multi-selection.js +2 -3
- package/src/components/writing-flow/use-select-all.js +33 -3
- package/src/components/writing-flow/use-selection-observer.js +218 -42
- package/src/components/writing-flow/utils.js +62 -0
- package/src/hooks/background.js +27 -24
- package/src/hooks/block-fields/link/styles.scss +1 -6
- package/src/hooks/block-fields/media/styles.scss +1 -6
- package/src/hooks/block-fields/rich-text/index.js +6 -9
- package/src/hooks/block-fields/rich-text/styles.scss +1 -1
- package/src/hooks/block-style-variation.js +8 -74
- package/src/hooks/border.js +19 -4
- package/src/hooks/custom-css.js +15 -6
- package/src/hooks/dimensions.js +17 -4
- package/src/hooks/duotone.js +26 -8
- package/src/hooks/elements.js +14 -4
- package/src/hooks/grid-visualizer.js +40 -36
- package/src/hooks/layout-child.js +19 -9
- package/src/hooks/layout.js +48 -31
- package/src/hooks/line-height.js +0 -1
- package/src/hooks/states.js +38 -9
- package/src/hooks/style.js +67 -17
- package/src/hooks/test/inherited-value-wiring.js +411 -0
- package/src/hooks/test/preset-round-trip.js +456 -0
- package/src/hooks/test/style.js +29 -0
- package/src/hooks/test/text-align.js +34 -1
- package/src/hooks/text-align.js +41 -10
- package/src/hooks/typography.js +35 -24
- package/src/layouts/constrained.js +5 -1
- package/src/layouts/flex.js +5 -1
- package/src/layouts/grid.js +0 -2
- package/src/private-apis.js +11 -2
- package/src/store/actions.js +53 -19
- package/src/store/private-selectors.js +82 -6
- package/src/store/reducer.js +9 -9
- package/src/store/selectors.js +56 -8
- package/src/store/test/actions.js +1 -1
- package/src/store/test/private-selectors.js +271 -1
- package/src/style.scss +2 -0
- package/src/utils/block-bindings.ts +50 -0
- package/src/utils/dom.ts +33 -0
- package/src/utils/native-undo.js +56 -0
- package/src/utils/test/block-bindings.js +181 -0
- package/build/components/duotone/utils.cjs +0 -87
- package/build/components/duotone/utils.cjs.map +0 -7
- package/build/components/rich-text/input-event.cjs.map +0 -7
- package/build/components/rich-text/shortcut.cjs +0 -51
- package/build/components/rich-text/shortcut.cjs.map +0 -7
- package/build-module/components/duotone/utils.mjs +0 -59
- package/build-module/components/duotone/utils.mjs.map +0 -7
- package/build-module/components/rich-text/input-event.mjs +0 -25
- package/build-module/components/rich-text/input-event.mjs.map +0 -7
- package/build-module/components/rich-text/shortcut.mjs +0 -26
- package/build-module/components/rich-text/shortcut.mjs.map +0 -7
- package/src/components/duotone/utils.js +0 -90
- package/src/components/rich-text/input-event.js +0 -31
- package/src/components/rich-text/shortcut.js +0 -32
- package/src/hooks/test/get-variation-styles-with-ref-values.js +0 -91
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
__experimentalToolsPanel as ToolsPanel,
|
|
6
|
-
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
7
|
-
} from '@wordpress/components';
|
|
4
|
+
import { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';
|
|
8
5
|
import { useCallback } from '@wordpress/element';
|
|
9
6
|
import { __ } from '@wordpress/i18n';
|
|
10
7
|
|
|
@@ -21,6 +18,11 @@ import {
|
|
|
21
18
|
extractPresetSlug,
|
|
22
19
|
encodeColorValueWithPalette,
|
|
23
20
|
} from '../../utils/color-values';
|
|
21
|
+
import {
|
|
22
|
+
getInheritanceProps,
|
|
23
|
+
InheritanceToolsPanelItem,
|
|
24
|
+
isGlobalStylesInheritanceEnabled,
|
|
25
|
+
} from './inheritance';
|
|
24
26
|
|
|
25
27
|
const DEFAULT_CONTROLS = {
|
|
26
28
|
backgroundImage: true,
|
|
@@ -168,6 +170,7 @@ export default function BackgroundImagePanel( {
|
|
|
168
170
|
defaultValues = {},
|
|
169
171
|
headerLabel = __( 'Background' ),
|
|
170
172
|
contrastWarning,
|
|
173
|
+
showInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),
|
|
171
174
|
} ) {
|
|
172
175
|
const {
|
|
173
176
|
colors,
|
|
@@ -259,6 +262,9 @@ export default function BackgroundImagePanel( {
|
|
|
259
262
|
onChange( newValue );
|
|
260
263
|
};
|
|
261
264
|
|
|
265
|
+
// Non-cascading root values are already dropped from `inheritedValue` by
|
|
266
|
+
// the builder, so inherited reads below are direct.
|
|
267
|
+
|
|
262
268
|
// Background color (written to `color.background`).
|
|
263
269
|
const backgroundColor = decodeValue( inheritedValue?.color?.background );
|
|
264
270
|
const userBackgroundColor = decodeValue( value?.color?.background );
|
|
@@ -291,11 +297,11 @@ export default function BackgroundImagePanel( {
|
|
|
291
297
|
// Legacy `color.gradient` setters.
|
|
292
298
|
const legacyColorGradient = decodeValue( inheritedValue?.color?.gradient );
|
|
293
299
|
const userLegacyColorGradient = decodeValue( value?.color?.gradient );
|
|
294
|
-
const setLegacyColorGradient = ( newGradient ) => {
|
|
300
|
+
const setLegacyColorGradient = ( newGradient, newSlug ) => {
|
|
295
301
|
const newValue = setImmutably(
|
|
296
302
|
value,
|
|
297
303
|
[ 'color', 'gradient' ],
|
|
298
|
-
encodeGradientValue( newGradient )
|
|
304
|
+
encodeGradientValue( newGradient, newSlug )
|
|
299
305
|
);
|
|
300
306
|
newValue.color.background = undefined;
|
|
301
307
|
onChange( newValue );
|
|
@@ -317,16 +323,31 @@ export default function BackgroundImagePanel( {
|
|
|
317
323
|
// Set gradient value, encoding preset matches as slug references.
|
|
318
324
|
// Also clear color.gradient to migrate from the legacy location,
|
|
319
325
|
// matching the block inspector behavior in hooks/background.js.
|
|
320
|
-
const setGradient = ( newGradient ) => {
|
|
326
|
+
const setGradient = ( newGradient, newSlug ) => {
|
|
321
327
|
let newValue = setImmutably(
|
|
322
328
|
value,
|
|
323
329
|
[ 'background', 'gradient' ],
|
|
324
|
-
encodeGradientValue( newGradient )
|
|
330
|
+
encodeGradientValue( newGradient, newSlug )
|
|
325
331
|
);
|
|
326
332
|
newValue = setImmutably( newValue, [ 'color', 'gradient' ], undefined );
|
|
327
333
|
onChange( newValue );
|
|
328
334
|
};
|
|
329
335
|
|
|
336
|
+
const inheritanceProps = ( isInherited, hasLocalOverride, classNames ) =>
|
|
337
|
+
showInheritanceLabelIndicators
|
|
338
|
+
? getInheritanceProps( isInherited, hasLocalOverride, classNames )
|
|
339
|
+
: { className: classNames };
|
|
340
|
+
|
|
341
|
+
// The inherited value arrives already resolved (refs + theme-file pointers)
|
|
342
|
+
// with non-cascading root values dropped, so a presence check drives the
|
|
343
|
+
// label affordance and matches what `BackgroundImageControl` renders.
|
|
344
|
+
const inheritedBackgroundImage = hasBackgroundImageValue( {
|
|
345
|
+
background: {
|
|
346
|
+
backgroundImage: inheritedValue?.background?.backgroundImage,
|
|
347
|
+
},
|
|
348
|
+
} );
|
|
349
|
+
const hasLocalBackgroundImage = hasBackgroundImageValue( value );
|
|
350
|
+
|
|
330
351
|
return (
|
|
331
352
|
<Wrapper
|
|
332
353
|
resetAllFilter={ resetAllFilter }
|
|
@@ -336,8 +357,13 @@ export default function BackgroundImagePanel( {
|
|
|
336
357
|
headerLabel={ headerLabel }
|
|
337
358
|
>
|
|
338
359
|
{ showBackgroundImageControl && (
|
|
339
|
-
<
|
|
340
|
-
|
|
360
|
+
<InheritanceToolsPanelItem
|
|
361
|
+
{ ...inheritanceProps(
|
|
362
|
+
inheritedBackgroundImage && ! hasLocalBackgroundImage,
|
|
363
|
+
hasLocalBackgroundImage && inheritedBackgroundImage,
|
|
364
|
+
'block-editor-color-gradient-item'
|
|
365
|
+
) }
|
|
366
|
+
showLocalOverrideActionsInLabel={ false }
|
|
341
367
|
hasValue={ () => hasBackgroundImageValue( value ) }
|
|
342
368
|
label={ __( 'Image' ) }
|
|
343
369
|
onDeselect={ resetBackground }
|
|
@@ -351,8 +377,11 @@ export default function BackgroundImagePanel( {
|
|
|
351
377
|
inheritedValue={ inheritedValue }
|
|
352
378
|
defaultControls={ defaultControls }
|
|
353
379
|
defaultValues={ defaultValues }
|
|
380
|
+
showInheritanceLabelIndicators={
|
|
381
|
+
showInheritanceLabelIndicators
|
|
382
|
+
}
|
|
354
383
|
/>
|
|
355
|
-
</
|
|
384
|
+
</InheritanceToolsPanelItem>
|
|
356
385
|
) }
|
|
357
386
|
{ showBackgroundColorControl && (
|
|
358
387
|
<ColorGradientDropdownItem
|
|
@@ -362,30 +391,36 @@ export default function BackgroundImagePanel( {
|
|
|
362
391
|
isShownByDefault={ defaultControls.backgroundColor }
|
|
363
392
|
indicators={ [ userBackgroundColor ?? backgroundColor ] }
|
|
364
393
|
contrastWarning={ contrastWarning }
|
|
394
|
+
showInheritanceLabelIndicators={
|
|
395
|
+
showInheritanceLabelIndicators
|
|
396
|
+
}
|
|
397
|
+
isPlaceholder={
|
|
398
|
+
userBackgroundColor === undefined &&
|
|
399
|
+
backgroundColor !== undefined
|
|
400
|
+
}
|
|
401
|
+
hasInheritedValue={ backgroundColor !== undefined }
|
|
365
402
|
tabs={ [
|
|
366
403
|
{
|
|
367
404
|
key: 'background',
|
|
368
405
|
label: __( 'Color' ),
|
|
369
|
-
inheritedValue:
|
|
370
|
-
|
|
371
|
-
//
|
|
372
|
-
//
|
|
373
|
-
//
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
) ??
|
|
383
|
-
extractPresetSlug(
|
|
384
|
-
inheritedValue?.color?.background,
|
|
385
|
-
'color'
|
|
386
|
-
),
|
|
406
|
+
inheritedValue: backgroundColor,
|
|
407
|
+
// The picker selects by slug: `userSlug` when the
|
|
408
|
+
// block has its own value, otherwise
|
|
409
|
+
// `inheritedSlug`. Hex matching would mark two
|
|
410
|
+
// same-hex presets as both selected.
|
|
411
|
+
inheritedSlug: extractPresetSlug(
|
|
412
|
+
inheritedValue?.color?.background,
|
|
413
|
+
'color'
|
|
414
|
+
),
|
|
415
|
+
userSlug: extractPresetSlug(
|
|
416
|
+
value?.color?.background,
|
|
417
|
+
'color'
|
|
418
|
+
),
|
|
387
419
|
setValue: setBackgroundColor,
|
|
388
420
|
userValue: userBackgroundColor,
|
|
421
|
+
isPlaceholder:
|
|
422
|
+
userBackgroundColor === undefined &&
|
|
423
|
+
backgroundColor !== undefined,
|
|
389
424
|
},
|
|
390
425
|
] }
|
|
391
426
|
colorGradientControlSettings={ {
|
|
@@ -401,16 +436,36 @@ export default function BackgroundImagePanel( {
|
|
|
401
436
|
hasValue={ () => hasBackgroundGradientValue( value ) }
|
|
402
437
|
resetValue={ resetGradient }
|
|
403
438
|
isShownByDefault={ defaultControls.gradient }
|
|
404
|
-
indicators={ [ currentGradient ] }
|
|
439
|
+
indicators={ [ currentGradient ?? inheritedGradient ] }
|
|
440
|
+
showInheritanceLabelIndicators={
|
|
441
|
+
showInheritanceLabelIndicators
|
|
442
|
+
}
|
|
443
|
+
isPlaceholder={
|
|
444
|
+
currentGradient === undefined &&
|
|
445
|
+
inheritedGradient !== undefined
|
|
446
|
+
}
|
|
447
|
+
hasInheritedValue={ inheritedGradient !== undefined }
|
|
405
448
|
tabs={ [
|
|
406
449
|
{
|
|
407
450
|
key: 'gradient',
|
|
408
451
|
label: __( 'Gradient' ),
|
|
409
|
-
inheritedValue:
|
|
410
|
-
|
|
452
|
+
inheritedValue: inheritedGradient,
|
|
453
|
+
inheritedSlug: extractPresetSlug(
|
|
454
|
+
inheritedValue?.background?.gradient ??
|
|
455
|
+
inheritedValue?.color?.gradient,
|
|
456
|
+
'gradient'
|
|
457
|
+
),
|
|
458
|
+
userSlug: extractPresetSlug(
|
|
459
|
+
value?.background?.gradient ??
|
|
460
|
+
value?.color?.gradient,
|
|
461
|
+
'gradient'
|
|
462
|
+
),
|
|
411
463
|
setValue: setGradient,
|
|
412
464
|
userValue: currentGradient,
|
|
413
465
|
isGradient: true,
|
|
466
|
+
isPlaceholder:
|
|
467
|
+
currentGradient === undefined &&
|
|
468
|
+
inheritedGradient !== undefined,
|
|
414
469
|
},
|
|
415
470
|
] }
|
|
416
471
|
colorGradientControlSettings={ {
|
|
@@ -429,15 +484,33 @@ export default function BackgroundImagePanel( {
|
|
|
429
484
|
indicators={ [
|
|
430
485
|
userLegacyColorGradient ?? legacyColorGradient,
|
|
431
486
|
] }
|
|
487
|
+
showInheritanceLabelIndicators={
|
|
488
|
+
showInheritanceLabelIndicators
|
|
489
|
+
}
|
|
490
|
+
isPlaceholder={
|
|
491
|
+
userLegacyColorGradient === undefined &&
|
|
492
|
+
legacyColorGradient !== undefined
|
|
493
|
+
}
|
|
494
|
+
hasInheritedValue={ legacyColorGradient !== undefined }
|
|
432
495
|
tabs={ [
|
|
433
496
|
{
|
|
434
497
|
key: 'gradient',
|
|
435
498
|
label: __( 'Gradient' ),
|
|
436
|
-
inheritedValue:
|
|
437
|
-
|
|
499
|
+
inheritedValue: legacyColorGradient,
|
|
500
|
+
inheritedSlug: extractPresetSlug(
|
|
501
|
+
inheritedValue?.color?.gradient,
|
|
502
|
+
'gradient'
|
|
503
|
+
),
|
|
504
|
+
userSlug: extractPresetSlug(
|
|
505
|
+
value?.color?.gradient,
|
|
506
|
+
'gradient'
|
|
507
|
+
),
|
|
438
508
|
setValue: setLegacyColorGradient,
|
|
439
509
|
userValue: userLegacyColorGradient,
|
|
440
510
|
isGradient: true,
|
|
511
|
+
isPlaceholder:
|
|
512
|
+
userLegacyColorGradient === undefined &&
|
|
513
|
+
legacyColorGradient !== undefined,
|
|
441
514
|
},
|
|
442
515
|
] }
|
|
443
516
|
colorGradientControlSettings={ {
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
__experimentalHasSplitBorders as hasSplitBorders,
|
|
7
7
|
__experimentalIsDefinedBorder as isDefinedBorder,
|
|
8
8
|
__experimentalToolsPanel as ToolsPanel,
|
|
9
|
-
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
10
9
|
BaseControl,
|
|
11
10
|
} from '@wordpress/components';
|
|
12
11
|
import { useCallback, useMemo } from '@wordpress/element';
|
|
@@ -22,6 +21,11 @@ import { useToolsPanelDropdownMenuProps } from './utils';
|
|
|
22
21
|
import { setImmutably } from '../../utils/object';
|
|
23
22
|
import { useBorderPanelLabel } from '../../hooks/border';
|
|
24
23
|
import { ShadowPopover, useShadowPresets } from './shadow-panel-components';
|
|
24
|
+
import {
|
|
25
|
+
getInheritanceProps,
|
|
26
|
+
InheritanceToolsPanelItem,
|
|
27
|
+
isGlobalStylesInheritanceEnabled,
|
|
28
|
+
} from './inheritance';
|
|
25
29
|
|
|
26
30
|
export function useHasBorderPanel( settings ) {
|
|
27
31
|
const controls = Object.values( useHasBorderPanelControls( settings ) );
|
|
@@ -103,6 +107,7 @@ export default function BorderPanel( {
|
|
|
103
107
|
panelId,
|
|
104
108
|
name,
|
|
105
109
|
defaultControls = DEFAULT_CONTROLS,
|
|
110
|
+
showInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),
|
|
106
111
|
} ) {
|
|
107
112
|
const colors = useColorsPerOrigin( settings );
|
|
108
113
|
const areCustomSolidsEnabled = settings?.color?.custom;
|
|
@@ -110,6 +115,14 @@ export default function BorderPanel( {
|
|
|
110
115
|
( rawValue ) => getValueFromVariable( { settings }, '', rawValue ),
|
|
111
116
|
[ settings ]
|
|
112
117
|
);
|
|
118
|
+
// Always keep the layout className (e.g. `single-column`); only the
|
|
119
|
+
// inheritance treatment is gated on `showInheritanceLabelIndicators`.
|
|
120
|
+
const inheritanceProps = ( isInherited, hasLocalOverride, className ) =>
|
|
121
|
+
getInheritanceProps(
|
|
122
|
+
showInheritanceLabelIndicators && isInherited,
|
|
123
|
+
showInheritanceLabelIndicators && hasLocalOverride,
|
|
124
|
+
className
|
|
125
|
+
);
|
|
113
126
|
const encodeColorValue = ( colorValue ) => {
|
|
114
127
|
const allColors = colors.flatMap(
|
|
115
128
|
( { colors: originColors } ) => originColors
|
|
@@ -121,61 +134,141 @@ export default function BorderPanel( {
|
|
|
121
134
|
? 'var:preset|color|' + colorObject.slug
|
|
122
135
|
: colorValue;
|
|
123
136
|
};
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
// Decode a `border` sub-tree (handles split borders + flat shape).
|
|
138
|
+
const decodeBorder = useCallback(
|
|
139
|
+
( source ) => {
|
|
140
|
+
if ( ! source ) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
if ( hasSplitBorders( source ) ) {
|
|
144
|
+
const out = { ...source };
|
|
145
|
+
[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {
|
|
146
|
+
out[ side ] = {
|
|
147
|
+
...out[ side ],
|
|
148
|
+
color: decodeValue( out[ side ]?.color ),
|
|
149
|
+
};
|
|
150
|
+
} );
|
|
151
|
+
return out;
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
...source,
|
|
155
|
+
color: source.color ? decodeValue( source.color ) : undefined,
|
|
156
|
+
};
|
|
157
|
+
},
|
|
158
|
+
[ decodeValue ]
|
|
159
|
+
);
|
|
160
|
+
// Local-then-inherited: prefer the user's locally-set border (whether
|
|
161
|
+
// flat or split) when defined, otherwise fall back to the inherited
|
|
162
|
+
// Global Styles border. The merge happens at the sub-tree root, not
|
|
163
|
+
// at the leaf level — borders are commonly authored as a single
|
|
164
|
+
// affordance in the inspector, so partial leaf merges would be
|
|
165
|
+
// surprising.
|
|
166
|
+
const localBorder = useMemo(
|
|
167
|
+
() => decodeBorder( value?.border ),
|
|
168
|
+
[ value?.border, decodeBorder ]
|
|
169
|
+
);
|
|
170
|
+
const inheritedBorder = useMemo(
|
|
171
|
+
() => decodeBorder( inheritedValue?.border ),
|
|
172
|
+
[ inheritedValue?.border, decodeBorder ]
|
|
173
|
+
);
|
|
174
|
+
const isBorderPlaceholder =
|
|
175
|
+
! isDefinedBorder( value?.border ) &&
|
|
176
|
+
!! inheritedBorder &&
|
|
177
|
+
isDefinedBorder( inheritedBorder );
|
|
178
|
+
const border = isBorderPlaceholder ? inheritedBorder : localBorder;
|
|
142
179
|
const setBorder = ( newBorder ) =>
|
|
143
180
|
onChange( { ...value, border: newBorder } );
|
|
144
181
|
const showBorderColor = useHasBorderColorControl( settings );
|
|
145
182
|
const showBorderStyle = useHasBorderStyleControl( settings );
|
|
146
183
|
const showBorderWidth = useHasBorderWidthControl( settings );
|
|
147
184
|
|
|
148
|
-
// Border radius.
|
|
185
|
+
// Border radius. Display inherited values through the control's `values`
|
|
186
|
+
// prop when local values are empty so UnitControl can parse the numeric
|
|
187
|
+
// quantity and selected unit normally (e.g. `2.5em` -> `2.5` + `em`).
|
|
188
|
+
// `hasBorderRadius` remains local-only, so displaying the inherited value
|
|
189
|
+
// does not mark the ToolsPanel item as customised or commit on mount.
|
|
149
190
|
const showBorderRadius = useHasBorderRadiusControl( settings );
|
|
150
|
-
const
|
|
151
|
-
if ( typeof
|
|
152
|
-
return decodeValue(
|
|
191
|
+
const localBorderRadius = useMemo( () => {
|
|
192
|
+
if ( typeof value?.border?.radius !== 'object' ) {
|
|
193
|
+
return decodeValue( value?.border?.radius );
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
topLeft: decodeValue( value?.border?.radius?.topLeft ),
|
|
197
|
+
topRight: decodeValue( value?.border?.radius?.topRight ),
|
|
198
|
+
bottomLeft: decodeValue( value?.border?.radius?.bottomLeft ),
|
|
199
|
+
bottomRight: decodeValue( value?.border?.radius?.bottomRight ),
|
|
200
|
+
};
|
|
201
|
+
}, [ value?.border?.radius, decodeValue ] );
|
|
202
|
+
const inheritedBorderRadius = useMemo( () => {
|
|
203
|
+
const rawRadius = inheritedValue?.border?.radius;
|
|
204
|
+
if ( typeof rawRadius !== 'object' ) {
|
|
205
|
+
return decodeValue( rawRadius );
|
|
153
206
|
}
|
|
154
|
-
|
|
155
207
|
return {
|
|
156
|
-
topLeft: decodeValue(
|
|
157
|
-
topRight: decodeValue(
|
|
158
|
-
bottomLeft: decodeValue(
|
|
159
|
-
|
|
160
|
-
),
|
|
161
|
-
bottomRight: decodeValue(
|
|
162
|
-
inheritedValue?.border?.radius?.bottomRight
|
|
163
|
-
),
|
|
208
|
+
topLeft: decodeValue( rawRadius?.topLeft ),
|
|
209
|
+
topRight: decodeValue( rawRadius?.topRight ),
|
|
210
|
+
bottomLeft: decodeValue( rawRadius?.bottomLeft ),
|
|
211
|
+
bottomRight: decodeValue( rawRadius?.bottomRight ),
|
|
164
212
|
};
|
|
165
213
|
}, [ inheritedValue?.border?.radius, decodeValue ] );
|
|
214
|
+
// Spread the local border, not the merged display value, or setting a
|
|
215
|
+
// radius bakes the inherited border into the local override. Mirror of
|
|
216
|
+
// the guard in `onBorderChange`.
|
|
166
217
|
const setBorderRadius = ( newBorderRadius ) =>
|
|
167
|
-
setBorder( { ...border, radius: newBorderRadius } );
|
|
218
|
+
setBorder( { ...value?.border, radius: newBorderRadius } );
|
|
168
219
|
const hasBorderRadius = () => {
|
|
169
220
|
const borderValues = value?.border?.radius;
|
|
170
221
|
if ( typeof borderValues === 'object' ) {
|
|
171
|
-
return Object.entries( borderValues ).some(
|
|
222
|
+
return Object.entries( borderValues ).some( ( [ , v ] ) => !! v );
|
|
172
223
|
}
|
|
173
224
|
return !! borderValues;
|
|
174
225
|
};
|
|
226
|
+
const isBorderRadiusPlaceholder =
|
|
227
|
+
! hasBorderRadius() &&
|
|
228
|
+
inheritedBorderRadius !== undefined &&
|
|
229
|
+
inheritedBorderRadius !== '';
|
|
230
|
+
// Build an object value so unlinked-mode shows per-corner inherited
|
|
231
|
+
// values. The control accepts either a string or an object; passing the
|
|
232
|
+
// object form is correct in both modes (the control collapses to the
|
|
233
|
+
// `all`/first corner in linked mode).
|
|
234
|
+
const borderRadius = useMemo( () => {
|
|
235
|
+
if ( ! isBorderRadiusPlaceholder ) {
|
|
236
|
+
return localBorderRadius;
|
|
237
|
+
}
|
|
238
|
+
if ( typeof inheritedBorderRadius === 'string' ) {
|
|
239
|
+
return inheritedBorderRadius;
|
|
240
|
+
}
|
|
241
|
+
const obj = inheritedBorderRadius;
|
|
242
|
+
if ( ! obj ) {
|
|
243
|
+
return localBorderRadius;
|
|
244
|
+
}
|
|
245
|
+
const all =
|
|
246
|
+
obj.topLeft &&
|
|
247
|
+
obj.topLeft === obj.topRight &&
|
|
248
|
+
obj.topLeft === obj.bottomLeft &&
|
|
249
|
+
obj.topLeft === obj.bottomRight
|
|
250
|
+
? obj.topLeft
|
|
251
|
+
: undefined;
|
|
252
|
+
return { all, ...obj };
|
|
253
|
+
}, [
|
|
254
|
+
isBorderRadiusPlaceholder,
|
|
255
|
+
localBorderRadius,
|
|
256
|
+
inheritedBorderRadius,
|
|
257
|
+
] );
|
|
175
258
|
const hasShadowControl = useHasShadowControl( settings );
|
|
176
259
|
|
|
177
|
-
// Shadow
|
|
178
|
-
|
|
260
|
+
// Shadow. At rest, the popover toggle button uses the placeholder
|
|
261
|
+
// treatment, and the popover preset list pre-selects the inherited shadow.
|
|
262
|
+
// The interceptor below recognises the user's "accept inherited" click as
|
|
263
|
+
// an explicit commit, mirroring the ToggleGroup pattern in the typography
|
|
264
|
+
// panel.
|
|
265
|
+
const localShadow = decodeValue( value?.shadow );
|
|
266
|
+
const inheritedShadow = decodeValue( inheritedValue?.shadow );
|
|
267
|
+
const isShadowPlaceholder =
|
|
268
|
+
localShadow === undefined &&
|
|
269
|
+
inheritedShadow !== undefined &&
|
|
270
|
+
inheritedShadow !== '';
|
|
271
|
+
const shadow = isShadowPlaceholder ? inheritedShadow : localShadow;
|
|
179
272
|
const shadowPresets = settings?.shadow?.presets ?? {};
|
|
180
273
|
const mergedShadowPresets =
|
|
181
274
|
shadowPresets.custom ??
|
|
@@ -195,8 +288,30 @@ export default function BorderPanel( {
|
|
|
195
288
|
)
|
|
196
289
|
);
|
|
197
290
|
};
|
|
291
|
+
// Display-without-commit interceptor for the shadow preset list. When the
|
|
292
|
+
// user is at the at-rest preselect (local is undefined, inherited is the
|
|
293
|
+
// active shadow), `ShadowPresets`' default toggle-off behaviour would
|
|
294
|
+
// interpret the click on the highlighted preset as `undefined` (clear).
|
|
295
|
+
// Re-route it to an explicit commit of the inherited value, so clicking
|
|
296
|
+
// the visible preselected preset is the user's "accept this inherited
|
|
297
|
+
// value" affordance.
|
|
298
|
+
const setShadowWithInheritedCommit = ( newValue ) => {
|
|
299
|
+
if ( isShadowPlaceholder && newValue === undefined ) {
|
|
300
|
+
setShadow( inheritedShadow );
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
setShadow( newValue );
|
|
304
|
+
};
|
|
198
305
|
const hasShadow = () => !! value?.shadow;
|
|
199
306
|
const resetShadow = () => setShadow( undefined );
|
|
307
|
+
// A local override exists when the user has set a shadow that shadows an
|
|
308
|
+
// inherited one. Only then does the toggle render the blue-dot reset
|
|
309
|
+
// affordance (mirroring the color/gradient controls); a merely-inherited
|
|
310
|
+
// value at rest shows no reset button.
|
|
311
|
+
const hasShadowLocalOverride =
|
|
312
|
+
showInheritanceLabelIndicators &&
|
|
313
|
+
hasShadow() &&
|
|
314
|
+
inheritedShadow !== undefined;
|
|
200
315
|
|
|
201
316
|
const resetBorder = () => {
|
|
202
317
|
if ( hasBorderRadius() ) {
|
|
@@ -225,9 +340,22 @@ export default function BorderPanel( {
|
|
|
225
340
|
}
|
|
226
341
|
|
|
227
342
|
// As radius is maintained separately to color, style, and width
|
|
228
|
-
// maintain its value.
|
|
343
|
+
// maintain its value. Read from `value` (local-only) rather than
|
|
344
|
+
// `border` (the merged display value), otherwise an inherited
|
|
345
|
+
// radius gets baked into the local override every time the
|
|
346
|
+
// user touches color/style/width — which both pollutes the
|
|
347
|
+
// stored attribute and causes the radius `ToolsPanelItem` to
|
|
348
|
+
// flip into the `has-local-override-from-global-styles` state
|
|
349
|
+
// even though the user never customised the radius. The
|
|
350
|
+
// `radius` key must come after the spread so it wins over any
|
|
351
|
+
// `radius` field forwarded by `BorderBoxControl`'s inner
|
|
352
|
+
// `BorderControl`, which merges its incoming `value` with the
|
|
353
|
+
// changed prop. Undefined values here will be cleaned when
|
|
229
354
|
// global styles are saved.
|
|
230
|
-
setBorder( {
|
|
355
|
+
setBorder( {
|
|
356
|
+
...updatedBorder,
|
|
357
|
+
radius: value?.border?.radius,
|
|
358
|
+
} );
|
|
231
359
|
};
|
|
232
360
|
|
|
233
361
|
const resetAllFilter = useCallback( ( previousValue ) => {
|
|
@@ -262,13 +390,41 @@ export default function BorderPanel( {
|
|
|
262
390
|
label={ label }
|
|
263
391
|
>
|
|
264
392
|
{ ( showBorderWidth || showBorderColor ) && (
|
|
265
|
-
<
|
|
393
|
+
<InheritanceToolsPanelItem
|
|
394
|
+
{ ...inheritanceProps(
|
|
395
|
+
isBorderPlaceholder,
|
|
396
|
+
isDefinedBorder( value?.border ) &&
|
|
397
|
+
!! inheritedBorder &&
|
|
398
|
+
isDefinedBorder( inheritedBorder )
|
|
399
|
+
) }
|
|
266
400
|
hasValue={ () => isDefinedBorder( value?.border ) }
|
|
267
401
|
label={ __( 'Border' ) }
|
|
268
402
|
onDeselect={ () => resetBorder() }
|
|
269
403
|
isShownByDefault={ showBorderByDefault }
|
|
270
404
|
panelId={ panelId }
|
|
271
405
|
>
|
|
406
|
+
{ ( showInheritanceLabelIndicators ||
|
|
407
|
+
hasShadowControl ) && (
|
|
408
|
+
// Render the visible label as `BaseControl.VisualLabel`
|
|
409
|
+
// (which produces `.components-base-control__label`)
|
|
410
|
+
// rather than passing `label` to `BorderBoxControl`,
|
|
411
|
+
// whose internal `<StyledLabel>` carries no stable
|
|
412
|
+
// className. The inheritance treatment and the
|
|
413
|
+
// local-override reset affordance both target
|
|
414
|
+
// `.components-base-control__label`, so the visible
|
|
415
|
+
// "Border" label has to be a `BaseControl` label to
|
|
416
|
+
// receive them.
|
|
417
|
+
//
|
|
418
|
+
// Render it whenever a Shadow control is also present so
|
|
419
|
+
// the two controls stay disambiguated (mirrors the
|
|
420
|
+
// Shadow label's `hasBorderControl` guard below, and
|
|
421
|
+
// trunk's `hideLabelFromVision={ ! hasShadowControl }`),
|
|
422
|
+
// even when inheritance indicators are off (e.g. in
|
|
423
|
+
// Global Styles).
|
|
424
|
+
<BaseControl.VisualLabel as="legend">
|
|
425
|
+
{ __( 'Border' ) }
|
|
426
|
+
</BaseControl.VisualLabel>
|
|
427
|
+
) }
|
|
272
428
|
<BorderBoxControl
|
|
273
429
|
colors={ colors }
|
|
274
430
|
disableCustomColors={ ! areCustomSolidsEnabled }
|
|
@@ -279,34 +435,46 @@ export default function BorderPanel( {
|
|
|
279
435
|
popoverPlacement="left-start"
|
|
280
436
|
value={ border }
|
|
281
437
|
__experimentalIsRenderedInSidebar
|
|
282
|
-
hideLabelFromVision={ ! hasShadowControl }
|
|
283
|
-
label={ __( 'Border' ) }
|
|
284
438
|
/>
|
|
285
|
-
</
|
|
439
|
+
</InheritanceToolsPanelItem>
|
|
286
440
|
) }
|
|
287
441
|
{ showBorderRadius && (
|
|
288
|
-
<
|
|
442
|
+
<InheritanceToolsPanelItem
|
|
443
|
+
{ ...inheritanceProps(
|
|
444
|
+
isBorderRadiusPlaceholder,
|
|
445
|
+
hasBorderRadius() && inheritedBorderRadius !== undefined
|
|
446
|
+
) }
|
|
289
447
|
hasValue={ hasBorderRadius }
|
|
290
448
|
label={ __( 'Radius' ) }
|
|
449
|
+
hasInlineEndToggle
|
|
291
450
|
onDeselect={ () => setBorderRadius( undefined ) }
|
|
292
451
|
isShownByDefault={ defaultControls.radius }
|
|
293
452
|
panelId={ panelId }
|
|
294
453
|
>
|
|
295
454
|
<BorderRadiusControl
|
|
296
455
|
presets={ settings?.border?.radiusSizes }
|
|
297
|
-
values={
|
|
456
|
+
values={ borderRadius }
|
|
298
457
|
onChange={ ( newValue ) => {
|
|
299
458
|
setBorderRadius( newValue || undefined );
|
|
300
459
|
} }
|
|
301
460
|
/>
|
|
302
|
-
</
|
|
461
|
+
</InheritanceToolsPanelItem>
|
|
303
462
|
) }
|
|
304
463
|
{ hasShadowControl && (
|
|
305
|
-
<
|
|
464
|
+
<InheritanceToolsPanelItem
|
|
465
|
+
{ ...inheritanceProps(
|
|
466
|
+
isShadowPlaceholder,
|
|
467
|
+
hasShadow() && inheritedShadow !== undefined
|
|
468
|
+
) }
|
|
306
469
|
label={ __( 'Shadow' ) }
|
|
307
470
|
hasValue={ hasShadow }
|
|
308
471
|
onDeselect={ resetShadow }
|
|
309
472
|
isShownByDefault={ defaultControls.shadow }
|
|
473
|
+
// The shadow toggle renders its own reset affordance (blue
|
|
474
|
+
// dot for a local override, default reset otherwise) inside
|
|
475
|
+
// the control, mirroring the color/gradient controls, so the
|
|
476
|
+
// panel item must not render a second sibling reset dot.
|
|
477
|
+
showLocalOverrideActionsInLabel={ false }
|
|
310
478
|
panelId={ panelId }
|
|
311
479
|
>
|
|
312
480
|
{ hasBorderControl ? (
|
|
@@ -317,10 +485,13 @@ export default function BorderPanel( {
|
|
|
317
485
|
|
|
318
486
|
<ShadowPopover
|
|
319
487
|
shadow={ shadow }
|
|
320
|
-
onShadowChange={
|
|
488
|
+
onShadowChange={ setShadowWithInheritedCommit }
|
|
321
489
|
settings={ settings }
|
|
490
|
+
hasLocalValue={ hasShadow() }
|
|
491
|
+
hasLocalOverride={ hasShadowLocalOverride }
|
|
492
|
+
onReset={ resetShadow }
|
|
322
493
|
/>
|
|
323
|
-
</
|
|
494
|
+
</InheritanceToolsPanelItem>
|
|
324
495
|
) }
|
|
325
496
|
</Wrapper>
|
|
326
497
|
);
|