@wordpress/block-editor 9.3.0 → 9.6.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 +1 -8
- package/build/components/block-list/block-invalid-warning.native.js +54 -6
- package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
- package/build/components/block-list/block.js +2 -2
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +2 -1
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.native.js +4 -3
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/layout.js +20 -5
- package/build/components/block-list/layout.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js +5 -2
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-lock/modal.js +37 -7
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mover/mover-description.js +95 -32
- package/build/components/block-mover/mover-description.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +8 -26
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +3 -8
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-popover/inbetween.js +1 -1
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +1 -1
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +21 -5
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-edit-visually-button.js +70 -0
- package/build/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
- package/build/components/block-settings-menu/block-mode-toggle.js +1 -1
- package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu/index.js +6 -2
- package/build/components/block-settings-menu/index.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +5 -2
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/preview.native.js.map +1 -1
- package/build/components/block-switcher/index.js +7 -1
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-title/index.js +8 -2
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-title/use-block-display-title.js +15 -15
- package/build/components/block-title/use-block-display-title.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +1 -7
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +4 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-types-list/index.native.js +65 -23
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/border-radius-control/index.js +2 -0
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/colors/with-colors.js +1 -1
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/colors-gradients/control.js +46 -39
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +7 -3
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/date-format-picker/index.js +1 -1
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/duotone/components.js +145 -0
- package/build/components/duotone/components.js.map +1 -0
- package/build/components/duotone/index.js +40 -0
- package/build/components/duotone/index.js.map +1 -0
- package/build/components/duotone/utils.js +38 -0
- package/build/components/duotone/utils.js.map +1 -0
- package/build/components/duotone-control/index.js +17 -5
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/iframe/index.js +19 -6
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/cropper.js +4 -3
- package/build/components/image-editor/cropper.js.map +1 -1
- package/build/components/image-editor/index.js +3 -1
- package/build/components/image-editor/index.js.map +1 -1
- package/build/components/index.js +14 -0
- package/build/components/index.js.map +1 -1
- package/build/components/inserter/block-types-tab.native.js +30 -16
- package/build/components/inserter/block-types-tab.native.js.map +1 -1
- package/build/components/inserter/index.js +3 -3
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/preview-panel.js +8 -8
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.native.js +5 -1
- package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build/components/inserter/search-results.native.js +5 -2
- package/build/components/inserter/search-results.native.js.map +1 -1
- package/build/components/inserter/utils.native.js +21 -0
- package/build/components/inserter/utils.native.js.map +1 -1
- package/build/components/inserter-list-item/index.js +5 -1
- package/build/components/inserter-list-item/index.js.map +1 -1
- package/build/components/link-control/index.js +1 -1
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +15 -7
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/branch.js +1 -7
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +1 -1
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/media-placeholder/index.js +14 -2
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +4 -4
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +6 -13
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/observe-typing/index.js +22 -8
- package/build/components/observe-typing/index.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +3 -0
- package/build/components/publish-date-time-picker/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +61 -12
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/index.js +2 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-format-types.js +36 -16
- package/build/components/rich-text/use-format-types.js.map +1 -1
- package/build/components/rich-text/use-input-rules.js +4 -13
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +20 -5
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/url-popover/index.js +2 -1
- package/build/components/url-popover/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +34 -2
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js +3 -47
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +1 -3
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +1 -1
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/elements/index.js +11 -3
- package/build/elements/index.js.map +1 -1
- package/build/hooks/aria-label.js +71 -0
- package/build/hooks/aria-label.js.map +1 -0
- package/build/hooks/color.js +2 -4
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/duotone.js +33 -160
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +11 -7
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +59 -18
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/style.js +41 -31
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +5 -3
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -7
- package/build/index.js.map +1 -1
- package/build/layouts/flex.js +42 -38
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +35 -37
- package/build/layouts/flow.js.map +1 -1
- package/build/layouts/utils.js +35 -3
- package/build/layouts/utils.js.map +1 -1
- package/build/store/actions.js +24 -31
- package/build/store/actions.js.map +1 -1
- package/build/store/index.js +0 -4
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +23 -12
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +3 -3
- package/build/store/selectors.js.map +1 -1
- package/build/utils/selection.js +34 -0
- package/build/utils/selection.js.map +1 -0
- package/build-module/components/block-list/block-invalid-warning.native.js +50 -6
- package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
- package/build-module/components/block-list/block.js +2 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +2 -1
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.native.js +3 -1
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/layout.js +19 -4
- package/build-module/components/block-list/layout.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +5 -2
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-lock/modal.js +39 -8
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +2 -2
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mover/mover-description.js +97 -33
- package/build-module/components/block-mover/mover-description.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +9 -27
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +3 -8
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +1 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +1 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +20 -5
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-edit-visually-button.js +56 -0
- package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
- package/build-module/components/block-settings-menu/block-mode-toggle.js +1 -1
- package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +6 -5
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu/index.js +6 -3
- package/build-module/components/block-settings-menu/index.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +7 -4
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/preview.native.js.map +1 -1
- package/build-module/components/block-switcher/index.js +7 -1
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-title/index.js +8 -2
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-title/use-block-display-title.js +15 -14
- package/build-module/components/block-title/use-block-display-title.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +1 -7
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +4 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js +67 -25
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +2 -0
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/colors/with-colors.js +2 -2
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +47 -40
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +8 -4
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +1 -1
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/duotone/components.js +130 -0
- package/build-module/components/duotone/components.js.map +1 -0
- package/build-module/components/duotone/index.js +3 -0
- package/build-module/components/duotone/index.js.map +1 -0
- package/build-module/components/duotone/utils.js +30 -0
- package/build-module/components/duotone/utils.js.map +1 -0
- package/build-module/components/duotone-control/index.js +18 -6
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +19 -6
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/cropper.js +4 -3
- package/build-module/components/image-editor/cropper.js.map +1 -1
- package/build-module/components/image-editor/index.js +3 -1
- package/build-module/components/image-editor/index.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.native.js +31 -15
- package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -2
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +9 -9
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.native.js +6 -2
- package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build-module/components/inserter/search-results.native.js +6 -3
- package/build-module/components/inserter/search-results.native.js.map +1 -1
- package/build-module/components/inserter/utils.native.js +19 -0
- package/build-module/components/inserter/utils.native.js.map +1 -1
- package/build-module/components/inserter-list-item/index.js +4 -1
- package/build-module/components/inserter-list-item/index.js.map +1 -1
- package/build-module/components/link-control/index.js +1 -1
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +16 -8
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/branch.js +1 -6
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +1 -1
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +14 -2
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +5 -3
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +7 -13
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/observe-typing/index.js +22 -8
- package/build-module/components/observe-typing/index.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +2 -0
- package/build-module/components/publish-date-time-picker/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +58 -12
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/index.js +2 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-format-types.js +37 -18
- package/build-module/components/rich-text/use-format-types.js.map +1 -1
- package/build-module/components/rich-text/use-input-rules.js +3 -11
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +20 -5
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/url-popover/index.js +2 -1
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +35 -3
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js +3 -45
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +1 -3
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/elements/index.js +7 -1
- package/build-module/elements/index.js.map +1 -1
- package/build-module/hooks/aria-label.js +59 -0
- package/build-module/hooks/aria-label.js.map +1 -0
- package/build-module/hooks/color.js +2 -3
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/duotone.js +22 -140
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +2 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +60 -19
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/style.js +44 -35
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +5 -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/flex.js +43 -35
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +35 -38
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/layouts/utils.js +33 -3
- package/build-module/layouts/utils.js.map +1 -1
- package/build-module/store/actions.js +14 -20
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/index.js +0 -4
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/reducer.js +23 -11
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +4 -4
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/selection.js +24 -0
- package/build-module/utils/selection.js.map +1 -0
- package/build-style/style-rtl.css +43 -13
- package/build-style/style.css +43 -13
- package/package.json +28 -28
- package/src/components/block-draggable/test/helpers.native.js +3 -3
- package/src/components/block-list/block-invalid-warning.native.js +42 -7
- package/src/components/block-list/block.js +2 -2
- package/src/components/block-list/block.native.js +1 -0
- package/src/components/block-list/index.native.js +1 -1
- package/src/components/block-list/layout.js +15 -3
- package/src/components/block-list/style.scss +2 -2
- package/src/components/block-list/use-block-props/use-block-class-names.js +5 -1
- package/src/components/block-lock/modal.js +47 -9
- package/src/components/block-lock/style.scss +10 -0
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
- package/src/components/block-mover/mover-description.js +131 -48
- package/src/components/block-mover/test/mover-description.js +55 -3
- package/src/components/block-pattern-setup/index.js +5 -25
- package/src/components/block-pattern-setup/setup-toolbar.js +2 -9
- package/src/components/block-pattern-setup/style.scss +4 -2
- package/src/components/block-popover/inbetween.js +1 -1
- package/src/components/block-popover/index.js +1 -1
- package/src/components/block-preview/auto.js +17 -3
- package/src/components/block-settings-menu/block-edit-visually-button.js +52 -0
- package/src/components/block-settings-menu/block-mode-toggle.js +1 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +7 -3
- package/src/components/block-settings-menu/index.js +15 -11
- package/src/components/block-settings-menu-controls/index.js +5 -4
- package/src/components/block-styles/preview.native.js +1 -0
- package/src/components/block-switcher/index.js +7 -1
- package/src/components/block-title/index.js +3 -2
- package/src/components/block-title/use-block-display-title.js +20 -12
- package/src/components/block-tools/block-contextual-toolbar.js +3 -1
- package/src/components/block-tools/block-selection-button.js +0 -5
- package/src/components/block-tools/index.js +4 -1
- package/src/components/block-types-list/index.native.js +76 -24
- package/src/components/block-types-list/style.native.scss +18 -0
- package/src/components/border-radius-control/index.js +2 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +0 -4
- package/src/components/colors/test/__snapshots__/with-colors.js.snap +1 -1
- package/src/components/colors/test/with-colors.js +1 -1
- package/src/components/colors/with-colors.js +2 -2
- package/src/components/colors-gradients/control.js +78 -65
- package/src/components/colors-gradients/dropdown.js +9 -2
- package/src/components/colors-gradients/style.scss +11 -8
- package/src/components/colors-gradients/test/control.js +16 -23
- package/src/components/date-format-picker/index.js +1 -0
- package/src/components/duotone/components.js +133 -0
- package/src/components/duotone/index.js +7 -0
- package/src/components/duotone/utils.js +25 -0
- package/src/components/duotone-control/index.js +12 -7
- package/src/components/duotone-control/style.scss +5 -0
- package/src/components/iframe/index.js +25 -6
- package/src/components/image-editor/cropper.js +9 -3
- package/src/components/image-editor/index.js +2 -0
- package/src/components/index.js +1 -0
- package/src/components/inserter/block-types-tab.native.js +42 -21
- package/src/components/inserter/index.js +3 -5
- package/src/components/inserter/preview-panel.js +6 -14
- package/src/components/inserter/reusable-blocks-tab.native.js +4 -2
- package/src/components/inserter/search-results.native.js +4 -2
- package/src/components/inserter/style.scss +1 -1
- package/src/components/inserter/test/block-types-tab.native.js +2 -0
- package/src/components/inserter/test/utils.native.js +37 -0
- package/src/components/inserter/utils.native.js +11 -0
- package/src/components/inserter-list-item/index.js +4 -1
- package/src/components/link-control/index.js +1 -0
- package/src/components/link-control/test/fixtures/index.js +3 -4
- package/src/components/link-control/test/index.js +64 -73
- package/src/components/list-view/block-select-button.js +29 -14
- package/src/components/list-view/branch.js +1 -6
- package/src/components/list-view/drop-indicator.js +1 -1
- package/src/components/list-view/style.scss +18 -4
- package/src/components/media-placeholder/index.js +20 -0
- package/src/components/media-placeholder/index.native.js +9 -5
- package/src/components/media-replace-flow/index.js +5 -14
- package/src/components/media-replace-flow/test/index.js +14 -4
- package/src/components/media-upload/README.md +8 -0
- package/src/components/observe-typing/index.js +17 -14
- package/src/components/publish-date-time-picker/index.js +2 -0
- package/src/components/responsive-block-control/README.md +3 -1
- package/src/components/responsive-block-control/test/index.js +1 -2
- package/src/components/rich-text/format-toolbar-container.js +63 -14
- package/src/components/rich-text/index.js +1 -0
- package/src/components/rich-text/use-format-types.js +38 -17
- package/src/components/rich-text/use-input-rules.js +6 -15
- package/src/components/rich-text/use-paste-handler.js +17 -5
- package/src/components/url-popover/index.js +1 -0
- package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -0
- package/src/components/writing-flow/use-arrow-nav.js +32 -1
- package/src/components/writing-flow/use-multi-selection.js +1 -48
- package/src/components/writing-flow/use-selection-observer.js +2 -3
- package/src/components/writing-flow/use-tab-nav.js +1 -1
- package/src/elements/index.js +8 -1
- package/src/elements/test/index.js +18 -0
- package/src/hooks/aria-label.js +67 -0
- package/src/hooks/color.js +10 -3
- package/src/hooks/duotone.js +18 -139
- package/src/hooks/index.js +2 -1
- package/src/hooks/layout.js +77 -29
- package/src/hooks/style.js +46 -39
- package/src/hooks/utils.js +7 -3
- package/src/index.js +1 -1
- package/src/layouts/flex.js +49 -43
- package/src/layouts/flow.js +35 -34
- package/src/layouts/test/flex.js +21 -0
- package/src/layouts/test/flow.js +21 -0
- package/src/layouts/test/utils.js +138 -0
- package/src/layouts/utils.js +44 -3
- package/src/store/actions.js +17 -31
- package/src/store/index.js +0 -4
- package/src/store/reducer.js +24 -11
- package/src/store/selectors.js +3 -4
- package/src/store/test/reducer.js +138 -10
- package/src/store/test/selectors.js +3 -6
- package/src/utils/selection.js +26 -0
- package/src/utils/test/selection.js +39 -0
- package/tsconfig.json +2 -1
|
@@ -12,6 +12,7 @@ import { useMemo } from '@wordpress/element';
|
|
|
12
12
|
import BlockList from '../block-list';
|
|
13
13
|
import Iframe from '../iframe';
|
|
14
14
|
import EditorStyles from '../editor-styles';
|
|
15
|
+
import { __unstablePresetDuotoneFilter as PresetDuotoneFilter } from '../../components/duotone';
|
|
15
16
|
import { store } from '../../store';
|
|
16
17
|
|
|
17
18
|
// This is used to avoid rendering the block list if the sizes change.
|
|
@@ -28,11 +29,12 @@ function AutoBlockPreview( {
|
|
|
28
29
|
useResizeObserver();
|
|
29
30
|
const [ contentResizeListener, { height: contentHeight } ] =
|
|
30
31
|
useResizeObserver();
|
|
31
|
-
const { styles, assets } = useSelect( ( select ) => {
|
|
32
|
+
const { styles, assets, duotone } = useSelect( ( select ) => {
|
|
32
33
|
const settings = select( store ).getSettings();
|
|
33
34
|
return {
|
|
34
35
|
styles: settings.styles,
|
|
35
36
|
assets: settings.__unstableResolvedAssets,
|
|
37
|
+
duotone: settings.__experimentalFeatures?.color?.duotone,
|
|
36
38
|
};
|
|
37
39
|
}, [] );
|
|
38
40
|
|
|
@@ -51,11 +53,14 @@ function AutoBlockPreview( {
|
|
|
51
53
|
return styles;
|
|
52
54
|
}, [ styles ] );
|
|
53
55
|
|
|
56
|
+
const svgFilters = useMemo( () => {
|
|
57
|
+
return [ ...( duotone?.default ?? [] ), ...( duotone?.theme ?? [] ) ];
|
|
58
|
+
}, [ duotone ] );
|
|
59
|
+
|
|
54
60
|
// Initialize on render instead of module top level, to avoid circular dependency issues.
|
|
55
61
|
MemoizedBlockList = MemoizedBlockList || pure( BlockList );
|
|
56
62
|
|
|
57
63
|
const scale = containerWidth / viewportWidth;
|
|
58
|
-
|
|
59
64
|
return (
|
|
60
65
|
<div className="block-editor-block-preview__container">
|
|
61
66
|
{ containerResizeListener }
|
|
@@ -100,12 +105,21 @@ function AutoBlockPreview( {
|
|
|
100
105
|
// See: https://github.com/WordPress/gutenberg/pull/38175.
|
|
101
106
|
maxHeight: MAX_HEIGHT,
|
|
102
107
|
minHeight:
|
|
103
|
-
scale < 1 && __experimentalMinHeight
|
|
108
|
+
scale !== 0 && scale < 1 && __experimentalMinHeight
|
|
104
109
|
? __experimentalMinHeight / scale
|
|
105
110
|
: __experimentalMinHeight,
|
|
106
111
|
} }
|
|
107
112
|
>
|
|
108
113
|
{ contentResizeListener }
|
|
114
|
+
{
|
|
115
|
+
/* Filters need to be rendered before children to avoid Safari rendering issues. */
|
|
116
|
+
svgFilters.map( ( preset ) => (
|
|
117
|
+
<PresetDuotoneFilter
|
|
118
|
+
preset={ preset }
|
|
119
|
+
key={ preset.slug }
|
|
120
|
+
/>
|
|
121
|
+
) )
|
|
122
|
+
}
|
|
109
123
|
<MemoizedBlockList renderAppender={ false } />
|
|
110
124
|
</Iframe>
|
|
111
125
|
</Disabled>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { rawHandler, getBlockContent } from '@wordpress/blocks';
|
|
5
|
+
import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
|
|
6
|
+
import { __ } from '@wordpress/i18n';
|
|
7
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
8
|
+
import { useCallback } from '@wordpress/element';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
import { store as blockEditorStore } from '../../store';
|
|
14
|
+
|
|
15
|
+
export default function BlockEditVisuallyButton( { clientIds, ...props } ) {
|
|
16
|
+
const { block, shouldRender } = useSelect(
|
|
17
|
+
( select ) => {
|
|
18
|
+
const firstBlockClientId = clientIds[ 0 ];
|
|
19
|
+
const { isBlockMultiSelected, getBlockMode, getBlock } =
|
|
20
|
+
select( blockEditorStore );
|
|
21
|
+
const isSingleSelected =
|
|
22
|
+
! isBlockMultiSelected( firstBlockClientId );
|
|
23
|
+
const isHtmlMode = getBlockMode( firstBlockClientId ) === 'html';
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
block: getBlock( firstBlockClientId ),
|
|
27
|
+
shouldRender: isSingleSelected && isHtmlMode,
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
[ clientIds[ 0 ] ]
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
const { replaceBlocks } = useDispatch( blockEditorStore );
|
|
34
|
+
const onClick = useCallback( () => {
|
|
35
|
+
replaceBlocks(
|
|
36
|
+
block.clientId,
|
|
37
|
+
rawHandler( { HTML: getBlockContent( block ) } )
|
|
38
|
+
);
|
|
39
|
+
}, [ block ] );
|
|
40
|
+
|
|
41
|
+
if ( ! shouldRender ) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<ToolbarGroup>
|
|
47
|
+
<ToolbarButton onClick={ onClick } { ...props }>
|
|
48
|
+
{ __( 'Edit visually' ) }
|
|
49
|
+
</ToolbarButton>
|
|
50
|
+
</ToolbarGroup>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
useCallback,
|
|
17
17
|
useRef,
|
|
18
18
|
} from '@wordpress/element';
|
|
19
|
-
import { __,
|
|
19
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
20
20
|
import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
|
|
21
21
|
import { useCopyToClipboard } from '@wordpress/compose';
|
|
22
22
|
|
|
@@ -42,7 +42,8 @@ const POPOVER_PROPS = {
|
|
|
42
42
|
|
|
43
43
|
function CopyMenuItem( { blocks, onCopy } ) {
|
|
44
44
|
const ref = useCopyToClipboard( () => serialize( blocks ), onCopy );
|
|
45
|
-
const copyMenuItemLabel =
|
|
45
|
+
const copyMenuItemLabel =
|
|
46
|
+
blocks.length > 1 ? __( 'Copy blocks' ) : __( 'Copy block' );
|
|
46
47
|
return <MenuItem ref={ ref }>{ copyMenuItemLabel }</MenuItem>;
|
|
47
48
|
}
|
|
48
49
|
|
|
@@ -124,7 +125,10 @@ export function BlockSettingsDropdown( {
|
|
|
124
125
|
[ __experimentalSelectBlock ]
|
|
125
126
|
);
|
|
126
127
|
|
|
127
|
-
const blockTitle = useBlockDisplayTitle(
|
|
128
|
+
const blockTitle = useBlockDisplayTitle( {
|
|
129
|
+
clientId: firstBlockClientId,
|
|
130
|
+
maximumLength: 25,
|
|
131
|
+
} );
|
|
128
132
|
|
|
129
133
|
const updateSelectionAfterRemove = useCallback(
|
|
130
134
|
__experimentalSelectBlock
|
|
@@ -7,20 +7,24 @@ import { ToolbarGroup, ToolbarItem } from '@wordpress/components';
|
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
9
|
import BlockSettingsDropdown from './block-settings-dropdown';
|
|
10
|
+
import BlockEditVisuallyButton from './block-edit-visually-button';
|
|
10
11
|
|
|
11
12
|
export function BlockSettingsMenu( { clientIds, ...props } ) {
|
|
12
13
|
return (
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
<>
|
|
15
|
+
<BlockEditVisuallyButton clientIds={ clientIds } { ...props } />
|
|
16
|
+
<ToolbarGroup>
|
|
17
|
+
<ToolbarItem>
|
|
18
|
+
{ ( toggleProps ) => (
|
|
19
|
+
<BlockSettingsDropdown
|
|
20
|
+
clientIds={ clientIds }
|
|
21
|
+
toggleProps={ toggleProps }
|
|
22
|
+
{ ...props }
|
|
23
|
+
/>
|
|
24
|
+
) }
|
|
25
|
+
</ToolbarItem>
|
|
26
|
+
</ToolbarGroup>
|
|
27
|
+
</>
|
|
24
28
|
);
|
|
25
29
|
}
|
|
26
30
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { map } from 'lodash';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
useConvertToGroupButtonProps,
|
|
21
21
|
ConvertToGroupButton,
|
|
22
22
|
} from '../convert-to-group-buttons';
|
|
23
|
-
import { BlockLockMenuItem } from '../block-lock';
|
|
23
|
+
import { BlockLockMenuItem, useBlockLock } from '../block-lock';
|
|
24
24
|
import { store as blockEditorStore } from '../../store';
|
|
25
25
|
|
|
26
26
|
const { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );
|
|
@@ -37,7 +37,7 @@ const BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {
|
|
|
37
37
|
clientIds !== null ? clientIds : getSelectedBlockClientIds();
|
|
38
38
|
return {
|
|
39
39
|
selectedBlocks: map(
|
|
40
|
-
|
|
40
|
+
getBlocksByClientId( ids ).filter( Boolean ),
|
|
41
41
|
( block ) => block.name
|
|
42
42
|
),
|
|
43
43
|
selectedClientIds: ids,
|
|
@@ -47,7 +47,8 @@ const BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {
|
|
|
47
47
|
[ clientIds ]
|
|
48
48
|
);
|
|
49
49
|
|
|
50
|
-
const
|
|
50
|
+
const { canLock } = useBlockLock( selectedClientIds[ 0 ] );
|
|
51
|
+
const showLockButton = selectedClientIds.length === 1 && canLock;
|
|
51
52
|
|
|
52
53
|
// Check if current selection of blocks is Groupable or Ungroupable
|
|
53
54
|
// and pass this props down to ConvertToGroupButton.
|
|
@@ -98,8 +98,14 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
|
|
|
98
98
|
// Pattern transformation through the `Patterns` API.
|
|
99
99
|
const onPatternTransform = ( transformedBlocks ) =>
|
|
100
100
|
replaceBlocks( clientIds, transformedBlocks );
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* The `isTemplate` check is a stopgap solution here.
|
|
104
|
+
* Ideally, the Transforms API should handle this
|
|
105
|
+
* by allowing to exclude blocks from wildcard transformations.
|
|
106
|
+
*/
|
|
101
107
|
const hasPossibleBlockTransformations =
|
|
102
|
-
!! possibleBlockTransformations.length && canRemove;
|
|
108
|
+
!! possibleBlockTransformations.length && canRemove && ! isTemplate;
|
|
103
109
|
const hasPatternTransformation = !! patterns?.length && canRemove;
|
|
104
110
|
if ( ! hasBlockStyles && ! hasPossibleBlockTransformations ) {
|
|
105
111
|
return (
|
|
@@ -17,9 +17,10 @@ import useBlockDisplayTitle from './use-block-display-title';
|
|
|
17
17
|
* @param {Object} props
|
|
18
18
|
* @param {string} props.clientId Client ID of block.
|
|
19
19
|
* @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.
|
|
20
|
+
* @param {string|undefined} props.context The context to pass to `getBlockLabel`.
|
|
20
21
|
*
|
|
21
22
|
* @return {JSX.Element} Block title.
|
|
22
23
|
*/
|
|
23
|
-
export default function BlockTitle( { clientId, maximumLength } ) {
|
|
24
|
-
return useBlockDisplayTitle( clientId, maximumLength );
|
|
24
|
+
export default function BlockTitle( { clientId, maximumLength, context } ) {
|
|
25
|
+
return useBlockDisplayTitle( { clientId, maximumLength, context } );
|
|
25
26
|
}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { truncate } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -26,14 +21,20 @@ import { store as blockEditorStore } from '../../store';
|
|
|
26
21
|
* @example
|
|
27
22
|
*
|
|
28
23
|
* ```js
|
|
29
|
-
* useBlockDisplayTitle( 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', 17 );
|
|
24
|
+
* useBlockDisplayTitle( { clientId: 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', maximumLength: 17 } );
|
|
30
25
|
* ```
|
|
31
26
|
*
|
|
32
|
-
* @param {
|
|
33
|
-
* @param {
|
|
27
|
+
* @param {Object} props
|
|
28
|
+
* @param {string} props.clientId Client ID of block.
|
|
29
|
+
* @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.
|
|
30
|
+
* @param {string|undefined} props.context The context to pass to `getBlockLabel`.
|
|
34
31
|
* @return {?string} Block title.
|
|
35
32
|
*/
|
|
36
|
-
export default function useBlockDisplayTitle(
|
|
33
|
+
export default function useBlockDisplayTitle( {
|
|
34
|
+
clientId,
|
|
35
|
+
maximumLength,
|
|
36
|
+
context,
|
|
37
|
+
} ) {
|
|
37
38
|
const { attributes, name, reusableBlockTitle } = useSelect(
|
|
38
39
|
( select ) => {
|
|
39
40
|
if ( ! clientId ) {
|
|
@@ -68,7 +69,7 @@ export default function useBlockDisplayTitle( clientId, maximumLength ) {
|
|
|
68
69
|
}
|
|
69
70
|
const blockType = getBlockType( name );
|
|
70
71
|
const blockLabel = blockType
|
|
71
|
-
? getBlockLabel( blockType, attributes )
|
|
72
|
+
? getBlockLabel( blockType, attributes, context )
|
|
72
73
|
: null;
|
|
73
74
|
|
|
74
75
|
const label = reusableBlockTitle || blockLabel;
|
|
@@ -78,8 +79,15 @@ export default function useBlockDisplayTitle( clientId, maximumLength ) {
|
|
|
78
79
|
const blockTitle =
|
|
79
80
|
label && label !== blockType.title ? label : blockInformation.title;
|
|
80
81
|
|
|
81
|
-
if (
|
|
82
|
-
|
|
82
|
+
if (
|
|
83
|
+
maximumLength &&
|
|
84
|
+
maximumLength > 0 &&
|
|
85
|
+
blockTitle.length > maximumLength
|
|
86
|
+
) {
|
|
87
|
+
const omission = '...';
|
|
88
|
+
return (
|
|
89
|
+
blockTitle.slice( 0, maximumLength - omission.length ) + omission
|
|
90
|
+
);
|
|
83
91
|
}
|
|
84
92
|
|
|
85
93
|
return blockTitle;
|
|
@@ -36,11 +36,13 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
|
|
|
36
36
|
getBlockType( getBlockName( selectedBlockClientId ) ),
|
|
37
37
|
hasParents: parents.length,
|
|
38
38
|
showParentSelector:
|
|
39
|
+
parentBlockType &&
|
|
39
40
|
hasBlockSupport(
|
|
40
41
|
parentBlockType,
|
|
41
42
|
'__experimentalParentSelector',
|
|
42
43
|
true
|
|
43
|
-
) &&
|
|
44
|
+
) &&
|
|
45
|
+
selectedBlockClientIds.length <= 1,
|
|
44
46
|
};
|
|
45
47
|
},
|
|
46
48
|
[]
|
|
@@ -102,7 +102,6 @@ function BlockSelectionButton( { clientId, rootClientId } ) {
|
|
|
102
102
|
getMultiSelectedBlocksEndClientId,
|
|
103
103
|
getPreviousBlockClientId,
|
|
104
104
|
getNextBlockClientId,
|
|
105
|
-
isNavigationMode,
|
|
106
105
|
} = useSelect( blockEditorStore );
|
|
107
106
|
const {
|
|
108
107
|
selectBlock,
|
|
@@ -160,10 +159,6 @@ function BlockSelectionButton( { clientId, rootClientId } ) {
|
|
|
160
159
|
selectedBlockClientId;
|
|
161
160
|
}
|
|
162
161
|
const startingBlockClientId = hasBlockMovingClientId();
|
|
163
|
-
if ( isEscape && isNavigationMode() ) {
|
|
164
|
-
clearSelectedBlock();
|
|
165
|
-
event.preventDefault();
|
|
166
|
-
}
|
|
167
162
|
if ( isEscape && startingBlockClientId && ! event.defaultPrevented ) {
|
|
168
163
|
setBlockMovingClientId( null );
|
|
169
164
|
event.preventDefault();
|
|
@@ -53,6 +53,8 @@ export default function BlockTools( {
|
|
|
53
53
|
} = useDispatch( blockEditorStore );
|
|
54
54
|
|
|
55
55
|
function onKeyDown( event ) {
|
|
56
|
+
if ( event.defaultPrevented ) return;
|
|
57
|
+
|
|
56
58
|
if ( isMatch( 'core/block-editor/move-up', event ) ) {
|
|
57
59
|
const clientIds = getSelectedBlockClientIds();
|
|
58
60
|
if ( clientIds.length ) {
|
|
@@ -93,12 +95,13 @@ export default function BlockTools( {
|
|
|
93
95
|
}
|
|
94
96
|
} else if ( isMatch( 'core/block-editor/unselect', event ) ) {
|
|
95
97
|
const clientIds = getSelectedBlockClientIds();
|
|
96
|
-
if ( clientIds.length
|
|
98
|
+
if ( clientIds.length ) {
|
|
97
99
|
event.preventDefault();
|
|
98
100
|
clearSelectedBlock();
|
|
99
101
|
event.target.ownerDocument.defaultView
|
|
100
102
|
.getSelection()
|
|
101
103
|
.removeAllRanges();
|
|
104
|
+
__unstableContentRef?.current.focus();
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
}
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
import {
|
|
5
5
|
Dimensions,
|
|
6
6
|
FlatList,
|
|
7
|
+
SectionList,
|
|
7
8
|
StyleSheet,
|
|
9
|
+
Text,
|
|
8
10
|
TouchableWithoutFeedback,
|
|
9
11
|
View,
|
|
10
12
|
} from 'react-native';
|
|
@@ -13,7 +15,11 @@ import {
|
|
|
13
15
|
* WordPress dependencies
|
|
14
16
|
*/
|
|
15
17
|
import { useState, useEffect } from '@wordpress/element';
|
|
16
|
-
import { BottomSheet, InserterButton } from '@wordpress/components';
|
|
18
|
+
import { BottomSheet, Gradient, InserterButton } from '@wordpress/components';
|
|
19
|
+
import {
|
|
20
|
+
usePreferredColorScheme,
|
|
21
|
+
usePreferredColorSchemeStyle,
|
|
22
|
+
} from '@wordpress/compose';
|
|
17
23
|
|
|
18
24
|
/**
|
|
19
25
|
* Internal dependencies
|
|
@@ -24,7 +30,7 @@ const MIN_COL_NUM = 3;
|
|
|
24
30
|
|
|
25
31
|
export default function BlockTypesList( {
|
|
26
32
|
name,
|
|
27
|
-
|
|
33
|
+
sections,
|
|
28
34
|
onSelect,
|
|
29
35
|
listProps,
|
|
30
36
|
initialNumToRender = 3,
|
|
@@ -80,33 +86,79 @@ export default function BlockTypesList( {
|
|
|
80
86
|
listProps.contentContainerStyle
|
|
81
87
|
);
|
|
82
88
|
|
|
89
|
+
const renderSection = ( { item } ) => {
|
|
90
|
+
return (
|
|
91
|
+
<TouchableWithoutFeedback accessible={ false }>
|
|
92
|
+
<FlatList
|
|
93
|
+
data={ item.list }
|
|
94
|
+
key={ `InserterUI-${ name }-${ numberOfColumns }` } // Re-render when numberOfColumns changes.
|
|
95
|
+
numColumns={ numberOfColumns }
|
|
96
|
+
ItemSeparatorComponent={ () => (
|
|
97
|
+
<TouchableWithoutFeedback accessible={ false }>
|
|
98
|
+
<View
|
|
99
|
+
style={
|
|
100
|
+
styles[ 'block-types-list__row-separator' ]
|
|
101
|
+
}
|
|
102
|
+
/>
|
|
103
|
+
</TouchableWithoutFeedback>
|
|
104
|
+
) }
|
|
105
|
+
scrollEnabled={ false }
|
|
106
|
+
renderItem={ renderListItem }
|
|
107
|
+
/>
|
|
108
|
+
</TouchableWithoutFeedback>
|
|
109
|
+
);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const renderListItem = ( { item } ) => {
|
|
113
|
+
return (
|
|
114
|
+
<InserterButton
|
|
115
|
+
item={ item }
|
|
116
|
+
itemWidth={ itemWidth }
|
|
117
|
+
maxWidth={ maxWidth }
|
|
118
|
+
onSelect={ onSelect }
|
|
119
|
+
/>
|
|
120
|
+
);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const colorScheme = usePreferredColorScheme();
|
|
124
|
+
const sectionHeaderGradientValue =
|
|
125
|
+
colorScheme === 'light'
|
|
126
|
+
? 'linear-gradient(#fff 70%, rgba(255, 255, 255, 0))'
|
|
127
|
+
: 'linear-gradient(#2e2e2e 70%, rgba(46, 46, 46, 0))';
|
|
128
|
+
const sectionHeaderTitleStyles = usePreferredColorSchemeStyle(
|
|
129
|
+
styles[ 'block-types-list__section-header-title' ],
|
|
130
|
+
styles[ 'block-types-list__section-header-title--dark' ]
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
const renderSectionHeader = ( { section: { metadata } } ) => {
|
|
134
|
+
if ( ! metadata?.icon || ! metadata?.title ) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return (
|
|
139
|
+
<TouchableWithoutFeedback accessible={ false }>
|
|
140
|
+
<Gradient
|
|
141
|
+
gradientValue={ sectionHeaderGradientValue }
|
|
142
|
+
style={ styles[ 'block-types-list__section-header' ] }
|
|
143
|
+
>
|
|
144
|
+
{ metadata?.icon }
|
|
145
|
+
<Text style={ sectionHeaderTitleStyles }>
|
|
146
|
+
{ metadata?.title }
|
|
147
|
+
</Text>
|
|
148
|
+
</Gradient>
|
|
149
|
+
</TouchableWithoutFeedback>
|
|
150
|
+
);
|
|
151
|
+
};
|
|
152
|
+
|
|
83
153
|
return (
|
|
84
|
-
<
|
|
154
|
+
<SectionList
|
|
85
155
|
onLayout={ onLayout }
|
|
86
|
-
key={ `InserterUI-${ name }-${ numberOfColumns }` } // Re-render when numberOfColumns changes.
|
|
87
156
|
testID={ `InserterUI-${ name }` }
|
|
88
157
|
keyboardShouldPersistTaps="always"
|
|
89
|
-
|
|
90
|
-
data={ items }
|
|
158
|
+
sections={ sections }
|
|
91
159
|
initialNumToRender={ initialNumToRender }
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
<View
|
|
95
|
-
style={ styles[ 'block-types-list__row-separator' ] }
|
|
96
|
-
/>
|
|
97
|
-
</TouchableWithoutFeedback>
|
|
98
|
-
) }
|
|
99
|
-
keyExtractor={ ( item ) => item.id }
|
|
100
|
-
renderItem={ ( { item } ) => (
|
|
101
|
-
<InserterButton
|
|
102
|
-
{ ...{
|
|
103
|
-
item,
|
|
104
|
-
itemWidth,
|
|
105
|
-
maxWidth,
|
|
106
|
-
onSelect,
|
|
107
|
-
} }
|
|
108
|
-
/>
|
|
109
|
-
) }
|
|
160
|
+
renderItem={ renderSection }
|
|
161
|
+
renderSectionHeader={ renderSectionHeader }
|
|
110
162
|
{ ...listProps }
|
|
111
163
|
contentContainerStyle={ {
|
|
112
164
|
...contentContainerStyle,
|
|
@@ -5,3 +5,21 @@
|
|
|
5
5
|
.block-types-list__column {
|
|
6
6
|
padding: $grid-unit-20;
|
|
7
7
|
}
|
|
8
|
+
|
|
9
|
+
.block-types-list__section-header {
|
|
10
|
+
align-items: center;
|
|
11
|
+
flex-direction: row;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
padding-bottom: 16;
|
|
14
|
+
padding-top: 32;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.block-types-list__section-header-title {
|
|
18
|
+
color: $black;
|
|
19
|
+
font-size: 16px;
|
|
20
|
+
margin-left: 10px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.block-types-list__section-header-title--dark {
|
|
24
|
+
color: $white;
|
|
25
|
+
}
|
|
@@ -82,6 +82,8 @@ export default function BorderRadiusControl( { onChange, values } ) {
|
|
|
82
82
|
units={ units }
|
|
83
83
|
/>
|
|
84
84
|
<RangeControl
|
|
85
|
+
label={ __( 'Border radius' ) }
|
|
86
|
+
hideLabelFromVision
|
|
85
87
|
className="components-border-radius-control__range-control"
|
|
86
88
|
value={ allValue ?? '' }
|
|
87
89
|
min={ MIN_BORDER_RADIUS_VALUE }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`createCustomColorsHOC provides the
|
|
3
|
+
exports[`createCustomColorsHOC provides the wrapped component with color values and setter functions as props 1`] = `
|
|
4
4
|
<Component
|
|
5
5
|
attributes={
|
|
6
6
|
Object {
|
|
@@ -9,7 +9,7 @@ import { shallow, mount } from 'enzyme';
|
|
|
9
9
|
import { createCustomColorsHOC } from '../with-colors';
|
|
10
10
|
|
|
11
11
|
describe( 'createCustomColorsHOC', () => {
|
|
12
|
-
it( 'provides the
|
|
12
|
+
it( 'provides the wrapped component with color values and setter functions as props', () => {
|
|
13
13
|
const withCustomColors = createCustomColorsHOC( [
|
|
14
14
|
{ name: 'Red', slug: 'red', color: 'ff0000' },
|
|
15
15
|
] );
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { kebabCase, reduce, upperFirst } from 'lodash';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
@@ -78,7 +78,7 @@ function createColorHOC( colorTypes, withColorPalette ) {
|
|
|
78
78
|
( colorObject, colorType ) => {
|
|
79
79
|
return {
|
|
80
80
|
...colorObject,
|
|
81
|
-
...(
|
|
81
|
+
...( typeof colorType === 'string'
|
|
82
82
|
? { [ colorType ]: kebabCase( colorType ) }
|
|
83
83
|
: colorType ),
|
|
84
84
|
};
|