UNPKG

13.4 kBSource Map (JSON)View Raw
1{"version":3,"sources":["@wordpress/block-library/src/latest-posts/edit.js"],"names":["isUndefined","pickBy","classnames","Component","Fragment","RawHTML","PanelBody","Placeholder","QueryControls","RangeControl","Spinner","ToggleControl","Toolbar","apiFetch","addQueryArgs","__","dateI18n","format","__experimentalGetSettings","InspectorControls","BlockAlignmentToolbar","BlockControls","withSelect","CATEGORIES_LIST_QUERY","per_page","MAX_POSTS_COLUMNS","LatestPostsEdit","arguments","state","categoriesList","toggleDisplayPostDate","bind","isStillMounted","fetchRequest","path","then","setState","catch","displayPostDate","props","attributes","setAttributes","latestPosts","align","postLayout","columns","order","orderBy","categories","postsToShow","inspectorControls","value","undefined","hasPosts","Math","min","length","Array","isArray","displayPosts","slice","layoutControls","icon","title","onClick","isActive","dateFormat","formats","date","nextAlign","className","map","post","i","titleTrimmed","rendered","trim","link","date_gmt","select","getEntityRecords","latestPostsQuery","orderby"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isUndefined, pickBy } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tComponent,\n\tFragment,\n\tRawHTML,\n} from '@wordpress/element';\nimport {\n\tPanelBody,\n\tPlaceholder,\n\tQueryControls,\n\tRangeControl,\n\tSpinner,\n\tToggleControl,\n\tToolbar,\n} from '@wordpress/components';\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport { __ } from '@wordpress/i18n';\nimport { dateI18n, format, __experimentalGetSettings } from '@wordpress/date';\nimport {\n\tInspectorControls,\n\tBlockAlignmentToolbar,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { withSelect } from '@wordpress/data';\n\n/**\n * Module Constants\n */\nconst CATEGORIES_LIST_QUERY = {\n\tper_page: -1,\n};\nconst MAX_POSTS_COLUMNS = 6;\n\nclass LatestPostsEdit extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.state = {\n\t\t\tcategoriesList: [],\n\t\t};\n\t\tthis.toggleDisplayPostDate = this.toggleDisplayPostDate.bind( this );\n\t}\n\n\tcomponentWillMount() {\n\t\tthis.isStillMounted = true;\n\t\tthis.fetchRequest = apiFetch( {\n\t\t\tpath: addQueryArgs( `/wp/v2/categories`, CATEGORIES_LIST_QUERY ),\n\t\t} ).then(\n\t\t\t( categoriesList ) => {\n\t\t\t\tif ( this.isStillMounted ) {\n\t\t\t\t\tthis.setState( { categoriesList } );\n\t\t\t\t}\n\t\t\t}\n\t\t).catch(\n\t\t\t() => {\n\t\t\t\tif ( this.isStillMounted ) {\n\t\t\t\t\tthis.setState( { categoriesList: [] } );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.isStillMounted = false;\n\t}\n\n\ttoggleDisplayPostDate() {\n\t\tconst { displayPostDate } = this.props.attributes;\n\t\tconst { setAttributes } = this.props;\n\n\t\tsetAttributes( { displayPostDate: ! displayPostDate } );\n\t}\n\n\trender() {\n\t\tconst { attributes, setAttributes, latestPosts } = this.props;\n\t\tconst { categoriesList } = this.state;\n\t\tconst { displayPostDate, align, postLayout, columns, order, orderBy, categories, postsToShow } = attributes;\n\n\t\tconst inspectorControls = (\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Latest Posts Settings' ) }>\n\t\t\t\t\t<QueryControls\n\t\t\t\t\t\t{ ...{ order, orderBy } }\n\t\t\t\t\t\tnumberOfItems={ postsToShow }\n\t\t\t\t\t\tcategoriesList={ categoriesList }\n\t\t\t\t\t\tselectedCategoryId={ categories }\n\t\t\t\t\t\tonOrderChange={ ( value ) => setAttributes( { order: value } ) }\n\t\t\t\t\t\tonOrderByChange={ ( value ) => setAttributes( { orderBy: value } ) }\n\t\t\t\t\t\tonCategoryChange={ ( value ) => setAttributes( { categories: '' !== value ? value : undefined } ) }\n\t\t\t\t\t\tonNumberOfItemsChange={ ( value ) => setAttributes( { postsToShow: value } ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display post date' ) }\n\t\t\t\t\t\tchecked={ displayPostDate }\n\t\t\t\t\t\tonChange={ this.toggleDisplayPostDate }\n\t\t\t\t\t/>\n\t\t\t\t\t{ postLayout === 'grid' &&\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\t\tonChange={ ( value ) => setAttributes( { columns: value } ) }\n\t\t\t\t\t\t\tmin={ 2 }\n\t\t\t\t\t\t\tmax={ ! hasPosts ? MAX_POSTS_COLUMNS : Math.min( MAX_POSTS_COLUMNS, latestPosts.length ) }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t);\n\n\t\tconst hasPosts = Array.isArray( latestPosts ) && latestPosts.length;\n\t\tif ( ! hasPosts ) {\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{ inspectorControls }\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon=\"admin-post\"\n\t\t\t\t\t\tlabel={ __( 'Latest Posts' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ! Array.isArray( latestPosts ) ?\n\t\t\t\t\t\t\t<Spinner /> :\n\t\t\t\t\t\t\t__( 'No posts found.' )\n\t\t\t\t\t\t}\n\t\t\t\t\t</Placeholder>\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n\n\t\t// Removing posts from display should be instant.\n\t\tconst displayPosts = latestPosts.length > postsToShow ?\n\t\t\tlatestPosts.slice( 0, postsToShow ) :\n\t\t\tlatestPosts;\n\n\t\tconst layoutControls = [\n\t\t\t{\n\t\t\t\ticon: 'list-view',\n\t\t\t\ttitle: __( 'List View' ),\n\t\t\t\tonClick: () => setAttributes( { postLayout: 'list' } ),\n\t\t\t\tisActive: postLayout === 'list',\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: 'grid-view',\n\t\t\t\ttitle: __( 'Grid View' ),\n\t\t\t\tonClick: () => setAttributes( { postLayout: 'grid' } ),\n\t\t\t\tisActive: postLayout === 'grid',\n\t\t\t},\n\t\t];\n\n\t\tconst dateFormat = __experimentalGetSettings().formats.date;\n\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t{ inspectorControls }\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<BlockAlignmentToolbar\n\t\t\t\t\t\tvalue={ align }\n\t\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\t\tsetAttributes( { align: nextAlign } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<Toolbar controls={ layoutControls } />\n\t\t\t\t</BlockControls>\n\t\t\t\t<ul\n\t\t\t\t\tclassName={ classnames( this.props.className, {\n\t\t\t\t\t\t'is-grid': postLayout === 'grid',\n\t\t\t\t\t\t'has-dates': displayPostDate,\n\t\t\t\t\t\t[ `columns-${ columns }` ]: postLayout === 'grid',\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ displayPosts.map( ( post, i ) => {\n\t\t\t\t\t\tconst titleTrimmed = post.title.rendered.trim();\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={ i }>\n\t\t\t\t\t\t\t\t<a href={ post.link } target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t\t\t{ titleTrimmed ? (\n\t\t\t\t\t\t\t\t\t\t<RawHTML>\n\t\t\t\t\t\t\t\t\t\t\t{ titleTrimmed }\n\t\t\t\t\t\t\t\t\t\t</RawHTML>\n\t\t\t\t\t\t\t\t\t) :\n\t\t\t\t\t\t\t\t\t\t__( '(Untitled)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t{ displayPostDate && post.date_gmt &&\n\t\t\t\t\t\t\t\t\t<time dateTime={ format( 'c', post.date_gmt ) } className=\"wp-block-latest-posts__post-date\">\n\t\t\t\t\t\t\t\t\t\t{ dateI18n( dateFormat, post.date_gmt ) }\n\t\t\t\t\t\t\t\t\t</time>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ul>\n\t\t\t</Fragment>\n\t\t);\n\t}\n}\n\nexport default withSelect( ( select, props ) => {\n\tconst { postsToShow, order, orderBy, categories } = props.attributes;\n\tconst { getEntityRecords } = select( 'core' );\n\tconst latestPostsQuery = pickBy( {\n\t\tcategories,\n\t\torder,\n\t\torderby: orderBy,\n\t\tper_page: postsToShow,\n\t}, ( value ) => ! isUndefined( value ) );\n\treturn {\n\t\tlatestPosts: getEntityRecords( 'postType', 'post', latestPostsQuery ),\n\t};\n} )( LatestPostsEdit );\n"]}
\No newline at end of file