@wordpress/edit-site 3.0.18-next.33ec3857e2.0 → 3.0.21
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/build/components/block-editor/index.js +1 -1
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/block-editor/resizable-editor.js +37 -8
- package/build/components/block-editor/resizable-editor.js.map +1 -1
- package/build/components/global-styles/border-panel.js +22 -81
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/gradients-palette-panel.js +7 -3
- package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
- package/build/components/global-styles/screen-background-color.js +10 -9
- package/build/components/global-styles/screen-background-color.js.map +1 -1
- package/build/components/global-styles/screen-colors.js +1 -1
- package/build/components/global-styles/screen-colors.js.map +1 -1
- package/build/components/global-styles/screen-link-color.js +10 -6
- package/build/components/global-styles/screen-link-color.js.map +1 -1
- package/build/components/global-styles/screen-text-color.js +10 -6
- package/build/components/global-styles/screen-text-color.js.map +1 -1
- package/build/components/global-styles/ui.js +14 -27
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/list/actions/index.js +0 -1
- package/build/components/list/actions/index.js.map +1 -1
- package/build/components/list/added-by.js +9 -3
- package/build/components/list/added-by.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-panel/constants.js +1 -11
- package/build/components/navigation-sidebar/navigation-panel/constants.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-toggle/index.js +10 -1
- package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build/components/sidebar/default-sidebar.js +2 -4
- package/build/components/sidebar/default-sidebar.js.map +1 -1
- package/build/components/sidebar/global-styles-sidebar.js +0 -1
- package/build/components/sidebar/global-styles-sidebar.js.map +1 -1
- package/build/plugins/site-export.js +1 -1
- package/build/plugins/site-export.js.map +1 -1
- package/build-module/components/block-editor/index.js +2 -2
- package/build-module/components/block-editor/index.js.map +1 -1
- package/build-module/components/block-editor/resizable-editor.js +37 -8
- package/build-module/components/block-editor/resizable-editor.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +23 -82
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/gradients-palette-panel.js +5 -4
- package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
- package/build-module/components/global-styles/screen-background-color.js +11 -9
- package/build-module/components/global-styles/screen-background-color.js.map +1 -1
- package/build-module/components/global-styles/screen-colors.js +1 -1
- package/build-module/components/global-styles/screen-colors.js.map +1 -1
- package/build-module/components/global-styles/screen-link-color.js +11 -7
- package/build-module/components/global-styles/screen-link-color.js.map +1 -1
- package/build-module/components/global-styles/screen-text-color.js +11 -7
- package/build-module/components/global-styles/screen-text-color.js.map +1 -1
- package/build-module/components/global-styles/ui.js +14 -26
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/list/actions/index.js +0 -1
- package/build-module/components/list/actions/index.js.map +1 -1
- package/build-module/components/list/added-by.js +10 -4
- package/build-module/components/list/added-by.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-panel/constants.js +0 -5
- package/build-module/components/navigation-sidebar/navigation-panel/constants.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js +11 -1
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build-module/components/sidebar/default-sidebar.js +2 -4
- package/build-module/components/sidebar/default-sidebar.js.map +1 -1
- package/build-module/components/sidebar/global-styles-sidebar.js +0 -1
- package/build-module/components/sidebar/global-styles-sidebar.js.map +1 -1
- package/build-module/plugins/site-export.js +2 -2
- package/build-module/plugins/site-export.js.map +1 -1
- package/build-style/style-rtl.css +62 -32
- package/build-style/style.css +62 -32
- package/package.json +28 -28
- package/src/components/block-editor/index.js +2 -2
- package/src/components/block-editor/resizable-editor.js +52 -13
- package/src/components/block-editor/style.scss +18 -10
- package/src/components/global-styles/border-panel.js +42 -106
- package/src/components/global-styles/gradients-palette-panel.js +4 -4
- package/src/components/global-styles/screen-background-color.js +10 -7
- package/src/components/global-styles/screen-colors.js +1 -1
- package/src/components/global-styles/screen-link-color.js +14 -6
- package/src/components/global-styles/screen-text-color.js +14 -6
- package/src/components/global-styles/style.scss +19 -1
- package/src/components/global-styles/ui.js +25 -50
- package/src/components/header/document-actions/style.scss +9 -1
- package/src/components/header/style.scss +1 -2
- package/src/components/list/actions/index.js +0 -1
- package/src/components/list/added-by.js +25 -9
- package/src/components/navigation-sidebar/navigation-panel/constants.js +0 -15
- package/src/components/navigation-sidebar/navigation-toggle/index.js +12 -0
- package/src/components/navigation-sidebar/navigation-toggle/style.scss +8 -4
- package/src/components/sidebar/default-sidebar.js +0 -2
- package/src/components/sidebar/global-styles-sidebar.js +0 -1
- package/src/components/sidebar/style.scss +14 -21
- package/src/plugins/site-export.js +2 -2
- package/build/components/navigation-sidebar/navigation-panel/content-navigation-item.js +0 -101
- package/build/components/navigation-sidebar/navigation-panel/content-navigation-item.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/menus/content-categories.js +0 -82
- package/build/components/navigation-sidebar/navigation-panel/menus/content-categories.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/menus/content-pages.js +0 -82
- package/build/components/navigation-sidebar/navigation-panel/menus/content-pages.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/menus/content-posts.js +0 -107
- package/build/components/navigation-sidebar/navigation-panel/menus/content-posts.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/menus/index.js +0 -57
- package/build/components/navigation-sidebar/navigation-panel/menus/index.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/menus/template-parts-sub.js +0 -48
- package/build/components/navigation-sidebar/navigation-panel/menus/template-parts-sub.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/menus/template-parts.js +0 -100
- package/build/components/navigation-sidebar/navigation-panel/menus/template-parts.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/menus/templates-sub.js +0 -62
- package/build/components/navigation-sidebar/navigation-panel/menus/templates-sub.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/menus/templates.js +0 -143
- package/build/components/navigation-sidebar/navigation-panel/menus/templates.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/navigation-entity-items.js +0 -76
- package/build/components/navigation-sidebar/navigation-panel/navigation-entity-items.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/new-template-dropdown.js +0 -125
- package/build/components/navigation-sidebar/navigation-panel/new-template-dropdown.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/search-results.js +0 -132
- package/build/components/navigation-sidebar/navigation-panel/search-results.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/template-navigation-item.js +0 -86
- package/build/components/navigation-sidebar/navigation-panel/template-navigation-item.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/template-preview.js +0 -46
- package/build/components/navigation-sidebar/navigation-panel/template-preview.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/use-debounced-search.js +0 -47
- package/build/components/navigation-sidebar/navigation-panel/use-debounced-search.js.map +0 -1
- package/build/components/navigation-sidebar/navigation-panel/utils.js +0 -21
- package/build/components/navigation-sidebar/navigation-panel/utils.js.map +0 -1
- package/build/utils/get-closest-available-template.js +0 -48
- package/build/utils/get-closest-available-template.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/content-navigation-item.js +0 -86
- package/build-module/components/navigation-sidebar/navigation-panel/content-navigation-item.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/menus/content-categories.js +0 -65
- package/build-module/components/navigation-sidebar/navigation-panel/menus/content-categories.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/menus/content-pages.js +0 -65
- package/build-module/components/navigation-sidebar/navigation-panel/menus/content-pages.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/menus/content-posts.js +0 -90
- package/build-module/components/navigation-sidebar/navigation-panel/menus/content-posts.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/menus/index.js +0 -40
- package/build-module/components/navigation-sidebar/navigation-panel/menus/index.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/menus/template-parts-sub.js +0 -35
- package/build-module/components/navigation-sidebar/navigation-panel/menus/template-parts-sub.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/menus/template-parts.js +0 -84
- package/build-module/components/navigation-sidebar/navigation-panel/menus/template-parts.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/menus/templates-sub.js +0 -50
- package/build-module/components/navigation-sidebar/navigation-panel/menus/templates-sub.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/menus/templates.js +0 -124
- package/build-module/components/navigation-sidebar/navigation-panel/menus/templates.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/navigation-entity-items.js +0 -65
- package/build-module/components/navigation-sidebar/navigation-panel/navigation-entity-items.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/new-template-dropdown.js +0 -106
- package/build-module/components/navigation-sidebar/navigation-panel/new-template-dropdown.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/search-results.js +0 -116
- package/build-module/components/navigation-sidebar/navigation-panel/search-results.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/template-navigation-item.js +0 -71
- package/build-module/components/navigation-sidebar/navigation-panel/template-navigation-item.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/template-preview.js +0 -38
- package/build-module/components/navigation-sidebar/navigation-panel/template-preview.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/use-debounced-search.js +0 -37
- package/build-module/components/navigation-sidebar/navigation-panel/use-debounced-search.js.map +0 -1
- package/build-module/components/navigation-sidebar/navigation-panel/utils.js +0 -8
- package/build-module/components/navigation-sidebar/navigation-panel/utils.js.map +0 -1
- package/build-module/utils/get-closest-available-template.js +0 -40
- package/build-module/utils/get-closest-available-template.js.map +0 -1
- package/src/components/navigation-sidebar/navigation-panel/content-navigation-item.js +0 -89
- package/src/components/navigation-sidebar/navigation-panel/menus/content-categories.js +0 -85
- package/src/components/navigation-sidebar/navigation-panel/menus/content-pages.js +0 -85
- package/src/components/navigation-sidebar/navigation-panel/menus/content-posts.js +0 -117
- package/src/components/navigation-sidebar/navigation-panel/menus/index.js +0 -61
- package/src/components/navigation-sidebar/navigation-panel/menus/template-parts-sub.js +0 -34
- package/src/components/navigation-sidebar/navigation-panel/menus/template-parts.js +0 -94
- package/src/components/navigation-sidebar/navigation-panel/menus/templates-sub.js +0 -42
- package/src/components/navigation-sidebar/navigation-panel/menus/templates.js +0 -147
- package/src/components/navigation-sidebar/navigation-panel/navigation-entity-items.js +0 -53
- package/src/components/navigation-sidebar/navigation-panel/new-template-dropdown.js +0 -110
- package/src/components/navigation-sidebar/navigation-panel/search-results.js +0 -117
- package/src/components/navigation-sidebar/navigation-panel/template-navigation-item.js +0 -83
- package/src/components/navigation-sidebar/navigation-panel/template-preview.js +0 -32
- package/src/components/navigation-sidebar/navigation-panel/use-debounced-search.js +0 -47
- package/src/components/navigation-sidebar/navigation-panel/utils.js +0 -11
- package/src/utils/get-closest-available-template.js +0 -31
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { useDispatch, useSelect } from '@wordpress/data';
|
|
5
|
-
import { __experimentalNavigationItem as NavigationItem } from '@wordpress/components';
|
|
6
|
-
import { getPathAndQueryString } from '@wordpress/url';
|
|
7
|
-
import { store as coreStore } from '@wordpress/core-data';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Internal dependencies
|
|
11
|
-
*/
|
|
12
|
-
import { store as editSiteStore } from '../../../store';
|
|
13
|
-
|
|
14
|
-
const getEntityTitle = ( kind, entity ) =>
|
|
15
|
-
'taxonomy' === kind ? entity.name : entity?.title?.rendered;
|
|
16
|
-
|
|
17
|
-
export default function NavigationEntityItems( { kind, name, query = {} } ) {
|
|
18
|
-
const entities = useSelect(
|
|
19
|
-
( select ) => select( coreStore ).getEntityRecords( kind, name, query ),
|
|
20
|
-
[ kind, name, query ]
|
|
21
|
-
);
|
|
22
|
-
|
|
23
|
-
const { setPage } = useDispatch( editSiteStore );
|
|
24
|
-
|
|
25
|
-
if ( ! entities ) {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const onActivateItem = ( { type, slug, link, id } ) => {
|
|
30
|
-
setPage( {
|
|
31
|
-
type,
|
|
32
|
-
slug,
|
|
33
|
-
path: getPathAndQueryString( link ),
|
|
34
|
-
context: {
|
|
35
|
-
postType: type,
|
|
36
|
-
postId: id,
|
|
37
|
-
},
|
|
38
|
-
} );
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
return entities.map( ( entity ) => {
|
|
42
|
-
const key = `content-${ getPathAndQueryString( entity.link ) }`;
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
<NavigationItem
|
|
46
|
-
key={ key }
|
|
47
|
-
item={ key }
|
|
48
|
-
title={ getEntityTitle( kind, entity ) }
|
|
49
|
-
onClick={ () => onActivateItem( entity ) }
|
|
50
|
-
/>
|
|
51
|
-
);
|
|
52
|
-
} );
|
|
53
|
-
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { filter, find, includes, map } from 'lodash';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* WordPress dependencies
|
|
8
|
-
*/
|
|
9
|
-
import {
|
|
10
|
-
DropdownMenu,
|
|
11
|
-
MenuGroup,
|
|
12
|
-
MenuItem,
|
|
13
|
-
NavigableMenu,
|
|
14
|
-
} from '@wordpress/components';
|
|
15
|
-
import { useDispatch, useSelect } from '@wordpress/data';
|
|
16
|
-
import { __ } from '@wordpress/i18n';
|
|
17
|
-
import { Icon, plus } from '@wordpress/icons';
|
|
18
|
-
import { store as editorStore } from '@wordpress/editor';
|
|
19
|
-
import { store as coreStore } from '@wordpress/core-data';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Internal dependencies
|
|
23
|
-
*/
|
|
24
|
-
import getClosestAvailableTemplate from '../../../utils/get-closest-available-template';
|
|
25
|
-
import { TEMPLATES_NEW_OPTIONS } from './constants';
|
|
26
|
-
import { store as editSiteStore } from '../../../store';
|
|
27
|
-
|
|
28
|
-
export default function NewTemplateDropdown() {
|
|
29
|
-
const { defaultTemplateTypes, templates } = useSelect( ( select ) => {
|
|
30
|
-
const {
|
|
31
|
-
__experimentalGetDefaultTemplateTypes: getDefaultTemplateTypes,
|
|
32
|
-
} = select( editorStore );
|
|
33
|
-
const templateEntities = select( coreStore ).getEntityRecords(
|
|
34
|
-
'postType',
|
|
35
|
-
'wp_template'
|
|
36
|
-
);
|
|
37
|
-
return {
|
|
38
|
-
defaultTemplateTypes: getDefaultTemplateTypes(),
|
|
39
|
-
templates: templateEntities,
|
|
40
|
-
};
|
|
41
|
-
}, [] );
|
|
42
|
-
const { addTemplate } = useDispatch( editSiteStore );
|
|
43
|
-
|
|
44
|
-
const createTemplate = ( slug ) => {
|
|
45
|
-
const closestAvailableTemplate = getClosestAvailableTemplate(
|
|
46
|
-
slug,
|
|
47
|
-
templates
|
|
48
|
-
);
|
|
49
|
-
const { title, description } = find( defaultTemplateTypes, { slug } );
|
|
50
|
-
addTemplate( {
|
|
51
|
-
content: closestAvailableTemplate.content.raw,
|
|
52
|
-
excerpt: description,
|
|
53
|
-
// Slugs need to be strings, so this is for template `404`
|
|
54
|
-
slug: slug.toString(),
|
|
55
|
-
status: 'publish',
|
|
56
|
-
title,
|
|
57
|
-
} );
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const existingTemplateSlugs = map( templates, 'slug' );
|
|
61
|
-
|
|
62
|
-
const missingTemplates = filter(
|
|
63
|
-
defaultTemplateTypes,
|
|
64
|
-
( template ) =>
|
|
65
|
-
includes( TEMPLATES_NEW_OPTIONS, template.slug ) &&
|
|
66
|
-
! includes( existingTemplateSlugs, template.slug )
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
if ( ! missingTemplates.length ) {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return (
|
|
74
|
-
<DropdownMenu
|
|
75
|
-
className="edit-site-navigation-panel__new-template-dropdown"
|
|
76
|
-
icon={ null }
|
|
77
|
-
label={ __( 'Add Template' ) }
|
|
78
|
-
popoverProps={ {
|
|
79
|
-
noArrow: false,
|
|
80
|
-
} }
|
|
81
|
-
toggleProps={ {
|
|
82
|
-
children: <Icon icon={ plus } />,
|
|
83
|
-
isSmall: true,
|
|
84
|
-
variant: 'tertiary',
|
|
85
|
-
} }
|
|
86
|
-
>
|
|
87
|
-
{ ( { onClose } ) => (
|
|
88
|
-
<NavigableMenu className="edit-site-navigation-panel__new-template-popover">
|
|
89
|
-
<MenuGroup label={ __( 'Add Template' ) }>
|
|
90
|
-
{ map(
|
|
91
|
-
missingTemplates,
|
|
92
|
-
( { title, description, slug } ) => (
|
|
93
|
-
<MenuItem
|
|
94
|
-
info={ description }
|
|
95
|
-
key={ slug }
|
|
96
|
-
onClick={ () => {
|
|
97
|
-
createTemplate( slug );
|
|
98
|
-
onClose();
|
|
99
|
-
} }
|
|
100
|
-
>
|
|
101
|
-
{ title }
|
|
102
|
-
</MenuItem>
|
|
103
|
-
)
|
|
104
|
-
) }
|
|
105
|
-
</MenuGroup>
|
|
106
|
-
</NavigableMenu>
|
|
107
|
-
) }
|
|
108
|
-
</DropdownMenu>
|
|
109
|
-
);
|
|
110
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { map, sortBy, keyBy } from 'lodash';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* WordPress dependencies
|
|
8
|
-
*/
|
|
9
|
-
import { useMemo } from '@wordpress/element';
|
|
10
|
-
import { __experimentalNavigationGroup as NavigationGroup } from '@wordpress/components';
|
|
11
|
-
import { __ } from '@wordpress/i18n';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Internal dependencies
|
|
15
|
-
*/
|
|
16
|
-
import { normalizedSearch } from './utils';
|
|
17
|
-
import { useSelect } from '@wordpress/data';
|
|
18
|
-
import { store as editorStore } from '@wordpress/editor';
|
|
19
|
-
import TemplateNavigationItem from './template-navigation-item';
|
|
20
|
-
import ContentNavigationItem from './content-navigation-item';
|
|
21
|
-
|
|
22
|
-
export default function SearchResults( { items, search, disableFilter } ) {
|
|
23
|
-
let itemType = null;
|
|
24
|
-
if ( items?.length > 0 ) {
|
|
25
|
-
if ( items[ 0 ].taxonomy ) {
|
|
26
|
-
itemType = 'taxonomy';
|
|
27
|
-
} else {
|
|
28
|
-
itemType = items[ 0 ].type;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const itemInfos = useSelect(
|
|
33
|
-
( select ) => {
|
|
34
|
-
if ( itemType === null || items === null ) {
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if ( itemType === 'wp_template' ) {
|
|
39
|
-
const {
|
|
40
|
-
__experimentalGetTemplateInfo: getTemplateInfo,
|
|
41
|
-
} = select( editorStore );
|
|
42
|
-
|
|
43
|
-
return items.map( ( item ) => ( {
|
|
44
|
-
slug: item.slug,
|
|
45
|
-
...getTemplateInfo( item ),
|
|
46
|
-
} ) );
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if ( itemType === 'taxonomy' ) {
|
|
50
|
-
return items.map( ( item ) => ( {
|
|
51
|
-
slug: item.slug,
|
|
52
|
-
title: item.name,
|
|
53
|
-
description: item.description,
|
|
54
|
-
} ) );
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return items.map( ( item ) => ( {
|
|
58
|
-
slug: item.slug,
|
|
59
|
-
title: item.title?.rendered,
|
|
60
|
-
description: item.excerpt?.rendered,
|
|
61
|
-
} ) );
|
|
62
|
-
},
|
|
63
|
-
[ items, itemType ]
|
|
64
|
-
);
|
|
65
|
-
const itemInfosMap = useMemo( () => keyBy( itemInfos, 'slug' ), [
|
|
66
|
-
itemInfos,
|
|
67
|
-
] );
|
|
68
|
-
|
|
69
|
-
const itemsFiltered = useMemo( () => {
|
|
70
|
-
if ( items === null || search.length === 0 ) {
|
|
71
|
-
return [];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if ( disableFilter ) {
|
|
75
|
-
return items;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return items.filter( ( { slug } ) => {
|
|
79
|
-
const { title, description } = itemInfosMap[ slug ];
|
|
80
|
-
|
|
81
|
-
return (
|
|
82
|
-
normalizedSearch( slug, search ) ||
|
|
83
|
-
normalizedSearch( title, search ) ||
|
|
84
|
-
normalizedSearch( description, search )
|
|
85
|
-
);
|
|
86
|
-
} );
|
|
87
|
-
}, [ items, itemInfos, search ] );
|
|
88
|
-
|
|
89
|
-
const itemsSorted = useMemo( () => {
|
|
90
|
-
if ( ! itemsFiltered ) {
|
|
91
|
-
return [];
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return sortBy( itemsFiltered, [
|
|
95
|
-
( { slug } ) => {
|
|
96
|
-
const { title } = itemInfosMap[ slug ];
|
|
97
|
-
return ! normalizedSearch( title, search );
|
|
98
|
-
},
|
|
99
|
-
] );
|
|
100
|
-
}, [ itemsFiltered, search ] );
|
|
101
|
-
|
|
102
|
-
const ItemComponent =
|
|
103
|
-
itemType === 'wp_template' || itemType === 'wp_template_part'
|
|
104
|
-
? TemplateNavigationItem
|
|
105
|
-
: ContentNavigationItem;
|
|
106
|
-
|
|
107
|
-
return (
|
|
108
|
-
<NavigationGroup title={ __( 'Search results' ) }>
|
|
109
|
-
{ map( itemsSorted, ( item ) => (
|
|
110
|
-
<ItemComponent
|
|
111
|
-
item={ item }
|
|
112
|
-
key={ `${ item.taxonomy || item.type }-${ item.id }` }
|
|
113
|
-
/>
|
|
114
|
-
) ) }
|
|
115
|
-
</NavigationGroup>
|
|
116
|
-
);
|
|
117
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import {
|
|
5
|
-
Button,
|
|
6
|
-
__experimentalNavigationItem as NavigationItem,
|
|
7
|
-
} from '@wordpress/components';
|
|
8
|
-
import { useDispatch, useSelect } from '@wordpress/data';
|
|
9
|
-
import { useState } from '@wordpress/element';
|
|
10
|
-
import { __ } from '@wordpress/i18n';
|
|
11
|
-
import { store as editorStore } from '@wordpress/editor';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Internal dependencies
|
|
15
|
-
*/
|
|
16
|
-
import TemplatePreview from './template-preview';
|
|
17
|
-
import { NavigationPanelPreviewFill } from '../index';
|
|
18
|
-
import { store as editSiteStore } from '../../../store';
|
|
19
|
-
|
|
20
|
-
export default function TemplateNavigationItem( { item } ) {
|
|
21
|
-
const { title, description } = useSelect(
|
|
22
|
-
( select ) =>
|
|
23
|
-
'wp_template' === item.type
|
|
24
|
-
? select( editorStore ).__experimentalGetTemplateInfo( item )
|
|
25
|
-
: {
|
|
26
|
-
title: item?.title?.rendered || item?.slug,
|
|
27
|
-
description: '',
|
|
28
|
-
},
|
|
29
|
-
[]
|
|
30
|
-
);
|
|
31
|
-
const {
|
|
32
|
-
setTemplate,
|
|
33
|
-
setTemplatePart,
|
|
34
|
-
setIsNavigationPanelOpened,
|
|
35
|
-
} = useDispatch( editSiteStore );
|
|
36
|
-
const [ isPreviewVisible, setIsPreviewVisible ] = useState( false );
|
|
37
|
-
|
|
38
|
-
if ( ! item ) {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const onActivateItem = () => {
|
|
43
|
-
if ( 'wp_template' === item.type ) {
|
|
44
|
-
setTemplate( item.id, item.slug );
|
|
45
|
-
} else {
|
|
46
|
-
setTemplatePart( item.id );
|
|
47
|
-
}
|
|
48
|
-
setIsNavigationPanelOpened( false );
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<NavigationItem
|
|
53
|
-
className="edit-site-navigation-panel__template-item"
|
|
54
|
-
item={ `${ item.type }-${ item.id }` }
|
|
55
|
-
>
|
|
56
|
-
<Button
|
|
57
|
-
onClick={ onActivateItem }
|
|
58
|
-
onMouseEnter={ () => setIsPreviewVisible( true ) }
|
|
59
|
-
onMouseLeave={ () => setIsPreviewVisible( false ) }
|
|
60
|
-
>
|
|
61
|
-
<span className="edit-site-navigation-panel__info-wrapper">
|
|
62
|
-
<div className="edit-site-navigation-panel__template-item-title">
|
|
63
|
-
{ 'draft' === item.status && (
|
|
64
|
-
<em>{ __( '[Draft]' ) }</em>
|
|
65
|
-
) }
|
|
66
|
-
{ title }
|
|
67
|
-
</div>
|
|
68
|
-
{ description && (
|
|
69
|
-
<div className="edit-site-navigation-panel__template-item-description">
|
|
70
|
-
{ description }
|
|
71
|
-
</div>
|
|
72
|
-
) }
|
|
73
|
-
</span>
|
|
74
|
-
</Button>
|
|
75
|
-
|
|
76
|
-
{ isPreviewVisible && (
|
|
77
|
-
<NavigationPanelPreviewFill>
|
|
78
|
-
<TemplatePreview rawContent={ item.content.raw } />
|
|
79
|
-
</NavigationPanelPreviewFill>
|
|
80
|
-
) }
|
|
81
|
-
</NavigationItem>
|
|
82
|
-
);
|
|
83
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { parse } from '@wordpress/blocks';
|
|
5
|
-
import { BlockPreview, BlockContextProvider } from '@wordpress/block-editor';
|
|
6
|
-
import { useMemo } from '@wordpress/element';
|
|
7
|
-
|
|
8
|
-
export default function TemplatePreview( { rawContent, blockContext } ) {
|
|
9
|
-
const blocks = useMemo( () => ( rawContent ? parse( rawContent ) : [] ), [
|
|
10
|
-
rawContent,
|
|
11
|
-
] );
|
|
12
|
-
|
|
13
|
-
if ( ! blocks || blocks.length === 0 ) {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if ( blockContext ) {
|
|
18
|
-
return (
|
|
19
|
-
<div className="edit-site-navigation-panel__preview">
|
|
20
|
-
<BlockContextProvider value={ blockContext }>
|
|
21
|
-
<BlockPreview blocks={ blocks } viewportWidth={ 1200 } />
|
|
22
|
-
</BlockContextProvider>
|
|
23
|
-
</div>
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<div className="edit-site-navigation-panel__preview">
|
|
29
|
-
<BlockPreview blocks={ blocks } viewportWidth={ 1200 } />
|
|
30
|
-
</div>
|
|
31
|
-
);
|
|
32
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { debounce } from 'lodash';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* WordPress dependencies
|
|
8
|
-
*/
|
|
9
|
-
import { useState, useCallback, useEffect } from '@wordpress/element';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Internal dependencies
|
|
13
|
-
*/
|
|
14
|
-
import { SEARCH_DEBOUNCE_IN_MS } from './constants';
|
|
15
|
-
|
|
16
|
-
export default function useDebouncedSearch() {
|
|
17
|
-
// The value used by the NavigationMenu to control the input field.
|
|
18
|
-
const [ search, setSearch ] = useState( '' );
|
|
19
|
-
// The value used to actually perform the search query.
|
|
20
|
-
const [ searchQuery, setSearchQuery ] = useState( '' );
|
|
21
|
-
const [ isDebouncing, setIsDebouncing ] = useState( false );
|
|
22
|
-
|
|
23
|
-
useEffect( () => {
|
|
24
|
-
setIsDebouncing( false );
|
|
25
|
-
}, [ searchQuery ] );
|
|
26
|
-
|
|
27
|
-
const debouncedSetSearchQuery = useCallback(
|
|
28
|
-
debounce( setSearchQuery, SEARCH_DEBOUNCE_IN_MS ),
|
|
29
|
-
[ setSearchQuery ]
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
const onSearch = useCallback(
|
|
33
|
-
( value ) => {
|
|
34
|
-
setSearch( value );
|
|
35
|
-
debouncedSetSearchQuery( value );
|
|
36
|
-
setIsDebouncing( true );
|
|
37
|
-
},
|
|
38
|
-
[ setSearch, setIsDebouncing, debouncedSetSearchQuery ]
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
return {
|
|
42
|
-
search,
|
|
43
|
-
searchQuery,
|
|
44
|
-
isDebouncing,
|
|
45
|
-
onSearch,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { deburr } from 'lodash';
|
|
5
|
-
|
|
6
|
-
// @see packages/block-editor/src/components/inserter/search-items.js
|
|
7
|
-
export const normalizeInput = ( input ) =>
|
|
8
|
-
deburr( input ).replace( /^\//, '' ).toLowerCase();
|
|
9
|
-
|
|
10
|
-
export const normalizedSearch = ( title, search ) =>
|
|
11
|
-
-1 !== normalizeInput( title ).indexOf( normalizeInput( search ) );
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { find } from 'lodash';
|
|
5
|
-
|
|
6
|
-
export default function getClosestAvailableTemplate( slug, templates ) {
|
|
7
|
-
const template = find( templates, { slug } );
|
|
8
|
-
if ( template ) {
|
|
9
|
-
return template;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
switch ( slug ) {
|
|
13
|
-
case 'single':
|
|
14
|
-
case 'page':
|
|
15
|
-
return getClosestAvailableTemplate( 'singular', templates );
|
|
16
|
-
case 'author':
|
|
17
|
-
case 'category':
|
|
18
|
-
case 'taxonomy':
|
|
19
|
-
case 'date':
|
|
20
|
-
case 'tag':
|
|
21
|
-
return getClosestAvailableTemplate( 'archive', templates );
|
|
22
|
-
case 'front-page':
|
|
23
|
-
return getClosestAvailableTemplate( 'home', templates );
|
|
24
|
-
case 'attachment':
|
|
25
|
-
return getClosestAvailableTemplate( 'single', templates );
|
|
26
|
-
case 'privacy-policy':
|
|
27
|
-
return getClosestAvailableTemplate( 'page', templates );
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return find( templates, { slug: 'index' } );
|
|
31
|
-
}
|