@wordpress/block-editor 8.3.1 → 8.5.1
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 +4 -0
- package/README.md +56 -18
- package/build/components/alignment-control/index.js +13 -6
- package/build/components/alignment-control/index.js.map +1 -1
- package/build/components/block-alignment-control/index.js +13 -6
- package/build/components/block-alignment-control/index.js.map +1 -1
- package/build/components/block-content-overlay/index.js +13 -4
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-draggable/index.js +2 -3
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-icon/index.js +4 -0
- package/build/components/block-icon/index.js.map +1 -1
- package/build/components/block-inspector/index.js +6 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-html.js +4 -1
- package/build/components/block-list/block-html.js.map +1 -1
- package/build/components/block-list/block.js +4 -1
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +1 -6
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +22 -6
- 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-focus-handler.js +7 -1
- package/build/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
- package/build/components/block-list-appender/index.js +6 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-lock/index.js +40 -0
- package/build/components/block-lock/index.js.map +1 -0
- package/build/components/block-lock/menu-item.js +52 -0
- package/build/components/block-lock/menu-item.js.map +1 -0
- package/build/components/block-lock/modal.js +155 -0
- package/build/components/block-lock/modal.js.map +1 -0
- package/build/components/block-lock/toolbar.js +65 -0
- package/build/components/block-lock/toolbar.js.map +1 -0
- package/build/components/block-lock/use-block-lock.js +53 -0
- package/build/components/block-lock/use-block-lock.js.map +1 -0
- package/build/components/block-mover/index.js +4 -0
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +37 -22
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-preview/auto.js +6 -3
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-preview/index.js +4 -2
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +75 -10
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +19 -9
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/index.js +8 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-title/index.js +2 -2
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-title/use-block-display-title.js +8 -6
- package/build/components/block-title/use-block-display-title.js.map +1 -1
- package/build/components/block-toolbar/block-name-context.js +17 -0
- package/build/components/block-toolbar/block-name-context.js.map +1 -0
- package/build/components/block-toolbar/block-toolbar-last-item.js +20 -0
- package/build/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
- package/build/components/block-toolbar/index.js +24 -5
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/index.js +0 -16
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +92 -47
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/block-vertical-alignment-control/index.js +13 -6
- package/build/components/block-vertical-alignment-control/index.js.map +1 -1
- package/build/components/border-radius-control/index.js +0 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js +1 -1
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +3 -1
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/contrast-checker/index.js +4 -0
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +8 -0
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +105 -0
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -0
- package/build/components/copy-handler/index.js +4 -0
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +132 -0
- package/build/components/date-format-picker/index.js.map +1 -0
- package/build/components/font-sizes/font-size-picker.js +4 -0
- package/build/components/font-sizes/font-size-picker.js.map +1 -1
- package/build/components/iframe/index.js +6 -9
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/index.js +27 -0
- package/build/components/index.js.map +1 -1
- package/build/components/justify-content-control/index.js +13 -6
- package/build/components/justify-content-control/index.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +1 -1
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/line-height-control/index.js +15 -6
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +18 -23
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +38 -13
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +16 -13
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +7 -1
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +9 -2
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/media-replace-flow/index.js +4 -0
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/multi-selection-inspector/index.js +1 -1
- package/build/components/multi-selection-inspector/index.js.map +1 -1
- package/build/components/rich-text/index.js +27 -5
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +13 -9
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/split-value.js +12 -2
- package/build/components/rich-text/split-value.js.map +1 -1
- package/build/components/rich-text/use-firefox-compat.js +49 -0
- package/build/components/rich-text/use-firefox-compat.js.map +1 -0
- package/build/components/rich-text/use-input-rules.js +34 -2
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +4 -0
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +11 -27
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/writing-flow/index.js +9 -1
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +3 -44
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-click-selection.js +68 -0
- package/build/components/writing-flow/use-click-selection.js.map +1 -0
- package/build/components/writing-flow/use-drag-selection.js +134 -0
- package/build/components/writing-flow/use-drag-selection.js.map +1 -0
- package/build/components/writing-flow/use-input.js +116 -0
- package/build/components/writing-flow/use-input.js.map +1 -0
- package/build/components/writing-flow/use-multi-selection.js +18 -38
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +161 -0
- package/build/components/writing-flow/use-selection-observer.js.map +1 -0
- package/build/components/writing-flow/use-tab-nav.js +1 -8
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/anchor.js +7 -6
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border-color.js +3 -3
- package/build/hooks/border-color.js.map +1 -1
- package/build/hooks/border.js +0 -14
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +20 -17
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/font-family.js +5 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +4 -2
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/gap.js +77 -5
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/layout.js +7 -2
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/style.js +34 -3
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +29 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/flex.js +82 -15
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +22 -13
- package/build/layouts/flow.js.map +1 -1
- package/build/store/actions.js +297 -51
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +5 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +25 -13
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +197 -23
- package/build/store/selectors.js.map +1 -1
- package/build/utils/dom.js +2 -1
- package/build/utils/dom.js.map +1 -1
- package/build-module/components/alignment-control/index.js +12 -4
- package/build-module/components/alignment-control/index.js.map +1 -1
- package/build-module/components/block-alignment-control/index.js +12 -4
- package/build-module/components/block-alignment-control/index.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +13 -4
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +2 -3
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-icon/index.js +4 -0
- package/build-module/components/block-icon/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +6 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-html.js +5 -2
- package/build-module/components/block-list/block-html.js.map +1 -1
- package/build-module/components/block-list/block.js +5 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +1 -4
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +22 -6
- 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-focus-handler.js +7 -1
- package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +6 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-lock/index.js +5 -0
- package/build-module/components/block-lock/index.js.map +1 -0
- package/build-module/components/block-lock/menu-item.js +39 -0
- package/build-module/components/block-lock/menu-item.js.map +1 -0
- package/build-module/components/block-lock/modal.js +138 -0
- package/build-module/components/block-lock/modal.js.map +1 -0
- package/build-module/components/block-lock/toolbar.js +51 -0
- package/build-module/components/block-lock/toolbar.js.map +1 -0
- package/build-module/components/block-lock/use-block-lock.js +44 -0
- package/build-module/components/block-lock/use-block-lock.js.map +1 -0
- package/build-module/components/block-mover/index.js +4 -0
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +39 -24
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-preview/auto.js +6 -3
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-preview/index.js +4 -2
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +75 -12
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +18 -9
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +9 -4
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-title/index.js +2 -2
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-title/use-block-display-title.js +8 -6
- package/build-module/components/block-title/use-block-display-title.js.map +1 -1
- package/build-module/components/block-toolbar/block-name-context.js +9 -0
- package/build-module/components/block-toolbar/block-name-context.js.map +1 -0
- package/build-module/components/block-toolbar/block-toolbar-last-item.js +11 -0
- package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
- package/build-module/components/block-toolbar/index.js +19 -4
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/index.js +0 -16
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +95 -49
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/block-vertical-alignment-control/index.js +12 -4
- package/build-module/components/block-vertical-alignment-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +0 -1
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +1 -1
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +3 -1
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +4 -0
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +2 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +90 -0
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -0
- package/build-module/components/copy-handler/index.js +4 -0
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +122 -0
- package/build-module/components/date-format-picker/index.js.map +1 -0
- package/build-module/components/font-sizes/font-size-picker.js +4 -0
- package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
- package/build-module/components/iframe/index.js +6 -9
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/index.js +3 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/justify-content-control/index.js +12 -4
- package/build-module/components/justify-content-control/index.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +1 -1
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +14 -5
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +19 -23
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +36 -13
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +16 -13
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +7 -1
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +10 -3
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +4 -0
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/multi-selection-inspector/index.js +2 -2
- package/build-module/components/multi-selection-inspector/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +26 -5
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +13 -9
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/split-value.js +12 -2
- package/build-module/components/rich-text/split-value.js.map +1 -1
- package/build-module/components/rich-text/use-firefox-compat.js +39 -0
- package/build-module/components/rich-text/use-firefox-compat.js.map +1 -0
- package/build-module/components/rich-text/use-input-rules.js +35 -4
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +4 -0
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +12 -28
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/writing-flow/index.js +5 -1
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +4 -45
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-click-selection.js +57 -0
- package/build-module/components/writing-flow/use-click-selection.js.map +1 -0
- package/build-module/components/writing-flow/use-drag-selection.js +124 -0
- package/build-module/components/writing-flow/use-drag-selection.js.map +1 -0
- package/build-module/components/writing-flow/use-input.js +104 -0
- package/build-module/components/writing-flow/use-input.js.map +1 -0
- package/build-module/components/writing-flow/use-multi-selection.js +18 -37
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +150 -0
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -0
- package/build-module/components/writing-flow/use-tab-nav.js +1 -9
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/anchor.js +7 -6
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border-color.js +5 -5
- package/build-module/hooks/border-color.js.map +1 -1
- package/build-module/hooks/border.js +0 -12
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +19 -18
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/font-family.js +3 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +4 -3
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/gap.js +75 -7
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/layout.js +7 -2
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/style.js +33 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +26 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/flex.js +81 -16
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +20 -13
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/store/actions.js +286 -49
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +5 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +25 -13
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +186 -22
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/dom.js +2 -1
- package/build-module/utils/dom.js.map +1 -1
- package/build-style/style-rtl.css +248 -49
- package/build-style/style.css +248 -49
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +28 -27
- package/src/components/alignment-control/index.js +9 -4
- package/src/components/block-alignment-control/index.js +9 -4
- package/src/components/block-content-overlay/index.js +19 -2
- package/src/components/block-draggable/index.js +2 -5
- package/src/components/block-icon/index.js +3 -0
- package/src/components/block-inspector/index.js +4 -0
- package/src/components/block-list/block-html.js +8 -4
- package/src/components/block-list/block.js +5 -1
- package/src/components/block-list/style.scss +4 -5
- package/src/components/block-list/use-block-props/index.js +0 -5
- package/src/components/block-list/use-block-props/use-focus-first-element.js +27 -6
- package/src/components/block-list/use-block-props/use-focus-handler.js +8 -0
- package/src/components/block-list-appender/index.js +5 -0
- package/src/components/block-lock/index.js +4 -0
- package/src/components/block-lock/menu-item.js +39 -0
- package/src/components/block-lock/modal.js +194 -0
- package/src/components/block-lock/style.scss +70 -0
- package/src/components/block-lock/toolbar.js +51 -0
- package/src/components/block-lock/use-block-lock.js +49 -0
- package/src/components/block-mover/index.js +3 -0
- package/src/components/block-mover/style.scss +4 -0
- package/src/components/block-pattern-setup/index.js +84 -59
- package/src/components/block-pattern-setup/setup-toolbar.js +3 -1
- package/src/components/block-pattern-setup/style.scss +32 -26
- package/src/components/block-preview/auto.js +10 -1
- package/src/components/block-preview/index.js +2 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +109 -9
- package/src/components/block-settings-menu-controls/index.js +33 -12
- package/src/components/block-switcher/index.js +15 -3
- package/src/components/block-switcher/style.scss +15 -4
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +15 -13
- package/src/components/block-switcher/test/index.js +2 -2
- package/src/components/block-title/README.md +6 -1
- package/src/components/block-title/index.js +2 -2
- package/src/components/block-title/test/index.js +43 -1
- package/src/components/block-title/use-block-display-title.js +10 -7
- package/src/components/block-toolbar/block-name-context.js +8 -0
- package/src/components/block-toolbar/block-toolbar-last-item.js +12 -0
- package/src/components/block-toolbar/index.js +24 -2
- package/src/components/block-toolbar/style.scss +10 -0
- package/src/components/block-tools/index.js +0 -19
- package/src/components/block-tools/style.scss +27 -0
- package/src/components/block-variation-transforms/index.js +105 -36
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/block-vertical-alignment-control/index.js +9 -4
- package/src/components/border-radius-control/index.js +0 -1
- package/src/components/border-radius-control/test/utils.js +4 -0
- package/src/components/border-radius-control/utils.js +2 -1
- package/src/components/button-block-appender/style.scss +5 -1
- package/src/components/color-palette/test/__snapshots__/control.js.snap +70 -4
- package/src/components/colors-gradients/control.js +1 -1
- package/src/components/colors-gradients/style.scss +6 -0
- package/src/components/contrast-checker/index.js +3 -0
- package/src/components/convert-to-group-buttons/index.js +6 -1
- package/src/components/convert-to-group-buttons/toolbar.js +87 -0
- package/src/components/copy-handler/index.js +3 -0
- package/src/components/date-format-picker/README.md +58 -0
- package/src/components/date-format-picker/index.js +161 -0
- package/src/components/date-format-picker/style.scss +31 -0
- package/src/components/font-sizes/font-size-picker.js +3 -0
- package/src/components/iframe/index.js +5 -7
- package/src/components/index.js +3 -0
- package/src/components/justify-content-control/index.js +9 -4
- package/src/components/keyboard-shortcuts/index.js +1 -1
- package/src/components/line-height-control/index.js +11 -6
- package/src/components/link-control/README.md +1 -1
- package/src/components/list-view/block-select-button.js +14 -31
- package/src/components/list-view/block.js +55 -13
- package/src/components/list-view/branch.js +37 -15
- package/src/components/list-view/index.js +6 -0
- package/src/components/list-view/style.scss +56 -14
- package/src/components/list-view/use-block-selection.js +15 -2
- package/src/components/media-placeholder/README.md +8 -0
- package/src/components/media-replace-flow/index.js +3 -0
- package/src/components/multi-selection-inspector/index.js +2 -2
- package/src/components/rich-text/index.js +25 -2
- package/src/components/rich-text/index.native.js +24 -8
- package/src/components/rich-text/split-value.js +5 -1
- package/src/components/rich-text/use-firefox-compat.js +39 -0
- package/src/components/rich-text/use-input-rules.js +40 -3
- package/src/components/skip-to-selected-block/index.js +3 -0
- package/src/components/url-input/style.scss +3 -2
- package/src/components/url-popover/image-url-input-ui.js +16 -29
- package/src/components/writing-flow/index.js +8 -0
- package/src/components/writing-flow/readme.md +28 -0
- package/src/components/writing-flow/use-arrow-nav.js +4 -53
- package/src/components/writing-flow/use-click-selection.js +65 -0
- package/src/components/writing-flow/use-drag-selection.js +126 -0
- package/src/components/writing-flow/use-input.js +112 -0
- package/src/components/writing-flow/use-multi-selection.js +13 -36
- package/src/components/writing-flow/use-selection-observer.js +153 -0
- package/src/components/writing-flow/use-tab-nav.js +1 -11
- package/src/hooks/anchor.js +8 -6
- package/src/hooks/border-color.js +5 -5
- package/src/hooks/border.js +0 -13
- package/src/hooks/color.js +51 -24
- package/src/hooks/font-family.js +5 -2
- package/src/hooks/font-size.js +10 -7
- package/src/hooks/gap.js +91 -12
- package/src/hooks/layout.js +11 -1
- package/src/hooks/style.js +40 -4
- package/src/hooks/test/gap.js +66 -0
- package/src/hooks/test/style.js +94 -0
- package/src/hooks/test/utils.js +1 -1
- package/src/hooks/utils.js +26 -0
- package/src/layouts/flex.js +93 -6
- package/src/layouts/flow.js +28 -12
- package/src/store/actions.js +349 -32
- package/src/store/defaults.js +7 -1
- package/src/store/reducer.js +25 -10
- package/src/store/selectors.js +229 -27
- package/src/store/test/selectors.js +305 -5
- package/src/style.scss +2 -0
- package/src/utils/dom.js +2 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/block-list/use-block-props/use-multi-selection.js +0 -205
- package/build/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
- package/build/components/block-list/use-block-props/use-scroll-into-view.js +0 -77
- package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-multi-selection.js +0 -192
- package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +0 -63
- package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
- package/src/components/block-list/use-block-props/use-multi-selection.js +0 -227
- package/src/components/block-list/use-block-props/use-scroll-into-view.js +0 -73
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { uniq } from 'lodash';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { _x, __ } from '@wordpress/i18n';
|
|
10
|
+
import { dateI18n } from '@wordpress/date';
|
|
11
|
+
import { useState, createInterpolateElement } from '@wordpress/element';
|
|
12
|
+
import {
|
|
13
|
+
TextControl,
|
|
14
|
+
ExternalLink,
|
|
15
|
+
VisuallyHidden,
|
|
16
|
+
CustomSelectControl,
|
|
17
|
+
BaseControl,
|
|
18
|
+
ToggleControl,
|
|
19
|
+
} from '@wordpress/components';
|
|
20
|
+
|
|
21
|
+
// So that we can illustrate the different formats in the dropdown properly,
|
|
22
|
+
// show a date that has a day greater than 12 and a month with more than three
|
|
23
|
+
// letters. Here we're using 2022-01-25 which is when WordPress 5.9 was
|
|
24
|
+
// released.
|
|
25
|
+
const EXAMPLE_DATE = new Date( 2022, 0, 25 );
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The `DateFormatPicker` component renders controls that let the user choose a
|
|
29
|
+
* _date format_. That is, how they want their dates to be formatted.
|
|
30
|
+
*
|
|
31
|
+
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/date-format-picker/README.md
|
|
32
|
+
*
|
|
33
|
+
* @param {Object} props
|
|
34
|
+
* @param {string|null} props.format The selected date
|
|
35
|
+
* format. If
|
|
36
|
+
* `null`,
|
|
37
|
+
* _Default_ is
|
|
38
|
+
* selected.
|
|
39
|
+
* @param {string} props.defaultFormat The date format that
|
|
40
|
+
* will be used if the
|
|
41
|
+
* user selects
|
|
42
|
+
* 'Default'.
|
|
43
|
+
* @param {( format: string|null ) => void} props.onChange Called when a
|
|
44
|
+
* selection is
|
|
45
|
+
* made. If `null`,
|
|
46
|
+
* _Default_ is
|
|
47
|
+
* selected.
|
|
48
|
+
*/
|
|
49
|
+
export default function DateFormatPicker( {
|
|
50
|
+
format,
|
|
51
|
+
defaultFormat,
|
|
52
|
+
onChange,
|
|
53
|
+
} ) {
|
|
54
|
+
return (
|
|
55
|
+
<fieldset className="block-editor-date-format-picker">
|
|
56
|
+
<VisuallyHidden as="legend">{ __( 'Date format' ) }</VisuallyHidden>
|
|
57
|
+
<ToggleControl
|
|
58
|
+
label={
|
|
59
|
+
<>
|
|
60
|
+
{ __( 'Default format' ) }
|
|
61
|
+
<span className="block-editor-date-format-picker__default-format-toggle-control__hint">
|
|
62
|
+
{ dateI18n( defaultFormat, EXAMPLE_DATE ) }
|
|
63
|
+
</span>
|
|
64
|
+
</>
|
|
65
|
+
}
|
|
66
|
+
checked={ ! format }
|
|
67
|
+
onChange={ ( checked ) =>
|
|
68
|
+
onChange( checked ? null : defaultFormat )
|
|
69
|
+
}
|
|
70
|
+
/>
|
|
71
|
+
{ format && (
|
|
72
|
+
<NonDefaultControls format={ format } onChange={ onChange } />
|
|
73
|
+
) }
|
|
74
|
+
</fieldset>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function NonDefaultControls( { format, onChange } ) {
|
|
79
|
+
// Suggest a short format, medium format, long format, and a standardised
|
|
80
|
+
// (YYYY-MM-DD) format. The short, medium, and long formats are localised as
|
|
81
|
+
// different languages have different ways of writing these. For example, 'F
|
|
82
|
+
// j, Y' (April 20, 2022) in American English (en_US) is 'j. F Y' (20. April
|
|
83
|
+
// 2022) in German (de). The resultant array is de-duplicated as some
|
|
84
|
+
// languages will use the same format string for short, medium, and long
|
|
85
|
+
// formats.
|
|
86
|
+
const suggestedFormats = uniq( [
|
|
87
|
+
'Y-m-d',
|
|
88
|
+
_x( 'n/j/Y', 'short date format' ),
|
|
89
|
+
_x( 'n/j/Y g:i A', 'short date format with time' ),
|
|
90
|
+
_x( 'M j, Y', 'medium date format' ),
|
|
91
|
+
_x( 'M j, Y g:i A', 'medium date format with time' ),
|
|
92
|
+
_x( 'F j, Y', 'long date format' ),
|
|
93
|
+
] );
|
|
94
|
+
|
|
95
|
+
const suggestedOptions = suggestedFormats.map(
|
|
96
|
+
( suggestedFormat, index ) => ( {
|
|
97
|
+
key: `suggested-${ index }`,
|
|
98
|
+
name: dateI18n( suggestedFormat, EXAMPLE_DATE ),
|
|
99
|
+
format: suggestedFormat,
|
|
100
|
+
} )
|
|
101
|
+
);
|
|
102
|
+
const customOption = {
|
|
103
|
+
key: 'custom',
|
|
104
|
+
name: __( 'Custom' ),
|
|
105
|
+
className:
|
|
106
|
+
'block-editor-date-format-picker__custom-format-select-control__custom-option',
|
|
107
|
+
__experimentalHint: __( 'Enter your own date format' ),
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const [ isCustom, setIsCustom ] = useState(
|
|
111
|
+
() => !! format && ! suggestedFormats.includes( format )
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
return (
|
|
115
|
+
<>
|
|
116
|
+
<BaseControl className="block-editor-date-format-picker__custom-format-select-control">
|
|
117
|
+
<CustomSelectControl
|
|
118
|
+
label={ __( 'Choose a format' ) }
|
|
119
|
+
options={ [ ...suggestedOptions, customOption ] }
|
|
120
|
+
value={
|
|
121
|
+
isCustom
|
|
122
|
+
? customOption
|
|
123
|
+
: suggestedOptions.find(
|
|
124
|
+
( option ) => option.format === format
|
|
125
|
+
) ?? customOption
|
|
126
|
+
}
|
|
127
|
+
onChange={ ( { selectedItem } ) => {
|
|
128
|
+
if ( selectedItem === customOption ) {
|
|
129
|
+
setIsCustom( true );
|
|
130
|
+
} else {
|
|
131
|
+
setIsCustom( false );
|
|
132
|
+
onChange( selectedItem.format );
|
|
133
|
+
}
|
|
134
|
+
} }
|
|
135
|
+
/>
|
|
136
|
+
</BaseControl>
|
|
137
|
+
{ isCustom && (
|
|
138
|
+
<TextControl
|
|
139
|
+
label={ __( 'Custom format' ) }
|
|
140
|
+
hideLabelFromVision
|
|
141
|
+
help={ createInterpolateElement(
|
|
142
|
+
__(
|
|
143
|
+
'Enter a date or time <Link>format string</Link>.'
|
|
144
|
+
),
|
|
145
|
+
{
|
|
146
|
+
Link: (
|
|
147
|
+
<ExternalLink
|
|
148
|
+
href={ __(
|
|
149
|
+
'https://wordpress.org/support/article/formatting-date-and-time/'
|
|
150
|
+
) }
|
|
151
|
+
/>
|
|
152
|
+
),
|
|
153
|
+
}
|
|
154
|
+
) }
|
|
155
|
+
value={ format }
|
|
156
|
+
onChange={ ( value ) => onChange( value ) }
|
|
157
|
+
/>
|
|
158
|
+
) }
|
|
159
|
+
</>
|
|
160
|
+
);
|
|
161
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
.block-editor-date-format-picker {
|
|
2
|
+
margin-bottom: $grid-unit-20;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.block-editor-date-format-picker__default-format-toggle-control__hint {
|
|
6
|
+
color: $gray-700;
|
|
7
|
+
display: block;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.block-editor-date-format-picker__custom-format-select-control {
|
|
11
|
+
&.components-base-control {
|
|
12
|
+
margin-bottom: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.components-custom-select-control__button {
|
|
16
|
+
width: 100%;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.block-editor-date-format-picker__custom-format-select-control__custom-option {
|
|
21
|
+
border-top: 1px solid $gray-300;
|
|
22
|
+
|
|
23
|
+
&.has-hint {
|
|
24
|
+
grid-template-columns: auto 30px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.components-custom-select-control__item-hint {
|
|
28
|
+
grid-row: 2;
|
|
29
|
+
text-align: left;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -203,14 +203,10 @@ function Iframe(
|
|
|
203
203
|
return true;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}
|
|
206
|
+
// Document set with srcDoc is not immediately ready.
|
|
207
|
+
node.addEventListener( 'load', setDocumentIfReady );
|
|
209
208
|
|
|
210
|
-
|
|
211
|
-
node.addEventListener( 'load', () => {
|
|
212
|
-
setDocumentIfReady();
|
|
213
|
-
} );
|
|
209
|
+
return () => node.removeEventListener( 'load', setDocumentIfReady );
|
|
214
210
|
}, [] );
|
|
215
211
|
const headRef = useRefEffect( ( element ) => {
|
|
216
212
|
scripts
|
|
@@ -264,6 +260,8 @@ function Iframe(
|
|
|
264
260
|
{ ...props }
|
|
265
261
|
ref={ useMergeRefs( [ ref, setRef ] ) }
|
|
266
262
|
tabIndex={ tabIndex }
|
|
263
|
+
// Correct doctype is required to enable rendering in standards mode
|
|
264
|
+
srcDoc="<!doctype html>"
|
|
267
265
|
title={ __( 'Editor canvas' ) }
|
|
268
266
|
>
|
|
269
267
|
{ iframeDocument &&
|
package/src/components/index.js
CHANGED
|
@@ -42,6 +42,7 @@ export {
|
|
|
42
42
|
export { default as ColorPalette } from './color-palette';
|
|
43
43
|
export { default as ColorPaletteControl } from './color-palette/control';
|
|
44
44
|
export { default as ContrastChecker } from './contrast-checker';
|
|
45
|
+
export { default as __experimentalDateFormatPicker } from './date-format-picker';
|
|
45
46
|
export { default as __experimentalDuotoneControl } from './duotone-control';
|
|
46
47
|
export { default as __experimentalFontAppearanceControl } from './font-appearance-control';
|
|
47
48
|
export { default as __experimentalFontFamilyControl } from './font-family';
|
|
@@ -98,6 +99,8 @@ export { default as withColorContext } from './color-palette/with-color-context'
|
|
|
98
99
|
*/
|
|
99
100
|
|
|
100
101
|
export { default as __unstableBlockSettingsMenuFirstItem } from './block-settings-menu/block-settings-menu-first-item';
|
|
102
|
+
export { default as __unstableBlockToolbarLastItem } from './block-toolbar/block-toolbar-last-item';
|
|
103
|
+
export { default as __unstableBlockNameContext } from './block-toolbar/block-name-context';
|
|
101
104
|
export { default as __unstableInserterMenuExtension } from './inserter-menu-extension';
|
|
102
105
|
export { default as __experimentalPreviewOptions } from './preview-options';
|
|
103
106
|
export { default as __experimentalUseResizeCanvas } from './use-resize-canvas';
|
|
@@ -3,10 +3,15 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import JustifyContentUI from './ui';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const JustifyContentControl = ( props ) => {
|
|
7
7
|
return <JustifyContentUI { ...props } isToolbar={ false } />;
|
|
8
|
-
}
|
|
8
|
+
};
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
const JustifyToolbar = ( props ) => {
|
|
11
11
|
return <JustifyContentUI { ...props } isToolbar />;
|
|
12
|
-
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/justify-content-control/README.md
|
|
16
|
+
*/
|
|
17
|
+
export { JustifyContentControl, JustifyToolbar };
|
|
@@ -61,7 +61,7 @@ function KeyboardShortcutsRegister() {
|
|
|
61
61
|
registerShortcut( {
|
|
62
62
|
name: 'core/block-editor/delete-multi-selection',
|
|
63
63
|
category: 'block',
|
|
64
|
-
description: __( '
|
|
64
|
+
description: __( 'Delete selection.' ),
|
|
65
65
|
keyCombination: {
|
|
66
66
|
character: 'del',
|
|
67
67
|
},
|
|
@@ -15,13 +15,13 @@ import {
|
|
|
15
15
|
isLineHeightDefined,
|
|
16
16
|
} from './utils';
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
const LineHeightControl = ( {
|
|
19
19
|
value: lineHeight,
|
|
20
20
|
onChange,
|
|
21
21
|
/** Start opting into the new margin-free styles that will become the default in a future version. */
|
|
22
22
|
__nextHasNoMarginBottom = false,
|
|
23
23
|
__unstableInputWidth = '60px',
|
|
24
|
-
} ) {
|
|
24
|
+
} ) => {
|
|
25
25
|
const isDefined = isLineHeightDefined( lineHeight );
|
|
26
26
|
|
|
27
27
|
const adjustNextValue = ( nextValue, wasTypedOrPasted ) => {
|
|
@@ -37,7 +37,7 @@ export default function LineHeightControl( {
|
|
|
37
37
|
* Step up/down actions can be triggered by keydowns of the up/down arrow keys,
|
|
38
38
|
* or by clicking the spin buttons.
|
|
39
39
|
*/
|
|
40
|
-
switch ( nextValue ) {
|
|
40
|
+
switch ( `${ nextValue }` ) {
|
|
41
41
|
case `${ STEP }`:
|
|
42
42
|
// Increment by step value.
|
|
43
43
|
return BASE_DEFAULT_VALUE + STEP;
|
|
@@ -63,8 +63,8 @@ export default function LineHeightControl( {
|
|
|
63
63
|
const wasTypedOrPasted = [ 'insertText', 'insertFromPaste' ].includes(
|
|
64
64
|
action.payload.event.nativeEvent?.inputType
|
|
65
65
|
);
|
|
66
|
-
|
|
67
|
-
return state;
|
|
66
|
+
const value = adjustNextValue( state.value, wasTypedOrPasted );
|
|
67
|
+
return { ...state, value };
|
|
68
68
|
};
|
|
69
69
|
|
|
70
70
|
const value = isDefined ? lineHeight : RESET_VALUE;
|
|
@@ -101,4 +101,9 @@ export default function LineHeightControl( {
|
|
|
101
101
|
/>
|
|
102
102
|
</div>
|
|
103
103
|
);
|
|
104
|
-
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/line-height-control/README.md
|
|
108
|
+
*/
|
|
109
|
+
export default LineHeightControl;
|
|
@@ -6,48 +6,36 @@ import classnames from 'classnames';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { Button
|
|
10
|
-
import { useInstanceId } from '@wordpress/compose';
|
|
9
|
+
import { Button } from '@wordpress/components';
|
|
11
10
|
import { forwardRef } from '@wordpress/element';
|
|
12
|
-
import {
|
|
11
|
+
import { Icon, lock } from '@wordpress/icons';
|
|
12
|
+
import { SPACE, ENTER } from '@wordpress/keycodes';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Internal dependencies
|
|
16
16
|
*/
|
|
17
17
|
import BlockIcon from '../block-icon';
|
|
18
18
|
import useBlockDisplayInformation from '../use-block-display-information';
|
|
19
|
-
import { getBlockPositionDescription } from './utils';
|
|
20
19
|
import BlockTitle from '../block-title';
|
|
21
20
|
import ListViewExpander from './expander';
|
|
22
|
-
import {
|
|
21
|
+
import { useBlockLock } from '../block-lock';
|
|
23
22
|
|
|
24
23
|
function ListViewBlockSelectButton(
|
|
25
24
|
{
|
|
26
25
|
className,
|
|
27
26
|
block: { clientId },
|
|
28
|
-
isSelected,
|
|
29
27
|
onClick,
|
|
30
28
|
onToggleExpanded,
|
|
31
|
-
position,
|
|
32
|
-
siblingBlockCount,
|
|
33
|
-
level,
|
|
34
29
|
tabIndex,
|
|
35
30
|
onFocus,
|
|
36
31
|
onDragStart,
|
|
37
32
|
onDragEnd,
|
|
38
33
|
draggable,
|
|
39
|
-
isExpanded,
|
|
40
34
|
},
|
|
41
35
|
ref
|
|
42
36
|
) {
|
|
43
37
|
const blockInformation = useBlockDisplayInformation( clientId );
|
|
44
|
-
const
|
|
45
|
-
const descriptionId = `list-view-block-select-button__${ instanceId }`;
|
|
46
|
-
const blockPositionDescription = getBlockPositionDescription(
|
|
47
|
-
position,
|
|
48
|
-
siblingBlockCount,
|
|
49
|
-
level
|
|
50
|
-
);
|
|
38
|
+
const { isLocked } = useBlockLock( clientId );
|
|
51
39
|
|
|
52
40
|
// The `href` attribute triggers the browser's native HTML drag operations.
|
|
53
41
|
// When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.
|
|
@@ -55,7 +43,7 @@ function ListViewBlockSelectButton(
|
|
|
55
43
|
// inside the `useOnBlockDrop` hook.
|
|
56
44
|
const onDragStartHandler = ( event ) => {
|
|
57
45
|
event.dataTransfer.clearData();
|
|
58
|
-
onDragStart( event );
|
|
46
|
+
onDragStart?.( event );
|
|
59
47
|
};
|
|
60
48
|
|
|
61
49
|
function onKeyDownHandler( event ) {
|
|
@@ -73,7 +61,6 @@ function ListViewBlockSelectButton(
|
|
|
73
61
|
) }
|
|
74
62
|
onClick={ onClick }
|
|
75
63
|
onKeyDown={ onKeyDownHandler }
|
|
76
|
-
aria-describedby={ descriptionId }
|
|
77
64
|
ref={ ref }
|
|
78
65
|
tabIndex={ tabIndex }
|
|
79
66
|
onFocus={ onFocus }
|
|
@@ -81,28 +68,24 @@ function ListViewBlockSelectButton(
|
|
|
81
68
|
onDragEnd={ onDragEnd }
|
|
82
69
|
draggable={ draggable }
|
|
83
70
|
href={ `#block-${ clientId }` }
|
|
84
|
-
aria-
|
|
71
|
+
aria-hidden={ true }
|
|
85
72
|
>
|
|
86
73
|
<ListViewExpander onClick={ onToggleExpanded } />
|
|
87
74
|
<BlockIcon icon={ blockInformation?.icon } showColors />
|
|
88
|
-
<
|
|
75
|
+
<span className="block-editor-list-view-block-select-button__title">
|
|
76
|
+
<BlockTitle clientId={ clientId } maximumLength={ 35 } />
|
|
77
|
+
</span>
|
|
89
78
|
{ blockInformation?.anchor && (
|
|
90
79
|
<span className="block-editor-list-view-block-select-button__anchor">
|
|
91
80
|
{ blockInformation.anchor }
|
|
92
81
|
</span>
|
|
93
82
|
) }
|
|
94
|
-
{
|
|
95
|
-
<
|
|
96
|
-
{
|
|
97
|
-
</
|
|
83
|
+
{ isLocked && (
|
|
84
|
+
<span className="block-editor-list-view-block-select-button__lock">
|
|
85
|
+
<Icon icon={ lock } />
|
|
86
|
+
</span>
|
|
98
87
|
) }
|
|
99
88
|
</Button>
|
|
100
|
-
<div
|
|
101
|
-
className="block-editor-list-view-block-select-button__description"
|
|
102
|
-
id={ descriptionId }
|
|
103
|
-
>
|
|
104
|
-
{ blockPositionDescription }
|
|
105
|
-
</div>
|
|
106
89
|
</>
|
|
107
90
|
);
|
|
108
91
|
}
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
__experimentalTreeGridCell as TreeGridCell,
|
|
11
11
|
__experimentalTreeGridItem as TreeGridItem,
|
|
12
12
|
} from '@wordpress/components';
|
|
13
|
+
import { useInstanceId } from '@wordpress/compose';
|
|
13
14
|
import { moreVertical } from '@wordpress/icons';
|
|
14
15
|
import {
|
|
15
16
|
useState,
|
|
@@ -32,6 +33,7 @@ import {
|
|
|
32
33
|
import ListViewBlockContents from './block-contents';
|
|
33
34
|
import BlockSettingsDropdown from '../block-settings-menu/block-settings-dropdown';
|
|
34
35
|
import { useListViewContext } from './context';
|
|
36
|
+
import { getBlockPositionDescription } from './utils';
|
|
35
37
|
import { store as blockEditorStore } from '../../store';
|
|
36
38
|
import useBlockDisplayInformation from '../use-block-display-information';
|
|
37
39
|
|
|
@@ -49,13 +51,44 @@ function ListViewBlock( {
|
|
|
49
51
|
path,
|
|
50
52
|
isExpanded,
|
|
51
53
|
selectedClientIds,
|
|
54
|
+
preventAnnouncement,
|
|
52
55
|
} ) {
|
|
53
56
|
const cellRef = useRef( null );
|
|
54
57
|
const [ isHovered, setIsHovered ] = useState( false );
|
|
55
58
|
const { clientId } = block;
|
|
59
|
+
const isFirstSelectedBlock =
|
|
60
|
+
isSelected && selectedClientIds[ 0 ] === clientId;
|
|
61
|
+
const isLastSelectedBlock =
|
|
62
|
+
isSelected &&
|
|
63
|
+
selectedClientIds[ selectedClientIds.length - 1 ] === clientId;
|
|
56
64
|
|
|
57
65
|
const { toggleBlockHighlight } = useDispatch( blockEditorStore );
|
|
58
66
|
|
|
67
|
+
const blockInformation = useBlockDisplayInformation( clientId );
|
|
68
|
+
const instanceId = useInstanceId( ListViewBlock );
|
|
69
|
+
const descriptionId = `list-view-block-select-button__${ instanceId }`;
|
|
70
|
+
const blockPositionDescription = getBlockPositionDescription(
|
|
71
|
+
position,
|
|
72
|
+
siblingBlockCount,
|
|
73
|
+
level
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
const blockAriaLabel = blockInformation
|
|
77
|
+
? sprintf(
|
|
78
|
+
// translators: %s: The title of the block. This string indicates a link to select the block.
|
|
79
|
+
__( '%s link' ),
|
|
80
|
+
blockInformation.title
|
|
81
|
+
)
|
|
82
|
+
: __( 'Link' );
|
|
83
|
+
|
|
84
|
+
const settingsAriaLabel = blockInformation
|
|
85
|
+
? sprintf(
|
|
86
|
+
// translators: %s: The title of the block.
|
|
87
|
+
__( 'Options for %s block' ),
|
|
88
|
+
blockInformation.title
|
|
89
|
+
)
|
|
90
|
+
: __( 'Options' );
|
|
91
|
+
|
|
59
92
|
const {
|
|
60
93
|
__experimentalFeatures: withExperimentalFeatures,
|
|
61
94
|
__experimentalPersistentListViewFeatures: withExperimentalPersistentListViewFeatures,
|
|
@@ -74,7 +107,7 @@ function ListViewBlock( {
|
|
|
74
107
|
|
|
75
108
|
const listViewBlockSettingsClassName = classnames(
|
|
76
109
|
'block-editor-list-view-block__menu-cell',
|
|
77
|
-
{ 'is-visible': isHovered ||
|
|
110
|
+
{ 'is-visible': isHovered || isFirstSelectedBlock }
|
|
78
111
|
);
|
|
79
112
|
|
|
80
113
|
// If ListView has experimental features related to the Persistent List View,
|
|
@@ -106,11 +139,12 @@ function ListViewBlock( {
|
|
|
106
139
|
const selectEditorBlock = useCallback(
|
|
107
140
|
( event ) => {
|
|
108
141
|
selectBlock( event, clientId );
|
|
142
|
+
event.preventDefault();
|
|
109
143
|
},
|
|
110
144
|
[ clientId, selectBlock ]
|
|
111
145
|
);
|
|
112
146
|
|
|
113
|
-
const
|
|
147
|
+
const updateSelection = useCallback(
|
|
114
148
|
( newClientId ) => {
|
|
115
149
|
selectBlock( undefined, newClientId );
|
|
116
150
|
},
|
|
@@ -148,21 +182,14 @@ function ListViewBlock( {
|
|
|
148
182
|
|
|
149
183
|
const classes = classnames( {
|
|
150
184
|
'is-selected': isSelected,
|
|
185
|
+
'is-first-selected': isFirstSelectedBlock,
|
|
186
|
+
'is-last-selected': isLastSelectedBlock,
|
|
151
187
|
'is-branch-selected':
|
|
152
188
|
withExperimentalPersistentListViewFeatures && isBranchSelected,
|
|
153
189
|
'is-dragging': isDragged,
|
|
154
190
|
'has-single-cell': hideBlockActions,
|
|
155
191
|
} );
|
|
156
192
|
|
|
157
|
-
const blockInformation = useBlockDisplayInformation( clientId );
|
|
158
|
-
const settingsAriaLabel = blockInformation
|
|
159
|
-
? sprintf(
|
|
160
|
-
// translators: %s: The title of the block.
|
|
161
|
-
__( 'Options for %s block' ),
|
|
162
|
-
blockInformation.title
|
|
163
|
-
)
|
|
164
|
-
: __( 'Options' );
|
|
165
|
-
|
|
166
193
|
// Only include all selected blocks if the currently clicked on block
|
|
167
194
|
// is one of the selected blocks. This ensures that if a user attempts
|
|
168
195
|
// to alter a block that isn't part of the selection, they're still able
|
|
@@ -185,11 +212,16 @@ function ListViewBlock( {
|
|
|
185
212
|
id={ `list-view-block-${ clientId }` }
|
|
186
213
|
data-block={ clientId }
|
|
187
214
|
isExpanded={ isExpanded }
|
|
215
|
+
aria-selected={ !! isSelected }
|
|
188
216
|
>
|
|
189
217
|
<TreeGridCell
|
|
190
218
|
className="block-editor-list-view-block__contents-cell"
|
|
191
219
|
colSpan={ colSpan }
|
|
192
220
|
ref={ cellRef }
|
|
221
|
+
aria-label={ blockAriaLabel }
|
|
222
|
+
aria-selected={ !! isSelected }
|
|
223
|
+
aria-expanded={ isExpanded }
|
|
224
|
+
aria-describedby={ descriptionId }
|
|
193
225
|
>
|
|
194
226
|
{ ( { ref, tabIndex, onFocus } ) => (
|
|
195
227
|
<div className="block-editor-list-view-block__contents-container">
|
|
@@ -206,7 +238,14 @@ function ListViewBlock( {
|
|
|
206
238
|
onFocus={ onFocus }
|
|
207
239
|
isExpanded={ isExpanded }
|
|
208
240
|
selectedClientIds={ selectedClientIds }
|
|
241
|
+
preventAnnouncement={ preventAnnouncement }
|
|
209
242
|
/>
|
|
243
|
+
<div
|
|
244
|
+
className="block-editor-list-view-block-select-button__description"
|
|
245
|
+
id={ descriptionId }
|
|
246
|
+
>
|
|
247
|
+
{ blockPositionDescription }
|
|
248
|
+
</div>
|
|
210
249
|
</div>
|
|
211
250
|
) }
|
|
212
251
|
</TreeGridCell>
|
|
@@ -243,7 +282,10 @@ function ListViewBlock( {
|
|
|
243
282
|
) }
|
|
244
283
|
|
|
245
284
|
{ showBlockActions && (
|
|
246
|
-
<TreeGridCell
|
|
285
|
+
<TreeGridCell
|
|
286
|
+
className={ listViewBlockSettingsClassName }
|
|
287
|
+
aria-selected={ !! isSelected }
|
|
288
|
+
>
|
|
247
289
|
{ ( { ref, tabIndex, onFocus } ) => (
|
|
248
290
|
<BlockSettingsDropdown
|
|
249
291
|
clientIds={ dropdownClientIds }
|
|
@@ -256,7 +298,7 @@ function ListViewBlock( {
|
|
|
256
298
|
onFocus,
|
|
257
299
|
} }
|
|
258
300
|
disableOpenOnArrowDown
|
|
259
|
-
__experimentalSelectBlock={
|
|
301
|
+
__experimentalSelectBlock={ updateSelection }
|
|
260
302
|
/>
|
|
261
303
|
) }
|
|
262
304
|
</TreeGridCell>
|