@wordpress/edit-site 6.30.1-next.a730c9c8c.0 → 6.31.1-next.233ccab9b.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/build/components/add-new-template/add-custom-template-modal-content.js +3 -2
- package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
- package/build/components/add-new-template/index.js +1 -5
- package/build/components/add-new-template/index.js.map +1 -1
- package/build/components/add-new-template/utils.js +26 -87
- package/build/components/add-new-template/utils.js.map +1 -1
- package/build/components/dataviews-actions/index.js +51 -1
- package/build/components/dataviews-actions/index.js.map +1 -1
- package/build/components/editor/index.js +1 -1
- package/build/components/editor/index.js.map +1 -1
- package/build/components/editor/use-resolve-edited-entity.js +42 -14
- package/build/components/editor/use-resolve-edited-entity.js.map +1 -1
- package/build/components/global-styles/screen-css.js +2 -3
- package/build/components/global-styles/screen-css.js.map +1 -1
- package/build/components/global-styles/screen-root.js +3 -35
- package/build/components/global-styles/screen-root.js.map +1 -1
- package/build/components/page-templates/fields.js +65 -5
- package/build/components/page-templates/fields.js.map +1 -1
- package/build/components/page-templates/hooks.js +1 -1
- package/build/components/page-templates/hooks.js.map +1 -1
- package/build/components/page-templates/index.js +103 -29
- package/build/components/page-templates/index.js.map +1 -1
- package/build/components/sidebar-global-styles-wrapper/index.js +45 -13
- package/build/components/sidebar-global-styles-wrapper/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates-browse/content.js +11 -5
- package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
- package/build/components/site-editor-routes/index.js +1 -1
- package/build/components/site-editor-routes/index.js.map +1 -1
- package/build/components/site-editor-routes/template-item.js +29 -23
- package/build/components/site-editor-routes/template-item.js.map +1 -1
- package/build-module/components/add-new-template/add-custom-template-modal-content.js +3 -2
- package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
- package/build-module/components/add-new-template/index.js +2 -6
- package/build-module/components/add-new-template/index.js.map +1 -1
- package/build-module/components/add-new-template/utils.js +26 -87
- package/build-module/components/add-new-template/utils.js.map +1 -1
- package/build-module/components/dataviews-actions/index.js +49 -0
- package/build-module/components/dataviews-actions/index.js.map +1 -1
- package/build-module/components/editor/index.js +1 -1
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/editor/use-resolve-edited-entity.js +42 -14
- package/build-module/components/editor/use-resolve-edited-entity.js.map +1 -1
- package/build-module/components/global-styles/screen-css.js +2 -3
- package/build-module/components/global-styles/screen-css.js.map +1 -1
- package/build-module/components/global-styles/screen-root.js +4 -36
- package/build-module/components/global-styles/screen-root.js.map +1 -1
- package/build-module/components/page-templates/fields.js +65 -5
- package/build-module/components/page-templates/fields.js.map +1 -1
- package/build-module/components/page-templates/hooks.js +1 -1
- package/build-module/components/page-templates/hooks.js.map +1 -1
- package/build-module/components/page-templates/index.js +105 -31
- package/build-module/components/page-templates/index.js.map +1 -1
- package/build-module/components/sidebar-global-styles-wrapper/index.js +48 -16
- package/build-module/components/sidebar-global-styles-wrapper/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +11 -5
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
- package/build-module/components/site-editor-routes/index.js +2 -2
- package/build-module/components/site-editor-routes/index.js.map +1 -1
- package/build-module/components/site-editor-routes/template-item.js +28 -22
- package/build-module/components/site-editor-routes/template-item.js.map +1 -1
- package/package.json +41 -41
- package/src/components/add-new-template/add-custom-template-modal-content.js +3 -4
- package/src/components/add-new-template/index.js +1 -8
- package/src/components/add-new-template/utils.js +36 -121
- package/src/components/dataviews-actions/index.js +51 -0
- package/src/components/editor/index.js +1 -0
- package/src/components/editor/use-resolve-edited-entity.js +54 -7
- package/src/components/global-styles/screen-css.js +4 -5
- package/src/components/global-styles/screen-root.js +5 -51
- package/src/components/page-templates/fields.js +70 -4
- package/src/components/page-templates/hooks.js +1 -1
- package/src/components/page-templates/index.js +160 -57
- package/src/components/sidebar-global-styles-wrapper/index.js +62 -16
- package/src/components/sidebar-navigation-screen-templates-browse/content.js +17 -7
- package/src/components/site-editor-routes/index.js +2 -1
- package/src/components/site-editor-routes/template-item.js +34 -26
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,7 @@ var _coreData = require("@wordpress/core-data");
|
|
|
11
11
|
var _htmlEntities = require("@wordpress/html-entities");
|
|
12
12
|
var _compose = require("@wordpress/compose");
|
|
13
13
|
var _dom = require("@wordpress/dom");
|
|
14
|
+
var _url = require("@wordpress/url");
|
|
14
15
|
var _utils = require("./utils");
|
|
15
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
17
|
/**
|
|
@@ -51,7 +52,7 @@ function SuggestionListItem({
|
|
|
51
52
|
lineHeight: 1.53846153846 // 20px
|
|
52
53
|
,
|
|
53
54
|
className: `${baseCssClass}__info`,
|
|
54
|
-
children: suggestion.link
|
|
55
|
+
children: (0, _url.safeDecodeURI)(suggestion.link)
|
|
55
56
|
})]
|
|
56
57
|
});
|
|
57
58
|
}
|
|
@@ -132,7 +133,7 @@ function AddCustomTemplateModalContent({
|
|
|
132
133
|
onBack,
|
|
133
134
|
containerRef
|
|
134
135
|
}) {
|
|
135
|
-
const [showSearchEntities, setShowSearchEntities] = (0, _element.useState)(
|
|
136
|
+
const [showSearchEntities, setShowSearchEntities] = (0, _element.useState)();
|
|
136
137
|
|
|
137
138
|
// Focus on the first focusable element when the modal opens.
|
|
138
139
|
// We handle focus management in the parent modal, just need to focus on the first focusable element.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_i18n","_components","_coreData","_htmlEntities","_compose","_dom","_utils","_jsxRuntime","EMPTY_ARRAY","SuggestionListItem","suggestion","search","onSelect","entityForSuggestions","baseCssClass","jsxs","Composite","Item","render","jsx","Button","__next40pxDefaultSize","role","className","onClick","config","getSpecificTemplate","children","__experimentalText","size","lineHeight","weight","TextHighlight","text","decodeEntities","name","highlight","link","useSearchSuggestions","query","useMemo","order","context","per_page","queryArgs","records","searchResults","hasResolved","searchHasResolved","useEntityRecords","type","slug","suggestions","setSuggestions","useState","useEffect","newSuggestions","length","recordNamePath","mapToIHasNameAndId","SuggestionList","setSearch","debouncedSearch","useDebouncedInput","labels","showSearchControl","setShowSearchControl","Fragment","SearchControl","__nextHasNoMarginBottom","onChange","value","label","search_items","placeholder","orientation","__","map","as","not_found","AddCustomTemplateModalContent","onBack","containerRef","showSearchEntities","setShowSearchEntities","hasGeneralTemplate","current","firstFocusable","focus","focusable","find","__experimentalVStack","spacing","alignment","Flex","gap","align","FlexItem","isBlock","title","description","templatePrefix","template","all_items","singular_name","justify","variant","_default","exports","default"],"sources":["@wordpress/edit-site/src/components/add-new-template/add-custom-template-modal-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tFlex,\n\tFlexItem,\n\tSearchControl,\n\tTextHighlight,\n\tComposite,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useDebouncedInput } from '@wordpress/compose';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { mapToIHasNameAndId } from './utils';\n\nconst EMPTY_ARRAY = [];\n\nfunction SuggestionListItem( {\n\tsuggestion,\n\tsearch,\n\tonSelect,\n\tentityForSuggestions,\n} ) {\n\tconst baseCssClass =\n\t\t'edit-site-custom-template-modal__suggestions_list__list-item';\n\treturn (\n\t\t<Composite.Item\n\t\t\trender={\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\tclassName={ baseCssClass }\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\tentityForSuggestions.config.getSpecificTemplate(\n\t\t\t\t\t\t\t\tsuggestion\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Text\n\t\t\t\tsize=\"body\"\n\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\tweight={ 500 }\n\t\t\t\tclassName={ `${ baseCssClass }__title` }\n\t\t\t>\n\t\t\t\t<TextHighlight\n\t\t\t\t\ttext={ decodeEntities( suggestion.name ) }\n\t\t\t\t\thighlight={ search }\n\t\t\t\t/>\n\t\t\t</Text>\n\t\t\t{ suggestion.link && (\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\tclassName={ `${ baseCssClass }__info` }\n\t\t\t\t>\n\t\t\t\t\t{ suggestion.link }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</Composite.Item>\n\t);\n}\n\nfunction useSearchSuggestions( entityForSuggestions, search ) {\n\tconst { config } = entityForSuggestions;\n\tconst query = useMemo(\n\t\t() => ( {\n\t\t\torder: 'asc',\n\t\t\tcontext: 'view',\n\t\t\tsearch,\n\t\t\tper_page: search ? 20 : 10,\n\t\t\t...config.queryArgs( search ),\n\t\t} ),\n\t\t[ search, config ]\n\t);\n\tconst { records: searchResults, hasResolved: searchHasResolved } =\n\t\tuseEntityRecords(\n\t\t\tentityForSuggestions.type,\n\t\t\tentityForSuggestions.slug,\n\t\t\tquery\n\t\t);\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tlet newSuggestions = EMPTY_ARRAY;\n\t\tif ( searchResults?.length ) {\n\t\t\tnewSuggestions = searchResults;\n\t\t\tif ( config.recordNamePath ) {\n\t\t\t\tnewSuggestions = mapToIHasNameAndId(\n\t\t\t\t\tnewSuggestions,\n\t\t\t\t\tconfig.recordNamePath\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// Update suggestions only when the query has resolved, so as to keep\n\t\t// the previous results in the UI.\n\t\tsetSuggestions( newSuggestions );\n\t}, [ searchResults, searchHasResolved ] );\n\treturn suggestions;\n}\n\nfunction SuggestionList( { entityForSuggestions, onSelect } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst suggestions = useSearchSuggestions(\n\t\tentityForSuggestions,\n\t\tdebouncedSearch\n\t);\n\tconst { labels } = entityForSuggestions;\n\tconst [ showSearchControl, setShowSearchControl ] = useState( false );\n\tif ( ! showSearchControl && suggestions?.length > 9 ) {\n\t\tsetShowSearchControl( true );\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ showSearchControl && (\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearch }\n\t\t\t\t\tvalue={ search }\n\t\t\t\t\tlabel={ labels.search_items }\n\t\t\t\t\tplaceholder={ labels.search_items }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! suggestions?.length && (\n\t\t\t\t<Composite\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__suggestions_list\"\n\t\t\t\t\taria-label={ __( 'Suggestions list' ) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion ) => (\n\t\t\t\t\t\t<SuggestionListItem\n\t\t\t\t\t\t\tkey={ suggestion.slug }\n\t\t\t\t\t\t\tsuggestion={ suggestion }\n\t\t\t\t\t\t\tsearch={ debouncedSearch }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Composite>\n\t\t\t) }\n\t\t\t{ debouncedSearch && ! suggestions?.length && (\n\t\t\t\t<Text\n\t\t\t\t\tas=\"p\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__no-results\"\n\t\t\t\t>\n\t\t\t\t\t{ labels.not_found }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction AddCustomTemplateModalContent( {\n\tonSelect,\n\tentityForSuggestions,\n\tonBack,\n\tcontainerRef,\n} ) {\n\tconst [ showSearchEntities, setShowSearchEntities ] = useState(\n\t\tentityForSuggestions.hasGeneralTemplate\n\t);\n\n\t// Focus on the first focusable element when the modal opens.\n\t// We handle focus management in the parent modal, just need to focus on the first focusable element.\n\tuseEffect( () => {\n\t\tif ( containerRef.current ) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ showSearchEntities ] );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 4 }\n\t\t\tclassName=\"edit-site-custom-template-modal__contents-wrapper\"\n\t\t\talignment=\"left\"\n\t\t>\n\t\t\t{ ! showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select whether to create a single template for all items or a specific one.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tclassName=\"edit-site-custom-template-modal__contents\"\n\t\t\t\t\t\tgap=\"4\"\n\t\t\t\t\t\talign=\"initial\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} = entityForSuggestions.template;\n\t\t\t\t\t\t\t\tonSelect( {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.all_items }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.\n\t\t\t\t\t\t\t\t\t__( 'For all items' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetShowSearchEntities( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.singular_name }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.\n\t\t\t\t\t\t\t\t\t__( 'For a specific item' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'This template will be used only for the specific item chosen.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t/>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t// If general template exists, go directly back to main screen\n\t\t\t\t\t\t\t\t// instead of showing the choice screen\n\t\t\t\t\t\t\t\tif ( entityForSuggestions.hasGeneralTemplate ) {\n\t\t\t\t\t\t\t\t\tonBack();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetShowSearchEntities( false );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default AddCustomTemplateModalContent;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_element","require","_i18n","_components","_coreData","_htmlEntities","_compose","_dom","_url","_utils","_jsxRuntime","EMPTY_ARRAY","SuggestionListItem","suggestion","search","onSelect","entityForSuggestions","baseCssClass","jsxs","Composite","Item","render","jsx","Button","__next40pxDefaultSize","role","className","onClick","config","getSpecificTemplate","children","__experimentalText","size","lineHeight","weight","TextHighlight","text","decodeEntities","name","highlight","link","safeDecodeURI","useSearchSuggestions","query","useMemo","order","context","per_page","queryArgs","records","searchResults","hasResolved","searchHasResolved","useEntityRecords","type","slug","suggestions","setSuggestions","useState","useEffect","newSuggestions","length","recordNamePath","mapToIHasNameAndId","SuggestionList","setSearch","debouncedSearch","useDebouncedInput","labels","showSearchControl","setShowSearchControl","Fragment","SearchControl","__nextHasNoMarginBottom","onChange","value","label","search_items","placeholder","orientation","__","map","as","not_found","AddCustomTemplateModalContent","onBack","containerRef","showSearchEntities","setShowSearchEntities","current","firstFocusable","focus","focusable","find","__experimentalVStack","spacing","alignment","Flex","gap","align","FlexItem","isBlock","title","description","templatePrefix","template","all_items","singular_name","justify","variant","hasGeneralTemplate","_default","exports","default"],"sources":["@wordpress/edit-site/src/components/add-new-template/add-custom-template-modal-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tFlex,\n\tFlexItem,\n\tSearchControl,\n\tTextHighlight,\n\tComposite,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useDebouncedInput } from '@wordpress/compose';\nimport { focus } from '@wordpress/dom';\nimport { safeDecodeURI } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { mapToIHasNameAndId } from './utils';\n\nconst EMPTY_ARRAY = [];\n\nfunction SuggestionListItem( {\n\tsuggestion,\n\tsearch,\n\tonSelect,\n\tentityForSuggestions,\n} ) {\n\tconst baseCssClass =\n\t\t'edit-site-custom-template-modal__suggestions_list__list-item';\n\treturn (\n\t\t<Composite.Item\n\t\t\trender={\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\tclassName={ baseCssClass }\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\tentityForSuggestions.config.getSpecificTemplate(\n\t\t\t\t\t\t\t\tsuggestion\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Text\n\t\t\t\tsize=\"body\"\n\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\tweight={ 500 }\n\t\t\t\tclassName={ `${ baseCssClass }__title` }\n\t\t\t>\n\t\t\t\t<TextHighlight\n\t\t\t\t\ttext={ decodeEntities( suggestion.name ) }\n\t\t\t\t\thighlight={ search }\n\t\t\t\t/>\n\t\t\t</Text>\n\t\t\t{ suggestion.link && (\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\tclassName={ `${ baseCssClass }__info` }\n\t\t\t\t>\n\t\t\t\t\t{ safeDecodeURI( suggestion.link ) }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</Composite.Item>\n\t);\n}\n\nfunction useSearchSuggestions( entityForSuggestions, search ) {\n\tconst { config } = entityForSuggestions;\n\tconst query = useMemo(\n\t\t() => ( {\n\t\t\torder: 'asc',\n\t\t\tcontext: 'view',\n\t\t\tsearch,\n\t\t\tper_page: search ? 20 : 10,\n\t\t\t...config.queryArgs( search ),\n\t\t} ),\n\t\t[ search, config ]\n\t);\n\tconst { records: searchResults, hasResolved: searchHasResolved } =\n\t\tuseEntityRecords(\n\t\t\tentityForSuggestions.type,\n\t\t\tentityForSuggestions.slug,\n\t\t\tquery\n\t\t);\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tlet newSuggestions = EMPTY_ARRAY;\n\t\tif ( searchResults?.length ) {\n\t\t\tnewSuggestions = searchResults;\n\t\t\tif ( config.recordNamePath ) {\n\t\t\t\tnewSuggestions = mapToIHasNameAndId(\n\t\t\t\t\tnewSuggestions,\n\t\t\t\t\tconfig.recordNamePath\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// Update suggestions only when the query has resolved, so as to keep\n\t\t// the previous results in the UI.\n\t\tsetSuggestions( newSuggestions );\n\t}, [ searchResults, searchHasResolved ] );\n\treturn suggestions;\n}\n\nfunction SuggestionList( { entityForSuggestions, onSelect } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst suggestions = useSearchSuggestions(\n\t\tentityForSuggestions,\n\t\tdebouncedSearch\n\t);\n\tconst { labels } = entityForSuggestions;\n\tconst [ showSearchControl, setShowSearchControl ] = useState( false );\n\tif ( ! showSearchControl && suggestions?.length > 9 ) {\n\t\tsetShowSearchControl( true );\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ showSearchControl && (\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearch }\n\t\t\t\t\tvalue={ search }\n\t\t\t\t\tlabel={ labels.search_items }\n\t\t\t\t\tplaceholder={ labels.search_items }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! suggestions?.length && (\n\t\t\t\t<Composite\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__suggestions_list\"\n\t\t\t\t\taria-label={ __( 'Suggestions list' ) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion ) => (\n\t\t\t\t\t\t<SuggestionListItem\n\t\t\t\t\t\t\tkey={ suggestion.slug }\n\t\t\t\t\t\t\tsuggestion={ suggestion }\n\t\t\t\t\t\t\tsearch={ debouncedSearch }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Composite>\n\t\t\t) }\n\t\t\t{ debouncedSearch && ! suggestions?.length && (\n\t\t\t\t<Text\n\t\t\t\t\tas=\"p\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__no-results\"\n\t\t\t\t>\n\t\t\t\t\t{ labels.not_found }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction AddCustomTemplateModalContent( {\n\tonSelect,\n\tentityForSuggestions,\n\tonBack,\n\tcontainerRef,\n} ) {\n\tconst [ showSearchEntities, setShowSearchEntities ] = useState();\n\n\t// Focus on the first focusable element when the modal opens.\n\t// We handle focus management in the parent modal, just need to focus on the first focusable element.\n\tuseEffect( () => {\n\t\tif ( containerRef.current ) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ showSearchEntities ] );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 4 }\n\t\t\tclassName=\"edit-site-custom-template-modal__contents-wrapper\"\n\t\t\talignment=\"left\"\n\t\t>\n\t\t\t{ ! showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select whether to create a single template for all items or a specific one.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tclassName=\"edit-site-custom-template-modal__contents\"\n\t\t\t\t\t\tgap=\"4\"\n\t\t\t\t\t\talign=\"initial\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} = entityForSuggestions.template;\n\t\t\t\t\t\t\t\tonSelect( {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.all_items }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.\n\t\t\t\t\t\t\t\t\t__( 'For all items' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetShowSearchEntities( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.singular_name }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.\n\t\t\t\t\t\t\t\t\t__( 'For a specific item' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'This template will be used only for the specific item chosen.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t/>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t// If general template exists, go directly back to main screen\n\t\t\t\t\t\t\t\t// instead of showing the choice screen\n\t\t\t\t\t\t\t\tif ( entityForSuggestions.hasGeneralTemplate ) {\n\t\t\t\t\t\t\t\t\tonBack();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetShowSearchEntities( false );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default AddCustomTemplateModalContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -277,12 +277,8 @@ function NewTemplate() {
|
|
|
277
277
|
});
|
|
278
278
|
}
|
|
279
279
|
function useMissingTemplates(setEntityForSuggestions, onClick) {
|
|
280
|
-
const existingTemplates = (0, _utils.useExistingTemplates)();
|
|
281
280
|
const defaultTemplateTypes = (0, _utils.useDefaultTemplateTypes)();
|
|
282
|
-
const
|
|
283
|
-
slug
|
|
284
|
-
}) => slug);
|
|
285
|
-
const missingDefaultTemplates = (defaultTemplateTypes || []).filter(template => DEFAULT_TEMPLATE_SLUGS.includes(template.slug) && !existingTemplateSlugs.includes(template.slug));
|
|
281
|
+
const missingDefaultTemplates = (defaultTemplateTypes || []).filter(template => DEFAULT_TEMPLATE_SLUGS.includes(template.slug));
|
|
286
282
|
const onClickMenuItem = _entityForSuggestions => {
|
|
287
283
|
onClick?.();
|
|
288
284
|
setEntityForSuggestions(_entityForSuggestions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_htmlEntities","_element","_data","_coreData","_compose","_icons","_i18n","_notices","_router","_dom","_constants","_addCustomTemplateModalContent","_utils","_addCustomGenericTemplateModalContent","_lockUnlock","_jsxRuntime","useHistory","unlock","routerPrivateApis","DEFAULT_TEMPLATE_SLUGS","TEMPLATE_ICONS","home","verse","single","pin","page","archive","search","notFound","index","list","category","author","commentAuthorAvatar","taxonomy","blockMeta","date","calendar","tag","attachment","media","TemplateListItem","title","direction","className","description","icon","onClick","children","jsx","Button","__next40pxDefaultSize","label","showTooltip","jsxs","Flex","as","spacing","align","justify","style","width","Icon","__experimentalVStack","alignment","__experimentalText","weight","lineHeight","modalContentMap","templatesList","customTemplate","customGenericTemplate","NewTemplateModal","onClose","modalContent","setModalContent","useState","entityForSuggestions","setEntityForSuggestions","isSubmitting","setIsSubmitting","missingTemplates","useMissingTemplates","history","saveEntityRecord","useDispatch","coreStore","createErrorNotice","createSuccessNotice","noticesStore","containerRef","useRef","isMobile","useViewportMatch","homeUrl","useSelect","select","getEntityRecord","TEMPLATE_SHORT_DESCRIPTIONS","sprintf","__","Date","getFullYear","useEffect","current","firstFocusable","focus","focusable","find","createTemplate","template","isWPSuggestion","slug","newTemplate","TEMPLATE_POST_TYPE","toString","status","is_wp_suggestion","throwOnError","navigate","id","decodeEntities","rendered","type","error","errorMessage","message","code","onModalClose","modalTitle","labels","singular_name","Modal","clsx","onRequestClose","overlayClassName","undefined","ref","__experimentalGrid","columns","gap","map","layout","edit","default","onSelect","onBack","NewTemplate","showModal","setShowModal","postType","getPostType","Fragment","variant","add_new_item","existingTemplates","useExistingTemplates","defaultTemplateTypes","useDefaultTemplateTypes","existingTemplateSlugs","missingDefaultTemplates","filter","includes","onClickMenuItem","_entityForSuggestions","enhancedMissingDefaultTemplateTypes","defaultTaxonomiesMenuItems","taxonomiesMenuItems","useTaxonomiesMenuItems","defaultPostTypesMenuItems","postTypesMenuItems","usePostTypeMenuItems","authorMenuItem","useAuthorMenuItem","forEach","menuItem","matchIndex","findIndex","push","sort","template1","template2","indexOf","usePostTypeArchiveMenuItems","_default","exports","memo"],"sources":["@wordpress/edit-site/src/components/add-new-template/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalGrid as Grid,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tIcon,\n} from '@wordpress/components';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, memo, useRef, useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tarchive,\n\tblockMeta,\n\tcalendar,\n\tcategory,\n\tcommentAuthorAvatar,\n\tedit,\n\thome,\n\tlayout,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpin,\n\tverse,\n\tsearch,\n\ttag,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\n/**\n * Internal dependencies\n */\nimport AddCustomTemplateModalContent from './add-custom-template-modal-content';\nimport {\n\tuseExistingTemplates,\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n\tusePostTypeArchiveMenuItems,\n} from './utils';\nimport AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'home',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\thome: verse,\n\tsingle: pin,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: commentAuthorAvatar,\n\ttaxonomy: blockMeta,\n\tdate: calendar,\n\ttag,\n\tattachment: media,\n};\n\nfunction TemplateListItem( {\n\ttitle,\n\tdirection,\n\tclassName,\n\tdescription,\n\ticon,\n\tonClick,\n\tchildren,\n} ) {\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\tonClick={ onClick }\n\t\t\tlabel={ description }\n\t\t\tshowTooltip={ !! description }\n\t\t>\n\t\t\t<Flex\n\t\t\t\tas=\"span\"\n\t\t\t\tspacing={ 2 }\n\t\t\t\talign=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\tdirection={ direction }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-add-new-template__template-icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-name\"\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tspacing={ 0 }\n\t\t\t\t>\n\t\t\t\t\t<Text\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Text>\n\t\t\t\t\t{ children }\n\t\t\t\t</VStack>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nconst modalContentMap = {\n\ttemplatesList: 1,\n\tcustomTemplate: 2,\n\tcustomGenericTemplate: 3,\n};\n\nfunction NewTemplateModal( { onClose } ) {\n\tconst [ modalContent, setModalContent ] = useState(\n\t\tmodalContentMap.templatesList\n\t);\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst missingTemplates = useMissingTemplates( setEntityForSuggestions, () =>\n\t\tsetModalContent( modalContentMap.customTemplate )\n\t);\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst containerRef = useRef( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst homeUrl = useSelect( ( select ) => {\n\t\t// Site index.\n\t\treturn select( coreStore ).getEntityRecord( 'root', '__unstableBase' )\n\t\t\t?.home;\n\t}, [] );\n\n\tconst TEMPLATE_SHORT_DESCRIPTIONS = {\n\t\t'front-page': homeUrl,\n\t\tdate: sprintf(\n\t\t\t// translators: %s: The homepage url.\n\t\t\t__( 'E.g. %s' ),\n\t\t\thomeUrl + '/' + new Date().getFullYear()\n\t\t),\n\t};\n\n\tuseEffect( () => {\n\t\t// Focus the first focusable element when component mounts or UI changes\n\t\t// We don't want to focus on the other modals because they have their own focus management.\n\t\tif (\n\t\t\tcontainerRef.current &&\n\t\t\tmodalContent === modalContentMap.templatesList\n\t\t) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ modalContent ] );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\tif ( isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting( true );\n\t\ttry {\n\t\t\tconst { title, description, slug } = template;\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.navigate(\n\t\t\t\t`/${ TEMPLATE_POST_TYPE }/${ newTemplate.id }?canvas=edit`\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\tdecodeEntities( newTemplate.title?.rendered || title )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\tconst onModalClose = () => {\n\t\tonClose();\n\t\tsetModalContent( modalContentMap.templatesList );\n\t};\n\n\tlet modalTitle = __( 'Add template' );\n\tif ( modalContent === modalContentMap.customTemplate ) {\n\t\tmodalTitle = sprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Add template: %s' ),\n\t\t\tentityForSuggestions.labels.singular_name\n\t\t);\n\t} else if ( modalContent === modalContentMap.customGenericTemplate ) {\n\t\tmodalTitle = __( 'Create custom template' );\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle }\n\t\t\tclassName={ clsx( 'edit-site-add-new-template__modal', {\n\t\t\t\t'edit-site-add-new-template__modal_template_list':\n\t\t\t\t\tmodalContent === modalContentMap.templatesList,\n\t\t\t\t'edit-site-custom-template-modal':\n\t\t\t\t\tmodalContent === modalContentMap.customTemplate,\n\t\t\t} ) }\n\t\t\tonRequestClose={ onModalClose }\n\t\t\toverlayClassName={\n\t\t\t\tmodalContent === modalContentMap.customGenericTemplate\n\t\t\t\t\t? 'edit-site-custom-generic-template__modal'\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tref={ containerRef }\n\t\t>\n\t\t\t{ modalContent === modalContentMap.templatesList && (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={ isMobile ? 2 : 3 }\n\t\t\t\t\tgap={ 4 }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-list__contents\"\n\t\t\t\t>\n\t\t\t\t\t<Flex className=\"edit-site-add-new-template__template-list__prompt\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select what the new template should apply to:'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\tconst { title, slug, onClick } = template;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tclassName=\"edit-site-add-new-template__template-button\"\n\t\t\t\t\t\t\t\tdescription={\n\t\t\t\t\t\t\t\t\tTEMPLATE_SHORT_DESCRIPTIONS[ slug ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ticon={ TEMPLATE_ICONS[ slug ] || layout }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\ttitle={ __( 'Custom template' ) }\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"edit-site-add-new-template__custom-template-button\"\n\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetModalContent(\n\t\t\t\t\t\t\t\tmodalContentMap.customGenericTemplate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TemplateListItem>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customTemplate && (\n\t\t\t\t<AddCustomTemplateModalContent\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customGenericTemplate && (\n\t\t\t\t<AddCustomGenericTemplateModalContent\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n\nfunction NewTemplate() {\n\tconst [ showModal, setShowModal ] = useState( false );\n\n\tconst { postType } = useSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpostType: getPostType( TEMPLATE_POST_TYPE ),\n\t\t};\n\t}, [] );\n\n\tif ( ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t{ postType.labels.add_new_item }\n\t\t\t</Button>\n\t\t\t{ showModal && (\n\t\t\t\t<NewTemplateModal onClose={ () => setShowModal( false ) } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates( setEntityForSuggestions, onClick ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) =>\n\t\t\tDEFAULT_TEMPLATE_SLUGS.includes( template.slug ) &&\n\t\t\t! existingTemplateSlugs.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tonClick?.();\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...usePostTypeArchiveMenuItems(),\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n\nexport default memo( NewTemplate );\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_htmlEntities","_element","_data","_coreData","_compose","_icons","_i18n","_notices","_router","_dom","_constants","_addCustomTemplateModalContent","_utils","_addCustomGenericTemplateModalContent","_lockUnlock","_jsxRuntime","useHistory","unlock","routerPrivateApis","DEFAULT_TEMPLATE_SLUGS","TEMPLATE_ICONS","home","verse","single","pin","page","archive","search","notFound","index","list","category","author","commentAuthorAvatar","taxonomy","blockMeta","date","calendar","tag","attachment","media","TemplateListItem","title","direction","className","description","icon","onClick","children","jsx","Button","__next40pxDefaultSize","label","showTooltip","jsxs","Flex","as","spacing","align","justify","style","width","Icon","__experimentalVStack","alignment","__experimentalText","weight","lineHeight","modalContentMap","templatesList","customTemplate","customGenericTemplate","NewTemplateModal","onClose","modalContent","setModalContent","useState","entityForSuggestions","setEntityForSuggestions","isSubmitting","setIsSubmitting","missingTemplates","useMissingTemplates","history","saveEntityRecord","useDispatch","coreStore","createErrorNotice","createSuccessNotice","noticesStore","containerRef","useRef","isMobile","useViewportMatch","homeUrl","useSelect","select","getEntityRecord","TEMPLATE_SHORT_DESCRIPTIONS","sprintf","__","Date","getFullYear","useEffect","current","firstFocusable","focus","focusable","find","createTemplate","template","isWPSuggestion","slug","newTemplate","TEMPLATE_POST_TYPE","toString","status","is_wp_suggestion","throwOnError","navigate","id","decodeEntities","rendered","type","error","errorMessage","message","code","onModalClose","modalTitle","labels","singular_name","Modal","clsx","onRequestClose","overlayClassName","undefined","ref","__experimentalGrid","columns","gap","map","layout","edit","default","onSelect","onBack","NewTemplate","showModal","setShowModal","postType","getPostType","Fragment","variant","add_new_item","defaultTemplateTypes","useDefaultTemplateTypes","missingDefaultTemplates","filter","includes","onClickMenuItem","_entityForSuggestions","enhancedMissingDefaultTemplateTypes","defaultTaxonomiesMenuItems","taxonomiesMenuItems","useTaxonomiesMenuItems","defaultPostTypesMenuItems","postTypesMenuItems","usePostTypeMenuItems","authorMenuItem","useAuthorMenuItem","forEach","menuItem","matchIndex","findIndex","push","sort","template1","template2","indexOf","usePostTypeArchiveMenuItems","_default","exports","memo"],"sources":["@wordpress/edit-site/src/components/add-new-template/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalGrid as Grid,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tIcon,\n} from '@wordpress/components';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, memo, useRef, useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tarchive,\n\tblockMeta,\n\tcalendar,\n\tcategory,\n\tcommentAuthorAvatar,\n\tedit,\n\thome,\n\tlayout,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpin,\n\tverse,\n\tsearch,\n\ttag,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\n/**\n * Internal dependencies\n */\nimport AddCustomTemplateModalContent from './add-custom-template-modal-content';\nimport {\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n\tusePostTypeArchiveMenuItems,\n} from './utils';\nimport AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'home',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\thome: verse,\n\tsingle: pin,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: commentAuthorAvatar,\n\ttaxonomy: blockMeta,\n\tdate: calendar,\n\ttag,\n\tattachment: media,\n};\n\nfunction TemplateListItem( {\n\ttitle,\n\tdirection,\n\tclassName,\n\tdescription,\n\ticon,\n\tonClick,\n\tchildren,\n} ) {\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\tonClick={ onClick }\n\t\t\tlabel={ description }\n\t\t\tshowTooltip={ !! description }\n\t\t>\n\t\t\t<Flex\n\t\t\t\tas=\"span\"\n\t\t\t\tspacing={ 2 }\n\t\t\t\talign=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\tdirection={ direction }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-add-new-template__template-icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-name\"\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tspacing={ 0 }\n\t\t\t\t>\n\t\t\t\t\t<Text\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Text>\n\t\t\t\t\t{ children }\n\t\t\t\t</VStack>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nconst modalContentMap = {\n\ttemplatesList: 1,\n\tcustomTemplate: 2,\n\tcustomGenericTemplate: 3,\n};\n\nfunction NewTemplateModal( { onClose } ) {\n\tconst [ modalContent, setModalContent ] = useState(\n\t\tmodalContentMap.templatesList\n\t);\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst missingTemplates = useMissingTemplates( setEntityForSuggestions, () =>\n\t\tsetModalContent( modalContentMap.customTemplate )\n\t);\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst containerRef = useRef( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst homeUrl = useSelect( ( select ) => {\n\t\t// Site index.\n\t\treturn select( coreStore ).getEntityRecord( 'root', '__unstableBase' )\n\t\t\t?.home;\n\t}, [] );\n\n\tconst TEMPLATE_SHORT_DESCRIPTIONS = {\n\t\t'front-page': homeUrl,\n\t\tdate: sprintf(\n\t\t\t// translators: %s: The homepage url.\n\t\t\t__( 'E.g. %s' ),\n\t\t\thomeUrl + '/' + new Date().getFullYear()\n\t\t),\n\t};\n\n\tuseEffect( () => {\n\t\t// Focus the first focusable element when component mounts or UI changes\n\t\t// We don't want to focus on the other modals because they have their own focus management.\n\t\tif (\n\t\t\tcontainerRef.current &&\n\t\t\tmodalContent === modalContentMap.templatesList\n\t\t) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ modalContent ] );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\tif ( isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting( true );\n\t\ttry {\n\t\t\tconst { title, description, slug } = template;\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.navigate(\n\t\t\t\t`/${ TEMPLATE_POST_TYPE }/${ newTemplate.id }?canvas=edit`\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\tdecodeEntities( newTemplate.title?.rendered || title )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\tconst onModalClose = () => {\n\t\tonClose();\n\t\tsetModalContent( modalContentMap.templatesList );\n\t};\n\n\tlet modalTitle = __( 'Add template' );\n\tif ( modalContent === modalContentMap.customTemplate ) {\n\t\tmodalTitle = sprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Add template: %s' ),\n\t\t\tentityForSuggestions.labels.singular_name\n\t\t);\n\t} else if ( modalContent === modalContentMap.customGenericTemplate ) {\n\t\tmodalTitle = __( 'Create custom template' );\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle }\n\t\t\tclassName={ clsx( 'edit-site-add-new-template__modal', {\n\t\t\t\t'edit-site-add-new-template__modal_template_list':\n\t\t\t\t\tmodalContent === modalContentMap.templatesList,\n\t\t\t\t'edit-site-custom-template-modal':\n\t\t\t\t\tmodalContent === modalContentMap.customTemplate,\n\t\t\t} ) }\n\t\t\tonRequestClose={ onModalClose }\n\t\t\toverlayClassName={\n\t\t\t\tmodalContent === modalContentMap.customGenericTemplate\n\t\t\t\t\t? 'edit-site-custom-generic-template__modal'\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tref={ containerRef }\n\t\t>\n\t\t\t{ modalContent === modalContentMap.templatesList && (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={ isMobile ? 2 : 3 }\n\t\t\t\t\tgap={ 4 }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-list__contents\"\n\t\t\t\t>\n\t\t\t\t\t<Flex className=\"edit-site-add-new-template__template-list__prompt\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select what the new template should apply to:'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\tconst { title, slug, onClick } = template;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tclassName=\"edit-site-add-new-template__template-button\"\n\t\t\t\t\t\t\t\tdescription={\n\t\t\t\t\t\t\t\t\tTEMPLATE_SHORT_DESCRIPTIONS[ slug ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ticon={ TEMPLATE_ICONS[ slug ] || layout }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\ttitle={ __( 'Custom template' ) }\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"edit-site-add-new-template__custom-template-button\"\n\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetModalContent(\n\t\t\t\t\t\t\t\tmodalContentMap.customGenericTemplate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TemplateListItem>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customTemplate && (\n\t\t\t\t<AddCustomTemplateModalContent\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customGenericTemplate && (\n\t\t\t\t<AddCustomGenericTemplateModalContent\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n\nfunction NewTemplate() {\n\tconst [ showModal, setShowModal ] = useState( false );\n\n\tconst { postType } = useSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpostType: getPostType( TEMPLATE_POST_TYPE ),\n\t\t};\n\t}, [] );\n\n\tif ( ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t{ postType.labels.add_new_item }\n\t\t\t</Button>\n\t\t\t{ showModal && (\n\t\t\t\t<NewTemplateModal onClose={ () => setShowModal( false ) } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates( setEntityForSuggestions, onClick ) {\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) => DEFAULT_TEMPLATE_SLUGS.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tonClick?.();\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...usePostTypeArchiveMenuItems(),\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n\nexport default memo( NewTemplate );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ var _htmlEntities = require("@wordpress/html-entities");
|
|
|
14
14
|
var _element = require("@wordpress/element");
|
|
15
15
|
var _i18n = require("@wordpress/i18n");
|
|
16
16
|
var _icons = require("@wordpress/icons");
|
|
17
|
+
var _url = require("@wordpress/url");
|
|
17
18
|
var _constants = require("../../utils/constants");
|
|
18
19
|
/**
|
|
19
20
|
* WordPress dependencies
|
|
@@ -39,6 +40,20 @@ const getValueFromObjectPath = (object, path) => {
|
|
|
39
40
|
return value;
|
|
40
41
|
};
|
|
41
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Helper that adds a prefix to a post slug. The slug needs to be URL-decoded first,
|
|
45
|
+
* so that we have raw Unicode characters there. The server will truncate the slug to
|
|
46
|
+
* 200 characters, respecing Unicode char boundary. On the other hand, the server
|
|
47
|
+
* doesn't detect urlencoded octet boundary and can possibly construct slugs that
|
|
48
|
+
* are not valid urlencoded strings.
|
|
49
|
+
* @param {string} prefix The prefix to add to the slug.
|
|
50
|
+
* @param {string} slug The slug to add the prefix to.
|
|
51
|
+
* @return {string} The slug with the prefix.
|
|
52
|
+
*/
|
|
53
|
+
function prefixSlug(prefix, slug) {
|
|
54
|
+
return `${prefix}-${(0, _url.safeDecodeURI)(slug)}`;
|
|
55
|
+
}
|
|
56
|
+
|
|
42
57
|
/**
|
|
43
58
|
* Helper util to map records to add a `name` prop from a
|
|
44
59
|
* provided path, in order to handle all entities in the same
|
|
@@ -147,7 +162,6 @@ function usePostTypeArchiveMenuItems() {
|
|
|
147
162
|
}
|
|
148
163
|
const usePostTypeMenuItems = onClickMenuItem => {
|
|
149
164
|
const publicPostTypes = usePublicPostTypes();
|
|
150
|
-
const existingTemplates = useExistingTemplates();
|
|
151
165
|
const defaultTemplateTypes = useDefaultTemplateTypes();
|
|
152
166
|
// We need to keep track of naming conflicts. If a conflict
|
|
153
167
|
// occurs, we need to add slug.
|
|
@@ -178,9 +192,6 @@ const usePostTypeMenuItems = onClickMenuItem => {
|
|
|
178
192
|
return accumulator;
|
|
179
193
|
}, {}), [publicPostTypes]);
|
|
180
194
|
const postTypesInfo = useEntitiesInfo('postType', templatePrefixes);
|
|
181
|
-
const existingTemplateSlugs = (existingTemplates || []).map(({
|
|
182
|
-
slug
|
|
183
|
-
}) => slug);
|
|
184
195
|
const menuItems = (publicPostTypes || []).reduce((accumulator, postType) => {
|
|
185
196
|
const {
|
|
186
197
|
slug,
|
|
@@ -194,7 +205,6 @@ const usePostTypeMenuItems = onClickMenuItem => {
|
|
|
194
205
|
const defaultTemplateType = defaultTemplateTypes?.find(({
|
|
195
206
|
slug: _slug
|
|
196
207
|
}) => _slug === generalTemplateSlug);
|
|
197
|
-
const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug);
|
|
198
208
|
const _needsUniqueIdentifier = needsUniqueIdentifier(postType);
|
|
199
209
|
let menuItemTitle = labels.template_name || (0, _i18n.sprintf)(
|
|
200
210
|
// translators: %s: Name of the post type e.g: "Post".
|
|
@@ -240,7 +250,7 @@ const usePostTypeMenuItems = onClickMenuItem => {
|
|
|
240
250
|
};
|
|
241
251
|
},
|
|
242
252
|
getSpecificTemplate: suggestion => {
|
|
243
|
-
const templateSlug =
|
|
253
|
+
const templateSlug = prefixSlug(templatePrefixes[slug], suggestion.slug);
|
|
244
254
|
return {
|
|
245
255
|
title: templateSlug,
|
|
246
256
|
slug: templateSlug,
|
|
@@ -249,14 +259,12 @@ const usePostTypeMenuItems = onClickMenuItem => {
|
|
|
249
259
|
}
|
|
250
260
|
},
|
|
251
261
|
labels,
|
|
252
|
-
hasGeneralTemplate,
|
|
253
262
|
template
|
|
254
263
|
});
|
|
255
264
|
};
|
|
256
265
|
}
|
|
257
|
-
// We don't need to add the menu item if there are no
|
|
258
|
-
|
|
259
|
-
if (!hasGeneralTemplate || hasEntities) {
|
|
266
|
+
// We don't need to add the menu item if there are no entities.
|
|
267
|
+
if (hasEntities) {
|
|
260
268
|
accumulator.push(menuItem);
|
|
261
269
|
}
|
|
262
270
|
return accumulator;
|
|
@@ -370,7 +378,7 @@ const useTaxonomiesMenuItems = onClickMenuItem => {
|
|
|
370
378
|
};
|
|
371
379
|
},
|
|
372
380
|
getSpecificTemplate: suggestion => {
|
|
373
|
-
const templateSlug =
|
|
381
|
+
const templateSlug = prefixSlug(templatePrefixes[slug], suggestion.slug);
|
|
374
382
|
return {
|
|
375
383
|
title: templateSlug,
|
|
376
384
|
slug: templateSlug,
|
|
@@ -456,9 +464,11 @@ function useAuthorMenuItem(onClickMenuItem) {
|
|
|
456
464
|
};
|
|
457
465
|
},
|
|
458
466
|
getSpecificTemplate: suggestion => {
|
|
459
|
-
const templateSlug =
|
|
467
|
+
const templateSlug = prefixSlug('author', suggestion.slug);
|
|
460
468
|
return {
|
|
461
|
-
title:
|
|
469
|
+
title: (0, _i18n.sprintf)(
|
|
470
|
+
// translators: %s: Name of the author e.g: "Admin".
|
|
471
|
+
(0, _i18n.__)('Author: %s'), suggestion.name),
|
|
462
472
|
slug: templateSlug,
|
|
463
473
|
templatePrefix: 'author'
|
|
464
474
|
};
|
|
@@ -480,68 +490,6 @@ function useAuthorMenuItem(onClickMenuItem) {
|
|
|
480
490
|
}
|
|
481
491
|
}
|
|
482
492
|
|
|
483
|
-
/**
|
|
484
|
-
* Helper hook that filters all the existing templates by the given
|
|
485
|
-
* object with the entity's slug as key and the template prefix as value.
|
|
486
|
-
*
|
|
487
|
-
* Example:
|
|
488
|
-
* `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]
|
|
489
|
-
* `templatePrefixes` is: { post_tag: 'tag' }
|
|
490
|
-
* It will return: { post_tag: ['apple'] }
|
|
491
|
-
*
|
|
492
|
-
* Note: We append the `-` to the given template prefix in this function for our checks.
|
|
493
|
-
*
|
|
494
|
-
* @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.
|
|
495
|
-
* @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.
|
|
496
|
-
*/
|
|
497
|
-
const useExistingTemplateSlugs = templatePrefixes => {
|
|
498
|
-
const existingTemplates = useExistingTemplates();
|
|
499
|
-
const existingSlugs = (0, _element.useMemo)(() => {
|
|
500
|
-
return Object.entries(templatePrefixes || {}).reduce((accumulator, [slug, prefix]) => {
|
|
501
|
-
const slugsWithTemplates = (existingTemplates || []).reduce((_accumulator, existingTemplate) => {
|
|
502
|
-
const _prefix = `${prefix}-`;
|
|
503
|
-
if (existingTemplate.slug.startsWith(_prefix)) {
|
|
504
|
-
_accumulator.push(existingTemplate.slug.substring(_prefix.length));
|
|
505
|
-
}
|
|
506
|
-
return _accumulator;
|
|
507
|
-
}, []);
|
|
508
|
-
if (slugsWithTemplates.length) {
|
|
509
|
-
accumulator[slug] = slugsWithTemplates;
|
|
510
|
-
}
|
|
511
|
-
return accumulator;
|
|
512
|
-
}, {});
|
|
513
|
-
}, [templatePrefixes, existingTemplates]);
|
|
514
|
-
return existingSlugs;
|
|
515
|
-
};
|
|
516
|
-
|
|
517
|
-
/**
|
|
518
|
-
* Helper hook that finds the existing records with an associated template,
|
|
519
|
-
* as they need to be excluded from the template suggestions.
|
|
520
|
-
*
|
|
521
|
-
* @param {string} entityName The entity's name.
|
|
522
|
-
* @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.
|
|
523
|
-
* @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.
|
|
524
|
-
* @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.
|
|
525
|
-
*/
|
|
526
|
-
const useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryParameters = {}) => {
|
|
527
|
-
const slugsToExcludePerEntity = useExistingTemplateSlugs(templatePrefixes);
|
|
528
|
-
const recordsToExcludePerEntity = (0, _data.useSelect)(select => {
|
|
529
|
-
return Object.entries(slugsToExcludePerEntity || {}).reduce((accumulator, [slug, slugsWithTemplates]) => {
|
|
530
|
-
const entitiesWithTemplates = select(_coreData.store).getEntityRecords(entityName, slug, {
|
|
531
|
-
_fields: 'id',
|
|
532
|
-
context: 'view',
|
|
533
|
-
slug: slugsWithTemplates,
|
|
534
|
-
...additionalQueryParameters[slug]
|
|
535
|
-
});
|
|
536
|
-
if (entitiesWithTemplates?.length) {
|
|
537
|
-
accumulator[slug] = entitiesWithTemplates;
|
|
538
|
-
}
|
|
539
|
-
return accumulator;
|
|
540
|
-
}, {});
|
|
541
|
-
}, [slugsToExcludePerEntity]);
|
|
542
|
-
return recordsToExcludePerEntity;
|
|
543
|
-
};
|
|
544
|
-
|
|
545
493
|
/**
|
|
546
494
|
* Helper hook that returns information about an entity having
|
|
547
495
|
* records that we can create a specific template for.
|
|
@@ -558,34 +506,25 @@ const useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryPara
|
|
|
558
506
|
* @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.
|
|
559
507
|
*/
|
|
560
508
|
const useEntitiesInfo = (entityName, templatePrefixes, additionalQueryParameters = EMPTY_OBJECT) => {
|
|
561
|
-
const recordsToExcludePerEntity = useTemplatesToExclude(entityName, templatePrefixes, additionalQueryParameters);
|
|
562
509
|
const entitiesHasRecords = (0, _data.useSelect)(select => {
|
|
563
510
|
return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
|
|
564
|
-
const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
|
|
565
|
-
id
|
|
566
|
-
}) => id) || [];
|
|
567
511
|
accumulator[slug] = !!select(_coreData.store).getEntityRecords(entityName, slug, {
|
|
568
512
|
per_page: 1,
|
|
569
513
|
_fields: 'id',
|
|
570
514
|
context: 'view',
|
|
571
|
-
exclude: existingEntitiesIds,
|
|
572
515
|
...additionalQueryParameters[slug]
|
|
573
516
|
})?.length;
|
|
574
517
|
return accumulator;
|
|
575
518
|
}, {});
|
|
576
|
-
}, [templatePrefixes,
|
|
519
|
+
}, [templatePrefixes, entityName, additionalQueryParameters]);
|
|
577
520
|
const entitiesInfo = (0, _element.useMemo)(() => {
|
|
578
521
|
return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
|
|
579
|
-
const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
|
|
580
|
-
id
|
|
581
|
-
}) => id) || [];
|
|
582
522
|
accumulator[slug] = {
|
|
583
|
-
hasEntities: entitiesHasRecords[slug]
|
|
584
|
-
existingEntitiesIds
|
|
523
|
+
hasEntities: entitiesHasRecords[slug]
|
|
585
524
|
};
|
|
586
525
|
return accumulator;
|
|
587
526
|
}, {});
|
|
588
|
-
}, [templatePrefixes,
|
|
527
|
+
}, [templatePrefixes, entitiesHasRecords]);
|
|
589
528
|
return entitiesInfo;
|
|
590
529
|
};
|
|
591
530
|
//# sourceMappingURL=utils.js.map
|