@wordpress/editor 12.0.12 → 12.0.15
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/entities-saved-states/entity-record-item.js +3 -1
- package/build/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build/components/entities-saved-states/index.js +20 -3
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/post-publish-button/index.js +10 -6
- package/build/components/post-publish-button/index.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-record-item.js +2 -1
- package/build-module/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build-module/components/entities-saved-states/index.js +19 -3
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/post-publish-button/index.js +10 -6
- package/build-module/components/post-publish-button/index.js.map +1 -1
- package/package.json +14 -14
- package/src/components/entities-saved-states/entity-record-item.js +5 -1
- package/src/components/entities-saved-states/index.js +32 -6
- package/src/components/post-publish-button/index.js +12 -3
|
@@ -17,6 +17,8 @@ var _blockEditor = require("@wordpress/block-editor");
|
|
|
17
17
|
|
|
18
18
|
var _coreData = require("@wordpress/core-data");
|
|
19
19
|
|
|
20
|
+
var _htmlEntities = require("@wordpress/html-entities");
|
|
21
|
+
|
|
20
22
|
var _store = require("../../store");
|
|
21
23
|
|
|
22
24
|
/**
|
|
@@ -74,7 +76,7 @@ function EntityRecordItem(_ref) {
|
|
|
74
76
|
closePanel();
|
|
75
77
|
}, [parentBlockId]);
|
|
76
78
|
return (0, _element.createElement)(_components.PanelRow, null, (0, _element.createElement)(_components.CheckboxControl, {
|
|
77
|
-
label: (0, _element.createElement)("strong", null, entityRecordTitle || (0, _i18n.__)('Untitled')),
|
|
79
|
+
label: (0, _element.createElement)("strong", null, (0, _htmlEntities.decodeEntities)(entityRecordTitle) || (0, _i18n.__)('Untitled')),
|
|
78
80
|
checked: checked,
|
|
79
81
|
onChange: onChange
|
|
80
82
|
}), parentBlockId ? (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/entity-record-item.js"],"names":["EntityRecordItem","record","checked","onChange","closePanel","name","kind","title","key","parentBlockId","select","blocks","coreStore","getEditedEntityRecord","parents","blockEditorStore","getBlockParents","clientId","length","entityRecordTitle","template","editorStore","__experimentalGetTemplateInfo","isSelected","selectedBlockId","getSelectedBlockClientId","isSelectedText","selectBlock","selectParentBlock","selectAndDismiss"],"mappings":";;;;;;;AAMA;;AAHA;;AACA;;AACA;;AAEA;;AACA;;AAKA;;
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/entity-record-item.js"],"names":["EntityRecordItem","record","checked","onChange","closePanel","name","kind","title","key","parentBlockId","select","blocks","coreStore","getEditedEntityRecord","parents","blockEditorStore","getBlockParents","clientId","length","entityRecordTitle","template","editorStore","__experimentalGetTemplateInfo","isSelected","selectedBlockId","getSelectedBlockClientId","isSelectedText","selectBlock","selectParentBlock","selectAndDismiss"],"mappings":";;;;;;;AAMA;;AAHA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAKA;;AAdA;AACA;AACA;;AASA;AACA;AACA;AAGe,SAASA,gBAAT,OAKX;AAAA,MALsC;AACzCC,IAAAA,MADyC;AAEzCC,IAAAA,OAFyC;AAGzCC,IAAAA,QAHyC;AAIzCC,IAAAA;AAJyC,GAKtC;AACH,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcC,IAAAA,KAAd;AAAqBC,IAAAA;AAArB,MAA6BP,MAAnC;AACA,QAAMQ,aAAa,GAAG,qBAAaC,MAAF,IAAc;AAAA;;AAC9C;AACA,UAAM;AAAEC,MAAAA,MAAM,GAAG;AAAX,QAAkBD,MAAM,CAAEE,eAAF,CAAN,CAAoBC,qBAApB,CACvBP,IADuB,EAEvBD,IAFuB,EAGvBG,GAHuB,CAAxB,CAF8C,CAO9C;;AACA,UAAMM,OAAO,GAAGJ,MAAM,CAAEK,kBAAF,CAAN,CAA2BC,eAA3B,aACfL,MAAM,CAAE,CAAF,CADS,6CACf,SAAaM,QADE,CAAhB,CAR8C,CAW9C;;AACA,WAAOH,OAAO,CAAEA,OAAO,CAACI,MAAR,GAAiB,CAAnB,CAAd;AACA,GAbqB,EAanB,EAbmB,CAAtB,CAFG,CAiBH;;AACA,QAAMC,iBAAiB,GAAG,qBACvBT,MAAF,IAAc;AACb,QAAK,eAAeJ,IAAf,IAAuB,kBAAkBD,IAA9C,EAAqD;AACpD,aAAOE,KAAP;AACA;;AAED,UAAMa,QAAQ,GAAGV,MAAM,CAAEE,eAAF,CAAN,CAAoBC,qBAApB,CAChBP,IADgB,EAEhBD,IAFgB,EAGhBG,GAHgB,CAAjB;AAKA,WAAOE,MAAM,CAAEW,YAAF,CAAN,CAAsBC,6BAAtB,CACNF,QADM,EAELb,KAFF;AAGA,GAdwB,EAezB,CAAEF,IAAF,EAAQC,IAAR,EAAcC,KAAd,EAAqBC,GAArB,CAfyB,CAA1B;AAkBA,QAAMe,UAAU,GAAG,qBAChBb,MAAF,IAAc;AACb,UAAMc,eAAe,GAAGd,MAAM,CAC7BK,kBAD6B,CAAN,CAEtBU,wBAFsB,EAAxB;AAGA,WAAOD,eAAe,KAAKf,aAA3B;AACA,GANiB,EAOlB,CAAEA,aAAF,CAPkB,CAAnB;AASA,QAAMiB,cAAc,GAAGH,UAAU,GAAG,cAAI,UAAJ,CAAH,GAAsB,cAAI,QAAJ,CAAvD;AACA,QAAM;AAAEI,IAAAA;AAAF,MAAkB,uBAAaZ,kBAAb,CAAxB;AACA,QAAMa,iBAAiB,GAAG,0BAAa,MAAMD,WAAW,CAAElB,aAAF,CAA9B,EAAiD,CAC1EA,aAD0E,CAAjD,CAA1B;AAGA,QAAMoB,gBAAgB,GAAG,0BAAa,MAAM;AAC3CF,IAAAA,WAAW,CAAElB,aAAF,CAAX;AACAL,IAAAA,UAAU;AACV,GAHwB,EAGtB,CAAEK,aAAF,CAHsB,CAAzB;AAKA,SACC,4BAAC,oBAAD,QACC,4BAAC,2BAAD;AACC,IAAA,KAAK,EACJ,4CACG,kCAAgBU,iBAAhB,KACD,cAAI,UAAJ,CAFF,CAFF;AAOC,IAAA,OAAO,EAAGjB,OAPX;AAQC,IAAA,QAAQ,EAAGC;AARZ,IADD,EAWGM,aAAa,GACd,qDACC,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAGmB,iBADX;AAEC,IAAA,SAAS,EAAC,oCAFX;AAGC,IAAA,QAAQ,EAAGL;AAHZ,KAKGG,cALH,CADD,EAQC,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAGG,gBADX;AAEC,IAAA,SAAS,EAAC,0CAFX;AAGC,IAAA,QAAQ,EAAGN;AAHZ,KAKGG,cALH,CARD,CADc,GAiBX,IA5BL,CADD;AAgCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { CheckboxControl, Button, PanelRow } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function EntityRecordItem( {\n\trecord,\n\tchecked,\n\tonChange,\n\tclosePanel,\n} ) {\n\tconst { name, kind, title, key } = record;\n\tconst parentBlockId = useSelect( ( select ) => {\n\t\t// Get entity's blocks.\n\t\tconst { blocks = [] } = select( coreStore ).getEditedEntityRecord(\n\t\t\tkind,\n\t\t\tname,\n\t\t\tkey\n\t\t);\n\t\t// Get parents of the entity's first block.\n\t\tconst parents = select( blockEditorStore ).getBlockParents(\n\t\t\tblocks[ 0 ]?.clientId\n\t\t);\n\t\t// Return closest parent block's clientId.\n\t\treturn parents[ parents.length - 1 ];\n\t}, [] );\n\n\t// Handle templates that might use default descriptive titles\n\tconst entityRecordTitle = useSelect(\n\t\t( select ) => {\n\t\t\tif ( 'postType' !== kind || 'wp_template' !== name ) {\n\t\t\t\treturn title;\n\t\t\t}\n\n\t\t\tconst template = select( coreStore ).getEditedEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\tkey\n\t\t\t);\n\t\t\treturn select( editorStore ).__experimentalGetTemplateInfo(\n\t\t\t\ttemplate\n\t\t\t).title;\n\t\t},\n\t\t[ name, kind, title, key ]\n\t);\n\n\tconst isSelected = useSelect(\n\t\t( select ) => {\n\t\t\tconst selectedBlockId = select(\n\t\t\t\tblockEditorStore\n\t\t\t).getSelectedBlockClientId();\n\t\t\treturn selectedBlockId === parentBlockId;\n\t\t},\n\t\t[ parentBlockId ]\n\t);\n\tconst isSelectedText = isSelected ? __( 'Selected' ) : __( 'Select' );\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst selectParentBlock = useCallback( () => selectBlock( parentBlockId ), [\n\t\tparentBlockId,\n\t] );\n\tconst selectAndDismiss = useCallback( () => {\n\t\tselectBlock( parentBlockId );\n\t\tclosePanel();\n\t}, [ parentBlockId ] );\n\n\treturn (\n\t\t<PanelRow>\n\t\t\t<CheckboxControl\n\t\t\t\tlabel={\n\t\t\t\t\t<strong>\n\t\t\t\t\t\t{ decodeEntities( entityRecordTitle ) ||\n\t\t\t\t\t\t\t__( 'Untitled' ) }\n\t\t\t\t\t</strong>\n\t\t\t\t}\n\t\t\t\tchecked={ checked }\n\t\t\t\tonChange={ onChange }\n\t\t\t/>\n\t\t\t{ parentBlockId ? (\n\t\t\t\t<>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ selectParentBlock }\n\t\t\t\t\t\tclassName=\"entities-saved-states__find-entity\"\n\t\t\t\t\t\tdisabled={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isSelectedText }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ selectAndDismiss }\n\t\t\t\t\t\tclassName=\"entities-saved-states__find-entity-small\"\n\t\t\t\t\t\tdisabled={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isSelectedText }\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t) : null }\n\t\t</PanelRow>\n\t);\n}\n"]}
|
|
@@ -25,6 +25,8 @@ var _compose = require("@wordpress/compose");
|
|
|
25
25
|
|
|
26
26
|
var _icons = require("@wordpress/icons");
|
|
27
27
|
|
|
28
|
+
var _notices = require("@wordpress/notices");
|
|
29
|
+
|
|
28
30
|
var _entityTypeList = _interopRequireDefault(require("./entity-type-list"));
|
|
29
31
|
|
|
30
32
|
/**
|
|
@@ -83,7 +85,11 @@ function EntitiesSavedStates(_ref) {
|
|
|
83
85
|
editEntityRecord,
|
|
84
86
|
saveEditedEntityRecord,
|
|
85
87
|
__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits
|
|
86
|
-
} = (0, _data.useDispatch)(_coreData.store);
|
|
88
|
+
} = (0, _data.useDispatch)(_coreData.store);
|
|
89
|
+
const {
|
|
90
|
+
createSuccessNotice,
|
|
91
|
+
createErrorNotice
|
|
92
|
+
} = (0, _data.useDispatch)(_notices.store); // To group entities by type.
|
|
87
93
|
|
|
88
94
|
const partitionedSavables = (0, _lodash.groupBy)(dirtyEntityRecords, 'name'); // Sort entity groups.
|
|
89
95
|
|
|
@@ -129,6 +135,7 @@ function EntitiesSavedStates(_ref) {
|
|
|
129
135
|
});
|
|
130
136
|
close(entitiesToSave);
|
|
131
137
|
const siteItemsToSave = [];
|
|
138
|
+
const pendingSavedRecords = [];
|
|
132
139
|
entitiesToSave.forEach(_ref4 => {
|
|
133
140
|
let {
|
|
134
141
|
kind,
|
|
@@ -146,13 +153,23 @@ function EntitiesSavedStates(_ref) {
|
|
|
146
153
|
});
|
|
147
154
|
}
|
|
148
155
|
|
|
149
|
-
saveEditedEntityRecord(kind, name, key);
|
|
156
|
+
pendingSavedRecords.push(saveEditedEntityRecord(kind, name, key));
|
|
150
157
|
}
|
|
151
158
|
});
|
|
152
159
|
|
|
153
160
|
if (siteItemsToSave.length) {
|
|
154
|
-
saveSpecifiedEntityEdits('root', 'site', undefined, siteItemsToSave);
|
|
161
|
+
pendingSavedRecords.push(saveSpecifiedEntityEdits('root', 'site', undefined, siteItemsToSave));
|
|
155
162
|
}
|
|
163
|
+
|
|
164
|
+
Promise.all(pendingSavedRecords).then(values => {
|
|
165
|
+
if (values.some(value => typeof value === 'undefined')) {
|
|
166
|
+
createErrorNotice((0, _i18n.__)('Saving failed.'));
|
|
167
|
+
} else {
|
|
168
|
+
createSuccessNotice((0, _i18n.__)('Site updated.'), {
|
|
169
|
+
type: 'snackbar'
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}).catch(error => createErrorNotice(`${(0, _i18n.__)('Saving failed.')} ${error}`));
|
|
156
173
|
}; // Explicitly define this with no argument passed. Using `close` on
|
|
157
174
|
// its own will use the event object in place of the expected saved entities.
|
|
158
175
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/index.js"],"names":["TRANSLATED_SITE_PROPERTIES","title","description","site_logo","show_on_front","page_on_front","PUBLISH_ON_SAVE_ENTITIES","kind","name","EntitiesSavedStates","close","saveButtonRef","dirtyEntityRecords","select","dirtyRecords","coreStore","__experimentalGetDirtyEntityRecords","dirtyRecordsWithoutSite","filter","record","siteEdits","getEntityRecordEdits","siteEditsAsEntities","property","push","dirtyRecordsWithSiteItems","editEntityRecord","saveEditedEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","partitionedSavables","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","values","Array","isArray","unselectedEntities","_setUnselectedEntities","setUnselectedEntities","checked","key","elt","saveCheckedEntities","entitiesToSave","siteItemsToSave","forEach","some","typeToPublish","status","length","undefined","dismissPanel","saveDialogRef","saveDialogProps","onClose","closeIcon","map","list"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { some, groupBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useCallback, useRef } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalUseDialog as useDialog } from '@wordpress/compose';\nimport { close as closeIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n};\n\nconst PUBLISH_ON_SAVE_ENTITIES = [\n\t{\n\t\tkind: 'postType',\n\t\tname: 'wp_navigation',\n\t},\n];\n\nexport default function EntitiesSavedStates( { close } ) {\n\tconst saveButtonRef = useRef();\n\tconst { dirtyEntityRecords } = useSelect( ( select ) => {\n\t\tconst dirtyRecords = select(\n\t\t\tcoreStore\n\t\t).__experimentalGetDirtyEntityRecords();\n\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst dirtyRecordsWithoutSite = dirtyRecords.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEdits = select( coreStore ).getEntityRecordEdits(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\n\t\tconst siteEditsAsEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\tsiteEditsAsEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\t\tconst dirtyRecordsWithSiteItems = [\n\t\t\t...dirtyRecordsWithoutSite,\n\t\t\t...siteEditsAsEntities,\n\t\t];\n\n\t\treturn {\n\t\t\tdirtyEntityRecords: dirtyRecordsWithSiteItems,\n\t\t};\n\t}, [] );\n\tconst {\n\t\teditEntityRecord,\n\t\tsaveEditedEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\t// To group entities by type.\n\tconst partitionedSavables = groupBy( dirtyEntityRecords, 'name' );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst saveCheckedEntities = () => {\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! some(\n\t\t\t\t\tunselectedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\n\t\tclose( entitiesToSave );\n\n\t\tconst siteItemsToSave = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\teditEntityRecord( kind, name, key, { status: 'publish' } );\n\t\t\t\t}\n\n\t\t\t\tsaveEditedEntityRecord( kind, name, key );\n\t\t\t}\n\t\t} );\n\t\tif ( siteItemsToSave.length ) {\n\t\t\tsaveSpecifiedEntityEdits(\n\t\t\t\t'root',\n\t\t\t\t'site',\n\t\t\t\tundefined,\n\t\t\t\tsiteItemsToSave\n\t\t\t);\n\t\t}\n\t};\n\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\n\treturn (\n\t\t<div\n\t\t\tref={ saveDialogRef }\n\t\t\t{ ...saveDialogProps }\n\t\t\tclassName=\"entities-saved-states__panel\"\n\t\t>\n\t\t\t<div className=\"entities-saved-states__panel-header\">\n\t\t\t\t<Button\n\t\t\t\t\tref={ saveButtonRef }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tdirtyEntityRecords.length -\n\t\t\t\t\t\t\tunselectedEntities.length ===\n\t\t\t\t\t\t0\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ saveCheckedEntities }\n\t\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeIcon }\n\t\t\t\t\tonClick={ dismissPanel }\n\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<strong>{ __( 'Are you ready to save?' ) }</strong>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'The following changes have been made to your site, templates, and content.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tclosePanel={ dismissPanel }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/index.js"],"names":["TRANSLATED_SITE_PROPERTIES","title","description","site_logo","show_on_front","page_on_front","PUBLISH_ON_SAVE_ENTITIES","kind","name","EntitiesSavedStates","close","saveButtonRef","dirtyEntityRecords","select","dirtyRecords","coreStore","__experimentalGetDirtyEntityRecords","dirtyRecordsWithoutSite","filter","record","siteEdits","getEntityRecordEdits","siteEditsAsEntities","property","push","dirtyRecordsWithSiteItems","editEntityRecord","saveEditedEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","createSuccessNotice","createErrorNotice","noticesStore","partitionedSavables","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","values","Array","isArray","unselectedEntities","_setUnselectedEntities","setUnselectedEntities","checked","key","elt","saveCheckedEntities","entitiesToSave","siteItemsToSave","pendingSavedRecords","forEach","some","typeToPublish","status","length","undefined","Promise","all","then","value","type","catch","error","dismissPanel","saveDialogRef","saveDialogProps","onClose","closeIcon","map","list"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { some, groupBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useCallback, useRef } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalUseDialog as useDialog } from '@wordpress/compose';\nimport { close as closeIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n};\n\nconst PUBLISH_ON_SAVE_ENTITIES = [\n\t{\n\t\tkind: 'postType',\n\t\tname: 'wp_navigation',\n\t},\n];\n\nexport default function EntitiesSavedStates( { close } ) {\n\tconst saveButtonRef = useRef();\n\tconst { dirtyEntityRecords } = useSelect( ( select ) => {\n\t\tconst dirtyRecords = select(\n\t\t\tcoreStore\n\t\t).__experimentalGetDirtyEntityRecords();\n\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst dirtyRecordsWithoutSite = dirtyRecords.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEdits = select( coreStore ).getEntityRecordEdits(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\n\t\tconst siteEditsAsEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\tsiteEditsAsEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\t\tconst dirtyRecordsWithSiteItems = [\n\t\t\t...dirtyRecordsWithoutSite,\n\t\t\t...siteEditsAsEntities,\n\t\t];\n\n\t\treturn {\n\t\t\tdirtyEntityRecords: dirtyRecordsWithSiteItems,\n\t\t};\n\t}, [] );\n\tconst {\n\t\teditEntityRecord,\n\t\tsaveEditedEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } = useDispatch(\n\t\tnoticesStore\n\t);\n\n\t// To group entities by type.\n\tconst partitionedSavables = groupBy( dirtyEntityRecords, 'name' );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst saveCheckedEntities = () => {\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! some(\n\t\t\t\t\tunselectedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\n\t\tclose( entitiesToSave );\n\n\t\tconst siteItemsToSave = [];\n\t\tconst pendingSavedRecords = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\teditEntityRecord( kind, name, key, { status: 'publish' } );\n\t\t\t\t}\n\n\t\t\t\tpendingSavedRecords.push(\n\t\t\t\t\tsaveEditedEntityRecord( kind, name, key )\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t\tif ( siteItemsToSave.length ) {\n\t\t\tpendingSavedRecords.push(\n\t\t\t\tsaveSpecifiedEntityEdits(\n\t\t\t\t\t'root',\n\t\t\t\t\t'site',\n\t\t\t\t\tundefined,\n\t\t\t\t\tsiteItemsToSave\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tPromise.all( pendingSavedRecords )\n\t\t\t.then( ( values ) => {\n\t\t\t\tif (\n\t\t\t\t\tvalues.some( ( value ) => typeof value === 'undefined' )\n\t\t\t\t) {\n\t\t\t\t\tcreateErrorNotice( __( 'Saving failed.' ) );\n\t\t\t\t} else {\n\t\t\t\t\tcreateSuccessNotice( __( 'Site updated.' ), {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( ( error ) =>\n\t\t\t\tcreateErrorNotice( `${ __( 'Saving failed.' ) } ${ error }` )\n\t\t\t);\n\t};\n\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\n\treturn (\n\t\t<div\n\t\t\tref={ saveDialogRef }\n\t\t\t{ ...saveDialogProps }\n\t\t\tclassName=\"entities-saved-states__panel\"\n\t\t>\n\t\t\t<div className=\"entities-saved-states__panel-header\">\n\t\t\t\t<Button\n\t\t\t\t\tref={ saveButtonRef }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tdirtyEntityRecords.length -\n\t\t\t\t\t\t\tunselectedEntities.length ===\n\t\t\t\t\t\t0\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ saveCheckedEntities }\n\t\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeIcon }\n\t\t\t\t\tonClick={ dismissPanel }\n\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<strong>{ __( 'Are you ready to save?' ) }</strong>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'The following changes have been made to your site, templates, and content.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tclosePanel={ dismissPanel }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -64,10 +64,15 @@ class PostPublishButton extends _element.Component {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
const {
|
|
67
|
-
hasNonPostEntityChanges
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
hasNonPostEntityChanges,
|
|
68
|
+
setEntitiesSavedStatesCallback
|
|
69
|
+
} = _this.props; // If a post with non-post entities is published, but the user
|
|
70
|
+
// elects to not save changes to the non-post entities, those
|
|
71
|
+
// entities will still be dirty when the Publish button is clicked.
|
|
72
|
+
// We also need to check that the `setEntitiesSavedStatesCallback`
|
|
73
|
+
// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383
|
|
74
|
+
|
|
75
|
+
if (hasNonPostEntityChanges && setEntitiesSavedStatesCallback) {
|
|
71
76
|
// The modal for multiple entity saving will open,
|
|
72
77
|
// hold the callback for saving/publishing the post
|
|
73
78
|
// so that we can call it if the post entity is checked.
|
|
@@ -79,8 +84,7 @@ class PostPublishButton extends _element.Component {
|
|
|
79
84
|
// function on its own will cause an error when called.
|
|
80
85
|
|
|
81
86
|
|
|
82
|
-
|
|
83
|
-
|
|
87
|
+
setEntitiesSavedStatesCallback(() => _this.closeEntitiesSavedStates);
|
|
84
88
|
return _lodash.noop;
|
|
85
89
|
}
|
|
86
90
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-button/index.js"],"names":["PostPublishButton","Component","constructor","props","buttonNode","createOnClick","bind","closeEntitiesSavedStates","state","entitiesSavedStatesCallback","componentDidMount","focusOnMount","current","focus","callback","args","hasNonPostEntityChanges","setState","setEntitiesSavedStatesCallback","noop","savedEntities","postType","postId","elt","kind","name","key","render","forceIsDirty","forceIsSaving","hasPublishAction","isBeingScheduled","isOpen","isPostSavingLocked","isPublishable","isPublished","isSaveable","isSaving","isAutoSaving","isToggle","onSave","onStatusChange","onSubmit","onToggle","visibility","isSavingNonPostEntityChanges","isButtonDisabled","isToggleDisabled","publishStatus","onClickButton","onClickToggle","buttonProps","className","isBusy","variant","onClick","toggleProps","toggleChildren","buttonChildren","componentProps","componentChildren","select","isSavingPost","isAutosavingPost","isEditedPostBeingScheduled","getEditedPostVisibility","isCurrentPostPublished","isEditedPostSaveable","isEditedPostPublishable","getCurrentPost","getCurrentPostType","getCurrentPostId","editorStore","_isAutoSaving","dispatch","editPost","savePost","status","undoIgnore"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noop, get, some } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { Component, createRef } from '@wordpress/element';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PublishButtonLabel from './label';\nimport { store as editorStore } from '../../store';\n\nexport class PostPublishButton extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.buttonNode = createRef();\n\n\t\tthis.createOnClick = this.createOnClick.bind( this );\n\t\tthis.closeEntitiesSavedStates = this.closeEntitiesSavedStates.bind(\n\t\t\tthis\n\t\t);\n\n\t\tthis.state = {\n\t\t\tentitiesSavedStatesCallback: false,\n\t\t};\n\t}\n\tcomponentDidMount() {\n\t\tif ( this.props.focusOnMount ) {\n\t\t\tthis.buttonNode.current.focus();\n\t\t}\n\t}\n\n\tcreateOnClick( callback ) {\n\t\treturn ( ...args ) => {\n\t\t\tconst { hasNonPostEntityChanges } = this.props;\n\t\t\tif ( hasNonPostEntityChanges ) {\n\t\t\t\t// The modal for multiple entity saving will open,\n\t\t\t\t// hold the callback for saving/publishing the post\n\t\t\t\t// so that we can call it if the post entity is checked.\n\t\t\t\tthis.setState( {\n\t\t\t\t\tentitiesSavedStatesCallback: () => callback( ...args ),\n\t\t\t\t} );\n\t\t\t\t// Open the save panel by setting its callback.\n\t\t\t\t// To set a function on the useState hook, we must set it\n\t\t\t\t// with another function (() => myFunction). Passing the\n\t\t\t\t// function on its own will cause an error when called.\n\t\t\t\tthis.props.setEntitiesSavedStatesCallback(\n\t\t\t\t\t() => this.closeEntitiesSavedStates\n\t\t\t\t);\n\t\t\t\treturn noop;\n\t\t\t}\n\n\t\t\treturn callback( ...args );\n\t\t};\n\t}\n\n\tcloseEntitiesSavedStates( savedEntities ) {\n\t\tconst { postType, postId } = this.props;\n\t\tconst { entitiesSavedStatesCallback } = this.state;\n\t\tthis.setState( { entitiesSavedStatesCallback: false }, () => {\n\t\t\tif (\n\t\t\t\tsavedEntities &&\n\t\t\t\tsome(\n\t\t\t\t\tsavedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === 'postType' &&\n\t\t\t\t\t\telt.name === postType &&\n\t\t\t\t\t\telt.key === postId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// The post entity was checked, call the held callback from `createOnClick`.\n\t\t\t\tentitiesSavedStatesCallback();\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\tforceIsSaving,\n\t\t\thasPublishAction,\n\t\t\tisBeingScheduled,\n\t\t\tisOpen,\n\t\t\tisPostSavingLocked,\n\t\t\tisPublishable,\n\t\t\tisPublished,\n\t\t\tisSaveable,\n\t\t\tisSaving,\n\t\t\tisAutoSaving,\n\t\t\tisToggle,\n\t\t\tonSave,\n\t\t\tonStatusChange,\n\t\t\tonSubmit = noop,\n\t\t\tonToggle,\n\t\t\tvisibility,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = this.props;\n\n\t\tconst isButtonDisabled =\n\t\t\t( isSaving ||\n\t\t\t\tforceIsSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\tisPostSavingLocked ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tconst isToggleDisabled =\n\t\t\t( isPublished ||\n\t\t\t\tisSaving ||\n\t\t\t\tforceIsSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tlet publishStatus;\n\t\tif ( ! hasPublishAction ) {\n\t\t\tpublishStatus = 'pending';\n\t\t} else if ( visibility === 'private' ) {\n\t\t\tpublishStatus = 'private';\n\t\t} else if ( isBeingScheduled ) {\n\t\t\tpublishStatus = 'future';\n\t\t} else {\n\t\t\tpublishStatus = 'publish';\n\t\t}\n\n\t\tconst onClickButton = () => {\n\t\t\tif ( isButtonDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSubmit();\n\t\t\tonStatusChange( publishStatus );\n\t\t\tonSave();\n\t\t};\n\n\t\tconst onClickToggle = () => {\n\t\t\tif ( isToggleDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonToggle();\n\t\t};\n\n\t\tconst buttonProps = {\n\t\t\t'aria-disabled': isButtonDisabled,\n\t\t\tclassName: 'editor-post-publish-button',\n\t\t\tisBusy: ! isAutoSaving && isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickButton ),\n\t\t};\n\n\t\tconst toggleProps = {\n\t\t\t'aria-disabled': isToggleDisabled,\n\t\t\t'aria-expanded': isOpen,\n\t\t\tclassName: 'editor-post-publish-panel__toggle',\n\t\t\tisBusy: isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickToggle ),\n\t\t};\n\n\t\tconst toggleChildren = isBeingScheduled\n\t\t\t? __( 'Schedule…' )\n\t\t\t: __( 'Publish' );\n\t\tconst buttonChildren = (\n\t\t\t<PublishButtonLabel\n\t\t\t\tforceIsSaving={ forceIsSaving }\n\t\t\t\thasNonPostEntityChanges={ hasNonPostEntityChanges }\n\t\t\t/>\n\t\t);\n\n\t\tconst componentProps = isToggle ? toggleProps : buttonProps;\n\t\tconst componentChildren = isToggle ? toggleChildren : buttonChildren;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button\n\t\t\t\t\tref={ this.buttonNode }\n\t\t\t\t\t{ ...componentProps }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tcomponentProps.className,\n\t\t\t\t\t\t'editor-post-publish-button__button',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-changes-dot': hasNonPostEntityChanges,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ componentChildren }\n\t\t\t\t</Button>\n\t\t\t</>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisSavingPost,\n\t\t\tisAutosavingPost,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tgetEditedPostVisibility,\n\t\t\tisCurrentPostPublished,\n\t\t\tisEditedPostSaveable,\n\t\t\tisEditedPostPublishable,\n\t\t\tisPostSavingLocked,\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = select( editorStore );\n\t\tconst _isAutoSaving = isAutosavingPost();\n\t\treturn {\n\t\t\tisSaving: isSavingPost() || _isAutoSaving,\n\t\t\tisAutoSaving: _isAutoSaving,\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tvisibility: getEditedPostVisibility(),\n\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\tisPostSavingLocked: isPostSavingLocked(),\n\t\t\tisPublishable: isEditedPostPublishable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\thasPublishAction: get(\n\t\t\t\tgetCurrentPost(),\n\t\t\t\t[ '_links', 'wp:action-publish' ],\n\t\t\t\tfalse\n\t\t\t),\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\thasNonPostEntityChanges: hasNonPostEntityChanges(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonStatusChange: ( status ) =>\n\t\t\t\teditPost( { status }, { undoIgnore: true } ),\n\t\t\tonSave: savePost,\n\t\t};\n\t} ),\n] )( PostPublishButton );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-button/index.js"],"names":["PostPublishButton","Component","constructor","props","buttonNode","createOnClick","bind","closeEntitiesSavedStates","state","entitiesSavedStatesCallback","componentDidMount","focusOnMount","current","focus","callback","args","hasNonPostEntityChanges","setEntitiesSavedStatesCallback","setState","noop","savedEntities","postType","postId","elt","kind","name","key","render","forceIsDirty","forceIsSaving","hasPublishAction","isBeingScheduled","isOpen","isPostSavingLocked","isPublishable","isPublished","isSaveable","isSaving","isAutoSaving","isToggle","onSave","onStatusChange","onSubmit","onToggle","visibility","isSavingNonPostEntityChanges","isButtonDisabled","isToggleDisabled","publishStatus","onClickButton","onClickToggle","buttonProps","className","isBusy","variant","onClick","toggleProps","toggleChildren","buttonChildren","componentProps","componentChildren","select","isSavingPost","isAutosavingPost","isEditedPostBeingScheduled","getEditedPostVisibility","isCurrentPostPublished","isEditedPostSaveable","isEditedPostPublishable","getCurrentPost","getCurrentPostType","getCurrentPostId","editorStore","_isAutoSaving","dispatch","editPost","savePost","status","undoIgnore"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noop, get, some } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { Component, createRef } from '@wordpress/element';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PublishButtonLabel from './label';\nimport { store as editorStore } from '../../store';\n\nexport class PostPublishButton extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.buttonNode = createRef();\n\n\t\tthis.createOnClick = this.createOnClick.bind( this );\n\t\tthis.closeEntitiesSavedStates = this.closeEntitiesSavedStates.bind(\n\t\t\tthis\n\t\t);\n\n\t\tthis.state = {\n\t\t\tentitiesSavedStatesCallback: false,\n\t\t};\n\t}\n\tcomponentDidMount() {\n\t\tif ( this.props.focusOnMount ) {\n\t\t\tthis.buttonNode.current.focus();\n\t\t}\n\t}\n\n\tcreateOnClick( callback ) {\n\t\treturn ( ...args ) => {\n\t\t\tconst {\n\t\t\t\thasNonPostEntityChanges,\n\t\t\t\tsetEntitiesSavedStatesCallback,\n\t\t\t} = this.props;\n\t\t\t// If a post with non-post entities is published, but the user\n\t\t\t// elects to not save changes to the non-post entities, those\n\t\t\t// entities will still be dirty when the Publish button is clicked.\n\t\t\t// We also need to check that the `setEntitiesSavedStatesCallback`\n\t\t\t// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383\n\t\t\tif ( hasNonPostEntityChanges && setEntitiesSavedStatesCallback ) {\n\t\t\t\t// The modal for multiple entity saving will open,\n\t\t\t\t// hold the callback for saving/publishing the post\n\t\t\t\t// so that we can call it if the post entity is checked.\n\t\t\t\tthis.setState( {\n\t\t\t\t\tentitiesSavedStatesCallback: () => callback( ...args ),\n\t\t\t\t} );\n\n\t\t\t\t// Open the save panel by setting its callback.\n\t\t\t\t// To set a function on the useState hook, we must set it\n\t\t\t\t// with another function (() => myFunction). Passing the\n\t\t\t\t// function on its own will cause an error when called.\n\t\t\t\tsetEntitiesSavedStatesCallback(\n\t\t\t\t\t() => this.closeEntitiesSavedStates\n\t\t\t\t);\n\t\t\t\treturn noop;\n\t\t\t}\n\n\t\t\treturn callback( ...args );\n\t\t};\n\t}\n\n\tcloseEntitiesSavedStates( savedEntities ) {\n\t\tconst { postType, postId } = this.props;\n\t\tconst { entitiesSavedStatesCallback } = this.state;\n\t\tthis.setState( { entitiesSavedStatesCallback: false }, () => {\n\t\t\tif (\n\t\t\t\tsavedEntities &&\n\t\t\t\tsome(\n\t\t\t\t\tsavedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === 'postType' &&\n\t\t\t\t\t\telt.name === postType &&\n\t\t\t\t\t\telt.key === postId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// The post entity was checked, call the held callback from `createOnClick`.\n\t\t\t\tentitiesSavedStatesCallback();\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\tforceIsSaving,\n\t\t\thasPublishAction,\n\t\t\tisBeingScheduled,\n\t\t\tisOpen,\n\t\t\tisPostSavingLocked,\n\t\t\tisPublishable,\n\t\t\tisPublished,\n\t\t\tisSaveable,\n\t\t\tisSaving,\n\t\t\tisAutoSaving,\n\t\t\tisToggle,\n\t\t\tonSave,\n\t\t\tonStatusChange,\n\t\t\tonSubmit = noop,\n\t\t\tonToggle,\n\t\t\tvisibility,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = this.props;\n\n\t\tconst isButtonDisabled =\n\t\t\t( isSaving ||\n\t\t\t\tforceIsSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\tisPostSavingLocked ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tconst isToggleDisabled =\n\t\t\t( isPublished ||\n\t\t\t\tisSaving ||\n\t\t\t\tforceIsSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tlet publishStatus;\n\t\tif ( ! hasPublishAction ) {\n\t\t\tpublishStatus = 'pending';\n\t\t} else if ( visibility === 'private' ) {\n\t\t\tpublishStatus = 'private';\n\t\t} else if ( isBeingScheduled ) {\n\t\t\tpublishStatus = 'future';\n\t\t} else {\n\t\t\tpublishStatus = 'publish';\n\t\t}\n\n\t\tconst onClickButton = () => {\n\t\t\tif ( isButtonDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSubmit();\n\t\t\tonStatusChange( publishStatus );\n\t\t\tonSave();\n\t\t};\n\n\t\tconst onClickToggle = () => {\n\t\t\tif ( isToggleDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonToggle();\n\t\t};\n\n\t\tconst buttonProps = {\n\t\t\t'aria-disabled': isButtonDisabled,\n\t\t\tclassName: 'editor-post-publish-button',\n\t\t\tisBusy: ! isAutoSaving && isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickButton ),\n\t\t};\n\n\t\tconst toggleProps = {\n\t\t\t'aria-disabled': isToggleDisabled,\n\t\t\t'aria-expanded': isOpen,\n\t\t\tclassName: 'editor-post-publish-panel__toggle',\n\t\t\tisBusy: isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickToggle ),\n\t\t};\n\n\t\tconst toggleChildren = isBeingScheduled\n\t\t\t? __( 'Schedule…' )\n\t\t\t: __( 'Publish' );\n\t\tconst buttonChildren = (\n\t\t\t<PublishButtonLabel\n\t\t\t\tforceIsSaving={ forceIsSaving }\n\t\t\t\thasNonPostEntityChanges={ hasNonPostEntityChanges }\n\t\t\t/>\n\t\t);\n\n\t\tconst componentProps = isToggle ? toggleProps : buttonProps;\n\t\tconst componentChildren = isToggle ? toggleChildren : buttonChildren;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button\n\t\t\t\t\tref={ this.buttonNode }\n\t\t\t\t\t{ ...componentProps }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tcomponentProps.className,\n\t\t\t\t\t\t'editor-post-publish-button__button',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-changes-dot': hasNonPostEntityChanges,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ componentChildren }\n\t\t\t\t</Button>\n\t\t\t</>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisSavingPost,\n\t\t\tisAutosavingPost,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tgetEditedPostVisibility,\n\t\t\tisCurrentPostPublished,\n\t\t\tisEditedPostSaveable,\n\t\t\tisEditedPostPublishable,\n\t\t\tisPostSavingLocked,\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = select( editorStore );\n\t\tconst _isAutoSaving = isAutosavingPost();\n\t\treturn {\n\t\t\tisSaving: isSavingPost() || _isAutoSaving,\n\t\t\tisAutoSaving: _isAutoSaving,\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tvisibility: getEditedPostVisibility(),\n\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\tisPostSavingLocked: isPostSavingLocked(),\n\t\t\tisPublishable: isEditedPostPublishable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\thasPublishAction: get(\n\t\t\t\tgetCurrentPost(),\n\t\t\t\t[ '_links', 'wp:action-publish' ],\n\t\t\t\tfalse\n\t\t\t),\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\thasNonPostEntityChanges: hasNonPostEntityChanges(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonStatusChange: ( status ) =>\n\t\t\t\teditPost( { status }, { undoIgnore: true } ),\n\t\t\tonSave: savePost,\n\t\t};\n\t} ),\n] )( PostPublishButton );\n"]}
|
|
@@ -9,6 +9,7 @@ import { useSelect, useDispatch } from '@wordpress/data';
|
|
|
9
9
|
import { useCallback } from '@wordpress/element';
|
|
10
10
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
11
11
|
import { store as coreStore } from '@wordpress/core-data';
|
|
12
|
+
import { decodeEntities } from '@wordpress/html-entities';
|
|
12
13
|
/**
|
|
13
14
|
* Internal dependencies
|
|
14
15
|
*/
|
|
@@ -62,7 +63,7 @@ export default function EntityRecordItem(_ref) {
|
|
|
62
63
|
closePanel();
|
|
63
64
|
}, [parentBlockId]);
|
|
64
65
|
return createElement(PanelRow, null, createElement(CheckboxControl, {
|
|
65
|
-
label: createElement("strong", null, entityRecordTitle || __('Untitled')),
|
|
66
|
+
label: createElement("strong", null, decodeEntities(entityRecordTitle) || __('Untitled')),
|
|
66
67
|
checked: checked,
|
|
67
68
|
onChange: onChange
|
|
68
69
|
}), parentBlockId ? createElement(Fragment, null, createElement(Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/entity-record-item.js"],"names":["CheckboxControl","Button","PanelRow","__","useSelect","useDispatch","useCallback","store","blockEditorStore","coreStore","editorStore","EntityRecordItem","record","checked","onChange","closePanel","name","kind","title","key","parentBlockId","select","blocks","getEditedEntityRecord","parents","getBlockParents","clientId","length","entityRecordTitle","template","__experimentalGetTemplateInfo","isSelected","selectedBlockId","getSelectedBlockClientId","isSelectedText","selectBlock","selectParentBlock","selectAndDismiss"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,eAAT,EAA0BC,MAA1B,EAAkCC,QAAlC,QAAkD,uBAAlD;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,WAAT,QAA4B,oBAA5B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,yBAA1C;AACA,SAASD,KAAK,IAAIE,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/entity-record-item.js"],"names":["CheckboxControl","Button","PanelRow","__","useSelect","useDispatch","useCallback","store","blockEditorStore","coreStore","decodeEntities","editorStore","EntityRecordItem","record","checked","onChange","closePanel","name","kind","title","key","parentBlockId","select","blocks","getEditedEntityRecord","parents","getBlockParents","clientId","length","entityRecordTitle","template","__experimentalGetTemplateInfo","isSelected","selectedBlockId","getSelectedBlockClientId","isSelectedText","selectBlock","selectParentBlock","selectAndDismiss"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { CheckboxControl, Button, PanelRow } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function EntityRecordItem( {\n\trecord,\n\tchecked,\n\tonChange,\n\tclosePanel,\n} ) {\n\tconst { name, kind, title, key } = record;\n\tconst parentBlockId = useSelect( ( select ) => {\n\t\t// Get entity's blocks.\n\t\tconst { blocks = [] } = select( coreStore ).getEditedEntityRecord(\n\t\t\tkind,\n\t\t\tname,\n\t\t\tkey\n\t\t);\n\t\t// Get parents of the entity's first block.\n\t\tconst parents = select( blockEditorStore ).getBlockParents(\n\t\t\tblocks[ 0 ]?.clientId\n\t\t);\n\t\t// Return closest parent block's clientId.\n\t\treturn parents[ parents.length - 1 ];\n\t}, [] );\n\n\t// Handle templates that might use default descriptive titles\n\tconst entityRecordTitle = useSelect(\n\t\t( select ) => {\n\t\t\tif ( 'postType' !== kind || 'wp_template' !== name ) {\n\t\t\t\treturn title;\n\t\t\t}\n\n\t\t\tconst template = select( coreStore ).getEditedEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\tkey\n\t\t\t);\n\t\t\treturn select( editorStore ).__experimentalGetTemplateInfo(\n\t\t\t\ttemplate\n\t\t\t).title;\n\t\t},\n\t\t[ name, kind, title, key ]\n\t);\n\n\tconst isSelected = useSelect(\n\t\t( select ) => {\n\t\t\tconst selectedBlockId = select(\n\t\t\t\tblockEditorStore\n\t\t\t).getSelectedBlockClientId();\n\t\t\treturn selectedBlockId === parentBlockId;\n\t\t},\n\t\t[ parentBlockId ]\n\t);\n\tconst isSelectedText = isSelected ? __( 'Selected' ) : __( 'Select' );\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst selectParentBlock = useCallback( () => selectBlock( parentBlockId ), [\n\t\tparentBlockId,\n\t] );\n\tconst selectAndDismiss = useCallback( () => {\n\t\tselectBlock( parentBlockId );\n\t\tclosePanel();\n\t}, [ parentBlockId ] );\n\n\treturn (\n\t\t<PanelRow>\n\t\t\t<CheckboxControl\n\t\t\t\tlabel={\n\t\t\t\t\t<strong>\n\t\t\t\t\t\t{ decodeEntities( entityRecordTitle ) ||\n\t\t\t\t\t\t\t__( 'Untitled' ) }\n\t\t\t\t\t</strong>\n\t\t\t\t}\n\t\t\t\tchecked={ checked }\n\t\t\t\tonChange={ onChange }\n\t\t\t/>\n\t\t\t{ parentBlockId ? (\n\t\t\t\t<>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ selectParentBlock }\n\t\t\t\t\t\tclassName=\"entities-saved-states__find-entity\"\n\t\t\t\t\t\tdisabled={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isSelectedText }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ selectAndDismiss }\n\t\t\t\t\t\tclassName=\"entities-saved-states__find-entity-small\"\n\t\t\t\t\t\tdisabled={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isSelectedText }\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t) : null }\n\t\t</PanelRow>\n\t);\n}\n"]}
|
|
@@ -16,6 +16,7 @@ import { useState, useCallback, useRef } from '@wordpress/element';
|
|
|
16
16
|
import { store as coreStore } from '@wordpress/core-data';
|
|
17
17
|
import { __experimentalUseDialog as useDialog } from '@wordpress/compose';
|
|
18
18
|
import { close as closeIcon } from '@wordpress/icons';
|
|
19
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
19
20
|
/**
|
|
20
21
|
* Internal dependencies
|
|
21
22
|
*/
|
|
@@ -65,7 +66,11 @@ export default function EntitiesSavedStates(_ref) {
|
|
|
65
66
|
editEntityRecord,
|
|
66
67
|
saveEditedEntityRecord,
|
|
67
68
|
__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits
|
|
68
|
-
} = useDispatch(coreStore);
|
|
69
|
+
} = useDispatch(coreStore);
|
|
70
|
+
const {
|
|
71
|
+
createSuccessNotice,
|
|
72
|
+
createErrorNotice
|
|
73
|
+
} = useDispatch(noticesStore); // To group entities by type.
|
|
69
74
|
|
|
70
75
|
const partitionedSavables = groupBy(dirtyEntityRecords, 'name'); // Sort entity groups.
|
|
71
76
|
|
|
@@ -111,6 +116,7 @@ export default function EntitiesSavedStates(_ref) {
|
|
|
111
116
|
});
|
|
112
117
|
close(entitiesToSave);
|
|
113
118
|
const siteItemsToSave = [];
|
|
119
|
+
const pendingSavedRecords = [];
|
|
114
120
|
entitiesToSave.forEach(_ref4 => {
|
|
115
121
|
let {
|
|
116
122
|
kind,
|
|
@@ -128,13 +134,23 @@ export default function EntitiesSavedStates(_ref) {
|
|
|
128
134
|
});
|
|
129
135
|
}
|
|
130
136
|
|
|
131
|
-
saveEditedEntityRecord(kind, name, key);
|
|
137
|
+
pendingSavedRecords.push(saveEditedEntityRecord(kind, name, key));
|
|
132
138
|
}
|
|
133
139
|
});
|
|
134
140
|
|
|
135
141
|
if (siteItemsToSave.length) {
|
|
136
|
-
saveSpecifiedEntityEdits('root', 'site', undefined, siteItemsToSave);
|
|
142
|
+
pendingSavedRecords.push(saveSpecifiedEntityEdits('root', 'site', undefined, siteItemsToSave));
|
|
137
143
|
}
|
|
144
|
+
|
|
145
|
+
Promise.all(pendingSavedRecords).then(values => {
|
|
146
|
+
if (values.some(value => typeof value === 'undefined')) {
|
|
147
|
+
createErrorNotice(__('Saving failed.'));
|
|
148
|
+
} else {
|
|
149
|
+
createSuccessNotice(__('Site updated.'), {
|
|
150
|
+
type: 'snackbar'
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}).catch(error => createErrorNotice(`${__('Saving failed.')} ${error}`));
|
|
138
154
|
}; // Explicitly define this with no argument passed. Using `close` on
|
|
139
155
|
// its own will use the event object in place of the expected saved entities.
|
|
140
156
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/index.js"],"names":["some","groupBy","Button","__","useSelect","useDispatch","useState","useCallback","useRef","store","coreStore","__experimentalUseDialog","useDialog","close","closeIcon","EntityTypeList","TRANSLATED_SITE_PROPERTIES","title","description","site_logo","show_on_front","page_on_front","PUBLISH_ON_SAVE_ENTITIES","kind","name","EntitiesSavedStates","saveButtonRef","dirtyEntityRecords","select","dirtyRecords","__experimentalGetDirtyEntityRecords","dirtyRecordsWithoutSite","filter","record","siteEdits","getEntityRecordEdits","siteEditsAsEntities","property","push","dirtyRecordsWithSiteItems","editEntityRecord","saveEditedEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","partitionedSavables","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","values","Array","isArray","unselectedEntities","_setUnselectedEntities","setUnselectedEntities","checked","key","elt","saveCheckedEntities","entitiesToSave","siteItemsToSave","forEach","typeToPublish","status","length","undefined","dismissPanel","saveDialogRef","saveDialogProps","onClose","map","list"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { some, groupBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useCallback, useRef } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalUseDialog as useDialog } from '@wordpress/compose';\nimport { close as closeIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n};\n\nconst PUBLISH_ON_SAVE_ENTITIES = [\n\t{\n\t\tkind: 'postType',\n\t\tname: 'wp_navigation',\n\t},\n];\n\nexport default function EntitiesSavedStates( { close } ) {\n\tconst saveButtonRef = useRef();\n\tconst { dirtyEntityRecords } = useSelect( ( select ) => {\n\t\tconst dirtyRecords = select(\n\t\t\tcoreStore\n\t\t).__experimentalGetDirtyEntityRecords();\n\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst dirtyRecordsWithoutSite = dirtyRecords.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEdits = select( coreStore ).getEntityRecordEdits(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\n\t\tconst siteEditsAsEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\tsiteEditsAsEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\t\tconst dirtyRecordsWithSiteItems = [\n\t\t\t...dirtyRecordsWithoutSite,\n\t\t\t...siteEditsAsEntities,\n\t\t];\n\n\t\treturn {\n\t\t\tdirtyEntityRecords: dirtyRecordsWithSiteItems,\n\t\t};\n\t}, [] );\n\tconst {\n\t\teditEntityRecord,\n\t\tsaveEditedEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\t// To group entities by type.\n\tconst partitionedSavables = groupBy( dirtyEntityRecords, 'name' );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst saveCheckedEntities = () => {\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! some(\n\t\t\t\t\tunselectedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\n\t\tclose( entitiesToSave );\n\n\t\tconst siteItemsToSave = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\teditEntityRecord( kind, name, key, { status: 'publish' } );\n\t\t\t\t}\n\n\t\t\t\tsaveEditedEntityRecord( kind, name, key );\n\t\t\t}\n\t\t} );\n\t\tif ( siteItemsToSave.length ) {\n\t\t\tsaveSpecifiedEntityEdits(\n\t\t\t\t'root',\n\t\t\t\t'site',\n\t\t\t\tundefined,\n\t\t\t\tsiteItemsToSave\n\t\t\t);\n\t\t}\n\t};\n\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\n\treturn (\n\t\t<div\n\t\t\tref={ saveDialogRef }\n\t\t\t{ ...saveDialogProps }\n\t\t\tclassName=\"entities-saved-states__panel\"\n\t\t>\n\t\t\t<div className=\"entities-saved-states__panel-header\">\n\t\t\t\t<Button\n\t\t\t\t\tref={ saveButtonRef }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tdirtyEntityRecords.length -\n\t\t\t\t\t\t\tunselectedEntities.length ===\n\t\t\t\t\t\t0\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ saveCheckedEntities }\n\t\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeIcon }\n\t\t\t\t\tonClick={ dismissPanel }\n\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<strong>{ __( 'Are you ready to save?' ) }</strong>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'The following changes have been made to your site, templates, and content.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tclosePanel={ dismissPanel }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/index.js"],"names":["some","groupBy","Button","__","useSelect","useDispatch","useState","useCallback","useRef","store","coreStore","__experimentalUseDialog","useDialog","close","closeIcon","noticesStore","EntityTypeList","TRANSLATED_SITE_PROPERTIES","title","description","site_logo","show_on_front","page_on_front","PUBLISH_ON_SAVE_ENTITIES","kind","name","EntitiesSavedStates","saveButtonRef","dirtyEntityRecords","select","dirtyRecords","__experimentalGetDirtyEntityRecords","dirtyRecordsWithoutSite","filter","record","siteEdits","getEntityRecordEdits","siteEditsAsEntities","property","push","dirtyRecordsWithSiteItems","editEntityRecord","saveEditedEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","createSuccessNotice","createErrorNotice","partitionedSavables","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","values","Array","isArray","unselectedEntities","_setUnselectedEntities","setUnselectedEntities","checked","key","elt","saveCheckedEntities","entitiesToSave","siteItemsToSave","pendingSavedRecords","forEach","typeToPublish","status","length","undefined","Promise","all","then","value","type","catch","error","dismissPanel","saveDialogRef","saveDialogProps","onClose","map","list"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { some, groupBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useCallback, useRef } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalUseDialog as useDialog } from '@wordpress/compose';\nimport { close as closeIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n};\n\nconst PUBLISH_ON_SAVE_ENTITIES = [\n\t{\n\t\tkind: 'postType',\n\t\tname: 'wp_navigation',\n\t},\n];\n\nexport default function EntitiesSavedStates( { close } ) {\n\tconst saveButtonRef = useRef();\n\tconst { dirtyEntityRecords } = useSelect( ( select ) => {\n\t\tconst dirtyRecords = select(\n\t\t\tcoreStore\n\t\t).__experimentalGetDirtyEntityRecords();\n\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst dirtyRecordsWithoutSite = dirtyRecords.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEdits = select( coreStore ).getEntityRecordEdits(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\n\t\tconst siteEditsAsEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\tsiteEditsAsEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\t\tconst dirtyRecordsWithSiteItems = [\n\t\t\t...dirtyRecordsWithoutSite,\n\t\t\t...siteEditsAsEntities,\n\t\t];\n\n\t\treturn {\n\t\t\tdirtyEntityRecords: dirtyRecordsWithSiteItems,\n\t\t};\n\t}, [] );\n\tconst {\n\t\teditEntityRecord,\n\t\tsaveEditedEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } = useDispatch(\n\t\tnoticesStore\n\t);\n\n\t// To group entities by type.\n\tconst partitionedSavables = groupBy( dirtyEntityRecords, 'name' );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst saveCheckedEntities = () => {\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! some(\n\t\t\t\t\tunselectedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\n\t\tclose( entitiesToSave );\n\n\t\tconst siteItemsToSave = [];\n\t\tconst pendingSavedRecords = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\teditEntityRecord( kind, name, key, { status: 'publish' } );\n\t\t\t\t}\n\n\t\t\t\tpendingSavedRecords.push(\n\t\t\t\t\tsaveEditedEntityRecord( kind, name, key )\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t\tif ( siteItemsToSave.length ) {\n\t\t\tpendingSavedRecords.push(\n\t\t\t\tsaveSpecifiedEntityEdits(\n\t\t\t\t\t'root',\n\t\t\t\t\t'site',\n\t\t\t\t\tundefined,\n\t\t\t\t\tsiteItemsToSave\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tPromise.all( pendingSavedRecords )\n\t\t\t.then( ( values ) => {\n\t\t\t\tif (\n\t\t\t\t\tvalues.some( ( value ) => typeof value === 'undefined' )\n\t\t\t\t) {\n\t\t\t\t\tcreateErrorNotice( __( 'Saving failed.' ) );\n\t\t\t\t} else {\n\t\t\t\t\tcreateSuccessNotice( __( 'Site updated.' ), {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( ( error ) =>\n\t\t\t\tcreateErrorNotice( `${ __( 'Saving failed.' ) } ${ error }` )\n\t\t\t);\n\t};\n\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\n\treturn (\n\t\t<div\n\t\t\tref={ saveDialogRef }\n\t\t\t{ ...saveDialogProps }\n\t\t\tclassName=\"entities-saved-states__panel\"\n\t\t>\n\t\t\t<div className=\"entities-saved-states__panel-header\">\n\t\t\t\t<Button\n\t\t\t\t\tref={ saveButtonRef }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tdirtyEntityRecords.length -\n\t\t\t\t\t\t\tunselectedEntities.length ===\n\t\t\t\t\t\t0\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ saveCheckedEntities }\n\t\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeIcon }\n\t\t\t\t\tonClick={ dismissPanel }\n\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<strong>{ __( 'Are you ready to save?' ) }</strong>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'The following changes have been made to your site, templates, and content.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tclosePanel={ dismissPanel }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -47,10 +47,15 @@ export class PostPublishButton extends Component {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
const {
|
|
50
|
-
hasNonPostEntityChanges
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
hasNonPostEntityChanges,
|
|
51
|
+
setEntitiesSavedStatesCallback
|
|
52
|
+
} = _this.props; // If a post with non-post entities is published, but the user
|
|
53
|
+
// elects to not save changes to the non-post entities, those
|
|
54
|
+
// entities will still be dirty when the Publish button is clicked.
|
|
55
|
+
// We also need to check that the `setEntitiesSavedStatesCallback`
|
|
56
|
+
// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383
|
|
57
|
+
|
|
58
|
+
if (hasNonPostEntityChanges && setEntitiesSavedStatesCallback) {
|
|
54
59
|
// The modal for multiple entity saving will open,
|
|
55
60
|
// hold the callback for saving/publishing the post
|
|
56
61
|
// so that we can call it if the post entity is checked.
|
|
@@ -62,8 +67,7 @@ export class PostPublishButton extends Component {
|
|
|
62
67
|
// function on its own will cause an error when called.
|
|
63
68
|
|
|
64
69
|
|
|
65
|
-
|
|
66
|
-
|
|
70
|
+
setEntitiesSavedStatesCallback(() => _this.closeEntitiesSavedStates);
|
|
67
71
|
return noop;
|
|
68
72
|
}
|
|
69
73
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-button/index.js"],"names":["noop","get","some","classnames","Button","Component","createRef","withSelect","withDispatch","compose","__","PublishButtonLabel","store","editorStore","PostPublishButton","constructor","props","buttonNode","createOnClick","bind","closeEntitiesSavedStates","state","entitiesSavedStatesCallback","componentDidMount","focusOnMount","current","focus","callback","args","hasNonPostEntityChanges","setState","setEntitiesSavedStatesCallback","savedEntities","postType","postId","elt","kind","name","key","render","forceIsDirty","forceIsSaving","hasPublishAction","isBeingScheduled","isOpen","isPostSavingLocked","isPublishable","isPublished","isSaveable","isSaving","isAutoSaving","isToggle","onSave","onStatusChange","onSubmit","onToggle","visibility","isSavingNonPostEntityChanges","isButtonDisabled","isToggleDisabled","publishStatus","onClickButton","onClickToggle","buttonProps","className","isBusy","variant","onClick","toggleProps","toggleChildren","buttonChildren","componentProps","componentChildren","select","isSavingPost","isAutosavingPost","isEditedPostBeingScheduled","getEditedPostVisibility","isCurrentPostPublished","isEditedPostSaveable","isEditedPostPublishable","getCurrentPost","getCurrentPostType","getCurrentPostId","_isAutoSaving","dispatch","editPost","savePost","status","undoIgnore"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noop, get, some } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { Component, createRef } from '@wordpress/element';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PublishButtonLabel from './label';\nimport { store as editorStore } from '../../store';\n\nexport class PostPublishButton extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.buttonNode = createRef();\n\n\t\tthis.createOnClick = this.createOnClick.bind( this );\n\t\tthis.closeEntitiesSavedStates = this.closeEntitiesSavedStates.bind(\n\t\t\tthis\n\t\t);\n\n\t\tthis.state = {\n\t\t\tentitiesSavedStatesCallback: false,\n\t\t};\n\t}\n\tcomponentDidMount() {\n\t\tif ( this.props.focusOnMount ) {\n\t\t\tthis.buttonNode.current.focus();\n\t\t}\n\t}\n\n\tcreateOnClick( callback ) {\n\t\treturn ( ...args ) => {\n\t\t\tconst { hasNonPostEntityChanges } = this.props;\n\t\t\tif ( hasNonPostEntityChanges ) {\n\t\t\t\t// The modal for multiple entity saving will open,\n\t\t\t\t// hold the callback for saving/publishing the post\n\t\t\t\t// so that we can call it if the post entity is checked.\n\t\t\t\tthis.setState( {\n\t\t\t\t\tentitiesSavedStatesCallback: () => callback( ...args ),\n\t\t\t\t} );\n\t\t\t\t// Open the save panel by setting its callback.\n\t\t\t\t// To set a function on the useState hook, we must set it\n\t\t\t\t// with another function (() => myFunction). Passing the\n\t\t\t\t// function on its own will cause an error when called.\n\t\t\t\tthis.props.setEntitiesSavedStatesCallback(\n\t\t\t\t\t() => this.closeEntitiesSavedStates\n\t\t\t\t);\n\t\t\t\treturn noop;\n\t\t\t}\n\n\t\t\treturn callback( ...args );\n\t\t};\n\t}\n\n\tcloseEntitiesSavedStates( savedEntities ) {\n\t\tconst { postType, postId } = this.props;\n\t\tconst { entitiesSavedStatesCallback } = this.state;\n\t\tthis.setState( { entitiesSavedStatesCallback: false }, () => {\n\t\t\tif (\n\t\t\t\tsavedEntities &&\n\t\t\t\tsome(\n\t\t\t\t\tsavedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === 'postType' &&\n\t\t\t\t\t\telt.name === postType &&\n\t\t\t\t\t\telt.key === postId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// The post entity was checked, call the held callback from `createOnClick`.\n\t\t\t\tentitiesSavedStatesCallback();\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\tforceIsSaving,\n\t\t\thasPublishAction,\n\t\t\tisBeingScheduled,\n\t\t\tisOpen,\n\t\t\tisPostSavingLocked,\n\t\t\tisPublishable,\n\t\t\tisPublished,\n\t\t\tisSaveable,\n\t\t\tisSaving,\n\t\t\tisAutoSaving,\n\t\t\tisToggle,\n\t\t\tonSave,\n\t\t\tonStatusChange,\n\t\t\tonSubmit = noop,\n\t\t\tonToggle,\n\t\t\tvisibility,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = this.props;\n\n\t\tconst isButtonDisabled =\n\t\t\t( isSaving ||\n\t\t\t\tforceIsSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\tisPostSavingLocked ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tconst isToggleDisabled =\n\t\t\t( isPublished ||\n\t\t\t\tisSaving ||\n\t\t\t\tforceIsSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tlet publishStatus;\n\t\tif ( ! hasPublishAction ) {\n\t\t\tpublishStatus = 'pending';\n\t\t} else if ( visibility === 'private' ) {\n\t\t\tpublishStatus = 'private';\n\t\t} else if ( isBeingScheduled ) {\n\t\t\tpublishStatus = 'future';\n\t\t} else {\n\t\t\tpublishStatus = 'publish';\n\t\t}\n\n\t\tconst onClickButton = () => {\n\t\t\tif ( isButtonDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSubmit();\n\t\t\tonStatusChange( publishStatus );\n\t\t\tonSave();\n\t\t};\n\n\t\tconst onClickToggle = () => {\n\t\t\tif ( isToggleDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonToggle();\n\t\t};\n\n\t\tconst buttonProps = {\n\t\t\t'aria-disabled': isButtonDisabled,\n\t\t\tclassName: 'editor-post-publish-button',\n\t\t\tisBusy: ! isAutoSaving && isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickButton ),\n\t\t};\n\n\t\tconst toggleProps = {\n\t\t\t'aria-disabled': isToggleDisabled,\n\t\t\t'aria-expanded': isOpen,\n\t\t\tclassName: 'editor-post-publish-panel__toggle',\n\t\t\tisBusy: isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickToggle ),\n\t\t};\n\n\t\tconst toggleChildren = isBeingScheduled\n\t\t\t? __( 'Schedule…' )\n\t\t\t: __( 'Publish' );\n\t\tconst buttonChildren = (\n\t\t\t<PublishButtonLabel\n\t\t\t\tforceIsSaving={ forceIsSaving }\n\t\t\t\thasNonPostEntityChanges={ hasNonPostEntityChanges }\n\t\t\t/>\n\t\t);\n\n\t\tconst componentProps = isToggle ? toggleProps : buttonProps;\n\t\tconst componentChildren = isToggle ? toggleChildren : buttonChildren;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button\n\t\t\t\t\tref={ this.buttonNode }\n\t\t\t\t\t{ ...componentProps }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tcomponentProps.className,\n\t\t\t\t\t\t'editor-post-publish-button__button',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-changes-dot': hasNonPostEntityChanges,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ componentChildren }\n\t\t\t\t</Button>\n\t\t\t</>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisSavingPost,\n\t\t\tisAutosavingPost,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tgetEditedPostVisibility,\n\t\t\tisCurrentPostPublished,\n\t\t\tisEditedPostSaveable,\n\t\t\tisEditedPostPublishable,\n\t\t\tisPostSavingLocked,\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = select( editorStore );\n\t\tconst _isAutoSaving = isAutosavingPost();\n\t\treturn {\n\t\t\tisSaving: isSavingPost() || _isAutoSaving,\n\t\t\tisAutoSaving: _isAutoSaving,\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tvisibility: getEditedPostVisibility(),\n\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\tisPostSavingLocked: isPostSavingLocked(),\n\t\t\tisPublishable: isEditedPostPublishable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\thasPublishAction: get(\n\t\t\t\tgetCurrentPost(),\n\t\t\t\t[ '_links', 'wp:action-publish' ],\n\t\t\t\tfalse\n\t\t\t),\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\thasNonPostEntityChanges: hasNonPostEntityChanges(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonStatusChange: ( status ) =>\n\t\t\t\teditPost( { status }, { undoIgnore: true } ),\n\t\t\tonSave: savePost,\n\t\t};\n\t} ),\n] )( PostPublishButton );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-button/index.js"],"names":["noop","get","some","classnames","Button","Component","createRef","withSelect","withDispatch","compose","__","PublishButtonLabel","store","editorStore","PostPublishButton","constructor","props","buttonNode","createOnClick","bind","closeEntitiesSavedStates","state","entitiesSavedStatesCallback","componentDidMount","focusOnMount","current","focus","callback","args","hasNonPostEntityChanges","setEntitiesSavedStatesCallback","setState","savedEntities","postType","postId","elt","kind","name","key","render","forceIsDirty","forceIsSaving","hasPublishAction","isBeingScheduled","isOpen","isPostSavingLocked","isPublishable","isPublished","isSaveable","isSaving","isAutoSaving","isToggle","onSave","onStatusChange","onSubmit","onToggle","visibility","isSavingNonPostEntityChanges","isButtonDisabled","isToggleDisabled","publishStatus","onClickButton","onClickToggle","buttonProps","className","isBusy","variant","onClick","toggleProps","toggleChildren","buttonChildren","componentProps","componentChildren","select","isSavingPost","isAutosavingPost","isEditedPostBeingScheduled","getEditedPostVisibility","isCurrentPostPublished","isEditedPostSaveable","isEditedPostPublishable","getCurrentPost","getCurrentPostType","getCurrentPostId","_isAutoSaving","dispatch","editPost","savePost","status","undoIgnore"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noop, get, some } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { Component, createRef } from '@wordpress/element';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PublishButtonLabel from './label';\nimport { store as editorStore } from '../../store';\n\nexport class PostPublishButton extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.buttonNode = createRef();\n\n\t\tthis.createOnClick = this.createOnClick.bind( this );\n\t\tthis.closeEntitiesSavedStates = this.closeEntitiesSavedStates.bind(\n\t\t\tthis\n\t\t);\n\n\t\tthis.state = {\n\t\t\tentitiesSavedStatesCallback: false,\n\t\t};\n\t}\n\tcomponentDidMount() {\n\t\tif ( this.props.focusOnMount ) {\n\t\t\tthis.buttonNode.current.focus();\n\t\t}\n\t}\n\n\tcreateOnClick( callback ) {\n\t\treturn ( ...args ) => {\n\t\t\tconst {\n\t\t\t\thasNonPostEntityChanges,\n\t\t\t\tsetEntitiesSavedStatesCallback,\n\t\t\t} = this.props;\n\t\t\t// If a post with non-post entities is published, but the user\n\t\t\t// elects to not save changes to the non-post entities, those\n\t\t\t// entities will still be dirty when the Publish button is clicked.\n\t\t\t// We also need to check that the `setEntitiesSavedStatesCallback`\n\t\t\t// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383\n\t\t\tif ( hasNonPostEntityChanges && setEntitiesSavedStatesCallback ) {\n\t\t\t\t// The modal for multiple entity saving will open,\n\t\t\t\t// hold the callback for saving/publishing the post\n\t\t\t\t// so that we can call it if the post entity is checked.\n\t\t\t\tthis.setState( {\n\t\t\t\t\tentitiesSavedStatesCallback: () => callback( ...args ),\n\t\t\t\t} );\n\n\t\t\t\t// Open the save panel by setting its callback.\n\t\t\t\t// To set a function on the useState hook, we must set it\n\t\t\t\t// with another function (() => myFunction). Passing the\n\t\t\t\t// function on its own will cause an error when called.\n\t\t\t\tsetEntitiesSavedStatesCallback(\n\t\t\t\t\t() => this.closeEntitiesSavedStates\n\t\t\t\t);\n\t\t\t\treturn noop;\n\t\t\t}\n\n\t\t\treturn callback( ...args );\n\t\t};\n\t}\n\n\tcloseEntitiesSavedStates( savedEntities ) {\n\t\tconst { postType, postId } = this.props;\n\t\tconst { entitiesSavedStatesCallback } = this.state;\n\t\tthis.setState( { entitiesSavedStatesCallback: false }, () => {\n\t\t\tif (\n\t\t\t\tsavedEntities &&\n\t\t\t\tsome(\n\t\t\t\t\tsavedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === 'postType' &&\n\t\t\t\t\t\telt.name === postType &&\n\t\t\t\t\t\telt.key === postId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// The post entity was checked, call the held callback from `createOnClick`.\n\t\t\t\tentitiesSavedStatesCallback();\n\t\t\t}\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\tforceIsSaving,\n\t\t\thasPublishAction,\n\t\t\tisBeingScheduled,\n\t\t\tisOpen,\n\t\t\tisPostSavingLocked,\n\t\t\tisPublishable,\n\t\t\tisPublished,\n\t\t\tisSaveable,\n\t\t\tisSaving,\n\t\t\tisAutoSaving,\n\t\t\tisToggle,\n\t\t\tonSave,\n\t\t\tonStatusChange,\n\t\t\tonSubmit = noop,\n\t\t\tonToggle,\n\t\t\tvisibility,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = this.props;\n\n\t\tconst isButtonDisabled =\n\t\t\t( isSaving ||\n\t\t\t\tforceIsSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\tisPostSavingLocked ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tconst isToggleDisabled =\n\t\t\t( isPublished ||\n\t\t\t\tisSaving ||\n\t\t\t\tforceIsSaving ||\n\t\t\t\t! isSaveable ||\n\t\t\t\t( ! isPublishable && ! forceIsDirty ) ) &&\n\t\t\t( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );\n\n\t\tlet publishStatus;\n\t\tif ( ! hasPublishAction ) {\n\t\t\tpublishStatus = 'pending';\n\t\t} else if ( visibility === 'private' ) {\n\t\t\tpublishStatus = 'private';\n\t\t} else if ( isBeingScheduled ) {\n\t\t\tpublishStatus = 'future';\n\t\t} else {\n\t\t\tpublishStatus = 'publish';\n\t\t}\n\n\t\tconst onClickButton = () => {\n\t\t\tif ( isButtonDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSubmit();\n\t\t\tonStatusChange( publishStatus );\n\t\t\tonSave();\n\t\t};\n\n\t\tconst onClickToggle = () => {\n\t\t\tif ( isToggleDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonToggle();\n\t\t};\n\n\t\tconst buttonProps = {\n\t\t\t'aria-disabled': isButtonDisabled,\n\t\t\tclassName: 'editor-post-publish-button',\n\t\t\tisBusy: ! isAutoSaving && isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickButton ),\n\t\t};\n\n\t\tconst toggleProps = {\n\t\t\t'aria-disabled': isToggleDisabled,\n\t\t\t'aria-expanded': isOpen,\n\t\t\tclassName: 'editor-post-publish-panel__toggle',\n\t\t\tisBusy: isSaving && isPublished,\n\t\t\tvariant: 'primary',\n\t\t\tonClick: this.createOnClick( onClickToggle ),\n\t\t};\n\n\t\tconst toggleChildren = isBeingScheduled\n\t\t\t? __( 'Schedule…' )\n\t\t\t: __( 'Publish' );\n\t\tconst buttonChildren = (\n\t\t\t<PublishButtonLabel\n\t\t\t\tforceIsSaving={ forceIsSaving }\n\t\t\t\thasNonPostEntityChanges={ hasNonPostEntityChanges }\n\t\t\t/>\n\t\t);\n\n\t\tconst componentProps = isToggle ? toggleProps : buttonProps;\n\t\tconst componentChildren = isToggle ? toggleChildren : buttonChildren;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button\n\t\t\t\t\tref={ this.buttonNode }\n\t\t\t\t\t{ ...componentProps }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tcomponentProps.className,\n\t\t\t\t\t\t'editor-post-publish-button__button',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-changes-dot': hasNonPostEntityChanges,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ componentChildren }\n\t\t\t\t</Button>\n\t\t\t</>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisSavingPost,\n\t\t\tisAutosavingPost,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tgetEditedPostVisibility,\n\t\t\tisCurrentPostPublished,\n\t\t\tisEditedPostSaveable,\n\t\t\tisEditedPostPublishable,\n\t\t\tisPostSavingLocked,\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\thasNonPostEntityChanges,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = select( editorStore );\n\t\tconst _isAutoSaving = isAutosavingPost();\n\t\treturn {\n\t\t\tisSaving: isSavingPost() || _isAutoSaving,\n\t\t\tisAutoSaving: _isAutoSaving,\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tvisibility: getEditedPostVisibility(),\n\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\tisPostSavingLocked: isPostSavingLocked(),\n\t\t\tisPublishable: isEditedPostPublishable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\thasPublishAction: get(\n\t\t\t\tgetCurrentPost(),\n\t\t\t\t[ '_links', 'wp:action-publish' ],\n\t\t\t\tfalse\n\t\t\t),\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\thasNonPostEntityChanges: hasNonPostEntityChanges(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonStatusChange: ( status ) =>\n\t\t\t\teditPost( { status }, { undoIgnore: true } ),\n\t\t\tonSave: savePost,\n\t\t};\n\t} ),\n] )( PostPublishButton );\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/editor",
|
|
3
|
-
"version": "12.0.
|
|
3
|
+
"version": "12.0.15",
|
|
4
4
|
"description": "Enhanced block editor for WordPress posts.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"@wordpress/api-fetch": "^5.2.6",
|
|
36
36
|
"@wordpress/autop": "^3.2.3",
|
|
37
37
|
"@wordpress/blob": "^3.2.2",
|
|
38
|
-
"@wordpress/block-editor": "^8.0.
|
|
39
|
-
"@wordpress/blocks": "^11.1.
|
|
40
|
-
"@wordpress/components": "^19.1.
|
|
41
|
-
"@wordpress/compose": "^5.0.
|
|
42
|
-
"@wordpress/core-data": "^4.0.
|
|
43
|
-
"@wordpress/data": "^6.1.
|
|
44
|
-
"@wordpress/data-controls": "^2.2.
|
|
38
|
+
"@wordpress/block-editor": "^8.0.12",
|
|
39
|
+
"@wordpress/blocks": "^11.1.5",
|
|
40
|
+
"@wordpress/components": "^19.1.6",
|
|
41
|
+
"@wordpress/compose": "^5.0.7",
|
|
42
|
+
"@wordpress/core-data": "^4.0.9",
|
|
43
|
+
"@wordpress/data": "^6.1.5",
|
|
44
|
+
"@wordpress/data-controls": "^2.2.8",
|
|
45
45
|
"@wordpress/date": "^4.2.3",
|
|
46
46
|
"@wordpress/deprecated": "^3.2.3",
|
|
47
47
|
"@wordpress/element": "^4.0.4",
|
|
@@ -50,13 +50,13 @@
|
|
|
50
50
|
"@wordpress/i18n": "^4.2.4",
|
|
51
51
|
"@wordpress/icons": "^6.1.1",
|
|
52
52
|
"@wordpress/is-shallow-equal": "^4.2.1",
|
|
53
|
-
"@wordpress/keyboard-shortcuts": "^3.0.
|
|
53
|
+
"@wordpress/keyboard-shortcuts": "^3.0.7",
|
|
54
54
|
"@wordpress/keycodes": "^3.2.4",
|
|
55
55
|
"@wordpress/media-utils": "^3.0.5",
|
|
56
|
-
"@wordpress/notices": "^3.2.
|
|
57
|
-
"@wordpress/reusable-blocks": "^3.0.
|
|
58
|
-
"@wordpress/rich-text": "^5.0.
|
|
59
|
-
"@wordpress/server-side-render": "^3.0.
|
|
56
|
+
"@wordpress/notices": "^3.2.8",
|
|
57
|
+
"@wordpress/reusable-blocks": "^3.0.18",
|
|
58
|
+
"@wordpress/rich-text": "^5.0.7",
|
|
59
|
+
"@wordpress/server-side-render": "^3.0.16",
|
|
60
60
|
"@wordpress/url": "^3.3.1",
|
|
61
61
|
"@wordpress/wordcount": "^3.2.3",
|
|
62
62
|
"classnames": "^2.3.1",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"publishConfig": {
|
|
69
69
|
"access": "public"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "1081a28b2368fcebd9a14554fbd0e25eb33fbcb6"
|
|
72
72
|
}
|
|
@@ -7,6 +7,7 @@ import { useSelect, useDispatch } from '@wordpress/data';
|
|
|
7
7
|
import { useCallback } from '@wordpress/element';
|
|
8
8
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
9
9
|
import { store as coreStore } from '@wordpress/core-data';
|
|
10
|
+
import { decodeEntities } from '@wordpress/html-entities';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Internal dependencies
|
|
@@ -77,7 +78,10 @@ export default function EntityRecordItem( {
|
|
|
77
78
|
<PanelRow>
|
|
78
79
|
<CheckboxControl
|
|
79
80
|
label={
|
|
80
|
-
<strong>
|
|
81
|
+
<strong>
|
|
82
|
+
{ decodeEntities( entityRecordTitle ) ||
|
|
83
|
+
__( 'Untitled' ) }
|
|
84
|
+
</strong>
|
|
81
85
|
}
|
|
82
86
|
checked={ checked }
|
|
83
87
|
onChange={ onChange }
|
|
@@ -13,6 +13,7 @@ import { useState, useCallback, useRef } from '@wordpress/element';
|
|
|
13
13
|
import { store as coreStore } from '@wordpress/core-data';
|
|
14
14
|
import { __experimentalUseDialog as useDialog } from '@wordpress/compose';
|
|
15
15
|
import { close as closeIcon } from '@wordpress/icons';
|
|
16
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* Internal dependencies
|
|
@@ -75,6 +76,10 @@ export default function EntitiesSavedStates( { close } ) {
|
|
|
75
76
|
__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,
|
|
76
77
|
} = useDispatch( coreStore );
|
|
77
78
|
|
|
79
|
+
const { createSuccessNotice, createErrorNotice } = useDispatch(
|
|
80
|
+
noticesStore
|
|
81
|
+
);
|
|
82
|
+
|
|
78
83
|
// To group entities by type.
|
|
79
84
|
const partitionedSavables = groupBy( dirtyEntityRecords, 'name' );
|
|
80
85
|
|
|
@@ -134,6 +139,7 @@ export default function EntitiesSavedStates( { close } ) {
|
|
|
134
139
|
close( entitiesToSave );
|
|
135
140
|
|
|
136
141
|
const siteItemsToSave = [];
|
|
142
|
+
const pendingSavedRecords = [];
|
|
137
143
|
entitiesToSave.forEach( ( { kind, name, key, property } ) => {
|
|
138
144
|
if ( 'root' === kind && 'site' === name ) {
|
|
139
145
|
siteItemsToSave.push( property );
|
|
@@ -148,17 +154,37 @@ export default function EntitiesSavedStates( { close } ) {
|
|
|
148
154
|
editEntityRecord( kind, name, key, { status: 'publish' } );
|
|
149
155
|
}
|
|
150
156
|
|
|
151
|
-
|
|
157
|
+
pendingSavedRecords.push(
|
|
158
|
+
saveEditedEntityRecord( kind, name, key )
|
|
159
|
+
);
|
|
152
160
|
}
|
|
153
161
|
} );
|
|
154
162
|
if ( siteItemsToSave.length ) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
pendingSavedRecords.push(
|
|
164
|
+
saveSpecifiedEntityEdits(
|
|
165
|
+
'root',
|
|
166
|
+
'site',
|
|
167
|
+
undefined,
|
|
168
|
+
siteItemsToSave
|
|
169
|
+
)
|
|
160
170
|
);
|
|
161
171
|
}
|
|
172
|
+
|
|
173
|
+
Promise.all( pendingSavedRecords )
|
|
174
|
+
.then( ( values ) => {
|
|
175
|
+
if (
|
|
176
|
+
values.some( ( value ) => typeof value === 'undefined' )
|
|
177
|
+
) {
|
|
178
|
+
createErrorNotice( __( 'Saving failed.' ) );
|
|
179
|
+
} else {
|
|
180
|
+
createSuccessNotice( __( 'Site updated.' ), {
|
|
181
|
+
type: 'snackbar',
|
|
182
|
+
} );
|
|
183
|
+
}
|
|
184
|
+
} )
|
|
185
|
+
.catch( ( error ) =>
|
|
186
|
+
createErrorNotice( `${ __( 'Saving failed.' ) } ${ error }` )
|
|
187
|
+
);
|
|
162
188
|
};
|
|
163
189
|
|
|
164
190
|
// Explicitly define this with no argument passed. Using `close` on
|
|
@@ -41,19 +41,28 @@ export class PostPublishButton extends Component {
|
|
|
41
41
|
|
|
42
42
|
createOnClick( callback ) {
|
|
43
43
|
return ( ...args ) => {
|
|
44
|
-
const {
|
|
45
|
-
|
|
44
|
+
const {
|
|
45
|
+
hasNonPostEntityChanges,
|
|
46
|
+
setEntitiesSavedStatesCallback,
|
|
47
|
+
} = this.props;
|
|
48
|
+
// If a post with non-post entities is published, but the user
|
|
49
|
+
// elects to not save changes to the non-post entities, those
|
|
50
|
+
// entities will still be dirty when the Publish button is clicked.
|
|
51
|
+
// We also need to check that the `setEntitiesSavedStatesCallback`
|
|
52
|
+
// prop was passed. See https://github.com/WordPress/gutenberg/pull/37383
|
|
53
|
+
if ( hasNonPostEntityChanges && setEntitiesSavedStatesCallback ) {
|
|
46
54
|
// The modal for multiple entity saving will open,
|
|
47
55
|
// hold the callback for saving/publishing the post
|
|
48
56
|
// so that we can call it if the post entity is checked.
|
|
49
57
|
this.setState( {
|
|
50
58
|
entitiesSavedStatesCallback: () => callback( ...args ),
|
|
51
59
|
} );
|
|
60
|
+
|
|
52
61
|
// Open the save panel by setting its callback.
|
|
53
62
|
// To set a function on the useState hook, we must set it
|
|
54
63
|
// with another function (() => myFunction). Passing the
|
|
55
64
|
// function on its own will cause an error when called.
|
|
56
|
-
|
|
65
|
+
setEntitiesSavedStatesCallback(
|
|
57
66
|
() => this.closeEntitiesSavedStates
|
|
58
67
|
);
|
|
59
68
|
return noop;
|