PluginProbe ʕ •ᴥ•ʔ
Starter Sites & Templates by Neve / trunk
Starter Sites & Templates by Neve vtrunk
1.4.0 1.3.0 1.2.29 1.2.28 1.2.6 1.2.7 1.2.8 1.2.9 trunk 1.0.10 1.0.11 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.27 1.1.28 1.1.29 1.1.3 1.1.30 1.1.31 1.1.32 1.1.33 1.1.34 1.1.35 1.1.36 1.1.37 1.1.38 1.1.39 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.3 1.2.4 1.2.5
templates-patterns-collection / editor / src / components / header.js
templates-patterns-collection / editor / src / components Last commit date
content.js 1 year ago filters.js 1 year ago header.js 1 year ago import-modal.js 1 year ago list-item.js 1 year ago notices.js 5 years ago pagination.js 5 years ago preview.js 1 year ago publish-button.js 2 years ago template-predefine.js 2 years ago templates-content.js 1 year ago tpc-templates-button.js 2 years ago
header.js
109 lines
1 /* global tiTpc */
2 import classnames from 'classnames';
3 import { v4 as uuidv4 } from 'uuid';
4
5 import { closeSmall, update } from '@wordpress/icons';
6 import { __ } from '@wordpress/i18n';
7 import { Button, ButtonGroup, Icon } from '@wordpress/components';
8 import { useDispatch, useSelect } from '@wordpress/data';
9
10 import icon from './../icon';
11 import { fetchTemplates, fetchLibrary } from './../data/templates-cloud/index';
12
13 const Header = ( { closeModal, getOrder, getSearchQuery } ) => {
14 const { setFetching, updateCurrentTab } = useDispatch( 'tpc/block-editor' );
15
16 const TABS = {
17 library : __( 'My Library', 'templates-patterns-collection' )
18 // Removed since PRF.
19 // templates: __( 'Page Templates', 'templates-patterns-collection' ),
20 };
21
22 const isFetching = useSelect( ( select ) =>
23 select( 'tpc/block-editor' ).isFetching()
24 );
25 const isPreview = useSelect( ( select ) =>
26 select( 'tpc/block-editor' ).isPreview()
27 );
28 const currentTab = useSelect( ( select ) =>
29 select( 'tpc/block-editor' ).getCurrentTab()
30 );
31
32 const syncLibrary = async () => {
33 window.localStorage.setItem( 'tpcCacheBuster', uuidv4() );
34 setFetching( true );
35
36 const order = getOrder();
37
38 await fetchTemplates( {
39 search: getSearchQuery(),
40 ...order,
41 showFSE: tiTpc.isFSETheme
42 ? window?.localStorage?.tpcShowFse === 'true'
43 : false,
44 } );
45
46 await fetchLibrary( {
47 search: getSearchQuery(),
48 ...order,
49 showFSE: tiTpc.isFSETheme
50 ? window?.localStorage?.tpcShowFse === 'true'
51 : false,
52 } );
53
54 setFetching( false );
55 };
56
57 return (
58 <div className="modal-header">
59 <div className="left">
60 <Icon icon={ icon } />
61 </div>
62
63 <div className="center">
64 { Object.keys( TABS ).map( ( i ) => (
65 <Button
66 key={ i }
67 onClick={ () => updateCurrentTab( i ) }
68 className={ classnames( 'tabs', {
69 'is-active': i === currentTab,
70 } ) }
71 >
72 { TABS[ i ] }
73 </Button>
74 ) ) }
75 </div>
76
77 <div className="right">
78 { 'library' === currentTab && ! isPreview && (
79 <ButtonGroup>
80 <Button
81 label={ __(
82 'Re-sync Library',
83 'templates-patterns-collection'
84 ) }
85 icon={ update }
86 disabled={ isFetching }
87 className={ classnames( 'is-sync', {
88 'is-loading': isFetching,
89 } ) }
90 onClick={ syncLibrary }
91 />
92 </ButtonGroup>
93 ) }
94
95 <Button
96 label={ __(
97 'Close Modal',
98 'templates-patterns-collection'
99 ) }
100 icon={ closeSmall }
101 onClick={ closeModal }
102 />
103 </div>
104 </div>
105 );
106 };
107
108 export default Header;
109