@wordpress/block-editor 12.4.0 → 12.5.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 +2 -0
- package/README.md +5 -0
- package/build/components/block-heading-level-dropdown/heading-level-icon.js +10 -2
- package/build/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -1
- package/build/components/block-heading-level-dropdown/index.native.js +4 -3
- package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build/components/block-lock/toolbar.js +25 -6
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +3 -6
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-parent-selector/index.js +8 -5
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-removal-warning-modal/index.js +18 -25
- package/build/components/block-removal-warning-modal/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +8 -5
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +7 -11
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/dimensions-tool/aspect-ratio-tool.js +99 -0
- package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -0
- package/build/components/dimensions-tool/index.js +207 -0
- package/build/components/dimensions-tool/index.js.map +1 -0
- package/build/components/dimensions-tool/scale-tool.js +111 -0
- package/build/components/dimensions-tool/scale-tool.js.map +1 -0
- package/build/components/dimensions-tool/width-height-tool.js +125 -0
- package/build/components/dimensions-tool/width-height-tool.js.map +1 -0
- package/build/components/global-styles/color-panel.js +1 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +1 -1
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +2 -2
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +34 -2
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build/components/image-editor/use-save-image.js +1 -2
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/image-size-control/index.js +6 -0
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/index.js +19 -1
- package/build/components/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +7 -35
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js +3 -4
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-state.js +9 -3
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +2 -21
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/reusable-block-rename-hint.js +62 -0
- package/build/components/inserter/reusable-block-rename-hint.js.map +1 -0
- package/build/components/inserter/reusable-blocks-tab.js +6 -2
- package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.native.js +2 -2
- package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build/components/inserter/tabs.native.js +1 -1
- package/build/components/inserter/tabs.native.js.map +1 -1
- package/build/components/inserter-draggable-blocks/index.js +9 -1
- package/build/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build/components/link-control/constants.js +1 -1
- package/build/components/link-control/constants.js.map +1 -1
- package/build/components/link-control/index.js +17 -15
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-create-button.js +5 -21
- package/build/components/link-control/search-create-button.js.map +1 -1
- package/build/components/link-control/search-input.js +4 -4
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-item.js +13 -30
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/link-control/search-results.js +2 -2
- package/build/components/link-control/search-results.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +2 -3
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/list-view/appender.js +2 -6
- package/build/components/list-view/appender.js.map +1 -1
- package/build/components/provider/index.js +5 -2
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/use-block-sync.js +21 -0
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/resolution-tool/index.js +55 -0
- package/build/components/resolution-tool/index.js.map +1 -0
- package/build/components/url-input/index.js +4 -2
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +10 -27
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/components/writing-mode-control/index.js +70 -0
- package/build/components/writing-mode-control/index.js.map +1 -0
- package/build/hooks/behaviors.js +25 -20
- package/build/hooks/behaviors.js.map +1 -1
- package/build/hooks/supports.js +7 -1
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.js +2 -1
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/utils.js +4 -2
- package/build/hooks/utils.js.map +1 -1
- package/build/private-apis.js +10 -1
- package/build/private-apis.js.map +1 -1
- package/build/private-apis.native.js +3 -0
- package/build/private-apis.native.js.map +1 -1
- package/build/store/actions.js +195 -1
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +1 -0
- package/build/store/defaults.js.map +1 -1
- package/build/store/index.js +10 -1
- package/build/store/index.js.map +1 -1
- package/build/store/private-actions.js +46 -40
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +3 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +22 -8
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +33 -15
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/heading-level-icon.js +9 -2
- package/build-module/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.native.js +4 -3
- package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build-module/components/block-lock/toolbar.js +25 -7
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +4 -6
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js +7 -5
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-removal-warning-modal/index.js +20 -24
- package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +8 -5
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +8 -11
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/dimensions-tool/aspect-ratio-tool.js +87 -0
- package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -0
- package/build-module/components/dimensions-tool/index.js +195 -0
- package/build-module/components/dimensions-tool/index.js.map +1 -0
- package/build-module/components/dimensions-tool/scale-tool.js +103 -0
- package/build-module/components/dimensions-tool/scale-tool.js.map +1 -0
- package/build-module/components/dimensions-tool/width-height-tool.js +122 -0
- package/build-module/components/dimensions-tool/width-height-tool.js.map +1 -0
- package/build-module/components/global-styles/color-panel.js +1 -1
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +2 -2
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +2 -2
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +33 -2
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build-module/components/image-editor/use-save-image.js +1 -2
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/image-size-control/index.js +5 -0
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/index.js +6 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +7 -33
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js +3 -4
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js +9 -3
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +2 -21
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
- package/build-module/components/inserter/reusable-block-rename-hint.js +48 -0
- package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -0
- package/build-module/components/inserter/reusable-blocks-tab.js +5 -2
- package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.native.js +2 -2
- package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build-module/components/inserter/tabs.native.js +1 -1
- package/build-module/components/inserter/tabs.native.js.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.js +9 -2
- package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build-module/components/link-control/constants.js +1 -1
- package/build-module/components/link-control/constants.js.map +1 -1
- package/build-module/components/link-control/index.js +17 -15
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-create-button.js +7 -20
- package/build-module/components/link-control/search-create-button.js.map +1 -1
- package/build-module/components/link-control/search-input.js +4 -4
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-item.js +14 -28
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/link-control/search-results.js +3 -3
- package/build-module/components/link-control/search-results.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +4 -5
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/list-view/appender.js +2 -6
- package/build-module/components/list-view/appender.js.map +1 -1
- package/build-module/components/provider/index.js +5 -2
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +21 -0
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/resolution-tool/index.js +45 -0
- package/build-module/components/resolution-tool/index.js.map +1 -0
- package/build-module/components/url-input/index.js +4 -2
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +8 -26
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/components/writing-mode-control/index.js +57 -0
- package/build-module/components/writing-mode-control/index.js.map +1 -0
- package/build-module/hooks/behaviors.js +26 -20
- package/build-module/hooks/behaviors.js.map +1 -1
- package/build-module/hooks/supports.js +7 -1
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.js +2 -1
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/utils.js +4 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/private-apis.js +7 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-apis.native.js +2 -0
- package/build-module/private-apis.native.js.map +1 -1
- package/build-module/store/actions.js +191 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +1 -0
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/index.js +10 -1
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/private-actions.js +45 -36
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +2 -2
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +22 -8
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +33 -15
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/content-rtl.css +3 -0
- package/build-style/content.css +3 -0
- package/build-style/style-rtl.css +131 -129
- package/build-style/style.css +131 -129
- package/package.json +32 -31
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +6 -6
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +5 -5
- package/src/components/block-draggable/style.scss +1 -0
- package/src/components/block-heading-level-dropdown/heading-level-icon.js +6 -1
- package/src/components/block-heading-level-dropdown/index.native.js +8 -4
- package/src/components/block-inspector/style.scss +2 -1
- package/src/components/block-lock/toolbar.js +34 -6
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +4 -8
- package/src/components/block-parent-selector/index.js +13 -8
- package/src/components/block-removal-warning-modal/index.js +20 -33
- package/src/components/block-toolbar/index.js +9 -6
- package/src/components/block-tools/block-contextual-toolbar.js +5 -11
- package/src/components/block-tools/style.scss +73 -26
- package/src/components/default-block-appender/content.scss +11 -0
- package/src/components/dimensions-tool/aspect-ratio-tool.js +124 -0
- package/src/components/dimensions-tool/index.js +212 -0
- package/src/components/dimensions-tool/scale-tool.js +124 -0
- package/src/components/dimensions-tool/stories/aspect-ratio-tool.js +52 -0
- package/src/components/dimensions-tool/stories/index.js +54 -0
- package/src/components/dimensions-tool/stories/scale-tool.js +48 -0
- package/src/components/dimensions-tool/stories/width-height-tool.js +54 -0
- package/src/components/dimensions-tool/test/index.js +641 -0
- package/src/components/dimensions-tool/width-height-tool.js +113 -0
- package/src/components/font-family/README.md +71 -0
- package/src/components/global-styles/color-panel.js +1 -1
- package/src/components/global-styles/filters-panel.js +2 -2
- package/src/components/global-styles/hooks.js +2 -0
- package/src/components/global-styles/typography-panel.js +40 -0
- package/src/components/image-editor/aspect-ratio-dropdown.js +1 -1
- package/src/components/image-editor/use-save-image.js +0 -1
- package/src/components/image-size-control/index.js +6 -0
- package/src/components/index.js +6 -0
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +8 -2
- package/src/components/inserter/block-patterns-tab.js +8 -56
- package/src/components/inserter/hooks/use-block-types-state.js +3 -4
- package/src/components/inserter/hooks/use-patterns-state.js +35 -19
- package/src/components/inserter/media-tab/hooks.js +2 -22
- package/src/components/inserter/reusable-block-rename-hint.js +52 -0
- package/src/components/inserter/reusable-blocks-tab.js +5 -1
- package/src/components/inserter/reusable-blocks-tab.native.js +2 -2
- package/src/components/inserter/style.scss +28 -0
- package/src/components/inserter/tabs.native.js +5 -1
- package/src/components/inserter-draggable-blocks/index.js +13 -2
- package/src/components/link-control/constants.js +1 -1
- package/src/components/link-control/index.js +32 -28
- package/src/components/link-control/search-create-button.js +8 -26
- package/src/components/link-control/search-input.js +4 -3
- package/src/components/link-control/search-item.js +21 -43
- package/src/components/link-control/search-results.js +48 -46
- package/src/components/link-control/settings-drawer.js +6 -5
- package/src/components/link-control/style.scss +51 -123
- package/src/components/link-control/test/index.js +135 -123
- package/src/components/list-view/appender.js +5 -6
- package/src/components/list-view/style.scss +1 -2
- package/src/components/media-replace-flow/test/index.js +1 -1
- package/src/components/panel-color-settings/README.md +98 -0
- package/src/components/provider/index.js +9 -2
- package/src/components/provider/test/use-block-sync.js +21 -6
- package/src/components/provider/use-block-sync.js +19 -0
- package/src/components/recursion-provider/README.md +101 -0
- package/src/components/resolution-tool/index.js +56 -0
- package/src/components/resolution-tool/stories/index.js +48 -0
- package/src/components/url-input/index.js +2 -0
- package/src/components/writing-flow/use-tab-nav.js +10 -33
- package/src/components/writing-mode-control/index.js +68 -0
- package/src/components/writing-mode-control/style.scss +18 -0
- package/src/hooks/behaviors.js +25 -16
- package/src/hooks/supports.js +7 -0
- package/src/hooks/typography.js +2 -0
- package/src/hooks/utils.js +3 -0
- package/src/private-apis.js +6 -0
- package/src/private-apis.native.js +2 -0
- package/src/store/actions.js +194 -1
- package/src/store/defaults.js +1 -0
- package/src/store/index.js +10 -0
- package/src/store/private-actions.js +39 -39
- package/src/store/private-selectors.js +2 -2
- package/src/store/reducer.js +22 -8
- package/src/store/selectors.js +54 -20
- package/src/store/test/actions.js +111 -0
- package/src/store/test/private-actions.js +56 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { Button } from '@wordpress/components';
|
|
5
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
6
|
+
import { focus } from '@wordpress/dom';
|
|
7
|
+
import { useRef } from '@wordpress/element';
|
|
8
|
+
import { __ } from '@wordpress/i18n';
|
|
9
|
+
import { close } from '@wordpress/icons';
|
|
10
|
+
import { store as preferencesStore } from '@wordpress/preferences';
|
|
11
|
+
|
|
12
|
+
const PREFERENCE_NAME = 'isResuableBlocksrRenameHintVisible';
|
|
13
|
+
|
|
14
|
+
export default function ReusableBlocksRenameHint() {
|
|
15
|
+
const isReusableBlocksRenameHint = useSelect(
|
|
16
|
+
( select ) =>
|
|
17
|
+
select( preferencesStore ).get( 'core', PREFERENCE_NAME ) ?? true,
|
|
18
|
+
[]
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const ref = useRef();
|
|
22
|
+
|
|
23
|
+
const { set: setPreference } = useDispatch( preferencesStore );
|
|
24
|
+
if ( ! isReusableBlocksRenameHint ) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<div ref={ ref } className="reusable-blocks-menu-items__rename-hint">
|
|
30
|
+
<div className="reusable-blocks-menu-items__rename-hint-content">
|
|
31
|
+
{ __(
|
|
32
|
+
'Reusable blocks are now called patterns. A synced pattern will behave in exactly the same way as a reusable block.'
|
|
33
|
+
) }
|
|
34
|
+
</div>
|
|
35
|
+
<Button
|
|
36
|
+
className="reusable-blocks-menu-items__rename-hint-dismiss"
|
|
37
|
+
icon={ close }
|
|
38
|
+
iconSize="16"
|
|
39
|
+
label={ __( 'Dismiss hint' ) }
|
|
40
|
+
onClick={ () => {
|
|
41
|
+
// Retain focus when dismissing the element.
|
|
42
|
+
const previousElement = focus.tabbable.findPrevious(
|
|
43
|
+
ref.current
|
|
44
|
+
);
|
|
45
|
+
previousElement?.focus();
|
|
46
|
+
setPreference( 'core', PREFERENCE_NAME, false );
|
|
47
|
+
} }
|
|
48
|
+
showTooltip={ false }
|
|
49
|
+
/>
|
|
50
|
+
</div>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -13,6 +13,7 @@ import BlockTypesList from '../block-types-list';
|
|
|
13
13
|
import InserterPanel from './panel';
|
|
14
14
|
import InserterNoResults from './no-results';
|
|
15
15
|
import useBlockTypesState from './hooks/use-block-types-state';
|
|
16
|
+
import ReusableBlocksRenameHint from './reusable-block-rename-hint';
|
|
16
17
|
|
|
17
18
|
function ReusableBlocksList( { onHover, onInsert, rootClientId } ) {
|
|
18
19
|
const [ items, , , onSelectItem ] = useBlockTypesState(
|
|
@@ -54,6 +55,9 @@ function ReusableBlocksList( { onHover, onInsert, rootClientId } ) {
|
|
|
54
55
|
export function ReusableBlocksTab( { rootClientId, onInsert, onHover } ) {
|
|
55
56
|
return (
|
|
56
57
|
<>
|
|
58
|
+
<div className="block-editor-inserter__hint">
|
|
59
|
+
<ReusableBlocksRenameHint />
|
|
60
|
+
</div>
|
|
57
61
|
<ReusableBlocksList
|
|
58
62
|
onHover={ onHover }
|
|
59
63
|
onInsert={ onInsert }
|
|
@@ -67,7 +71,7 @@ export function ReusableBlocksTab( { rootClientId, onInsert, onHover } ) {
|
|
|
67
71
|
post_type: 'wp_block',
|
|
68
72
|
} ) }
|
|
69
73
|
>
|
|
70
|
-
{ __( 'Manage
|
|
74
|
+
{ __( 'Manage my patterns' ) }
|
|
71
75
|
</Button>
|
|
72
76
|
</div>
|
|
73
77
|
</>
|
|
@@ -28,11 +28,11 @@ function ReusableBlocksTab( { onSelect, rootClientId, listProps } ) {
|
|
|
28
28
|
|
|
29
29
|
return (
|
|
30
30
|
<BlockTypesList
|
|
31
|
-
name="
|
|
31
|
+
name="SyncedPatterns"
|
|
32
32
|
sections={ sections }
|
|
33
33
|
onSelect={ onSelect }
|
|
34
34
|
listProps={ listProps }
|
|
35
|
-
label={ __( '
|
|
35
|
+
label={ __( 'Synced patterns' ) }
|
|
36
36
|
/>
|
|
37
37
|
);
|
|
38
38
|
}
|
|
@@ -711,3 +711,31 @@ $block-inserter-tabs-height: 44px;
|
|
|
711
711
|
margin: 0;
|
|
712
712
|
}
|
|
713
713
|
}
|
|
714
|
+
|
|
715
|
+
.block-editor-inserter__hint {
|
|
716
|
+
margin: $grid-unit-20 $grid-unit-20 0;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
.reusable-blocks-menu-items__rename-hint {
|
|
720
|
+
align-items: top;
|
|
721
|
+
background: $gray-100;
|
|
722
|
+
border-radius: $radius-block-ui;
|
|
723
|
+
color: $gray-900;
|
|
724
|
+
display: flex;
|
|
725
|
+
flex-direction: row;
|
|
726
|
+
max-width: 380px;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
.reusable-blocks-menu-items__rename-hint-content {
|
|
730
|
+
margin: $grid-unit-15 0 $grid-unit-15 $grid-unit-15;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
.reusable-blocks-menu-items__rename-hint-dismiss {
|
|
734
|
+
// The dismiss button has a lot of empty space through its padding.
|
|
735
|
+
// Apply margin to visually align the icon with the top of the text to its left.
|
|
736
|
+
margin: $grid-unit-05 $grid-unit-05 $grid-unit-05 0;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
.components-menu-group .reusable-blocks-menu-items__rename-hint {
|
|
740
|
+
margin: 0;
|
|
741
|
+
}
|
|
@@ -142,7 +142,11 @@ InserterTabs.Control = TabsControl;
|
|
|
142
142
|
|
|
143
143
|
InserterTabs.getTabs = () => [
|
|
144
144
|
{ name: 'blocks', title: __( 'Blocks' ), component: BlockTypesTab },
|
|
145
|
-
{
|
|
145
|
+
{
|
|
146
|
+
name: 'reusable',
|
|
147
|
+
title: __( 'Synced patterns' ),
|
|
148
|
+
component: ReusableBlocksTab,
|
|
149
|
+
},
|
|
146
150
|
];
|
|
147
151
|
|
|
148
152
|
export default InserterTabs;
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { Draggable } from '@wordpress/components';
|
|
5
|
-
import { serialize } from '@wordpress/blocks';
|
|
5
|
+
import { serialize, store as blocksStore } from '@wordpress/blocks';
|
|
6
|
+
import { useSelect } from '@wordpress/data';
|
|
6
7
|
/**
|
|
7
8
|
* Internal dependencies
|
|
8
9
|
*/
|
|
@@ -20,6 +21,16 @@ const InserterDraggableBlocks = ( {
|
|
|
20
21
|
blocks,
|
|
21
22
|
};
|
|
22
23
|
|
|
24
|
+
const blockTypeIcon = useSelect(
|
|
25
|
+
( select ) => {
|
|
26
|
+
const { getBlockType } = select( blocksStore );
|
|
27
|
+
return (
|
|
28
|
+
blocks.length === 1 && getBlockType( blocks[ 0 ].name )?.icon
|
|
29
|
+
);
|
|
30
|
+
},
|
|
31
|
+
[ blocks ]
|
|
32
|
+
);
|
|
33
|
+
|
|
23
34
|
return (
|
|
24
35
|
<Draggable
|
|
25
36
|
__experimentalTransferDataType="wp-blocks"
|
|
@@ -30,7 +41,7 @@ const InserterDraggableBlocks = ( {
|
|
|
30
41
|
__experimentalDragComponent={
|
|
31
42
|
<BlockDraggableChip
|
|
32
43
|
count={ blocks.length }
|
|
33
|
-
icon={ icon }
|
|
44
|
+
icon={ icon || ( ! isPattern && blockTypeIcon ) }
|
|
34
45
|
isPattern={ isPattern }
|
|
35
46
|
/>
|
|
36
47
|
}
|
|
@@ -8,7 +8,7 @@ import { __ } from '@wordpress/i18n';
|
|
|
8
8
|
// order to handle it as a unique case.
|
|
9
9
|
export const CREATE_TYPE = '__CREATE__';
|
|
10
10
|
export const TEL_TYPE = 'tel';
|
|
11
|
-
export const URL_TYPE = '
|
|
11
|
+
export const URL_TYPE = 'link';
|
|
12
12
|
export const MAILTO_TYPE = 'mailto';
|
|
13
13
|
export const INTERNAL_TYPE = 'internal';
|
|
14
14
|
|
|
@@ -292,7 +292,8 @@ function LinkControl( {
|
|
|
292
292
|
const shownUnlinkControl =
|
|
293
293
|
onRemove && value && ! isEditingLink && ! isCreatingPage;
|
|
294
294
|
|
|
295
|
-
const showSettings = !! settings?.length;
|
|
295
|
+
const showSettings = !! settings?.length && isEditingLink && hasLinkValue;
|
|
296
|
+
const showActions = isEditingLink && hasLinkValue;
|
|
296
297
|
|
|
297
298
|
// Only show text control once a URL value has been committed
|
|
298
299
|
// and it isn't just empty whitespace.
|
|
@@ -322,6 +323,18 @@ function LinkControl( {
|
|
|
322
323
|
'has-text-control': showTextControl,
|
|
323
324
|
} ) }
|
|
324
325
|
>
|
|
326
|
+
{ showTextControl && (
|
|
327
|
+
<TextControl
|
|
328
|
+
__nextHasNoMarginBottom
|
|
329
|
+
ref={ textInputRef }
|
|
330
|
+
className="block-editor-link-control__field block-editor-link-control__text-content"
|
|
331
|
+
label={ __( 'Text' ) }
|
|
332
|
+
value={ internalControlValue?.title }
|
|
333
|
+
onChange={ setInternalTextInputValue }
|
|
334
|
+
onKeyDown={ handleSubmitWithEnter }
|
|
335
|
+
size="__unstable-large"
|
|
336
|
+
/>
|
|
337
|
+
) }
|
|
325
338
|
<LinkControlSearchInput
|
|
326
339
|
currentLink={ value }
|
|
327
340
|
className="block-editor-link-control__field block-editor-link-control__search-input"
|
|
@@ -339,19 +352,8 @@ function LinkControl( {
|
|
|
339
352
|
createSuggestionButtonText={
|
|
340
353
|
createSuggestionButtonText
|
|
341
354
|
}
|
|
342
|
-
|
|
355
|
+
hideLabelFromVision={ ! showTextControl }
|
|
343
356
|
/>
|
|
344
|
-
{ showTextControl && (
|
|
345
|
-
<TextControl
|
|
346
|
-
__nextHasNoMarginBottom
|
|
347
|
-
ref={ textInputRef }
|
|
348
|
-
className="block-editor-link-control__field block-editor-link-control__text-content"
|
|
349
|
-
label={ __( 'Text' ) }
|
|
350
|
-
value={ internalControlValue?.title }
|
|
351
|
-
onChange={ setInternalTextInputValue }
|
|
352
|
-
onKeyDown={ handleSubmitWithEnter }
|
|
353
|
-
/>
|
|
354
|
-
) }
|
|
355
357
|
</div>
|
|
356
358
|
{ errorMessage && (
|
|
357
359
|
<Notice
|
|
@@ -376,9 +378,9 @@ function LinkControl( {
|
|
|
376
378
|
/>
|
|
377
379
|
) }
|
|
378
380
|
|
|
379
|
-
{
|
|
381
|
+
{ showSettings && (
|
|
380
382
|
<div className="block-editor-link-control__tools">
|
|
381
|
-
{
|
|
383
|
+
{ ! currentInputIsEmpty && (
|
|
382
384
|
<LinkControlSettingsDrawer
|
|
383
385
|
settingsOpen={ settingsOpen }
|
|
384
386
|
setSettingsOpen={ setSettingsOpen }
|
|
@@ -392,20 +394,22 @@ function LinkControl( {
|
|
|
392
394
|
/>
|
|
393
395
|
</LinkControlSettingsDrawer>
|
|
394
396
|
) }
|
|
397
|
+
</div>
|
|
398
|
+
) }
|
|
395
399
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
</
|
|
400
|
+
{ showActions && (
|
|
401
|
+
<div className="block-editor-link-control__search-actions">
|
|
402
|
+
<Button
|
|
403
|
+
variant="primary"
|
|
404
|
+
onClick={ isDisabled ? noop : handleSubmit }
|
|
405
|
+
className="block-editor-link-control__search-submit"
|
|
406
|
+
aria-disabled={ isDisabled }
|
|
407
|
+
>
|
|
408
|
+
{ __( 'Save' ) }
|
|
409
|
+
</Button>
|
|
410
|
+
<Button variant="tertiary" onClick={ handleCancel }>
|
|
411
|
+
{ __( 'Cancel' ) }
|
|
412
|
+
</Button>
|
|
409
413
|
</div>
|
|
410
414
|
) }
|
|
411
415
|
|
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import classnames from 'classnames';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
9
4
|
import { __, sprintf } from '@wordpress/i18n';
|
|
10
|
-
import {
|
|
5
|
+
import { MenuItem } from '@wordpress/components';
|
|
11
6
|
import { createInterpolateElement } from '@wordpress/element';
|
|
12
|
-
import {
|
|
7
|
+
import { plus } from '@wordpress/icons';
|
|
13
8
|
|
|
14
9
|
export const LinkControlSearchCreate = ( {
|
|
15
10
|
searchTerm,
|
|
16
11
|
onClick,
|
|
17
12
|
itemProps,
|
|
18
|
-
isSelected,
|
|
19
13
|
buttonText,
|
|
20
14
|
} ) => {
|
|
21
15
|
if ( ! searchTerm ) {
|
|
@@ -40,27 +34,15 @@ export const LinkControlSearchCreate = ( {
|
|
|
40
34
|
}
|
|
41
35
|
|
|
42
36
|
return (
|
|
43
|
-
<
|
|
37
|
+
<MenuItem
|
|
44
38
|
{ ...itemProps }
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
'is-selected': isSelected,
|
|
49
|
-
}
|
|
50
|
-
) }
|
|
39
|
+
iconPosition="left"
|
|
40
|
+
icon={ plus }
|
|
41
|
+
className="block-editor-link-control__search-item"
|
|
51
42
|
onClick={ onClick }
|
|
52
43
|
>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
icon={ plus }
|
|
56
|
-
/>
|
|
57
|
-
|
|
58
|
-
<span className="block-editor-link-control__search-item-header">
|
|
59
|
-
<span className="block-editor-link-control__search-item-title">
|
|
60
|
-
{ text }
|
|
61
|
-
</span>
|
|
62
|
-
</span>
|
|
63
|
-
</Button>
|
|
44
|
+
{ text }
|
|
45
|
+
</MenuItem>
|
|
64
46
|
);
|
|
65
47
|
};
|
|
66
48
|
|
|
@@ -46,7 +46,7 @@ const LinkControlSearchInput = forwardRef(
|
|
|
46
46
|
suggestionsQuery = {},
|
|
47
47
|
withURLSuggestion = true,
|
|
48
48
|
createSuggestionButtonText,
|
|
49
|
-
|
|
49
|
+
hideLabelFromVision = false,
|
|
50
50
|
},
|
|
51
51
|
ref
|
|
52
52
|
) => {
|
|
@@ -120,7 +120,7 @@ const LinkControlSearchInput = forwardRef(
|
|
|
120
120
|
};
|
|
121
121
|
|
|
122
122
|
const inputClasses = classnames( className, {
|
|
123
|
-
'has-no-label': !
|
|
123
|
+
// 'has-no-label': ! hideLabelFromVision,
|
|
124
124
|
} );
|
|
125
125
|
|
|
126
126
|
return (
|
|
@@ -128,7 +128,8 @@ const LinkControlSearchInput = forwardRef(
|
|
|
128
128
|
<URLInput
|
|
129
129
|
disableSuggestions={ currentLink?.url === value }
|
|
130
130
|
__nextHasNoMarginBottom
|
|
131
|
-
label={
|
|
131
|
+
label={ __( 'Link' ) }
|
|
132
|
+
hideLabelFromVision={ hideLabelFromVision }
|
|
132
133
|
className={ inputClasses }
|
|
133
134
|
value={ value }
|
|
134
135
|
onChange={ onInputChange }
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import classnames from 'classnames';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
9
|
-
import { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';
|
|
10
4
|
import { __ } from '@wordpress/i18n';
|
|
11
|
-
import {
|
|
5
|
+
import { MenuItem, TextHighlight } from '@wordpress/components';
|
|
12
6
|
import {
|
|
13
7
|
Icon,
|
|
14
8
|
globe,
|
|
@@ -19,6 +13,7 @@ import {
|
|
|
19
13
|
file,
|
|
20
14
|
} from '@wordpress/icons';
|
|
21
15
|
import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
|
|
16
|
+
import { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';
|
|
22
17
|
|
|
23
18
|
const ICONS_MAP = {
|
|
24
19
|
post: postList,
|
|
@@ -52,50 +47,33 @@ function SearchItemIcon( { isURL, suggestion } ) {
|
|
|
52
47
|
export const LinkControlSearchItem = ( {
|
|
53
48
|
itemProps,
|
|
54
49
|
suggestion,
|
|
55
|
-
|
|
50
|
+
searchTerm,
|
|
56
51
|
onClick,
|
|
57
52
|
isURL = false,
|
|
58
|
-
searchTerm = '',
|
|
59
53
|
shouldShowType = false,
|
|
60
54
|
} ) => {
|
|
55
|
+
const info = isURL
|
|
56
|
+
? __( 'Press ENTER to add this link' )
|
|
57
|
+
: filterURLForDisplay( safeDecodeURI( suggestion?.url ) );
|
|
58
|
+
|
|
61
59
|
return (
|
|
62
|
-
<
|
|
60
|
+
<MenuItem
|
|
63
61
|
{ ...itemProps }
|
|
62
|
+
info={ info }
|
|
63
|
+
iconPosition="left"
|
|
64
|
+
icon={
|
|
65
|
+
<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />
|
|
66
|
+
}
|
|
64
67
|
onClick={ onClick }
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
'is-url': isURL,
|
|
68
|
-
'is-entity': ! isURL,
|
|
69
|
-
} ) }
|
|
68
|
+
shortcut={ shouldShowType && getVisualTypeName( suggestion ) }
|
|
69
|
+
className="block-editor-link-control__search-item"
|
|
70
70
|
>
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
text={ stripHTML( suggestion.title ) }
|
|
78
|
-
highlight={ searchTerm }
|
|
79
|
-
/>
|
|
80
|
-
</span>
|
|
81
|
-
<span
|
|
82
|
-
aria-hidden={ ! isURL }
|
|
83
|
-
className="block-editor-link-control__search-item-info"
|
|
84
|
-
>
|
|
85
|
-
{ ! isURL &&
|
|
86
|
-
( filterURLForDisplay(
|
|
87
|
-
safeDecodeURI( suggestion.url )
|
|
88
|
-
) ||
|
|
89
|
-
'' ) }
|
|
90
|
-
{ isURL && __( 'Press ENTER to add this link' ) }
|
|
91
|
-
</span>
|
|
92
|
-
</span>
|
|
93
|
-
{ shouldShowType && suggestion.type && (
|
|
94
|
-
<span className="block-editor-link-control__search-item-type">
|
|
95
|
-
{ getVisualTypeName( suggestion ) }
|
|
96
|
-
</span>
|
|
97
|
-
) }
|
|
98
|
-
</Button>
|
|
71
|
+
<TextHighlight
|
|
72
|
+
// The component expects a plain text string.
|
|
73
|
+
text={ stripHTML( suggestion.title ) }
|
|
74
|
+
highlight={ searchTerm }
|
|
75
|
+
/>
|
|
76
|
+
</MenuItem>
|
|
99
77
|
);
|
|
100
78
|
};
|
|
101
79
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { __, sprintf } from '@wordpress/i18n';
|
|
5
|
-
import { VisuallyHidden } from '@wordpress/components';
|
|
5
|
+
import { VisuallyHidden, MenuGroup } from '@wordpress/components';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* External dependencies
|
|
@@ -72,59 +72,61 @@ export default function LinkControlSearchResults( {
|
|
|
72
72
|
className={ resultsListClasses }
|
|
73
73
|
aria-labelledby={ searchResultsLabelId }
|
|
74
74
|
>
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
<MenuGroup>
|
|
76
|
+
{ suggestions.map( ( suggestion, index ) => {
|
|
77
|
+
if (
|
|
78
|
+
shouldShowCreateSuggestion &&
|
|
79
|
+
CREATE_TYPE === suggestion.type
|
|
80
|
+
) {
|
|
81
|
+
return (
|
|
82
|
+
<LinkControlSearchCreate
|
|
83
|
+
searchTerm={ currentInputValue }
|
|
84
|
+
buttonText={ createSuggestionButtonText }
|
|
85
|
+
onClick={ () =>
|
|
86
|
+
handleSuggestionClick( suggestion )
|
|
87
|
+
}
|
|
88
|
+
// Intentionally only using `type` here as
|
|
89
|
+
// the constant is enough to uniquely
|
|
90
|
+
// identify the single "CREATE" suggestion.
|
|
91
|
+
key={ suggestion.type }
|
|
92
|
+
itemProps={ buildSuggestionItemProps(
|
|
93
|
+
suggestion,
|
|
94
|
+
index
|
|
95
|
+
) }
|
|
96
|
+
isSelected={ index === selectedSuggestion }
|
|
97
|
+
/>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// If we're not handling "Create" suggestions above then
|
|
102
|
+
// we don't want them in the main results so exit early.
|
|
103
|
+
if ( CREATE_TYPE === suggestion.type ) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
|
|
80
107
|
return (
|
|
81
|
-
<
|
|
82
|
-
|
|
83
|
-
buttonText={ createSuggestionButtonText }
|
|
84
|
-
onClick={ () =>
|
|
85
|
-
handleSuggestionClick( suggestion )
|
|
86
|
-
}
|
|
87
|
-
// Intentionally only using `type` here as
|
|
88
|
-
// the constant is enough to uniquely
|
|
89
|
-
// identify the single "CREATE" suggestion.
|
|
90
|
-
key={ suggestion.type }
|
|
108
|
+
<LinkControlSearchItem
|
|
109
|
+
key={ `${ suggestion.id }-${ suggestion.type }` }
|
|
91
110
|
itemProps={ buildSuggestionItemProps(
|
|
92
111
|
suggestion,
|
|
93
112
|
index
|
|
94
113
|
) }
|
|
114
|
+
suggestion={ suggestion }
|
|
115
|
+
index={ index }
|
|
116
|
+
onClick={ () => {
|
|
117
|
+
handleSuggestionClick( suggestion );
|
|
118
|
+
} }
|
|
95
119
|
isSelected={ index === selectedSuggestion }
|
|
120
|
+
isURL={ LINK_ENTRY_TYPES.includes(
|
|
121
|
+
suggestion.type
|
|
122
|
+
) }
|
|
123
|
+
searchTerm={ currentInputValue }
|
|
124
|
+
shouldShowType={ shouldShowSuggestionsTypes }
|
|
125
|
+
isFrontPage={ suggestion?.isFrontPage }
|
|
96
126
|
/>
|
|
97
127
|
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// If we're not handling "Create" suggestions above then
|
|
101
|
-
// we don't want them in the main results so exit early.
|
|
102
|
-
if ( CREATE_TYPE === suggestion.type ) {
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return (
|
|
107
|
-
<LinkControlSearchItem
|
|
108
|
-
key={ `${ suggestion.id }-${ suggestion.type }` }
|
|
109
|
-
itemProps={ buildSuggestionItemProps(
|
|
110
|
-
suggestion,
|
|
111
|
-
index
|
|
112
|
-
) }
|
|
113
|
-
suggestion={ suggestion }
|
|
114
|
-
index={ index }
|
|
115
|
-
onClick={ () => {
|
|
116
|
-
handleSuggestionClick( suggestion );
|
|
117
|
-
} }
|
|
118
|
-
isSelected={ index === selectedSuggestion }
|
|
119
|
-
isURL={ LINK_ENTRY_TYPES.includes(
|
|
120
|
-
suggestion.type
|
|
121
|
-
) }
|
|
122
|
-
searchTerm={ currentInputValue }
|
|
123
|
-
shouldShowType={ shouldShowSuggestionsTypes }
|
|
124
|
-
isFrontPage={ suggestion?.isFrontPage }
|
|
125
|
-
/>
|
|
126
|
-
);
|
|
127
|
-
} ) }
|
|
128
|
+
} ) }
|
|
129
|
+
</MenuGroup>
|
|
128
130
|
</div>
|
|
129
131
|
</div>
|
|
130
132
|
);
|
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
__unstableMotion as motion,
|
|
7
7
|
__unstableAnimatePresence as AnimatePresence,
|
|
8
8
|
} from '@wordpress/components';
|
|
9
|
-
import {
|
|
9
|
+
import { chevronLeftSmall, chevronRightSmall } from '@wordpress/icons';
|
|
10
10
|
import { useReducedMotion, useInstanceId } from '@wordpress/compose';
|
|
11
|
-
import {
|
|
11
|
+
import { _x, isRTL } from '@wordpress/i18n';
|
|
12
12
|
import { Fragment } from '@wordpress/element';
|
|
13
13
|
|
|
14
14
|
function LinkSettingsDrawer( { children, settingsOpen, setSettingsOpen } ) {
|
|
@@ -28,10 +28,11 @@ function LinkSettingsDrawer( { children, settingsOpen, setSettingsOpen } ) {
|
|
|
28
28
|
className="block-editor-link-control__drawer-toggle"
|
|
29
29
|
aria-expanded={ settingsOpen }
|
|
30
30
|
onClick={ () => setSettingsOpen( ! settingsOpen ) }
|
|
31
|
-
icon={
|
|
32
|
-
label={ __( 'Link Settings' ) }
|
|
31
|
+
icon={ isRTL() ? chevronLeftSmall : chevronRightSmall }
|
|
33
32
|
aria-controls={ settingsDrawerId }
|
|
34
|
-
|
|
33
|
+
>
|
|
34
|
+
{ _x( 'Advanced', 'Additional link settings' ) }
|
|
35
|
+
</Button>
|
|
35
36
|
<MaybeAnimatePresence>
|
|
36
37
|
{ settingsOpen && (
|
|
37
38
|
<MaybeMotionDiv
|