@wordpress/edit-site 6.0.3 → 6.0.4
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/add-new-page/index.js +7 -1
- package/build/components/add-new-page/index.js.map +1 -1
- package/build/components/add-new-pattern/index.js +30 -16
- package/build/components/add-new-pattern/index.js.map +1 -1
- package/build/components/page-pages/index.js +38 -6
- package/build/components/page-pages/index.js.map +1 -1
- package/build/components/page-patterns/index.js +8 -2
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/page-templates/index.js +10 -3
- package/build/components/page-templates/index.js.map +1 -1
- package/build/components/sidebar-dataviews/default-views.js +4 -4
- package/build/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +20 -88
- package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
- package/build-module/components/add-new-page/index.js +8 -2
- package/build-module/components/add-new-page/index.js.map +1 -1
- package/build-module/components/add-new-pattern/index.js +30 -16
- package/build-module/components/add-new-pattern/index.js.map +1 -1
- package/build-module/components/page-pages/index.js +38 -6
- package/build-module/components/page-pages/index.js.map +1 -1
- package/build-module/components/page-patterns/index.js +8 -2
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/page-templates/index.js +10 -3
- package/build-module/components/page-templates/index.js.map +1 -1
- package/build-module/components/sidebar-dataviews/default-views.js +5 -5
- package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +19 -86
- package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
- package/build-style/style-rtl.css +13 -12
- package/build-style/style.css +13 -12
- package/package.json +17 -17
- package/src/components/add-new-page/index.js +14 -1
- package/src/components/add-new-pattern/index.js +37 -23
- package/src/components/block-editor/style.scss +0 -11
- package/src/components/page-pages/index.js +45 -11
- package/src/components/page-patterns/index.js +8 -2
- package/src/components/page-templates/index.js +9 -2
- package/src/components/sidebar-dataviews/default-views.js +13 -5
- package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +1 -875
- package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +29 -117
- package/src/style.scss +13 -0
|
@@ -181,8 +181,10 @@ export default function PageTemplates() {
|
|
|
181
181
|
} = useLocation();
|
|
182
182
|
const {
|
|
183
183
|
activeView = 'all',
|
|
184
|
-
layout
|
|
184
|
+
layout,
|
|
185
|
+
postId
|
|
185
186
|
} = params;
|
|
187
|
+
const [selection, setSelection] = useState([postId]);
|
|
186
188
|
const defaultView = useMemo(() => {
|
|
187
189
|
const usedType = layout !== null && layout !== void 0 ? layout : DEFAULT_VIEW.type;
|
|
188
190
|
return {
|
|
@@ -310,7 +312,10 @@ export default function PageTemplates() {
|
|
|
310
312
|
} = useMemo(() => {
|
|
311
313
|
return filterSortAndPaginate(records, view, fields);
|
|
312
314
|
}, [records, view, fields]);
|
|
313
|
-
const postTypeActions = usePostActions(
|
|
315
|
+
const postTypeActions = usePostActions({
|
|
316
|
+
postType: TEMPLATE_POST_TYPE,
|
|
317
|
+
context: 'list'
|
|
318
|
+
});
|
|
314
319
|
const editAction = useEditPostAction();
|
|
315
320
|
const actions = useMemo(() => [editAction, ...postTypeActions], [postTypeActions, editAction]);
|
|
316
321
|
const onChangeView = useCallback(newView => {
|
|
@@ -340,7 +345,9 @@ export default function PageTemplates() {
|
|
|
340
345
|
isLoading: isLoadingData,
|
|
341
346
|
view: view,
|
|
342
347
|
onChangeView: onChangeView,
|
|
343
|
-
onSelectionChange: onSelectionChange
|
|
348
|
+
onSelectionChange: onSelectionChange,
|
|
349
|
+
selection: selection,
|
|
350
|
+
setSelection: setSelection
|
|
344
351
|
})
|
|
345
352
|
});
|
|
346
353
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","Icon","__experimentalText","Text","__experimentalHStack","HStack","VisuallyHidden","__","useState","useMemo","useCallback","useEffect","useEntityRecords","decodeEntities","parse","BlockPreview","privateApis","blockEditorPrivateApis","DataViews","filterSortAndPaginate","routerPrivateApis","editorPrivateApis","Async","Page","default","Link","useLink","AddNewTemplate","useAddedBy","TEMPLATE_POST_TYPE","OPERATOR_IS_ANY","LAYOUT_GRID","LAYOUT_TABLE","LAYOUT_LIST","usePatternSettings","unlock","useEditPostAction","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","usePostActions","ExperimentalBlockEditorProvider","useGlobalStyle","useHistory","useLocation","EMPTY_ARRAY","defaultConfigPerViewType","primaryField","mediaField","columnFields","DEFAULT_VIEW","type","search","page","perPage","sort","field","direction","hiddenFields","layout","filters","Title","item","viewType","title","rendered","linkProps","params","postId","id","postType","canvas","children","AuthorField","isImageLoaded","setIsImageLoaded","text","icon","imageUrl","withIcon","alignment","spacing","className","onLoad","alt","src","Preview","settings","backgroundColor","blocks","content","raw","onClick","isEmpty","length","style","PageTemplates","activeView","defaultView","usedType","operator","value","view","setView","currentView","records","isResolving","isLoadingData","per_page","history","onSelectionChange","items","push","undefined","authors","authorsSet","Set","forEach","template","add","author_text","Array","from","map","author","label","fields","header","render","minWidth","maxWidth","enableSorting","getValue","enableHiding","enableGlobalSearch","description","variant","elements","width","data","paginationInfo","postTypeActions","editAction","actions","onChangeView","newView","isLoading"],"sources":["@wordpress/edit-site/src/components/page-templates/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { Async } from '../async';\nimport Page from '../page';\nimport { default as Link, useLink } from '../routes/link';\nimport AddNewTemplate from '../add-new-template';\nimport { useAddedBy } from './hooks';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tOPERATOR_IS_ANY,\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n} from '../../utils/constants';\n\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport { useEditPostAction } from '../dataviews-actions';\n\nconst { usePostActions } = unlock( editorPrivateApis );\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nconst defaultConfigPerViewType = {\n\t[ LAYOUT_TABLE ]: {\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'preview',\n\t\tprimaryField: 'title',\n\t\tcolumnFields: [ 'description' ],\n\t},\n\t[ LAYOUT_LIST ]: {\n\t\tprimaryField: 'title',\n\t\tmediaField: 'preview',\n\t},\n};\n\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'title',\n\t\tdirection: 'asc',\n\t},\n\t// All fields are visible by default, so it's\n\t// better to keep track of the hidden ones.\n\thiddenFields: [ 'preview' ],\n\tlayout: defaultConfigPerViewType[ LAYOUT_GRID ],\n\tfilters: [],\n};\n\nfunction Title( { item, viewType } ) {\n\tif ( viewType === LAYOUT_LIST ) {\n\t\treturn decodeEntities( item.title?.rendered ) || __( '(no title)' );\n\t}\n\tconst linkProps = {\n\t\tparams: {\n\t\t\tpostId: item.id,\n\t\t\tpostType: item.type,\n\t\t\tcanvas: 'edit',\n\t\t},\n\t};\n\treturn (\n\t\t<Link { ...linkProps }>\n\t\t\t{ decodeEntities( item.title?.rendered ) || __( '(no title)' ) }\n\t\t</Link>\n\t);\n}\n\nfunction AuthorField( { item, viewType } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\tconst withIcon = viewType !== LAYOUT_LIST;\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 1 }>\n\t\t\t{ withIcon && imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ withIcon && ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nfunction Preview( { item, viewType } ) {\n\tconst settings = usePatternSettings();\n\tconst [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\tconst { onClick } = useLink( {\n\t\tpostId: item.id,\n\t\tpostType: item.type,\n\t\tcanvas: 'edit',\n\t} );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName={ `page-templates-preview-field is-viewtype-${ viewType }` }\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t{ viewType === LAYOUT_LIST && ! isEmpty && (\n\t\t\t\t\t<Async>\n\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t</Async>\n\t\t\t\t) }\n\t\t\t\t{ viewType !== LAYOUT_LIST && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"page-templates-preview-field__button\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\taria-label={ item.title?.rendered || item.title }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isEmpty && __( 'Empty template' ) }\n\t\t\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t\t\t<Async>\n\t\t\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t\t\t</Async>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n\nexport default function PageTemplates() {\n\tconst { params } = useLocation();\n\tconst { activeView = 'all', layout } = params;\n\tconst defaultView = useMemo( () => {\n\t\tconst usedType = layout ?? DEFAULT_VIEW.type;\n\t\treturn {\n\t\t\t...DEFAULT_VIEW,\n\t\t\ttype: usedType,\n\t\t\tlayout: defaultConfigPerViewType[ usedType ],\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: 'isAny',\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t};\n\t}, [ layout, activeView ] );\n\tconst [ view, setView ] = useState( defaultView );\n\tuseEffect( () => {\n\t\tsetView( ( currentView ) => ( {\n\t\t\t...currentView,\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t} ) );\n\t}, [ activeView ] );\n\n\tconst { records, isResolving: isLoadingData } = useEntityRecords(\n\t\t'postType',\n\t\tTEMPLATE_POST_TYPE,\n\t\t{\n\t\t\tper_page: -1,\n\t\t}\n\t);\n\tconst history = useHistory();\n\tconst onSelectionChange = useCallback(\n\t\t( items ) => {\n\t\t\tif ( view?.type === LAYOUT_LIST ) {\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tpostId: items.length === 1 ? items[ 0 ].id : undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ history, params, view?.type ]\n\t);\n\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\theader: __( 'Preview' ),\n\t\t\t\tid: 'preview',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <Preview item={ item } viewType={ view.type } />;\n\t\t\t\t},\n\t\t\t\tminWidth: 120,\n\t\t\t\tmaxWidth: 120,\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Template' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title?.rendered,\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Title item={ item } viewType={ view.type } />\n\t\t\t\t),\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tenableHiding: false,\n\t\t\t\tenableGlobalSearch: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Description' ),\n\t\t\t\tid: 'description',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn item.description ? (\n\t\t\t\t\t\t<span className=\"page-templates-description\">\n\t\t\t\t\t\t\t{ decodeEntities( item.description ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tview.type === LAYOUT_TABLE && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Text variant=\"muted\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t—\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t\t\t\t{ __( 'No description.' ) }\n\t\t\t\t\t\t\t\t</VisuallyHidden>\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\tmaxWidth: 400,\n\t\t\t\tminWidth: 320,\n\t\t\t\tenableSorting: false,\n\t\t\t\tenableGlobalSearch: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\tgetValue: ( { item } ) => item.author_text,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <AuthorField viewType={ view.type } item={ item } />;\n\t\t\t\t},\n\t\t\t\telements: authors,\n\t\t\t\twidth: '1%',\n\t\t\t},\n\t\t],\n\t\t[ authors, view.type ]\n\t);\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\treturn filterSortAndPaginate( records, view, fields );\n\t}, [ records, view, fields ] );\n\n\tconst postTypeActions = usePostActions( TEMPLATE_POST_TYPE );\n\tconst editAction = useEditPostAction();\n\tconst actions = useMemo(\n\t\t() => [ editAction, ...postTypeActions ],\n\t\t[ postTypeActions, editAction ]\n\t);\n\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\tnewView = {\n\t\t\t\t\t...newView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ newView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tlayout: newView.type,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView, history, params ]\n\t);\n\n\treturn (\n\t\t<Page\n\t\t\tclassName=\"edit-site-page-templates\"\n\t\t\ttitle={ __( 'Templates' ) }\n\t\t\tactions={ <AddNewTemplate /> }\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tisLoading={ isLoadingData }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","Icon","__experimentalText","Text","__experimentalHStack","HStack","VisuallyHidden","__","useState","useMemo","useCallback","useEffect","useEntityRecords","decodeEntities","parse","BlockPreview","privateApis","blockEditorPrivateApis","DataViews","filterSortAndPaginate","routerPrivateApis","editorPrivateApis","Async","Page","default","Link","useLink","AddNewTemplate","useAddedBy","TEMPLATE_POST_TYPE","OPERATOR_IS_ANY","LAYOUT_GRID","LAYOUT_TABLE","LAYOUT_LIST","usePatternSettings","unlock","useEditPostAction","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","usePostActions","ExperimentalBlockEditorProvider","useGlobalStyle","useHistory","useLocation","EMPTY_ARRAY","defaultConfigPerViewType","primaryField","mediaField","columnFields","DEFAULT_VIEW","type","search","page","perPage","sort","field","direction","hiddenFields","layout","filters","Title","item","viewType","title","rendered","linkProps","params","postId","id","postType","canvas","children","AuthorField","isImageLoaded","setIsImageLoaded","text","icon","imageUrl","withIcon","alignment","spacing","className","onLoad","alt","src","Preview","settings","backgroundColor","blocks","content","raw","onClick","isEmpty","length","style","PageTemplates","activeView","selection","setSelection","defaultView","usedType","operator","value","view","setView","currentView","records","isResolving","isLoadingData","per_page","history","onSelectionChange","items","push","undefined","authors","authorsSet","Set","forEach","template","add","author_text","Array","from","map","author","label","fields","header","render","minWidth","maxWidth","enableSorting","getValue","enableHiding","enableGlobalSearch","description","variant","elements","width","data","paginationInfo","postTypeActions","context","editAction","actions","onChangeView","newView","isLoading"],"sources":["@wordpress/edit-site/src/components/page-templates/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { Async } from '../async';\nimport Page from '../page';\nimport { default as Link, useLink } from '../routes/link';\nimport AddNewTemplate from '../add-new-template';\nimport { useAddedBy } from './hooks';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tOPERATOR_IS_ANY,\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n} from '../../utils/constants';\n\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport { useEditPostAction } from '../dataviews-actions';\n\nconst { usePostActions } = unlock( editorPrivateApis );\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nconst defaultConfigPerViewType = {\n\t[ LAYOUT_TABLE ]: {\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'preview',\n\t\tprimaryField: 'title',\n\t\tcolumnFields: [ 'description' ],\n\t},\n\t[ LAYOUT_LIST ]: {\n\t\tprimaryField: 'title',\n\t\tmediaField: 'preview',\n\t},\n};\n\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'title',\n\t\tdirection: 'asc',\n\t},\n\t// All fields are visible by default, so it's\n\t// better to keep track of the hidden ones.\n\thiddenFields: [ 'preview' ],\n\tlayout: defaultConfigPerViewType[ LAYOUT_GRID ],\n\tfilters: [],\n};\n\nfunction Title( { item, viewType } ) {\n\tif ( viewType === LAYOUT_LIST ) {\n\t\treturn decodeEntities( item.title?.rendered ) || __( '(no title)' );\n\t}\n\tconst linkProps = {\n\t\tparams: {\n\t\t\tpostId: item.id,\n\t\t\tpostType: item.type,\n\t\t\tcanvas: 'edit',\n\t\t},\n\t};\n\treturn (\n\t\t<Link { ...linkProps }>\n\t\t\t{ decodeEntities( item.title?.rendered ) || __( '(no title)' ) }\n\t\t</Link>\n\t);\n}\n\nfunction AuthorField( { item, viewType } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\tconst withIcon = viewType !== LAYOUT_LIST;\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 1 }>\n\t\t\t{ withIcon && imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ withIcon && ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nfunction Preview( { item, viewType } ) {\n\tconst settings = usePatternSettings();\n\tconst [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\tconst { onClick } = useLink( {\n\t\tpostId: item.id,\n\t\tpostType: item.type,\n\t\tcanvas: 'edit',\n\t} );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName={ `page-templates-preview-field is-viewtype-${ viewType }` }\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t{ viewType === LAYOUT_LIST && ! isEmpty && (\n\t\t\t\t\t<Async>\n\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t</Async>\n\t\t\t\t) }\n\t\t\t\t{ viewType !== LAYOUT_LIST && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"page-templates-preview-field__button\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\taria-label={ item.title?.rendered || item.title }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isEmpty && __( 'Empty template' ) }\n\t\t\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t\t\t<Async>\n\t\t\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t\t\t</Async>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n\nexport default function PageTemplates() {\n\tconst { params } = useLocation();\n\tconst { activeView = 'all', layout, postId } = params;\n\tconst [ selection, setSelection ] = useState( [ postId ] );\n\n\tconst defaultView = useMemo( () => {\n\t\tconst usedType = layout ?? DEFAULT_VIEW.type;\n\t\treturn {\n\t\t\t...DEFAULT_VIEW,\n\t\t\ttype: usedType,\n\t\t\tlayout: defaultConfigPerViewType[ usedType ],\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: 'isAny',\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t};\n\t}, [ layout, activeView ] );\n\tconst [ view, setView ] = useState( defaultView );\n\tuseEffect( () => {\n\t\tsetView( ( currentView ) => ( {\n\t\t\t...currentView,\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t} ) );\n\t}, [ activeView ] );\n\n\tconst { records, isResolving: isLoadingData } = useEntityRecords(\n\t\t'postType',\n\t\tTEMPLATE_POST_TYPE,\n\t\t{\n\t\t\tper_page: -1,\n\t\t}\n\t);\n\tconst history = useHistory();\n\tconst onSelectionChange = useCallback(\n\t\t( items ) => {\n\t\t\tif ( view?.type === LAYOUT_LIST ) {\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tpostId: items.length === 1 ? items[ 0 ].id : undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ history, params, view?.type ]\n\t);\n\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\theader: __( 'Preview' ),\n\t\t\t\tid: 'preview',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <Preview item={ item } viewType={ view.type } />;\n\t\t\t\t},\n\t\t\t\tminWidth: 120,\n\t\t\t\tmaxWidth: 120,\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Template' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title?.rendered,\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Title item={ item } viewType={ view.type } />\n\t\t\t\t),\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tenableHiding: false,\n\t\t\t\tenableGlobalSearch: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Description' ),\n\t\t\t\tid: 'description',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn item.description ? (\n\t\t\t\t\t\t<span className=\"page-templates-description\">\n\t\t\t\t\t\t\t{ decodeEntities( item.description ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tview.type === LAYOUT_TABLE && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Text variant=\"muted\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t—\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t\t\t\t{ __( 'No description.' ) }\n\t\t\t\t\t\t\t\t</VisuallyHidden>\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\tmaxWidth: 400,\n\t\t\t\tminWidth: 320,\n\t\t\t\tenableSorting: false,\n\t\t\t\tenableGlobalSearch: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\tgetValue: ( { item } ) => item.author_text,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <AuthorField viewType={ view.type } item={ item } />;\n\t\t\t\t},\n\t\t\t\telements: authors,\n\t\t\t\twidth: '1%',\n\t\t\t},\n\t\t],\n\t\t[ authors, view.type ]\n\t);\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\treturn filterSortAndPaginate( records, view, fields );\n\t}, [ records, view, fields ] );\n\n\tconst postTypeActions = usePostActions( {\n\t\tpostType: TEMPLATE_POST_TYPE,\n\t\tcontext: 'list',\n\t} );\n\tconst editAction = useEditPostAction();\n\tconst actions = useMemo(\n\t\t() => [ editAction, ...postTypeActions ],\n\t\t[ postTypeActions, editAction ]\n\t);\n\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\tnewView = {\n\t\t\t\t\t...newView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ newView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tlayout: newView.type,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView, history, params ]\n\t);\n\n\treturn (\n\t\t<Page\n\t\t\tclassName=\"edit-site-page-templates\"\n\t\t\ttitle={ __( 'Templates' ) }\n\t\t\tactions={ <AddNewTemplate /> }\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tisLoading={ isLoadingData }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\tselection={ selection }\n\t\t\t\tsetSelection={ setSelection }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
|
-
import { trash, pages, drafts,
|
|
5
|
+
import { trash, pages, drafts, published, scheduled, pending, notAllowed } from '@wordpress/icons';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Internal dependencies
|
|
@@ -47,7 +47,7 @@ export const DEFAULT_VIEWS = {
|
|
|
47
47
|
}, {
|
|
48
48
|
title: __('Published'),
|
|
49
49
|
slug: 'published',
|
|
50
|
-
icon:
|
|
50
|
+
icon: published,
|
|
51
51
|
view: {
|
|
52
52
|
...DEFAULT_PAGE_BASE,
|
|
53
53
|
filters: [{
|
|
@@ -59,7 +59,7 @@ export const DEFAULT_VIEWS = {
|
|
|
59
59
|
}, {
|
|
60
60
|
title: __('Scheduled'),
|
|
61
61
|
slug: 'future',
|
|
62
|
-
icon:
|
|
62
|
+
icon: scheduled,
|
|
63
63
|
view: {
|
|
64
64
|
...DEFAULT_PAGE_BASE,
|
|
65
65
|
filters: [{
|
|
@@ -83,7 +83,7 @@ export const DEFAULT_VIEWS = {
|
|
|
83
83
|
}, {
|
|
84
84
|
title: __('Pending'),
|
|
85
85
|
slug: 'pending',
|
|
86
|
-
icon:
|
|
86
|
+
icon: pending,
|
|
87
87
|
view: {
|
|
88
88
|
...DEFAULT_PAGE_BASE,
|
|
89
89
|
filters: [{
|
|
@@ -95,7 +95,7 @@ export const DEFAULT_VIEWS = {
|
|
|
95
95
|
}, {
|
|
96
96
|
title: __('Private'),
|
|
97
97
|
slug: 'private',
|
|
98
|
-
icon:
|
|
98
|
+
icon: notAllowed,
|
|
99
99
|
view: {
|
|
100
100
|
...DEFAULT_PAGE_BASE,
|
|
101
101
|
filters: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","trash","pages","drafts","
|
|
1
|
+
{"version":3,"names":["__","trash","pages","drafts","published","scheduled","pending","notAllowed","LAYOUT_LIST","LAYOUT_TABLE","LAYOUT_GRID","OPERATOR_IS_ANY","DEFAULT_CONFIG_PER_VIEW_TYPE","primaryField","mediaField","DEFAULT_PAGE_BASE","type","search","filters","page","perPage","sort","field","direction","hiddenFields","layout","DEFAULT_VIEWS","title","slug","icon","view","operator","value"],"sources":["@wordpress/edit-site/src/components/sidebar-dataviews/default-views.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\ttrash,\n\tpages,\n\tdrafts,\n\tpublished,\n\tscheduled,\n\tpending,\n\tnotAllowed,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport {\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_GRID,\n\tOPERATOR_IS_ANY,\n} from '../../utils/constants';\n\nexport const DEFAULT_CONFIG_PER_VIEW_TYPE = {\n\t[ LAYOUT_TABLE ]: {\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'featured-image',\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_LIST ]: {\n\t\tprimaryField: 'title',\n\t\tmediaField: 'featured-image',\n\t},\n};\n\nconst DEFAULT_PAGE_BASE = {\n\ttype: LAYOUT_LIST,\n\tsearch: '',\n\tfilters: [],\n\tpage: 1,\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'date',\n\t\tdirection: 'desc',\n\t},\n\t// All fields are visible by default, so it's\n\t// better to keep track of the hidden ones.\n\thiddenFields: [ 'date', 'featured-image' ],\n\tlayout: {\n\t\t...DEFAULT_CONFIG_PER_VIEW_TYPE[ LAYOUT_LIST ],\n\t},\n};\n\nexport const DEFAULT_VIEWS = {\n\tpage: [\n\t\t{\n\t\t\ttitle: __( 'All pages' ),\n\t\t\tslug: 'all',\n\t\t\ticon: pages,\n\t\t\tview: DEFAULT_PAGE_BASE,\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Published' ),\n\t\t\tslug: 'published',\n\t\t\ticon: published,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_PAGE_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'publish',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Scheduled' ),\n\t\t\tslug: 'future',\n\t\t\ticon: scheduled,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_PAGE_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'future',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Drafts' ),\n\t\t\tslug: 'drafts',\n\t\t\ticon: drafts,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_PAGE_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'draft',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Pending' ),\n\t\t\tslug: 'pending',\n\t\t\ticon: pending,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_PAGE_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'pending',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Private' ),\n\t\t\tslug: 'private',\n\t\t\ticon: notAllowed,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_PAGE_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'private',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Trash' ),\n\t\t\tslug: 'trash',\n\t\t\ticon: trash,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_PAGE_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'trash',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n};\n"],"mappings":"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","ignoreList":[]}
|
package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js
CHANGED
|
@@ -45,17 +45,15 @@ export function removePropertyFromObject(object, property) {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
49
|
-
* and
|
|
48
|
+
* Fetches the current theme style variations that contain only the specified property
|
|
49
|
+
* and merges them with the user config.
|
|
50
50
|
*
|
|
51
|
-
* @param {Object}
|
|
52
|
-
* @param {string}
|
|
53
|
-
* @param {Function} props.filter Optional. The filter function to apply to the variations.
|
|
51
|
+
* @param {Object} props Object of hook args.
|
|
52
|
+
* @param {string} props.property The property to filter by.
|
|
54
53
|
* @return {Object[]|*} The merged object.
|
|
55
54
|
*/
|
|
56
55
|
export function useCurrentMergeThemeStyleVariationsWithUserConfig({
|
|
57
|
-
property
|
|
58
|
-
filter
|
|
56
|
+
property
|
|
59
57
|
}) {
|
|
60
58
|
const {
|
|
61
59
|
variationsFromTheme
|
|
@@ -66,21 +64,21 @@ export function useCurrentMergeThemeStyleVariationsWithUserConfig({
|
|
|
66
64
|
};
|
|
67
65
|
}, []);
|
|
68
66
|
const {
|
|
69
|
-
user:
|
|
67
|
+
user: userVariation
|
|
70
68
|
} = useContext(GlobalStylesContext);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
});
|
|
69
|
+
return useMemo(() => {
|
|
70
|
+
const clonedUserVariation = cloneDeep(userVariation);
|
|
71
|
+
|
|
72
|
+
// Get user variation and remove the settings for the given property.
|
|
73
|
+
const userVariationWithoutProperty = removePropertyFromObject(clonedUserVariation, property);
|
|
74
|
+
userVariationWithoutProperty.title = __('Default');
|
|
75
|
+
const variationsWithSinglePropertyAndBase = variationsFromTheme.filter(variation => {
|
|
76
|
+
return isVariationWithSingleProperty(variation, property);
|
|
77
|
+
}).map(variation => {
|
|
78
|
+
return mergeBaseAndUserConfigs(userVariationWithoutProperty, variation);
|
|
79
|
+
});
|
|
80
|
+
return [userVariationWithoutProperty, ...variationsWithSinglePropertyAndBase];
|
|
81
|
+
}, [property, userVariation, variationsFromTheme]);
|
|
84
82
|
}
|
|
85
83
|
|
|
86
84
|
/**
|
|
@@ -111,71 +109,6 @@ export const filterObjectByProperty = (object, property) => {
|
|
|
111
109
|
return newObject;
|
|
112
110
|
};
|
|
113
111
|
|
|
114
|
-
/**
|
|
115
|
-
* Returns a new object with only the properties specified in `property`.
|
|
116
|
-
* Optional merges the baseVariation object with the variation object.
|
|
117
|
-
* Note: this function will only overwrite the specified property in baseVariation if it exists.
|
|
118
|
-
* The baseVariation will not be otherwise modified. To strip a property from the baseVariation object, use `removePropertyFromObject`.
|
|
119
|
-
* See useCurrentMergeThemeStyleVariationsWithUserConfig for an example of how to use this function.
|
|
120
|
-
*
|
|
121
|
-
* @param {Object} props Object of hook args.
|
|
122
|
-
* @param {Object[]} props.variations The theme style variations to filter.
|
|
123
|
-
* @param {string} props.property The property to filter by.
|
|
124
|
-
* @param {Function} props.filter Optional. The filter function to apply to the variations.
|
|
125
|
-
* @param {Object} props.baseVariation Optional. Base or user settings to be updated with variation properties.
|
|
126
|
-
* @return {Object[]|*} The merged object.
|
|
127
|
-
*/
|
|
128
|
-
export default function useThemeStyleVariationsByProperty({
|
|
129
|
-
variations,
|
|
130
|
-
property,
|
|
131
|
-
filter,
|
|
132
|
-
baseVariation
|
|
133
|
-
}) {
|
|
134
|
-
return useMemo(() => {
|
|
135
|
-
if (!property || !variations || variations?.length === 0) {
|
|
136
|
-
return variations;
|
|
137
|
-
}
|
|
138
|
-
const clonedBaseVariation = typeof baseVariation === 'object' && Object.keys(baseVariation).length > 0 ? cloneDeep(baseVariation) : null;
|
|
139
|
-
let processedStyleVariations = variations.reduce((accumulator, variation) => {
|
|
140
|
-
const variationFilteredByProperty = filterObjectByProperty(cloneDeep(variation), property);
|
|
141
|
-
|
|
142
|
-
// Remove variations that are empty once the property is filtered out.
|
|
143
|
-
if (variation.title !== __('Default') && Object.keys(variationFilteredByProperty).length === 0) {
|
|
144
|
-
return accumulator;
|
|
145
|
-
}
|
|
146
|
-
let result = {
|
|
147
|
-
...variationFilteredByProperty,
|
|
148
|
-
title: variation?.title,
|
|
149
|
-
description: variation?.description
|
|
150
|
-
};
|
|
151
|
-
if (clonedBaseVariation) {
|
|
152
|
-
/*
|
|
153
|
-
* Overwrites all baseVariation object `styleProperty` properties
|
|
154
|
-
* with the theme variation `styleProperty` properties.
|
|
155
|
-
*/
|
|
156
|
-
result = mergeBaseAndUserConfigs(clonedBaseVariation, result);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Detect if this is a duplicate variation.
|
|
160
|
-
const isDuplicate = accumulator.some(item => {
|
|
161
|
-
return JSON.stringify(item.styles) === JSON.stringify(result?.styles) && JSON.stringify(item.settings) === JSON.stringify(result?.settings);
|
|
162
|
-
});
|
|
163
|
-
if (isDuplicate) {
|
|
164
|
-
return accumulator;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// If the variation is not a duplicate, add it to the accumulator.
|
|
168
|
-
accumulator.push(result);
|
|
169
|
-
return accumulator;
|
|
170
|
-
}, [] // Initial accumulator value.
|
|
171
|
-
);
|
|
172
|
-
if ('function' === typeof filter) {
|
|
173
|
-
processedStyleVariations = processedStyleVariations.filter(filter);
|
|
174
|
-
}
|
|
175
|
-
return processedStyleVariations;
|
|
176
|
-
}, [variations, property, baseVariation, filter]);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
112
|
/**
|
|
180
113
|
* Compares a style variation to the same variation filtered by a single property.
|
|
181
114
|
* Returns true if the variation contains only the property specified.
|
package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSelect","store","coreStore","useContext","useMemo","privateApis","blockEditorPrivateApis","editorPrivateApis","__","cloneDeep","unlock","GlobalStylesContext","mergeBaseAndUserConfigs","removePropertyFromObject","object","property","Object","keys","length","key","useCurrentMergeThemeStyleVariationsWithUserConfig","filter","variationsFromTheme","select","_variationsFromTheme","__experimentalGetCurrentThemeGlobalStylesVariations","user","baseVariation","variations","title","settings","styles","useThemeStyleVariationsByProperty","filterObjectByProperty","newObject","forEach","newFilter","clonedBaseVariation","processedStyleVariations","reduce","accumulator","variation","variationFilteredByProperty","result","description","isDuplicate","some","item","JSON","stringify","push","isVariationWithSingleProperty","variationWithProperty"],"sources":["@wordpress/edit-site/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport cloneDeep from '../../utils/clone-deep';\nimport { unlock } from '../../lock-unlock';\n\nconst { GlobalStylesContext } = unlock( blockEditorPrivateApis );\nconst { mergeBaseAndUserConfigs } = unlock( editorPrivateApis );\n\n/**\n * Removes all instances of a property from an object.\n *\n * @param {Object} object The object to remove the property from.\n * @param {string} property The property to remove.\n * @return {Object} The modified object.\n */\nexport function removePropertyFromObject( object, property ) {\n\tif ( ! property || typeof property !== 'string' ) {\n\t\treturn object;\n\t}\n\n\tif (\n\t\ttypeof object !== 'object' ||\n\t\t! object ||\n\t\t! Object.keys( object ).length\n\t) {\n\t\treturn object;\n\t}\n\n\tfor ( const key in object ) {\n\t\tif ( key === property ) {\n\t\t\tdelete object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tremovePropertyFromObject( object[ key ], property );\n\t\t}\n\t}\n\treturn object;\n}\n\n/**\n * A convenience wrapper for `useThemeStyleVariationsByProperty()` that fetches the current theme style variations,\n * and user-defined global style/settings object.\n *\n * @param {Object} props Object of hook args.\n * @param {string} props.property The property to filter by.\n * @param {Function} props.filter Optional. The filter function to apply to the variations.\n * @return {Object[]|*} The merged object.\n */\nexport function useCurrentMergeThemeStyleVariationsWithUserConfig( {\n\tproperty,\n\tfilter,\n} ) {\n\tconst { variationsFromTheme } = useSelect( ( select ) => {\n\t\tconst _variationsFromTheme =\n\t\t\tselect(\n\t\t\t\tcoreStore\n\t\t\t).__experimentalGetCurrentThemeGlobalStylesVariations();\n\n\t\treturn {\n\t\t\tvariationsFromTheme: _variationsFromTheme || [],\n\t\t};\n\t}, [] );\n\tconst { user: baseVariation } = useContext( GlobalStylesContext );\n\n\tconst variations = useMemo( () => {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttitle: __( 'Default' ),\n\t\t\t\tsettings: {},\n\t\t\t\tstyles: {},\n\t\t\t},\n\t\t\t...variationsFromTheme,\n\t\t];\n\t}, [ variationsFromTheme ] );\n\n\treturn useThemeStyleVariationsByProperty( {\n\t\tvariations,\n\t\tproperty,\n\t\tfilter,\n\t\tbaseVariation: removePropertyFromObject(\n\t\t\tcloneDeep( baseVariation ),\n\t\t\tproperty\n\t\t),\n\t} );\n}\n\n/**\n * Returns a new object, with properties specified in `property`,\n * maintain the original object tree structure.\n * The function is recursive, so it will perform a deep search for the given property.\n * E.g., the function will return `{ a: { b: { c: { test: 1 } } } }` if the property is `test`.\n *\n * @param {Object} object The object to filter\n * @param {Object} property The property to filter by\n * @return {Object} The merged object.\n */\nexport const filterObjectByProperty = ( object, property ) => {\n\tif ( ! object ) {\n\t\treturn {};\n\t}\n\n\tconst newObject = {};\n\tObject.keys( object ).forEach( ( key ) => {\n\t\tif ( key === property ) {\n\t\t\tnewObject[ key ] = object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tconst newFilter = filterObjectByProperty( object[ key ], property );\n\t\t\tif ( Object.keys( newFilter ).length ) {\n\t\t\t\tnewObject[ key ] = newFilter;\n\t\t\t}\n\t\t}\n\t} );\n\treturn newObject;\n};\n\n/**\n * Returns a new object with only the properties specified in `property`.\n * Optional merges the baseVariation object with the variation object.\n * Note: this function will only overwrite the specified property in baseVariation if it exists.\n * The baseVariation will not be otherwise modified. To strip a property from the baseVariation object, use `removePropertyFromObject`.\n * See useCurrentMergeThemeStyleVariationsWithUserConfig for an example of how to use this function.\n *\n * @param {Object} props Object of hook args.\n * @param {Object[]} props.variations The theme style variations to filter.\n * @param {string} props.property The property to filter by.\n * @param {Function} props.filter Optional. The filter function to apply to the variations.\n * @param {Object} props.baseVariation Optional. Base or user settings to be updated with variation properties.\n * @return {Object[]|*} The merged object.\n */\nexport default function useThemeStyleVariationsByProperty( {\n\tvariations,\n\tproperty,\n\tfilter,\n\tbaseVariation,\n} ) {\n\treturn useMemo( () => {\n\t\tif ( ! property || ! variations || variations?.length === 0 ) {\n\t\t\treturn variations;\n\t\t}\n\n\t\tconst clonedBaseVariation =\n\t\t\ttypeof baseVariation === 'object' &&\n\t\t\tObject.keys( baseVariation ).length > 0\n\t\t\t\t? cloneDeep( baseVariation )\n\t\t\t\t: null;\n\n\t\tlet processedStyleVariations = variations.reduce(\n\t\t\t( accumulator, variation ) => {\n\t\t\t\tconst variationFilteredByProperty = filterObjectByProperty(\n\t\t\t\t\tcloneDeep( variation ),\n\t\t\t\t\tproperty\n\t\t\t\t);\n\n\t\t\t\t// Remove variations that are empty once the property is filtered out.\n\t\t\t\tif (\n\t\t\t\t\tvariation.title !== __( 'Default' ) &&\n\t\t\t\t\tObject.keys( variationFilteredByProperty ).length === 0\n\t\t\t\t) {\n\t\t\t\t\treturn accumulator;\n\t\t\t\t}\n\n\t\t\t\tlet result = {\n\t\t\t\t\t...variationFilteredByProperty,\n\t\t\t\t\ttitle: variation?.title,\n\t\t\t\t\tdescription: variation?.description,\n\t\t\t\t};\n\n\t\t\t\tif ( clonedBaseVariation ) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Overwrites all baseVariation object `styleProperty` properties\n\t\t\t\t\t * with the theme variation `styleProperty` properties.\n\t\t\t\t\t */\n\t\t\t\t\tresult = mergeBaseAndUserConfigs(\n\t\t\t\t\t\tclonedBaseVariation,\n\t\t\t\t\t\tresult\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Detect if this is a duplicate variation.\n\t\t\t\tconst isDuplicate = accumulator.some( ( item ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tJSON.stringify( item.styles ) ===\n\t\t\t\t\t\t\tJSON.stringify( result?.styles ) &&\n\t\t\t\t\t\tJSON.stringify( item.settings ) ===\n\t\t\t\t\t\t\tJSON.stringify( result?.settings )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t\tif ( isDuplicate ) {\n\t\t\t\t\treturn accumulator;\n\t\t\t\t}\n\n\t\t\t\t// If the variation is not a duplicate, add it to the accumulator.\n\t\t\t\taccumulator.push( result );\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t[] // Initial accumulator value.\n\t\t);\n\n\t\tif ( 'function' === typeof filter ) {\n\t\t\tprocessedStyleVariations =\n\t\t\t\tprocessedStyleVariations.filter( filter );\n\t\t}\n\n\t\treturn processedStyleVariations;\n\t}, [ variations, property, baseVariation, filter ] );\n}\n\n/**\n * Compares a style variation to the same variation filtered by a single property.\n * Returns true if the variation contains only the property specified.\n *\n * @param {Object} variation The variation to compare.\n * @param {string} property The property to compare.\n * @return {boolean} Whether the variation contains only a single property.\n */\nexport function isVariationWithSingleProperty( variation, property ) {\n\tconst variationWithProperty = filterObjectByProperty(\n\t\tcloneDeep( variation ),\n\t\tproperty\n\t);\n\n\treturn (\n\t\tJSON.stringify( variationWithProperty?.styles ) ===\n\t\t\tJSON.stringify( variation?.styles ) &&\n\t\tJSON.stringify( variationWithProperty?.settings ) ===\n\t\t\tJSON.stringify( variation?.settings )\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useSelect","store","coreStore","useContext","useMemo","privateApis","blockEditorPrivateApis","editorPrivateApis","__","cloneDeep","unlock","GlobalStylesContext","mergeBaseAndUserConfigs","removePropertyFromObject","object","property","Object","keys","length","key","useCurrentMergeThemeStyleVariationsWithUserConfig","variationsFromTheme","select","_variationsFromTheme","__experimentalGetCurrentThemeGlobalStylesVariations","user","userVariation","clonedUserVariation","userVariationWithoutProperty","title","variationsWithSinglePropertyAndBase","filter","variation","isVariationWithSingleProperty","map","filterObjectByProperty","newObject","forEach","newFilter","variationWithProperty","JSON","stringify","styles","settings"],"sources":["@wordpress/edit-site/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport cloneDeep from '../../utils/clone-deep';\nimport { unlock } from '../../lock-unlock';\n\nconst { GlobalStylesContext } = unlock( blockEditorPrivateApis );\nconst { mergeBaseAndUserConfigs } = unlock( editorPrivateApis );\n\n/**\n * Removes all instances of a property from an object.\n *\n * @param {Object} object The object to remove the property from.\n * @param {string} property The property to remove.\n * @return {Object} The modified object.\n */\nexport function removePropertyFromObject( object, property ) {\n\tif ( ! property || typeof property !== 'string' ) {\n\t\treturn object;\n\t}\n\n\tif (\n\t\ttypeof object !== 'object' ||\n\t\t! object ||\n\t\t! Object.keys( object ).length\n\t) {\n\t\treturn object;\n\t}\n\n\tfor ( const key in object ) {\n\t\tif ( key === property ) {\n\t\t\tdelete object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tremovePropertyFromObject( object[ key ], property );\n\t\t}\n\t}\n\treturn object;\n}\n\n/**\n * Fetches the current theme style variations that contain only the specified property\n * and merges them with the user config.\n *\n * @param {Object} props Object of hook args.\n * @param {string} props.property The property to filter by.\n * @return {Object[]|*} The merged object.\n */\nexport function useCurrentMergeThemeStyleVariationsWithUserConfig( {\n\tproperty,\n} ) {\n\tconst { variationsFromTheme } = useSelect( ( select ) => {\n\t\tconst _variationsFromTheme =\n\t\t\tselect(\n\t\t\t\tcoreStore\n\t\t\t).__experimentalGetCurrentThemeGlobalStylesVariations();\n\n\t\treturn {\n\t\t\tvariationsFromTheme: _variationsFromTheme || [],\n\t\t};\n\t}, [] );\n\tconst { user: userVariation } = useContext( GlobalStylesContext );\n\n\treturn useMemo( () => {\n\t\tconst clonedUserVariation = cloneDeep( userVariation );\n\n\t\t// Get user variation and remove the settings for the given property.\n\t\tconst userVariationWithoutProperty = removePropertyFromObject(\n\t\t\tclonedUserVariation,\n\t\t\tproperty\n\t\t);\n\t\tuserVariationWithoutProperty.title = __( 'Default' );\n\n\t\tconst variationsWithSinglePropertyAndBase = variationsFromTheme\n\t\t\t.filter( ( variation ) => {\n\t\t\t\treturn isVariationWithSingleProperty( variation, property );\n\t\t\t} )\n\t\t\t.map( ( variation ) => {\n\t\t\t\treturn mergeBaseAndUserConfigs(\n\t\t\t\t\tuserVariationWithoutProperty,\n\t\t\t\t\tvariation\n\t\t\t\t);\n\t\t\t} );\n\n\t\treturn [\n\t\t\tuserVariationWithoutProperty,\n\t\t\t...variationsWithSinglePropertyAndBase,\n\t\t];\n\t}, [ property, userVariation, variationsFromTheme ] );\n}\n\n/**\n * Returns a new object, with properties specified in `property`,\n * maintain the original object tree structure.\n * The function is recursive, so it will perform a deep search for the given property.\n * E.g., the function will return `{ a: { b: { c: { test: 1 } } } }` if the property is `test`.\n *\n * @param {Object} object The object to filter\n * @param {Object} property The property to filter by\n * @return {Object} The merged object.\n */\nexport const filterObjectByProperty = ( object, property ) => {\n\tif ( ! object ) {\n\t\treturn {};\n\t}\n\n\tconst newObject = {};\n\tObject.keys( object ).forEach( ( key ) => {\n\t\tif ( key === property ) {\n\t\t\tnewObject[ key ] = object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tconst newFilter = filterObjectByProperty( object[ key ], property );\n\t\t\tif ( Object.keys( newFilter ).length ) {\n\t\t\t\tnewObject[ key ] = newFilter;\n\t\t\t}\n\t\t}\n\t} );\n\treturn newObject;\n};\n\n/**\n * Compares a style variation to the same variation filtered by a single property.\n * Returns true if the variation contains only the property specified.\n *\n * @param {Object} variation The variation to compare.\n * @param {string} property The property to compare.\n * @return {boolean} Whether the variation contains only a single property.\n */\nexport function isVariationWithSingleProperty( variation, property ) {\n\tconst variationWithProperty = filterObjectByProperty(\n\t\tcloneDeep( variation ),\n\t\tproperty\n\t);\n\n\treturn (\n\t\tJSON.stringify( variationWithProperty?.styles ) ===\n\t\t\tJSON.stringify( variation?.styles ) &&\n\t\tJSON.stringify( variationWithProperty?.settings ) ===\n\t\t\tJSON.stringify( variation?.settings )\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1114,18 +1114,6 @@
|
|
|
1114
1114
|
align-items: flex-start;
|
|
1115
1115
|
}
|
|
1116
1116
|
|
|
1117
|
-
/* stylelint-disable -- Disable reason: View Transitions not supported properly by stylelint. */
|
|
1118
|
-
::view-transition-old(frame),
|
|
1119
|
-
::view-transition-new(frame) {
|
|
1120
|
-
animation-duration: 0;
|
|
1121
|
-
}
|
|
1122
|
-
|
|
1123
|
-
/* stylelint-enable */
|
|
1124
|
-
.edit-site-visual-editor__editor-canvas {
|
|
1125
|
-
/* stylelint-disable -- Disable reason: View Transitions not supported properly by stylelint. */
|
|
1126
|
-
view-transition-name: frame;
|
|
1127
|
-
/* stylelint-enable */
|
|
1128
|
-
}
|
|
1129
1117
|
.edit-site-visual-editor__editor-canvas.is-focused {
|
|
1130
1118
|
outline: calc(2 * var(--wp-admin-border-width-focus)) solid var(--wp-admin-theme-color);
|
|
1131
1119
|
outline-offset: calc(-2 * var(--wp-admin-border-width-focus));
|
|
@@ -3137,6 +3125,19 @@ button.font-library-modal__upload-area {
|
|
|
3137
3125
|
outline-color: var(--wp-admin-theme-color);
|
|
3138
3126
|
}
|
|
3139
3127
|
|
|
3128
|
+
/* stylelint-disable -- Disable reason: View Transitions not supported properly by stylelint. */
|
|
3129
|
+
::view-transition-image-pair(root) {
|
|
3130
|
+
isolation: auto;
|
|
3131
|
+
}
|
|
3132
|
+
|
|
3133
|
+
::view-transition-old(root),
|
|
3134
|
+
::view-transition-new(root) {
|
|
3135
|
+
animation: none;
|
|
3136
|
+
mix-blend-mode: normal;
|
|
3137
|
+
display: block;
|
|
3138
|
+
}
|
|
3139
|
+
|
|
3140
|
+
/* stylelint-enable */
|
|
3140
3141
|
body.js #wpadminbar {
|
|
3141
3142
|
display: none;
|
|
3142
3143
|
}
|
package/build-style/style.css
CHANGED
|
@@ -1114,18 +1114,6 @@
|
|
|
1114
1114
|
align-items: flex-start;
|
|
1115
1115
|
}
|
|
1116
1116
|
|
|
1117
|
-
/* stylelint-disable -- Disable reason: View Transitions not supported properly by stylelint. */
|
|
1118
|
-
::view-transition-old(frame),
|
|
1119
|
-
::view-transition-new(frame) {
|
|
1120
|
-
animation-duration: 0;
|
|
1121
|
-
}
|
|
1122
|
-
|
|
1123
|
-
/* stylelint-enable */
|
|
1124
|
-
.edit-site-visual-editor__editor-canvas {
|
|
1125
|
-
/* stylelint-disable -- Disable reason: View Transitions not supported properly by stylelint. */
|
|
1126
|
-
view-transition-name: frame;
|
|
1127
|
-
/* stylelint-enable */
|
|
1128
|
-
}
|
|
1129
1117
|
.edit-site-visual-editor__editor-canvas.is-focused {
|
|
1130
1118
|
outline: calc(2 * var(--wp-admin-border-width-focus)) solid var(--wp-admin-theme-color);
|
|
1131
1119
|
outline-offset: calc(-2 * var(--wp-admin-border-width-focus));
|
|
@@ -3138,6 +3126,19 @@ button.font-library-modal__upload-area {
|
|
|
3138
3126
|
outline-color: var(--wp-admin-theme-color);
|
|
3139
3127
|
}
|
|
3140
3128
|
|
|
3129
|
+
/* stylelint-disable -- Disable reason: View Transitions not supported properly by stylelint. */
|
|
3130
|
+
::view-transition-image-pair(root) {
|
|
3131
|
+
isolation: auto;
|
|
3132
|
+
}
|
|
3133
|
+
|
|
3134
|
+
::view-transition-old(root),
|
|
3135
|
+
::view-transition-new(root) {
|
|
3136
|
+
animation: none;
|
|
3137
|
+
mix-blend-mode: normal;
|
|
3138
|
+
display: block;
|
|
3139
|
+
}
|
|
3140
|
+
|
|
3141
|
+
/* stylelint-enable */
|
|
3141
3142
|
body.js #wpadminbar {
|
|
3142
3143
|
display: none;
|
|
3143
3144
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/edit-site",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.4",
|
|
4
4
|
"description": "Edit Site Page module for WordPress.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -32,41 +32,41 @@
|
|
|
32
32
|
"@wordpress/a11y": "^4.0.1",
|
|
33
33
|
"@wordpress/api-fetch": "^7.0.1",
|
|
34
34
|
"@wordpress/blob": "^4.0.1",
|
|
35
|
-
"@wordpress/block-editor": "^13.0.
|
|
36
|
-
"@wordpress/block-library": "^9.0.
|
|
37
|
-
"@wordpress/blocks": "^13.0.
|
|
38
|
-
"@wordpress/commands": "^1.0.
|
|
39
|
-
"@wordpress/components": "^28.0.
|
|
35
|
+
"@wordpress/block-editor": "^13.0.3",
|
|
36
|
+
"@wordpress/block-library": "^9.0.4",
|
|
37
|
+
"@wordpress/blocks": "^13.0.3",
|
|
38
|
+
"@wordpress/commands": "^1.0.3",
|
|
39
|
+
"@wordpress/components": "^28.0.3",
|
|
40
40
|
"@wordpress/compose": "^7.0.1",
|
|
41
|
-
"@wordpress/core-commands": "^1.0.
|
|
42
|
-
"@wordpress/core-data": "^7.0.
|
|
41
|
+
"@wordpress/core-commands": "^1.0.3",
|
|
42
|
+
"@wordpress/core-data": "^7.0.3",
|
|
43
43
|
"@wordpress/data": "^10.0.2",
|
|
44
|
-
"@wordpress/dataviews": "^2.0.
|
|
44
|
+
"@wordpress/dataviews": "^2.0.3",
|
|
45
45
|
"@wordpress/date": "^5.0.1",
|
|
46
46
|
"@wordpress/deprecated": "^4.0.1",
|
|
47
47
|
"@wordpress/dom": "^4.0.1",
|
|
48
|
-
"@wordpress/editor": "^14.0.
|
|
48
|
+
"@wordpress/editor": "^14.0.3",
|
|
49
49
|
"@wordpress/element": "^6.0.1",
|
|
50
50
|
"@wordpress/escape-html": "^3.0.1",
|
|
51
51
|
"@wordpress/hooks": "^4.0.1",
|
|
52
52
|
"@wordpress/html-entities": "^4.0.1",
|
|
53
53
|
"@wordpress/i18n": "^5.0.1",
|
|
54
|
-
"@wordpress/icons": "^10.0.
|
|
54
|
+
"@wordpress/icons": "^10.0.2",
|
|
55
55
|
"@wordpress/keyboard-shortcuts": "^5.0.2",
|
|
56
56
|
"@wordpress/keycodes": "^4.0.1",
|
|
57
57
|
"@wordpress/notices": "^5.0.2",
|
|
58
|
-
"@wordpress/patterns": "^2.0.
|
|
59
|
-
"@wordpress/plugins": "^7.0.
|
|
60
|
-
"@wordpress/preferences": "^4.0.
|
|
58
|
+
"@wordpress/patterns": "^2.0.3",
|
|
59
|
+
"@wordpress/plugins": "^7.0.3",
|
|
60
|
+
"@wordpress/preferences": "^4.0.3",
|
|
61
61
|
"@wordpress/primitives": "^4.0.1",
|
|
62
62
|
"@wordpress/priority-queue": "^3.0.1",
|
|
63
63
|
"@wordpress/private-apis": "^1.0.2",
|
|
64
|
-
"@wordpress/reusable-blocks": "^5.0.
|
|
64
|
+
"@wordpress/reusable-blocks": "^5.0.3",
|
|
65
65
|
"@wordpress/router": "^1.0.2",
|
|
66
66
|
"@wordpress/style-engine": "^2.0.2",
|
|
67
67
|
"@wordpress/url": "^4.0.1",
|
|
68
68
|
"@wordpress/viewport": "^6.0.2",
|
|
69
|
-
"@wordpress/widgets": "^4.0.
|
|
69
|
+
"@wordpress/widgets": "^4.0.3",
|
|
70
70
|
"@wordpress/wordcount": "^4.0.1",
|
|
71
71
|
"change-case": "^4.1.2",
|
|
72
72
|
"clsx": "^2.1.1",
|
|
@@ -82,5 +82,5 @@
|
|
|
82
82
|
"publishConfig": {
|
|
83
83
|
"access": "public"
|
|
84
84
|
},
|
|
85
|
-
"gitHead": "
|
|
85
|
+
"gitHead": "9dd5f8dcfa4fc7242e5d48be20ee789ad087b432"
|
|
86
86
|
}
|
|
@@ -9,11 +9,12 @@ import {
|
|
|
9
9
|
TextControl,
|
|
10
10
|
} from '@wordpress/components';
|
|
11
11
|
import { __, sprintf } from '@wordpress/i18n';
|
|
12
|
-
import { useDispatch } from '@wordpress/data';
|
|
12
|
+
import { useDispatch, useRegistry } from '@wordpress/data';
|
|
13
13
|
import { useState } from '@wordpress/element';
|
|
14
14
|
import { store as coreStore } from '@wordpress/core-data';
|
|
15
15
|
import { store as noticesStore } from '@wordpress/notices';
|
|
16
16
|
import { decodeEntities } from '@wordpress/html-entities';
|
|
17
|
+
import { serialize, synchronizeBlocksWithTemplate } from '@wordpress/blocks';
|
|
17
18
|
|
|
18
19
|
export default function AddNewPageModal( { onSave, onClose } ) {
|
|
19
20
|
const [ isCreatingPage, setIsCreatingPage ] = useState( false );
|
|
@@ -22,6 +23,7 @@ export default function AddNewPageModal( { onSave, onClose } ) {
|
|
|
22
23
|
const { saveEntityRecord } = useDispatch( coreStore );
|
|
23
24
|
const { createErrorNotice, createSuccessNotice } =
|
|
24
25
|
useDispatch( noticesStore );
|
|
26
|
+
const { resolveSelect } = useRegistry();
|
|
25
27
|
|
|
26
28
|
async function createPage( event ) {
|
|
27
29
|
event.preventDefault();
|
|
@@ -31,6 +33,8 @@ export default function AddNewPageModal( { onSave, onClose } ) {
|
|
|
31
33
|
}
|
|
32
34
|
setIsCreatingPage( true );
|
|
33
35
|
try {
|
|
36
|
+
const pagePostType =
|
|
37
|
+
await resolveSelect( coreStore ).getPostType( 'page' );
|
|
34
38
|
const newPage = await saveEntityRecord(
|
|
35
39
|
'postType',
|
|
36
40
|
'page',
|
|
@@ -38,6 +42,15 @@ export default function AddNewPageModal( { onSave, onClose } ) {
|
|
|
38
42
|
status: 'draft',
|
|
39
43
|
title,
|
|
40
44
|
slug: title || __( 'No title' ),
|
|
45
|
+
content:
|
|
46
|
+
!! pagePostType.template && pagePostType.template.length
|
|
47
|
+
? serialize(
|
|
48
|
+
synchronizeBlocksWithTemplate(
|
|
49
|
+
[],
|
|
50
|
+
pagePostType.template
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
: undefined,
|
|
41
54
|
},
|
|
42
55
|
{ throwOnError: true }
|
|
43
56
|
);
|