@wordpress/block-editor 15.19.1-next.v.202605131006.0 → 15.20.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 +15 -1
- package/build/components/block-card/index.cjs +51 -41
- package/build/components/block-card/index.cjs.map +3 -3
- package/build/components/block-heading-level-dropdown/heading-level-icon.cjs.map +3 -3
- package/build/components/block-icon/index.cjs +7 -1
- package/build/components/block-icon/index.cjs.map +3 -3
- package/build/components/block-inspector/index.cjs +156 -11
- package/build/components/block-inspector/index.cjs.map +3 -3
- package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs +38 -0
- package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs.map +7 -0
- package/build/components/block-list/use-block-props/index.cjs +1 -1
- package/build/components/block-list/use-block-props/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-focus-handler.cjs +3 -4
- package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +3 -3
- package/build/components/block-list/use-block-props/use-is-hovered.cjs +24 -14
- package/build/components/block-list/use-block-props/use-is-hovered.cjs.map +3 -3
- package/build/components/block-lock/modal.cjs.map +3 -3
- package/build/components/block-patterns-list/index.cjs +13 -2
- package/build/components/block-patterns-list/index.cjs.map +2 -2
- package/build/components/block-popover/index.cjs +13 -3
- package/build/components/block-popover/index.cjs.map +2 -2
- package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
- package/build/components/block-visibility/modal.cjs.map +3 -3
- package/build/components/block-visibility/viewport-visibility-info.cjs.map +3 -3
- package/build/components/colors-gradients/control.cjs +7 -4
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/global-styles/advanced-panel.cjs +24 -22
- package/build/components/global-styles/advanced-panel.cjs.map +3 -3
- package/build/components/global-styles/color-panel.cjs +95 -58
- package/build/components/global-styles/color-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +11 -5
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/index.cjs +3 -0
- package/build/components/global-styles/index.cjs.map +2 -2
- package/build/components/global-styles/shadow-panel-components.cjs +38 -26
- package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
- package/build/components/global-styles/state-control-badges.cjs +69 -0
- package/build/components/global-styles/state-control-badges.cjs.map +7 -0
- package/build/components/global-styles/state-control.cjs +54 -63
- package/build/components/global-styles/state-control.cjs.map +3 -3
- package/build/components/iframe/index.cjs +0 -3
- package/build/components/iframe/index.cjs.map +2 -2
- package/build/components/iframe/use-scale-canvas.cjs +4 -1
- package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
- package/build/components/inserter/hooks/use-patterns-state.cjs +4 -6
- package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
- package/build/components/inserter/index.cjs +1 -0
- package/build/components/inserter/index.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-preview.cjs +27 -18
- package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
- package/build/components/inserter/media-tab/utils.cjs +1 -1
- package/build/components/inserter/media-tab/utils.cjs.map +2 -2
- package/build/components/inserter/panel.cjs.map +3 -3
- package/build/components/inspector-controls/block-support-tools-panel.cjs +10 -2
- package/build/components/inspector-controls/block-support-tools-panel.cjs.map +2 -2
- package/build/components/inspector-controls/fill.cjs +14 -4
- package/build/components/inspector-controls/fill.cjs.map +2 -2
- package/build/components/inspector-controls/groups.cjs +2 -0
- package/build/components/inspector-controls/groups.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/index.cjs +13 -8
- package/build/components/inspector-controls-tabs/index.cjs.map +3 -3
- package/build/components/inspector-controls-tabs/settings-tab.cjs +1 -4
- package/build/components/inspector-controls-tabs/settings-tab.cjs.map +3 -3
- package/build/components/inspector-controls-tabs/styles-tab.cjs +9 -0
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +3 -3
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +11 -5
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
- package/build/components/list-view/block-select-button.cjs +20 -8
- package/build/components/list-view/block-select-button.cjs.map +2 -2
- package/build/components/list-view/block.cjs +2 -1
- package/build/components/list-view/block.cjs.map +2 -2
- package/build/components/preset-input-control/custom-value-controls.cjs +10 -1
- package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
- package/build/components/preset-input-control/index.cjs.map +3 -3
- package/build/components/provider/use-media-upload-settings.cjs +1 -0
- package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/enter.cjs +9 -2
- package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/paste-handler.cjs +4 -4
- package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
- package/build/hooks/background.cjs +13 -3
- package/build/hooks/background.cjs.map +2 -2
- package/build/hooks/block-fields/link/index.cjs.map +3 -3
- package/build/hooks/block-fields/media/index.cjs.map +3 -3
- package/build/hooks/block-style-state.cjs +112 -0
- package/build/hooks/block-style-state.cjs.map +7 -0
- package/build/hooks/border.cjs +13 -3
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/color.cjs +28 -9
- package/build/hooks/color.cjs.map +2 -2
- package/build/hooks/dimensions.cjs +15 -6
- package/build/hooks/dimensions.cjs.map +2 -2
- package/build/hooks/layout-child.cjs +147 -61
- package/build/hooks/layout-child.cjs.map +2 -2
- package/build/hooks/layout.cjs +263 -56
- package/build/hooks/layout.cjs.map +3 -3
- package/build/hooks/state-utils.cjs +94 -0
- package/build/hooks/state-utils.cjs.map +7 -0
- package/build/hooks/states.cjs +124 -0
- package/build/hooks/states.cjs.map +7 -0
- package/build/hooks/style.cjs +304 -17
- package/build/hooks/style.cjs.map +3 -3
- package/build/hooks/typography.cjs +14 -5
- package/build/hooks/typography.cjs.map +2 -2
- package/build/layouts/constrained.cjs +128 -55
- package/build/layouts/constrained.cjs.map +3 -3
- package/build/layouts/flex.cjs +119 -31
- package/build/layouts/flex.cjs.map +3 -3
- package/build/layouts/grid.cjs +103 -40
- package/build/layouts/grid.cjs.map +3 -3
- package/build/private-apis.cjs +2 -0
- package/build/private-apis.cjs.map +2 -2
- package/build/store/private-actions.cjs +18 -0
- package/build/store/private-actions.cjs.map +2 -2
- package/build/store/private-keys.cjs +10 -2
- package/build/store/private-keys.cjs.map +2 -2
- package/build/store/private-selectors.cjs +26 -2
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/reducer.cjs +70 -1
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/utils.cjs +1 -1
- package/build/store/utils.cjs.map +2 -2
- package/build/utils/color-values.cjs +44 -0
- package/build/utils/color-values.cjs.map +7 -0
- package/build-module/components/block-card/index.mjs +52 -45
- package/build-module/components/block-card/index.mjs.map +2 -2
- package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs +2 -2
- package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs.map +2 -2
- package/build-module/components/block-icon/index.mjs +8 -2
- package/build-module/components/block-icon/index.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +166 -13
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs +12 -0
- package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs.map +7 -0
- package/build-module/components/block-list/use-block-props/index.mjs +1 -1
- 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-handler.mjs +7 -5
- 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-is-hovered.mjs +28 -15
- package/build-module/components/block-list/use-block-props/use-is-hovered.mjs.map +2 -2
- package/build-module/components/block-lock/modal.mjs +4 -4
- package/build-module/components/block-lock/modal.mjs.map +2 -2
- package/build-module/components/block-patterns-list/index.mjs +14 -4
- package/build-module/components/block-patterns-list/index.mjs.map +2 -2
- package/build-module/components/block-popover/index.mjs +13 -3
- package/build-module/components/block-popover/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs +2 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
- package/build-module/components/block-visibility/modal.mjs +2 -2
- package/build-module/components/block-visibility/modal.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs +7 -4
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/global-styles/advanced-panel.mjs +25 -27
- package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-panel.mjs +96 -59
- package/build-module/components/global-styles/color-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +14 -5
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/index.mjs +2 -0
- package/build-module/components/global-styles/index.mjs.map +2 -2
- package/build-module/components/global-styles/shadow-panel-components.mjs +39 -28
- package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
- package/build-module/components/global-styles/state-control-badges.mjs +48 -0
- package/build-module/components/global-styles/state-control-badges.mjs.map +7 -0
- package/build-module/components/global-styles/state-control.mjs +57 -71
- package/build-module/components/global-styles/state-control.mjs.map +2 -2
- package/build-module/components/iframe/index.mjs +0 -3
- package/build-module/components/iframe/index.mjs.map +2 -2
- package/build-module/components/iframe/use-scale-canvas.mjs +4 -1
- package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-patterns-state.mjs +8 -7
- package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
- package/build-module/components/inserter/index.mjs +1 -0
- package/build-module/components/inserter/index.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-preview.mjs +27 -19
- package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/utils.mjs +1 -1
- package/build-module/components/inserter/media-tab/utils.mjs.map +2 -2
- package/build-module/components/inserter/panel.mjs +2 -2
- package/build-module/components/inserter/panel.mjs.map +2 -2
- package/build-module/components/inspector-controls/block-support-tools-panel.mjs +10 -2
- package/build-module/components/inspector-controls/block-support-tools-panel.mjs.map +2 -2
- package/build-module/components/inspector-controls/fill.mjs +18 -5
- package/build-module/components/inspector-controls/fill.mjs.map +2 -2
- package/build-module/components/inspector-controls/groups.mjs +2 -0
- package/build-module/components/inspector-controls/groups.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/index.mjs +14 -10
- package/build-module/components/inspector-controls-tabs/index.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/settings-tab.mjs +1 -4
- package/build-module/components/inspector-controls-tabs/settings-tab.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs +9 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +11 -5
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
- package/build-module/components/list-view/block-select-button.mjs +20 -9
- package/build-module/components/list-view/block-select-button.mjs.map +2 -2
- package/build-module/components/list-view/block.mjs +2 -1
- package/build-module/components/list-view/block.mjs.map +2 -2
- package/build-module/components/preset-input-control/custom-value-controls.mjs +10 -2
- package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
- package/build-module/components/preset-input-control/index.mjs +2 -2
- package/build-module/components/preset-input-control/index.mjs.map +2 -2
- package/build-module/components/provider/use-media-upload-settings.mjs +1 -0
- package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +9 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/paste-handler.mjs +4 -4
- package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
- package/build-module/hooks/background.mjs +18 -3
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/block-fields/link/index.mjs +3 -3
- package/build-module/hooks/block-fields/link/index.mjs.map +2 -2
- package/build-module/hooks/block-fields/media/index.mjs +3 -3
- package/build-module/hooks/block-fields/media/index.mjs.map +2 -2
- package/build-module/hooks/block-style-state.mjs +79 -0
- package/build-module/hooks/block-style-state.mjs.map +7 -0
- package/build-module/hooks/border.mjs +18 -3
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/color.mjs +33 -9
- package/build-module/hooks/color.mjs.map +2 -2
- package/build-module/hooks/dimensions.mjs +20 -6
- package/build-module/hooks/dimensions.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs +141 -61
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +270 -58
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/state-utils.mjs +64 -0
- package/build-module/hooks/state-utils.mjs.map +7 -0
- package/build-module/hooks/states.mjs +85 -0
- package/build-module/hooks/states.mjs.map +7 -0
- package/build-module/hooks/style.mjs +309 -18
- package/build-module/hooks/style.mjs.map +2 -2
- package/build-module/hooks/typography.mjs +19 -5
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/layouts/constrained.mjs +130 -57
- package/build-module/layouts/constrained.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +123 -35
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/layouts/grid.mjs +105 -42
- package/build-module/layouts/grid.mjs.map +2 -2
- package/build-module/private-apis.mjs +4 -0
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/private-actions.mjs +16 -0
- package/build-module/store/private-actions.mjs.map +2 -2
- package/build-module/store/private-keys.mjs +7 -1
- package/build-module/store/private-keys.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +25 -2
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs +69 -1
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/utils.mjs +5 -2
- package/build-module/store/utils.mjs.map +2 -2
- package/build-module/utils/color-values.mjs +19 -0
- package/build-module/utils/color-values.mjs.map +7 -0
- package/build-style/content-rtl.css +18 -3
- package/build-style/content.css +18 -3
- package/build-style/style-rtl.css +14 -17
- package/build-style/style.css +14 -17
- package/package.json +41 -41
- package/src/components/audio-player/index.native.js +7 -3
- package/src/components/block-card/index.js +67 -60
- package/src/components/block-heading-level-dropdown/heading-level-icon.js +2 -2
- package/src/components/block-icon/index.js +5 -2
- package/src/components/block-icon/index.native.js +2 -2
- package/src/components/block-inspector/index.js +153 -7
- package/src/components/block-inspector/inspector-pre-tabs-slot-fill.js +11 -0
- package/src/components/block-list/block-selection-button.native.js +3 -3
- package/src/components/block-list/content.scss +0 -6
- package/src/components/block-list/use-block-props/index.js +1 -1
- package/src/components/block-list/use-block-props/use-focus-handler.js +8 -6
- package/src/components/block-list/use-block-props/use-is-hovered.js +32 -15
- package/src/components/block-lock/modal.js +4 -4
- package/src/components/block-patterns-list/index.js +14 -5
- package/src/components/block-patterns-list/stories/index.story.jsx +2 -0
- package/src/components/block-patterns-list/style.scss +0 -1
- package/src/components/block-popover/index.js +20 -10
- package/src/components/block-toolbar/switch-section-style.js +2 -2
- package/src/components/block-visibility/modal.js +2 -2
- package/src/components/block-visibility/viewport-visibility-info.js +2 -2
- package/src/components/colors/test/with-colors.js +1 -1
- package/src/components/colors-gradients/control.js +10 -8
- package/src/components/colors-gradients/test/control.js +98 -1
- package/src/components/global-styles/advanced-panel.js +44 -39
- package/src/components/global-styles/color-panel.js +133 -60
- package/src/components/global-styles/dimensions-panel.js +17 -4
- package/src/components/global-styles/index.js +1 -0
- package/src/components/global-styles/shadow-panel-components.js +29 -19
- package/src/components/global-styles/state-control-badges.js +58 -0
- package/src/components/global-styles/state-control.js +28 -36
- package/src/components/global-styles/test/color-panel.js +135 -0
- package/src/components/iframe/index.js +0 -3
- package/src/components/iframe/use-scale-canvas.js +8 -2
- package/src/components/inserter/hooks/use-patterns-state.js +12 -7
- package/src/components/inserter/index.js +1 -0
- package/src/components/inserter/media-tab/media-preview.js +29 -20
- package/src/components/inserter/media-tab/utils.js +1 -1
- package/src/components/inserter/panel.js +2 -2
- package/src/components/inserter/style.scss +1 -0
- package/src/components/inserter-button/index.native.js +5 -2
- package/src/components/inspector-controls/block-support-tools-panel.js +10 -2
- package/src/components/inspector-controls/fill.js +18 -5
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/index.js +9 -5
- package/src/components/inspector-controls-tabs/settings-tab.js +1 -7
- package/src/components/inspector-controls-tabs/styles-tab.js +6 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +13 -7
- package/src/components/list-view/block-select-button.js +19 -9
- package/src/components/list-view/block.js +6 -1
- package/src/components/media-replace-flow/style.scss +0 -18
- package/src/components/preset-input-control/custom-value-controls.js +13 -6
- package/src/components/preset-input-control/index.js +2 -2
- package/src/components/provider/use-media-upload-settings.js +1 -0
- package/src/components/rich-text/event-listeners/enter.js +14 -2
- package/src/components/rich-text/event-listeners/paste-handler.js +5 -4
- package/src/components/unsupported-block-details/index.native.js +6 -2
- package/src/components/video-player/index.native.js +2 -2
- package/src/components/warning/index.native.js +2 -2
- package/src/hooks/background.js +59 -37
- package/src/hooks/block-fields/link/index.js +3 -3
- package/src/hooks/block-fields/media/index.js +3 -3
- package/src/hooks/block-style-state.js +127 -0
- package/src/hooks/border.js +25 -6
- package/src/hooks/color.js +40 -18
- package/src/hooks/dimensions.js +32 -11
- package/src/hooks/layout-child.js +179 -62
- package/src/hooks/layout.js +349 -75
- package/src/hooks/layout.scss +6 -0
- package/src/hooks/state-utils.js +158 -0
- package/src/hooks/states.js +109 -0
- package/src/hooks/style.js +456 -19
- package/src/hooks/test/block-style-state.js +270 -0
- package/src/hooks/test/layout.js +185 -0
- package/src/hooks/test/state-utils.js +193 -0
- package/src/hooks/test/style.js +301 -1
- package/src/hooks/typography.js +33 -14
- package/src/layouts/constrained.js +182 -95
- package/src/layouts/flex.js +141 -36
- package/src/layouts/grid.js +122 -32
- package/src/layouts/test/flex.js +57 -20
- package/src/private-apis.js +4 -0
- package/src/store/private-actions.js +32 -0
- package/src/store/private-keys.js +4 -0
- package/src/store/private-selectors.js +44 -2
- package/src/store/reducer.js +105 -1
- package/src/store/test/private-actions.js +26 -0
- package/src/store/test/private-selectors.js +90 -0
- package/src/store/test/reducer.js +363 -0
- package/src/store/utils.js +6 -2
- package/src/utils/color-values.js +28 -0
- package/src/utils/test/color-values.js +78 -0
package/src/hooks/test/style.js
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { registerBlockType, unregisterBlockType } from '@wordpress/blocks';
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* Internal dependencies
|
|
3
8
|
*/
|
|
4
|
-
import _style, {
|
|
9
|
+
import _style, {
|
|
10
|
+
getCanvasStateStyleValue,
|
|
11
|
+
getBlockStateStylesCSS,
|
|
12
|
+
getInlineStyles,
|
|
13
|
+
getResponsiveStateCSSRules,
|
|
14
|
+
getStateStylesCSS,
|
|
15
|
+
omitStyle,
|
|
16
|
+
} from '../style';
|
|
5
17
|
|
|
6
18
|
describe( 'getInlineStyles', () => {
|
|
7
19
|
it( 'should return an empty object when called with undefined', () => {
|
|
@@ -116,6 +128,294 @@ describe( 'getInlineStyles', () => {
|
|
|
116
128
|
} );
|
|
117
129
|
} );
|
|
118
130
|
|
|
131
|
+
describe( 'getStateStylesCSS', () => {
|
|
132
|
+
it( 'adds fallback border style without important', () => {
|
|
133
|
+
expect(
|
|
134
|
+
getStateStylesCSS(
|
|
135
|
+
{
|
|
136
|
+
border: {
|
|
137
|
+
color: '#000000',
|
|
138
|
+
width: '2px',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
'.wp-block-test:hover'
|
|
142
|
+
)
|
|
143
|
+
).toBe(
|
|
144
|
+
'.wp-block-test:hover { border-color: #000000 !important; border-width: 2px !important; }\n.wp-block-test:hover { border-style: solid; }'
|
|
145
|
+
);
|
|
146
|
+
} );
|
|
147
|
+
|
|
148
|
+
it( 'adds important to authored border style', () => {
|
|
149
|
+
expect(
|
|
150
|
+
getStateStylesCSS(
|
|
151
|
+
{
|
|
152
|
+
border: {
|
|
153
|
+
style: 'solid',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
'.wp-block-test:hover'
|
|
157
|
+
)
|
|
158
|
+
).toBe( '.wp-block-test:hover { border-style: solid !important; }' );
|
|
159
|
+
} );
|
|
160
|
+
|
|
161
|
+
it( 'adds important to authored side border style', () => {
|
|
162
|
+
expect(
|
|
163
|
+
getStateStylesCSS(
|
|
164
|
+
{
|
|
165
|
+
border: {
|
|
166
|
+
top: {
|
|
167
|
+
style: 'dashed',
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
'.wp-block-test:hover'
|
|
172
|
+
)
|
|
173
|
+
).toBe(
|
|
174
|
+
'.wp-block-test:hover { border-top-style: dashed !important; }'
|
|
175
|
+
);
|
|
176
|
+
} );
|
|
177
|
+
|
|
178
|
+
it( 'adds fallback side border style without important', () => {
|
|
179
|
+
expect(
|
|
180
|
+
getStateStylesCSS(
|
|
181
|
+
{
|
|
182
|
+
border: {
|
|
183
|
+
top: {
|
|
184
|
+
width: '2px',
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
'.wp-block-test:hover'
|
|
189
|
+
)
|
|
190
|
+
).toBe(
|
|
191
|
+
'.wp-block-test:hover { border-top-width: 2px !important; }\n.wp-block-test:hover { border-top-style: solid; }'
|
|
192
|
+
);
|
|
193
|
+
} );
|
|
194
|
+
|
|
195
|
+
it( 'adds important to side border color', () => {
|
|
196
|
+
expect(
|
|
197
|
+
getStateStylesCSS(
|
|
198
|
+
{
|
|
199
|
+
border: {
|
|
200
|
+
top: {
|
|
201
|
+
color: '#0000ff',
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
'.wp-block-test:hover'
|
|
206
|
+
)
|
|
207
|
+
).toBe(
|
|
208
|
+
'.wp-block-test:hover { border-top-color: #0000ff !important; }\n.wp-block-test:hover { border-top-style: solid; }'
|
|
209
|
+
);
|
|
210
|
+
} );
|
|
211
|
+
} );
|
|
212
|
+
|
|
213
|
+
describe( 'getBlockStateStylesCSS', () => {
|
|
214
|
+
beforeEach( () => {
|
|
215
|
+
registerBlockType( 'test/state-button', {
|
|
216
|
+
apiVersion: 3,
|
|
217
|
+
title: 'State Button',
|
|
218
|
+
category: 'text',
|
|
219
|
+
attributes: {},
|
|
220
|
+
edit: () => null,
|
|
221
|
+
save: () => null,
|
|
222
|
+
selectors: {
|
|
223
|
+
root: '.wp-block-button .wp-block-button__link',
|
|
224
|
+
dimensions: {
|
|
225
|
+
root: '.wp-block-button',
|
|
226
|
+
width: '.wp-block-button',
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
} );
|
|
230
|
+
} );
|
|
231
|
+
|
|
232
|
+
afterEach( () => {
|
|
233
|
+
unregisterBlockType( 'test/state-button' );
|
|
234
|
+
} );
|
|
235
|
+
|
|
236
|
+
it( 'routes state styles through feature selectors', () => {
|
|
237
|
+
expect(
|
|
238
|
+
getBlockStateStylesCSS(
|
|
239
|
+
{
|
|
240
|
+
color: { background: '#ff00d0' },
|
|
241
|
+
dimensions: { width: '50%' },
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
name: 'test/state-button',
|
|
245
|
+
baseSelector: '.wp-elements-abc123',
|
|
246
|
+
state: ':hover',
|
|
247
|
+
}
|
|
248
|
+
)
|
|
249
|
+
).toBe(
|
|
250
|
+
'.wp-elements-abc123 .wp-block-button__link:hover { background-color: #ff00d0 !important; }\n.wp-elements-abc123:hover { width: 50% !important; }'
|
|
251
|
+
);
|
|
252
|
+
} );
|
|
253
|
+
|
|
254
|
+
it( 'routes canvas preview styles through feature selectors without the pseudo state', () => {
|
|
255
|
+
expect(
|
|
256
|
+
getBlockStateStylesCSS(
|
|
257
|
+
{
|
|
258
|
+
color: { background: '#ff00d0' },
|
|
259
|
+
dimensions: { width: '50%' },
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
name: 'test/state-button',
|
|
263
|
+
baseSelector: '[data-block="client-id"]',
|
|
264
|
+
}
|
|
265
|
+
)
|
|
266
|
+
).toBe(
|
|
267
|
+
'[data-block="client-id"] .wp-block-button__link { background-color: #ff00d0 !important; }\n[data-block="client-id"] { width: 50% !important; }'
|
|
268
|
+
);
|
|
269
|
+
} );
|
|
270
|
+
} );
|
|
271
|
+
|
|
272
|
+
describe( 'getResponsiveStateCSSRules', () => {
|
|
273
|
+
beforeEach( () => {
|
|
274
|
+
registerBlockType( 'test/state-button', {
|
|
275
|
+
apiVersion: 3,
|
|
276
|
+
title: 'State Button',
|
|
277
|
+
category: 'text',
|
|
278
|
+
attributes: {},
|
|
279
|
+
edit: () => null,
|
|
280
|
+
save: () => null,
|
|
281
|
+
selectors: {
|
|
282
|
+
root: '.wp-block-button .wp-block-button__link',
|
|
283
|
+
dimensions: {
|
|
284
|
+
root: '.wp-block-button',
|
|
285
|
+
width: '.wp-block-button',
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
} );
|
|
289
|
+
} );
|
|
290
|
+
|
|
291
|
+
afterEach( () => {
|
|
292
|
+
unregisterBlockType( 'test/state-button' );
|
|
293
|
+
} );
|
|
294
|
+
|
|
295
|
+
it( 'generates media-query scoped root styles for viewport states', () => {
|
|
296
|
+
expect(
|
|
297
|
+
getResponsiveStateCSSRules(
|
|
298
|
+
{
|
|
299
|
+
mobile: {
|
|
300
|
+
color: { text: 'red' },
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
'core/paragraph',
|
|
304
|
+
'.wp-elements-1'
|
|
305
|
+
)
|
|
306
|
+
).toEqual( [
|
|
307
|
+
'@media (width <= 480px){.wp-elements-1 { color: red !important; }}',
|
|
308
|
+
] );
|
|
309
|
+
} );
|
|
310
|
+
|
|
311
|
+
it( 'routes viewport styles through feature selectors', () => {
|
|
312
|
+
expect(
|
|
313
|
+
getResponsiveStateCSSRules(
|
|
314
|
+
{
|
|
315
|
+
mobile: {
|
|
316
|
+
color: { background: '#ff00d0' },
|
|
317
|
+
dimensions: { width: '50%' },
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
'test/state-button',
|
|
321
|
+
'.wp-elements-1'
|
|
322
|
+
)
|
|
323
|
+
).toEqual( [
|
|
324
|
+
'@media (width <= 480px){.wp-elements-1 .wp-block-button__link { background-color: #ff00d0 !important; }\n.wp-elements-1 { width: 50% !important; }}',
|
|
325
|
+
] );
|
|
326
|
+
} );
|
|
327
|
+
|
|
328
|
+
it( 'generates media-query scoped pseudo styles for viewport states', () => {
|
|
329
|
+
expect(
|
|
330
|
+
getResponsiveStateCSSRules(
|
|
331
|
+
{
|
|
332
|
+
mobile: {
|
|
333
|
+
':hover': {
|
|
334
|
+
color: { background: 'black' },
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
'core/button',
|
|
339
|
+
'.wp-elements-1'
|
|
340
|
+
)
|
|
341
|
+
).toEqual( [
|
|
342
|
+
'@media (width <= 480px){.wp-elements-1:hover { background-color: black !important; }}',
|
|
343
|
+
] );
|
|
344
|
+
} );
|
|
345
|
+
|
|
346
|
+
it( 'generates media-query scoped element styles for viewport states', () => {
|
|
347
|
+
expect(
|
|
348
|
+
getResponsiveStateCSSRules(
|
|
349
|
+
{
|
|
350
|
+
mobile: {
|
|
351
|
+
elements: {
|
|
352
|
+
link: {
|
|
353
|
+
color: { text: 'blue' },
|
|
354
|
+
},
|
|
355
|
+
},
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
'core/paragraph',
|
|
359
|
+
'.wp-elements-1'
|
|
360
|
+
)
|
|
361
|
+
).toEqual( [
|
|
362
|
+
'@media (width <= 480px){.wp-elements-1 a:where(:not(.wp-element-button)) { color: blue; }}',
|
|
363
|
+
] );
|
|
364
|
+
} );
|
|
365
|
+
} );
|
|
366
|
+
|
|
367
|
+
describe( 'getCanvasStateStyleValue', () => {
|
|
368
|
+
it( 'returns the selected pseudo state value without a viewport state', () => {
|
|
369
|
+
expect(
|
|
370
|
+
getCanvasStateStyleValue(
|
|
371
|
+
{
|
|
372
|
+
':hover': {
|
|
373
|
+
color: { text: 'red' },
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
{ viewport: 'default', pseudo: ':hover' }
|
|
377
|
+
)
|
|
378
|
+
).toEqual( {
|
|
379
|
+
color: { text: 'red' },
|
|
380
|
+
} );
|
|
381
|
+
} );
|
|
382
|
+
|
|
383
|
+
it( 'falls back to default viewport pseudo styles for responsive pseudo states', () => {
|
|
384
|
+
expect(
|
|
385
|
+
getCanvasStateStyleValue(
|
|
386
|
+
{
|
|
387
|
+
':hover': {
|
|
388
|
+
color: { text: 'red' },
|
|
389
|
+
},
|
|
390
|
+
},
|
|
391
|
+
{ viewport: 'mobile', pseudo: ':hover' }
|
|
392
|
+
)
|
|
393
|
+
).toEqual( {
|
|
394
|
+
color: { text: 'red' },
|
|
395
|
+
} );
|
|
396
|
+
} );
|
|
397
|
+
|
|
398
|
+
it( 'merges responsive pseudo styles over default viewport pseudo styles', () => {
|
|
399
|
+
expect(
|
|
400
|
+
getCanvasStateStyleValue(
|
|
401
|
+
{
|
|
402
|
+
':hover': {
|
|
403
|
+
color: { background: 'blue', text: 'red' },
|
|
404
|
+
},
|
|
405
|
+
mobile: {
|
|
406
|
+
':hover': {
|
|
407
|
+
color: { text: 'yellow' },
|
|
408
|
+
},
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
{ viewport: 'mobile', pseudo: ':hover' }
|
|
412
|
+
)
|
|
413
|
+
).toEqual( {
|
|
414
|
+
color: { background: 'blue', text: 'yellow' },
|
|
415
|
+
} );
|
|
416
|
+
} );
|
|
417
|
+
} );
|
|
418
|
+
|
|
119
419
|
describe( 'addSaveProps', () => {
|
|
120
420
|
const blockSettings = {
|
|
121
421
|
save: () => <div className="default" />,
|
package/src/hooks/typography.js
CHANGED
|
@@ -21,6 +21,12 @@ import { TEXT_ALIGN_SUPPORT_KEY } from './text-align';
|
|
|
21
21
|
import { FIT_TEXT_SUPPORT_KEY } from './fit-text';
|
|
22
22
|
import { cleanEmptyObject } from './utils';
|
|
23
23
|
import { store as blockEditorStore } from '../store';
|
|
24
|
+
import {
|
|
25
|
+
getStyleForState,
|
|
26
|
+
isDefaultBlockStyleState,
|
|
27
|
+
setStyleForState,
|
|
28
|
+
useBlockStyleState,
|
|
29
|
+
} from './block-style-state';
|
|
24
30
|
|
|
25
31
|
function omit( object, keys ) {
|
|
26
32
|
return Object.fromEntries(
|
|
@@ -117,6 +123,7 @@ function TypographyInspectorControl( { children, resetAllFilter } ) {
|
|
|
117
123
|
}
|
|
118
124
|
|
|
119
125
|
export function TypographyPanel( { clientId, name, setAttributes, settings } ) {
|
|
126
|
+
const selectedState = useBlockStyleState();
|
|
120
127
|
const isEnabled = useHasTypographyPanel( settings );
|
|
121
128
|
|
|
122
129
|
const { style, fontFamily, fontSize, fitText } = useSelect(
|
|
@@ -140,23 +147,35 @@ export function TypographyPanel( { clientId, name, setAttributes, settings } ) {
|
|
|
140
147
|
},
|
|
141
148
|
[ clientId, isEnabled ]
|
|
142
149
|
);
|
|
143
|
-
const value = useMemo(
|
|
144
|
-
() => attributesToStyle( { style, fontFamily, fontSize } ),
|
|
145
|
-
[ style, fontSize, fontFamily ]
|
|
146
|
-
);
|
|
147
150
|
|
|
148
|
-
const
|
|
149
|
-
const newAttributes = styleToAttributes( newStyle );
|
|
151
|
+
const isStateSelected = ! isDefaultBlockStyleState( selectedState );
|
|
150
152
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if ( hasFontSize && fitText ) {
|
|
155
|
-
newAttributes.fitText = undefined;
|
|
153
|
+
const value = useMemo( () => {
|
|
154
|
+
if ( isStateSelected ) {
|
|
155
|
+
return getStyleForState( style, selectedState );
|
|
156
156
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
return attributesToStyle( { style, fontFamily, fontSize } );
|
|
158
|
+
}, [ isStateSelected, selectedState, style, fontSize, fontFamily ] );
|
|
159
|
+
|
|
160
|
+
const onChange = isStateSelected
|
|
161
|
+
? ( newStyle ) => {
|
|
162
|
+
setAttributes( {
|
|
163
|
+
style: setStyleForState( style, selectedState, newStyle ),
|
|
164
|
+
} );
|
|
165
|
+
}
|
|
166
|
+
: ( newStyle ) => {
|
|
167
|
+
const newAttributes = styleToAttributes( newStyle );
|
|
168
|
+
|
|
169
|
+
// If setting a font size and fitText is currently enabled, disable it.
|
|
170
|
+
const hasFontSize =
|
|
171
|
+
newAttributes.fontSize ||
|
|
172
|
+
newAttributes.style?.typography?.fontSize;
|
|
173
|
+
if ( hasFontSize && fitText ) {
|
|
174
|
+
newAttributes.fitText = undefined;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
setAttributes( newAttributes );
|
|
178
|
+
};
|
|
160
179
|
|
|
161
180
|
if ( ! isEnabled ) {
|
|
162
181
|
return null;
|