UNPKG

@wordpress/editor

Version:
8 lines (7 loc) 9.45 kB
{ "version": 3, "sources": ["../../../src/components/post-publish-panel/index.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Component, createRef } from '@wordpress/element';\nimport {\n\tButton,\n\tSpinner,\n\tCheckboxControl,\n\twithFocusReturn,\n\twithConstrainedTabbing,\n} from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { closeSmall } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostPublishButton from '../post-publish-button';\nimport PostPublishPanelPrepublish from './prepublish';\nimport PostPublishPanelPostpublish from './postpublish';\nimport { store as editorStore } from '../../store';\n\nexport class PostPublishPanel extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.onSubmit = this.onSubmit.bind( this );\n\t\tthis.cancelButtonNode = createRef();\n\t}\n\n\tcomponentDidMount() {\n\t\t// This timeout is necessary to make sure the `useEffect` hook of\n\t\t// `useFocusReturn` gets the correct element (the button that opens the\n\t\t// PostPublishPanel) otherwise it will get this button.\n\t\tthis.timeoutID = setTimeout( () => {\n\t\t\tthis.cancelButtonNode.current.focus();\n\t\t}, 0 );\n\t}\n\n\tcomponentWillUnmount() {\n\t\tclearTimeout( this.timeoutID );\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\t// Automatically collapse the publish sidebar when a post\n\t\t// is published and the user makes an edit.\n\t\tif (\n\t\t\t( prevProps.isPublished &&\n\t\t\t\t! this.props.isSaving &&\n\t\t\t\tthis.props.isDirty ) ||\n\t\t\tthis.props.currentPostId !== prevProps.currentPostId\n\t\t) {\n\t\t\tthis.props.onClose();\n\t\t}\n\t}\n\n\tonSubmit() {\n\t\tconst { onClose, hasPublishAction, isPostTypeViewable } = this.props;\n\t\tif ( ! hasPublishAction || ! isPostTypeViewable ) {\n\t\t\tonClose();\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\tisBeingScheduled,\n\t\t\tisPublished,\n\t\t\tisPublishSidebarEnabled,\n\t\t\tisScheduled,\n\t\t\tisSaving,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tonClose,\n\t\t\tonTogglePublishSidebar,\n\t\t\tPostPublishExtension,\n\t\t\tPrePublishExtension,\n\t\t\tcurrentPostId,\n\t\t\t...additionalProps\n\t\t} = this.props;\n\t\tconst {\n\t\t\thasPublishAction,\n\t\t\tisDirty,\n\t\t\tisPostTypeViewable,\n\t\t\t...propsForPanel\n\t\t} = additionalProps;\n\t\tconst isPublishedOrScheduled =\n\t\t\tisPublished || ( isScheduled && isBeingScheduled );\n\t\tconst isPrePublish = ! isPublishedOrScheduled && ! isSaving;\n\t\tconst isPostPublish = isPublishedOrScheduled && ! isSaving;\n\t\treturn (\n\t\t\t<div className=\"editor-post-publish-panel\" { ...propsForPanel }>\n\t\t\t\t<div className=\"editor-post-publish-panel__header\">\n\t\t\t\t\t{ isPostPublish ? (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"editor-post-publish-panel__header-cancel-button\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tref={ this.cancelButtonNode }\n\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\tdisabled={ isSavingNonPostEntityChanges }\n\t\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"editor-post-publish-panel__header-publish-button\">\n\t\t\t\t\t\t\t\t<PostPublishButton\n\t\t\t\t\t\t\t\t\tonSubmit={ this.onSubmit }\n\t\t\t\t\t\t\t\t\tforceIsDirty={ forceIsDirty }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"editor-post-publish-panel__content\">\n\t\t\t\t\t{ isPrePublish && (\n\t\t\t\t\t\t<PostPublishPanelPrepublish>\n\t\t\t\t\t\t\t{ PrePublishExtension && <PrePublishExtension /> }\n\t\t\t\t\t\t</PostPublishPanelPrepublish>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isPostPublish && (\n\t\t\t\t\t\t<PostPublishPanelPostpublish focusOnMount>\n\t\t\t\t\t\t\t{ PostPublishExtension && <PostPublishExtension /> }\n\t\t\t\t\t\t</PostPublishPanelPostpublish>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isSaving && <Spinner /> }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"editor-post-publish-panel__footer\">\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tlabel={ __( 'Always show pre-publish checks.' ) }\n\t\t\t\t\t\tchecked={ isPublishSidebarEnabled }\n\t\t\t\t\t\tonChange={ onTogglePublishSidebar }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\n/**\n * Renders a panel for publishing a post.\n */\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\t\tconst {\n\t\t\tgetCurrentPost,\n\t\t\tgetCurrentPostId,\n\t\t\tgetEditedPostAttribute,\n\t\t\tisCurrentPostPublished,\n\t\t\tisCurrentPostScheduled,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tisEditedPostDirty,\n\t\t\tisAutosavingPost,\n\t\t\tisSavingPost,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = select( editorStore );\n\t\tconst { isPublishSidebarEnabled } = select( editorStore );\n\t\tconst postType = getPostType( getEditedPostAttribute( 'type' ) );\n\n\t\treturn {\n\t\t\thasPublishAction:\n\t\t\t\tgetCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\tisPostTypeViewable: postType?.viewable,\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tisDirty: isEditedPostDirty(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\tisPublishSidebarEnabled: isPublishSidebarEnabled(),\n\t\t\tisSaving: isSavingPost() && ! isAutosavingPost(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t\tcurrentPostId: getCurrentPostId(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { isPublishSidebarEnabled } ) => {\n\t\tconst { disablePublishSidebar, enablePublishSidebar } =\n\t\t\tdispatch( editorStore );\n\t\treturn {\n\t\t\tonTogglePublishSidebar: () => {\n\t\t\t\tif ( isPublishSidebarEnabled ) {\n\t\t\t\t\tdisablePublishSidebar();\n\t\t\t\t} else {\n\t\t\t\t\tenablePublishSidebar();\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t} ),\n\twithFocusReturn,\n\twithConstrainedTabbing,\n] )( PostPublishPanel );\n"], "mappings": "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", "names": ["PostPublishButton", "PostPublishPanelPrepublish", "PostPublishPanelPostpublish", "coreStore", "editorStore"] }