@wordpress/block-editor 9.8.1-next.957ca95e4c.0 → 10.0.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 +6 -0
- package/README.md +13 -1
- package/build/components/alignment-control/ui.js +6 -5
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-actions/index.js +5 -9
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js +5 -5
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-content-overlay/index.js +2 -4
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-draggable/draggable-chip.js +2 -1
- package/build/components/block-draggable/draggable-chip.js.map +1 -1
- package/build/components/block-edit/edit.js +1 -1
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-inspector/index.js +125 -17
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block.js +40 -9
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.js +4 -4
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +14 -11
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js +3 -2
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -9
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-is-hovered.js +1 -2
- package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +7 -12
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js +20 -21
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-list-appender/index.native.js +1 -7
- package/build/components/block-list-appender/index.native.js.map +1 -1
- package/build/components/block-lock/use-block-lock.js +3 -1
- package/build/components/block-lock/use-block-lock.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +20 -10
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mover/button.js +4 -6
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +4 -6
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +24 -8
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-popover/inbetween.js +58 -16
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +3 -2
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +4 -2
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +3 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +3 -1
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/preview-panel.js +7 -1
- package/build/components/block-styles/preview-panel.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js +114 -25
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +9 -8
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +3 -2
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +13 -5
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +33 -15
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +4 -9
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +9 -8
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +13 -8
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +71 -0
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
- package/build/components/block-vertical-alignment-control/ui.js +5 -2
- package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +1 -1
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/iframe/index.js +31 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +1 -7
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +2 -2
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -5
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/index.js +3 -6
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/library.js +14 -3
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +21 -8
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/preview-panel.js +1 -1
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/tabs.js +11 -4
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/link-control/link-preview.js +1 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +6 -3
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-item.js +36 -5
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/list-view/block.js +23 -11
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +19 -2
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +8 -4
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +0 -1
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/provider/use-block-sync.js +1 -7
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +1 -1
- package/build/components/publish-date-time-picker/index.js.map +1 -1
- package/build/components/rich-text/index.js +27 -19
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +11 -20
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/text-decoration-control/index.js +1 -1
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +1 -1
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/tool-selector/index.js +6 -11
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/url-popover/index.js +1 -1
- package/build/components/url-popover/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +7 -4
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +9 -28
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +1 -7
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/hooks/align.js +14 -2
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/color-panel.js +2 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/content-lock-ui.js +145 -0
- package/build/hooks/content-lock-ui.js.map +1 -0
- package/build/hooks/duotone.js +8 -1
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +14 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +11 -9
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/metadata-name.js +55 -0
- package/build/hooks/metadata-name.js.map +1 -0
- package/build/hooks/metadata.js +65 -0
- package/build/hooks/metadata.js.map +1 -0
- package/build/hooks/use-typography-props.js +51 -0
- package/build/hooks/use-typography-props.js.map +1 -0
- package/build/hooks/utils.js +3 -1
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/constrained.js +59 -20
- package/build/layouts/constrained.js.map +1 -1
- package/build/store/actions.js +65 -21
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +39 -18
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +95 -9
- package/build/store/selectors.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +1 -1
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +6 -5
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-actions/index.js +5 -8
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js +5 -5
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +2 -4
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.js +2 -1
- package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
- package/build-module/components/block-edit/edit.js +1 -1
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-inspector/index.js +127 -19
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block.js +41 -9
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.js +4 -4
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +13 -11
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +3 -2
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +3 -8
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-is-hovered.js +1 -2
- package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +7 -12
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +20 -20
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.native.js +1 -6
- package/build-module/components/block-list-appender/index.native.js.map +1 -1
- package/build-module/components/block-lock/use-block-lock.js +3 -1
- package/build-module/components/block-lock/use-block-lock.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +20 -9
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -5
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -5
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +24 -7
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +59 -17
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +3 -2
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +4 -2
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +3 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +3 -1
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/preview-panel.js +6 -1
- package/build-module/components/block-styles/preview-panel.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js +115 -27
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +9 -8
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +3 -2
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +12 -5
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +30 -15
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +4 -9
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +9 -8
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +13 -8
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +59 -0
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
- package/build-module/components/block-vertical-alignment-control/ui.js +5 -2
- package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +1 -1
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/iframe/index.js +32 -5
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +1 -6
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +2 -2
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -5
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -6
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/library.js +14 -3
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +20 -8
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +1 -1
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/tabs.js +11 -4
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +1 -1
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +6 -2
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-item.js +37 -6
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/list-view/block.js +23 -11
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +19 -3
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +8 -4
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +0 -1
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +1 -6
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +1 -1
- package/build-module/components/publish-date-time-picker/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +27 -18
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +11 -18
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/text-decoration-control/index.js +1 -1
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +1 -1
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/tool-selector/index.js +6 -11
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/url-popover/index.js +1 -1
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +7 -4
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +9 -28
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +1 -6
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/hooks/align.js +12 -2
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/color-panel.js +2 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +128 -0
- package/build-module/hooks/content-lock-ui.js.map +1 -0
- package/build-module/hooks/duotone.js +6 -1
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +4 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +11 -9
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/metadata-name.js +45 -0
- package/build-module/hooks/metadata-name.js.map +1 -0
- package/build-module/hooks/metadata.js +50 -0
- package/build-module/hooks/metadata.js.map +1 -0
- package/build-module/hooks/use-typography-props.js +38 -0
- package/build-module/hooks/use-typography-props.js.map +1 -0
- package/build-module/hooks/utils.js +4 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/constrained.js +61 -22
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/store/actions.js +58 -20
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +37 -18
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +80 -9
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +1 -1
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-style/style-rtl.css +95 -45
- package/build-style/style.css +95 -45
- package/package.json +28 -28
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +137 -108
- package/src/components/alignment-control/test/index.js +124 -33
- package/src/components/alignment-control/ui.js +8 -3
- package/src/components/block-actions/index.js +9 -8
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +108 -65
- package/src/components/block-alignment-control/test/index.js +95 -31
- package/src/components/block-alignment-control/ui.js +2 -2
- package/src/components/block-compare/test/__snapshots__/block-view.js.snap +28 -26
- package/src/components/block-compare/test/block-view.js +3 -3
- package/src/components/block-content-overlay/index.js +2 -6
- package/src/components/block-content-overlay/style.scss +24 -3
- package/src/components/block-draggable/draggable-chip.js +4 -1
- package/src/components/block-edit/edit.js +5 -1
- package/src/components/block-edit/test/edit.js +23 -21
- package/src/components/block-icon/test/__snapshots__/index.js.snap +22 -0
- package/src/components/block-icon/test/index.js +31 -16
- package/src/components/block-inspector/index.js +126 -12
- package/src/components/block-inspector/style.scss +7 -1
- package/src/components/block-list/block.js +53 -13
- package/src/components/block-list/index.js +4 -4
- package/src/components/block-list/style.scss +39 -12
- package/src/components/block-list/test/block-list-context.native.js +11 -13
- package/src/components/block-list/use-block-props/index.js +10 -10
- package/src/components/block-list/use-block-props/use-block-class-names.js +4 -1
- package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -8
- package/src/components/block-list/use-block-props/use-is-hovered.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +11 -13
- package/src/components/block-list-appender/index.js +27 -18
- package/src/components/block-list-appender/index.native.js +3 -6
- package/src/components/block-lock/use-block-lock.js +2 -0
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +15 -9
- package/src/components/block-mover/button.js +6 -5
- package/src/components/block-mover/index.js +8 -7
- package/src/components/block-mover/index.native.js +20 -13
- package/src/components/block-popover/inbetween.js +85 -21
- package/src/components/block-popover/index.js +3 -2
- package/src/components/block-popover/style.scss +3 -4
- package/src/components/block-preview/auto.js +4 -2
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
- package/src/components/block-settings-menu-controls/README.md +9 -0
- package/src/components/block-settings-menu-controls/index.js +13 -2
- package/src/components/block-styles/preview-panel.js +3 -0
- package/src/components/block-switcher/block-transformations-menu.js +127 -33
- package/src/components/block-switcher/style.scss +4 -2
- package/src/components/block-title/test/index.js +28 -25
- package/src/components/block-toolbar/index.js +27 -17
- package/src/components/block-tools/block-contextual-toolbar.js +10 -3
- package/src/components/block-tools/block-selection-button.js +35 -16
- package/src/components/block-tools/index.js +40 -24
- package/src/components/block-tools/insertion-point.js +3 -7
- package/src/components/block-tools/selected-block-popover.js +9 -7
- package/src/components/block-tools/style.scss +5 -0
- package/src/components/block-tools/use-block-toolbar-popover-props.js +19 -6
- package/src/components/block-tools/zoom-out-mode-inserters.js +57 -0
- package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +91 -51
- package/src/components/block-vertical-alignment-control/test/index.js +92 -23
- package/src/components/block-vertical-alignment-control/ui.js +3 -2
- package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -12
- package/src/components/colors/test/with-colors.js +37 -12
- package/src/components/colors-gradients/dropdown.js +1 -1
- package/src/components/contrast-checker/test/index.js +135 -116
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +39 -57
- package/src/components/default-block-appender/test/index.js +32 -18
- package/src/components/font-sizes/README.MD +9 -0
- package/src/components/iframe/index.js +64 -5
- package/src/components/inner-blocks/README.md +2 -1
- package/src/components/inner-blocks/default-block-appender.js +1 -6
- package/src/components/inner-blocks/index.js +3 -2
- package/src/components/inner-blocks/use-inner-block-template-sync.js +9 -5
- package/src/components/inner-blocks/use-nested-settings-update.js +3 -1
- package/src/components/inserter/index.js +2 -8
- package/src/components/inserter/library.js +11 -5
- package/src/components/inserter/menu.js +42 -29
- package/src/components/inserter/preview-panel.js +1 -1
- package/src/components/inserter/stories/fixtures.js +44 -0
- package/src/components/inserter/stories/index.js +90 -0
- package/src/components/inserter/style.scss +21 -27
- package/src/components/inserter/tabs.js +8 -4
- package/src/components/link-control/link-preview.js +5 -3
- package/src/components/link-control/search-input.js +2 -2
- package/src/components/link-control/search-item.js +39 -7
- package/src/components/list-view/block.js +29 -10
- package/src/components/list-view/branch.js +27 -4
- package/src/components/list-view/index.js +8 -3
- package/src/components/list-view/use-block-selection.js +0 -1
- package/src/components/media-placeholder/test/index.js +2 -2
- package/src/components/media-replace-flow/README.md +1 -1
- package/src/components/provider/use-block-sync.js +3 -6
- package/src/components/publish-date-time-picker/index.js +1 -1
- package/src/components/rich-text/index.js +24 -35
- package/src/components/rich-text/index.native.js +8 -21
- package/src/components/text-decoration-control/index.js +1 -1
- package/src/components/text-transform-control/index.js +1 -1
- package/src/components/tool-selector/index.js +9 -11
- package/src/components/url-input/test/button.js +145 -71
- package/src/components/url-popover/index.js +1 -1
- package/src/components/url-popover/test/__snapshots__/index.js.snap +108 -80
- package/src/components/url-popover/test/index.js +14 -12
- package/src/components/use-block-drop-zone/index.js +15 -4
- package/src/components/use-moving-animation/index.js +9 -24
- package/src/components/warning/test/__snapshots__/index.js.snap +11 -14
- package/src/components/warning/test/index.js +32 -29
- package/src/components/writing-flow/use-select-all.js +4 -6
- package/src/hooks/align.js +22 -13
- package/src/hooks/color-panel.js +2 -1
- package/src/hooks/content-lock-ui.js +161 -0
- package/src/hooks/duotone.js +13 -1
- package/src/hooks/index.js +4 -0
- package/src/hooks/layout.js +25 -19
- package/src/hooks/layout.scss +7 -1
- package/src/hooks/metadata-name.js +48 -0
- package/src/hooks/metadata.js +64 -0
- package/src/hooks/test/use-typography-props.js +28 -0
- package/src/hooks/use-typography-props.js +41 -0
- package/src/hooks/utils.js +2 -11
- package/src/index.js +1 -0
- package/src/layouts/constrained.js +73 -24
- package/src/store/actions.js +45 -4
- package/src/store/reducer.js +33 -21
- package/src/store/selectors.js +98 -19
- package/src/store/test/reducer.js +8 -5
- package/src/utils/parse-css-unit-to-px.js +1 -1
- package/src/components/colors/test/__snapshots__/with-colors.js.snap +0 -23
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* WordPress dependencies
|
|
@@ -17,46 +18,129 @@ describe( 'AlignmentUI', () => {
|
|
|
17
18
|
const alignment = 'left';
|
|
18
19
|
const onChangeSpy = jest.fn();
|
|
19
20
|
|
|
20
|
-
const wrapper = shallow(
|
|
21
|
-
<AlignmentUI isToolbar value={ alignment } onChange={ onChangeSpy } />
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
const controls = wrapper.props().controls;
|
|
25
|
-
|
|
26
21
|
afterEach( () => {
|
|
27
22
|
onChangeSpy.mockClear();
|
|
28
23
|
} );
|
|
29
24
|
|
|
30
|
-
test( 'should match snapshot', () => {
|
|
31
|
-
|
|
25
|
+
test( 'should match snapshot when controls are hidden', () => {
|
|
26
|
+
const { container } = render(
|
|
27
|
+
<AlignmentUI
|
|
28
|
+
isToolbar
|
|
29
|
+
value={ alignment }
|
|
30
|
+
onChange={ onChangeSpy }
|
|
31
|
+
/>
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
expect( container ).toMatchSnapshot();
|
|
35
|
+
} );
|
|
36
|
+
|
|
37
|
+
test( 'should match snapshot when controls are visible', () => {
|
|
38
|
+
const { container } = render(
|
|
39
|
+
<AlignmentUI
|
|
40
|
+
isToolbar
|
|
41
|
+
value={ alignment }
|
|
42
|
+
onChange={ onChangeSpy }
|
|
43
|
+
isCollapsed={ false }
|
|
44
|
+
/>
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
expect( container ).toMatchSnapshot();
|
|
48
|
+
} );
|
|
49
|
+
|
|
50
|
+
test( 'should expand controls when toggled', async () => {
|
|
51
|
+
const user = userEvent.setup( {
|
|
52
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
53
|
+
} );
|
|
54
|
+
|
|
55
|
+
render(
|
|
56
|
+
<AlignmentUI
|
|
57
|
+
isToolbar
|
|
58
|
+
value={ alignment }
|
|
59
|
+
onChange={ onChangeSpy }
|
|
60
|
+
/>
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
expect(
|
|
64
|
+
screen.queryByRole( 'menuitemradio', {
|
|
65
|
+
name: /^Align text \w+$/,
|
|
66
|
+
} )
|
|
67
|
+
).not.toBeInTheDocument();
|
|
68
|
+
|
|
69
|
+
await user.click(
|
|
70
|
+
screen.getByRole( 'button', {
|
|
71
|
+
name: 'Align',
|
|
72
|
+
} )
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
expect(
|
|
76
|
+
screen.getAllByRole( 'menuitemradio', {
|
|
77
|
+
name: /^Align text \w+$/,
|
|
78
|
+
} )
|
|
79
|
+
).toHaveLength( 3 );
|
|
32
80
|
} );
|
|
33
81
|
|
|
34
|
-
test( 'should call on change with undefined when a control is already active', () => {
|
|
35
|
-
const
|
|
36
|
-
|
|
82
|
+
test( 'should call on change with undefined when a control is already active', async () => {
|
|
83
|
+
const user = userEvent.setup( {
|
|
84
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
85
|
+
} );
|
|
37
86
|
|
|
38
|
-
|
|
87
|
+
render(
|
|
88
|
+
<AlignmentUI
|
|
89
|
+
isToolbar
|
|
90
|
+
value={ alignment }
|
|
91
|
+
onChange={ onChangeSpy }
|
|
92
|
+
isCollapsed={ false }
|
|
93
|
+
/>
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
const activeControl = screen.getByRole( 'button', {
|
|
97
|
+
name: /^Align text \w+$/,
|
|
98
|
+
pressed: true,
|
|
99
|
+
} );
|
|
100
|
+
|
|
101
|
+
await user.click( activeControl );
|
|
102
|
+
|
|
103
|
+
expect( activeControl ).toHaveAttribute( 'align', alignment );
|
|
39
104
|
expect( onChangeSpy ).toHaveBeenCalledTimes( 1 );
|
|
40
105
|
expect( onChangeSpy ).toHaveBeenCalledWith( undefined );
|
|
41
106
|
} );
|
|
42
107
|
|
|
43
|
-
test( 'should call on change a new value when the control is not active', () => {
|
|
44
|
-
const
|
|
45
|
-
|
|
108
|
+
test( 'should call on change a new value when the control is not active', async () => {
|
|
109
|
+
const user = userEvent.setup( {
|
|
110
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
111
|
+
} );
|
|
112
|
+
|
|
113
|
+
render(
|
|
114
|
+
<AlignmentUI
|
|
115
|
+
isToolbar
|
|
116
|
+
value={ alignment }
|
|
117
|
+
onChange={ onChangeSpy }
|
|
118
|
+
isCollapsed={ false }
|
|
119
|
+
/>
|
|
46
120
|
);
|
|
47
|
-
inactiveControl.onClick();
|
|
48
121
|
|
|
49
|
-
|
|
122
|
+
const inactiveControl = screen.getByRole( 'button', {
|
|
123
|
+
name: 'Align text center',
|
|
124
|
+
pressed: false,
|
|
125
|
+
} );
|
|
126
|
+
|
|
127
|
+
await user.click( inactiveControl );
|
|
128
|
+
|
|
50
129
|
expect( onChangeSpy ).toHaveBeenCalledTimes( 1 );
|
|
51
130
|
expect( onChangeSpy ).toHaveBeenCalledWith( 'center' );
|
|
52
131
|
} );
|
|
53
132
|
|
|
54
|
-
test( 'should allow custom alignment controls to be specified', () => {
|
|
55
|
-
const
|
|
133
|
+
test( 'should allow custom alignment controls to be specified', async () => {
|
|
134
|
+
const user = userEvent.setup( {
|
|
135
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
136
|
+
} );
|
|
137
|
+
|
|
138
|
+
const { container } = render(
|
|
56
139
|
<AlignmentUI
|
|
57
140
|
isToolbar
|
|
58
141
|
value={ 'custom-right' }
|
|
59
142
|
onChange={ onChangeSpy }
|
|
143
|
+
isCollapsed={ false }
|
|
60
144
|
alignmentControls={ [
|
|
61
145
|
{
|
|
62
146
|
icon: alignLeft,
|
|
@@ -71,26 +155,33 @@ describe( 'AlignmentUI', () => {
|
|
|
71
155
|
] }
|
|
72
156
|
/>
|
|
73
157
|
);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
158
|
+
|
|
159
|
+
expect( container ).toMatchSnapshot();
|
|
160
|
+
|
|
161
|
+
expect(
|
|
162
|
+
screen.getAllByRole( 'button', {
|
|
163
|
+
name: /^My custom \w+$/,
|
|
164
|
+
} )
|
|
165
|
+
).toHaveLength( 2 );
|
|
77
166
|
|
|
78
167
|
// Should correctly call on change when right alignment is pressed (active alignment)
|
|
79
|
-
const rightControl =
|
|
80
|
-
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
|
|
168
|
+
const rightControl = screen.getByRole( 'button', {
|
|
169
|
+
name: 'My custom right',
|
|
170
|
+
} );
|
|
171
|
+
|
|
172
|
+
await user.click( rightControl );
|
|
173
|
+
|
|
84
174
|
expect( onChangeSpy ).toHaveBeenCalledTimes( 1 );
|
|
85
175
|
expect( onChangeSpy ).toHaveBeenCalledWith( undefined );
|
|
86
176
|
onChangeSpy.mockClear();
|
|
87
177
|
|
|
88
178
|
// Should correctly call on change when right alignment is pressed (inactive alignment)
|
|
89
|
-
const leftControl =
|
|
90
|
-
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
|
|
179
|
+
const leftControl = screen.getByRole( 'button', {
|
|
180
|
+
name: 'My custom left',
|
|
181
|
+
} );
|
|
182
|
+
|
|
183
|
+
await user.click( leftControl );
|
|
184
|
+
|
|
94
185
|
expect( onChangeSpy ).toHaveBeenCalledTimes( 1 );
|
|
95
186
|
expect( onChangeSpy ).toHaveBeenCalledWith( 'custom-left' );
|
|
96
187
|
} );
|
|
@@ -57,14 +57,19 @@ function AlignmentUI( {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
const UIComponent = isToolbar ? ToolbarGroup : ToolbarDropdownMenu;
|
|
60
|
-
const extraProps = isToolbar
|
|
60
|
+
const extraProps = isToolbar
|
|
61
|
+
? { isCollapsed }
|
|
62
|
+
: {
|
|
63
|
+
toggleProps: {
|
|
64
|
+
describedBy,
|
|
65
|
+
},
|
|
66
|
+
popoverProps: POPOVER_PROPS,
|
|
67
|
+
};
|
|
61
68
|
|
|
62
69
|
return (
|
|
63
70
|
<UIComponent
|
|
64
71
|
icon={ setIcon() }
|
|
65
72
|
label={ label }
|
|
66
|
-
toggleProps={ { describedBy } }
|
|
67
|
-
popoverProps={ POPOVER_PROPS }
|
|
68
73
|
controls={ alignmentControls.map( ( control ) => {
|
|
69
74
|
const { align } = control;
|
|
70
75
|
const isActive = value === align;
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { castArray, first, last, every } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -36,7 +31,7 @@ export default function BlockActions( {
|
|
|
36
31
|
|
|
37
32
|
const blocks = getBlocksByClientId( clientIds );
|
|
38
33
|
const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
|
|
39
|
-
const canDuplicate = every(
|
|
34
|
+
const canDuplicate = blocks.every( ( block ) => {
|
|
40
35
|
return (
|
|
41
36
|
!! block &&
|
|
42
37
|
hasBlockSupport( block.name, 'multiple', true ) &&
|
|
@@ -80,10 +75,16 @@ export default function BlockActions( {
|
|
|
80
75
|
return removeBlocks( clientIds, updateSelection );
|
|
81
76
|
},
|
|
82
77
|
onInsertBefore() {
|
|
83
|
-
|
|
78
|
+
const clientId = Array.isArray( clientIds )
|
|
79
|
+
? clientIds[ 0 ]
|
|
80
|
+
: clientId;
|
|
81
|
+
insertBeforeBlock( clientId );
|
|
84
82
|
},
|
|
85
83
|
onInsertAfter() {
|
|
86
|
-
|
|
84
|
+
const clientId = Array.isArray( clientIds )
|
|
85
|
+
? clientIds[ clientIds.length - 1 ]
|
|
86
|
+
: clientId;
|
|
87
|
+
insertAfterBlock( clientId );
|
|
87
88
|
},
|
|
88
89
|
onMoveTo() {
|
|
89
90
|
setNavigationMode( true );
|
|
@@ -1,88 +1,131 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`BlockAlignmentUI should match snapshot 1`] = `
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
exports[`BlockAlignmentUI should match snapshot when controls are hidden 1`] = `
|
|
4
|
+
<div>
|
|
5
|
+
<div
|
|
6
|
+
class="components-dropdown components-dropdown-menu components-toolbar"
|
|
7
|
+
tabindex="-1"
|
|
8
|
+
>
|
|
9
|
+
<button
|
|
10
|
+
aria-expanded="false"
|
|
11
|
+
aria-haspopup="true"
|
|
12
|
+
aria-label="Align"
|
|
13
|
+
class="components-button components-dropdown-menu__toggle has-icon"
|
|
14
|
+
data-toolbar-item="true"
|
|
15
|
+
type="button"
|
|
16
|
+
>
|
|
17
|
+
<svg
|
|
18
|
+
aria-hidden="true"
|
|
19
|
+
focusable="false"
|
|
20
|
+
height="24"
|
|
21
|
+
viewBox="0 0 24 24"
|
|
22
|
+
width="24"
|
|
23
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
24
|
+
>
|
|
25
|
+
<path
|
|
26
|
+
d="M4 9v6h14V9H4zm8-4.8H4v1.5h8V4.2zM4 19.8h8v-1.5H4v1.5z"
|
|
27
|
+
/>
|
|
28
|
+
</svg>
|
|
29
|
+
</button>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
exports[`BlockAlignmentUI should match snapshot when controls are visible 1`] = `
|
|
35
|
+
<div>
|
|
36
|
+
<div
|
|
37
|
+
class="components-toolbar"
|
|
38
|
+
icon="[object Object]"
|
|
39
|
+
label="Align"
|
|
40
|
+
>
|
|
41
|
+
<div>
|
|
42
|
+
<button
|
|
43
|
+
aria-label="None"
|
|
44
|
+
aria-pressed="false"
|
|
45
|
+
class="components-button components-toolbar__control has-icon"
|
|
46
|
+
data-toolbar-item="true"
|
|
47
|
+
type="button"
|
|
48
|
+
>
|
|
49
|
+
<svg
|
|
50
|
+
aria-hidden="true"
|
|
51
|
+
focusable="false"
|
|
52
|
+
height="24"
|
|
9
53
|
viewBox="0 0 24 24"
|
|
54
|
+
width="24"
|
|
10
55
|
xmlns="http://www.w3.org/2000/svg"
|
|
11
56
|
>
|
|
12
|
-
<
|
|
57
|
+
<path
|
|
13
58
|
d="M5 15h14V9H5v6zm0 4.8h14v-1.5H5v1.5zM5 4.2v1.5h14V4.2H5z"
|
|
14
59
|
/>
|
|
15
|
-
</
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"icon"
|
|
60
|
+
</svg>
|
|
61
|
+
</button>
|
|
62
|
+
</div>
|
|
63
|
+
<div>
|
|
64
|
+
<button
|
|
65
|
+
aria-label="Align left"
|
|
66
|
+
aria-pressed="true"
|
|
67
|
+
class="components-button components-toolbar__control is-pressed has-icon"
|
|
68
|
+
data-toolbar-item="true"
|
|
69
|
+
type="button"
|
|
70
|
+
>
|
|
71
|
+
<svg
|
|
72
|
+
aria-hidden="true"
|
|
73
|
+
focusable="false"
|
|
74
|
+
height="24"
|
|
23
75
|
viewBox="0 0 24 24"
|
|
76
|
+
width="24"
|
|
24
77
|
xmlns="http://www.w3.org/2000/svg"
|
|
25
78
|
>
|
|
26
|
-
<
|
|
79
|
+
<path
|
|
27
80
|
d="M4 9v6h14V9H4zm8-4.8H4v1.5h8V4.2zM4 19.8h8v-1.5H4v1.5z"
|
|
28
81
|
/>
|
|
29
|
-
</
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"icon"
|
|
82
|
+
</svg>
|
|
83
|
+
</button>
|
|
84
|
+
</div>
|
|
85
|
+
<div>
|
|
86
|
+
<button
|
|
87
|
+
aria-label="Align center"
|
|
88
|
+
aria-pressed="false"
|
|
89
|
+
class="components-button components-toolbar__control has-icon"
|
|
90
|
+
data-toolbar-item="true"
|
|
91
|
+
type="button"
|
|
92
|
+
>
|
|
93
|
+
<svg
|
|
94
|
+
aria-hidden="true"
|
|
95
|
+
focusable="false"
|
|
96
|
+
height="24"
|
|
37
97
|
viewBox="0 0 24 24"
|
|
98
|
+
width="24"
|
|
38
99
|
xmlns="http://www.w3.org/2000/svg"
|
|
39
100
|
>
|
|
40
|
-
<
|
|
101
|
+
<path
|
|
41
102
|
d="M7 9v6h10V9H7zM5 19.8h14v-1.5H5v1.5zM5 4.3v1.5h14V4.3H5z"
|
|
42
103
|
/>
|
|
43
|
-
</
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"icon"
|
|
104
|
+
</svg>
|
|
105
|
+
</button>
|
|
106
|
+
</div>
|
|
107
|
+
<div>
|
|
108
|
+
<button
|
|
109
|
+
aria-label="Align right"
|
|
110
|
+
aria-pressed="false"
|
|
111
|
+
class="components-button components-toolbar__control has-icon"
|
|
112
|
+
data-toolbar-item="true"
|
|
113
|
+
type="button"
|
|
114
|
+
>
|
|
115
|
+
<svg
|
|
116
|
+
aria-hidden="true"
|
|
117
|
+
focusable="false"
|
|
118
|
+
height="24"
|
|
51
119
|
viewBox="0 0 24 24"
|
|
120
|
+
width="24"
|
|
52
121
|
xmlns="http://www.w3.org/2000/svg"
|
|
53
122
|
>
|
|
54
|
-
<
|
|
123
|
+
<path
|
|
55
124
|
d="M6 15h14V9H6v6zm6-10.8v1.5h8V4.2h-8zm0 15.6h8v-1.5h-8v1.5z"
|
|
56
125
|
/>
|
|
57
|
-
</
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
},
|
|
63
|
-
]
|
|
64
|
-
}
|
|
65
|
-
icon={
|
|
66
|
-
<SVG
|
|
67
|
-
viewBox="0 0 24 24"
|
|
68
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
69
|
-
>
|
|
70
|
-
<Path
|
|
71
|
-
d="M4 9v6h14V9H4zm8-4.8H4v1.5h8V4.2zM4 19.8h8v-1.5H4v1.5z"
|
|
72
|
-
/>
|
|
73
|
-
</SVG>
|
|
74
|
-
}
|
|
75
|
-
isCollapsed={true}
|
|
76
|
-
label="Align"
|
|
77
|
-
popoverProps={
|
|
78
|
-
Object {
|
|
79
|
-
"isAlternate": true,
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
toggleProps={
|
|
83
|
-
Object {
|
|
84
|
-
"describedBy": "Change alignment",
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/>
|
|
126
|
+
</svg>
|
|
127
|
+
</button>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
88
131
|
`;
|
|
@@ -1,61 +1,125 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* WordPress dependencies
|
|
8
|
-
*/
|
|
9
|
-
import { useSelect } from '@wordpress/data';
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
10
6
|
|
|
11
7
|
/**
|
|
12
8
|
* Internal dependencies
|
|
13
9
|
*/
|
|
14
10
|
import BlockAlignmentUI from '../ui';
|
|
15
11
|
|
|
16
|
-
jest.mock( '@wordpress/data/src/components/use-select', () => {
|
|
17
|
-
// This allows us to tweak the returned value on each test.
|
|
18
|
-
const mock = jest.fn();
|
|
19
|
-
return mock;
|
|
20
|
-
} );
|
|
21
|
-
useSelect.mockImplementation( () => ( { wideControlsEnabled: false } ) );
|
|
22
|
-
|
|
23
12
|
describe( 'BlockAlignmentUI', () => {
|
|
24
13
|
const alignment = 'left';
|
|
25
14
|
const onChange = jest.fn();
|
|
26
15
|
|
|
27
|
-
const wrapper = shallow(
|
|
28
|
-
<BlockAlignmentUI value={ alignment } onChange={ onChange } isToolbar />
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
const controls = wrapper.props().controls;
|
|
32
|
-
|
|
33
16
|
afterEach( () => {
|
|
34
17
|
onChange.mockClear();
|
|
35
18
|
} );
|
|
36
19
|
|
|
37
|
-
test( 'should match snapshot', () => {
|
|
38
|
-
|
|
20
|
+
test( 'should match snapshot when controls are hidden', () => {
|
|
21
|
+
const { container } = render(
|
|
22
|
+
<BlockAlignmentUI
|
|
23
|
+
value={ alignment }
|
|
24
|
+
onChange={ onChange }
|
|
25
|
+
isToolbar
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
expect( container ).toMatchSnapshot();
|
|
39
30
|
} );
|
|
40
31
|
|
|
41
|
-
test( 'should
|
|
42
|
-
const
|
|
43
|
-
|
|
32
|
+
test( 'should match snapshot when controls are visible', () => {
|
|
33
|
+
const { container } = render(
|
|
34
|
+
<BlockAlignmentUI
|
|
35
|
+
value={ alignment }
|
|
36
|
+
onChange={ onChange }
|
|
37
|
+
isToolbar
|
|
38
|
+
isCollapsed={ false }
|
|
39
|
+
/>
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
expect( container ).toMatchSnapshot();
|
|
43
|
+
} );
|
|
44
|
+
|
|
45
|
+
test( 'should expand controls when toggled', async () => {
|
|
46
|
+
const user = userEvent.setup( {
|
|
47
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
48
|
+
} );
|
|
49
|
+
|
|
50
|
+
render(
|
|
51
|
+
<BlockAlignmentUI
|
|
52
|
+
value={ alignment }
|
|
53
|
+
onChange={ onChange }
|
|
54
|
+
isToolbar
|
|
55
|
+
/>
|
|
44
56
|
);
|
|
45
|
-
activeControl.onClick();
|
|
46
57
|
|
|
47
|
-
expect(
|
|
58
|
+
expect(
|
|
59
|
+
screen.queryByRole( 'menuitemradio', {
|
|
60
|
+
name: /^Align \w+$/,
|
|
61
|
+
} )
|
|
62
|
+
).not.toBeInTheDocument();
|
|
63
|
+
|
|
64
|
+
await user.click(
|
|
65
|
+
screen.getByRole( 'button', {
|
|
66
|
+
name: 'Align',
|
|
67
|
+
} )
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
expect(
|
|
71
|
+
screen.getAllByRole( 'menuitemradio', {
|
|
72
|
+
name: /^Align \w+$/,
|
|
73
|
+
} )
|
|
74
|
+
).toHaveLength( 3 );
|
|
75
|
+
} );
|
|
76
|
+
|
|
77
|
+
test( 'should call onChange with undefined, when the control is already active', async () => {
|
|
78
|
+
const user = userEvent.setup( {
|
|
79
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
80
|
+
} );
|
|
81
|
+
|
|
82
|
+
render(
|
|
83
|
+
<BlockAlignmentUI
|
|
84
|
+
value={ alignment }
|
|
85
|
+
onChange={ onChange }
|
|
86
|
+
isToolbar
|
|
87
|
+
isCollapsed={ false }
|
|
88
|
+
/>
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
const activeControl = screen.getByRole( 'button', {
|
|
92
|
+
name: `Align ${ alignment }`,
|
|
93
|
+
pressed: true,
|
|
94
|
+
} );
|
|
95
|
+
|
|
96
|
+
await user.click( activeControl );
|
|
97
|
+
|
|
48
98
|
expect( onChange ).toHaveBeenCalledTimes( 1 );
|
|
49
99
|
expect( onChange ).toHaveBeenCalledWith( undefined );
|
|
50
100
|
} );
|
|
51
101
|
|
|
52
|
-
test( 'should call onChange with alignment value when the control is inactive', () => {
|
|
53
|
-
const
|
|
54
|
-
|
|
102
|
+
test( 'should call onChange with alignment value when the control is inactive', async () => {
|
|
103
|
+
const user = userEvent.setup( {
|
|
104
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
105
|
+
} );
|
|
106
|
+
|
|
107
|
+
render(
|
|
108
|
+
<BlockAlignmentUI
|
|
109
|
+
value={ alignment }
|
|
110
|
+
onChange={ onChange }
|
|
111
|
+
isToolbar
|
|
112
|
+
isCollapsed={ false }
|
|
113
|
+
/>
|
|
55
114
|
);
|
|
56
|
-
inactiveCenterControl.onClick();
|
|
57
115
|
|
|
58
|
-
|
|
116
|
+
const inactiveControl = screen.getByRole( 'button', {
|
|
117
|
+
name: 'Align center',
|
|
118
|
+
pressed: false,
|
|
119
|
+
} );
|
|
120
|
+
|
|
121
|
+
await user.click( inactiveControl );
|
|
122
|
+
|
|
59
123
|
expect( onChange ).toHaveBeenCalledTimes( 1 );
|
|
60
124
|
expect( onChange ).toHaveBeenCalledWith( 'center' );
|
|
61
125
|
} );
|
|
@@ -48,12 +48,10 @@ function BlockAlignmentUI( {
|
|
|
48
48
|
|
|
49
49
|
const UIComponent = isToolbar ? ToolbarGroup : ToolbarDropdownMenu;
|
|
50
50
|
const commonProps = {
|
|
51
|
-
popoverProps: POPOVER_PROPS,
|
|
52
51
|
icon: activeAlignmentControl
|
|
53
52
|
? activeAlignmentControl.icon
|
|
54
53
|
: defaultAlignmentControl.icon,
|
|
55
54
|
label: __( 'Align' ),
|
|
56
|
-
toggleProps: { describedBy: __( 'Change alignment' ) },
|
|
57
55
|
};
|
|
58
56
|
const extraProps = isToolbar
|
|
59
57
|
? {
|
|
@@ -70,6 +68,8 @@ function BlockAlignmentUI( {
|
|
|
70
68
|
} ),
|
|
71
69
|
}
|
|
72
70
|
: {
|
|
71
|
+
toggleProps: { describedBy: __( 'Change alignment' ) },
|
|
72
|
+
popoverProps: POPOVER_PROPS,
|
|
73
73
|
children: ( { onClose } ) => {
|
|
74
74
|
return (
|
|
75
75
|
<>
|