UNPKG

@wordpress/editor

Version:
8 lines (7 loc) 7.04 kB
{ "version": 3, "sources": ["../../../src/components/sidebar/dataform-post-summary.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { DataForm } from '@wordpress/dataviews';\nimport { __experimentalVStack as VStack } from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { useViewConfig } from '@wordpress/views';\n\n/**\n * Internal dependencies\n */\nimport PostCardPanel from '../post-card-panel';\nimport PostPanelSection from '../post-panel-section';\nimport { store as editorStore } from '../../store';\nimport PostTrash from '../post-trash';\nimport usePostFields from '../post-fields';\nimport { usePostTemplatePanelMode } from '../post-template/hooks';\n\nconst EMPTY_FORM = { layout: { type: 'panel' }, fields: [] };\n\nexport default function DataFormPostSummary( { onActionPerformed } ) {\n\tconst { postType, postId } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostType, getCurrentPostId } = select( editorStore );\n\t\treturn {\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { form: formConfig } = useViewConfig( {\n\t\tkind: 'postType',\n\t\tname: postType,\n\t} );\n\tconst form = formConfig ?? EMPTY_FORM;\n\tconst record = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! postType || ! postId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn select( coreDataStore ).getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tconst templatePanelMode = usePostTemplatePanelMode();\n\n\tconst availableTemplates = useSelect( ( select ) => {\n\t\tif ( select( coreDataStore ).getCurrentTheme()?.is_block_theme ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\tselect( editorStore ).getEditorSettings().availableTemplates ?? {}\n\t\t);\n\t}, [] );\n\n\t// Augment record only when needed(not a block theme with available templates).\n\tconst augmentedRecord = useMemo( () => {\n\t\tif ( ! record || ! availableTemplates ) {\n\t\t\treturn record;\n\t\t}\n\t\treturn {\n\t\t\t...record,\n\t\t\tavailable_templates: availableTemplates,\n\t\t};\n\t}, [ record, availableTemplates ] );\n\n\tconst { editEntityRecord } = useDispatch( coreDataStore );\n\n\tconst _fields = usePostFields( { postType } );\n\tconst fields = useMemo(\n\t\t() =>\n\t\t\t_fields\n\t\t\t\t?.map( ( field ) => {\n\t\t\t\t\tif ( field.id === 'status' ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t\telements: field.elements.filter(\n\t\t\t\t\t\t\t\t( element ) => element.value !== 'trash'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif ( field.id === 'template' ) {\n\t\t\t\t\t\t// `usePostTemplatePanelMode` is reused in the Post Template panel to match\n\t\t\t\t\t\t// the existing behavior. If the panel rendered nothing we should exclude the\n\t\t\t\t\t\t// template field from the form.\n\t\t\t\t\t\tif ( ! templatePanelMode ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// In classic themes without available templates we need to make the field read-only.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttemplatePanelMode === 'classic' &&\n\t\t\t\t\t\t\tObject.keys( availableTemplates ?? {} ).length === 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t\t\treadOnly: true,\n\t\t\t\t\t\t\t\trender: () => __( 'Default template' ),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn field;\n\t\t\t\t\t}\n\t\t\t\t\treturn field;\n\t\t\t\t} )\n\t\t\t\t.filter( Boolean ),\n\t\t[ _fields, templatePanelMode, availableTemplates ]\n\t);\n\n\tconst onChange = ( edits ) => {\n\t\tif (\n\t\t\tedits.status &&\n\t\t\tedits.status !== 'future' &&\n\t\t\trecord?.status === 'future' &&\n\t\t\tnew Date( record.date ) > new Date()\n\t\t) {\n\t\t\tedits.date = null;\n\t\t}\n\t\tif ( edits.status && edits.status === 'private' && record?.password ) {\n\t\t\tedits.password = '';\n\t\t}\n\n\t\teditEntityRecord( 'postType', postType, postId, edits );\n\t};\n\treturn (\n\t\t<PostPanelSection className=\"editor-post-summary\">\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<PostCardPanel\n\t\t\t\t\tpostType={ postType }\n\t\t\t\t\tpostId={ postId }\n\t\t\t\t\tonActionPerformed={ onActionPerformed }\n\t\t\t\t/>\n\t\t\t\t<DataForm\n\t\t\t\t\tdata={ augmentedRecord }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t\t<PostTrash onActionPerformed={ onActionPerformed } />\n\t\t\t</VStack>\n\t\t</PostPanelSection>\n\t);\n}\n"], "mappings": "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", "names": [] }