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 / assets / src / Components / EditorSelector.js
templates-patterns-collection / assets / src / Components Last commit date
CloudLibrary 1 year ago Settings 1 year ago StarterSites 3 years ago App.js 2 years ago Card.js 3 years ago CategoriesTabs.js 3 years ago CategorySelector.js 2 years ago CustomTooltip.js 3 years ago DocNotice.js 2 years ago EditorSelector.js 2 years ago EditorTabs.js 4 years ago Header.js 2 years ago Icon.js 2 years ago ImportModal.js 1 year ago ImportModalError.js 2 years ago ImportModalMock.js 4 years ago ImportModalNote.js 4 years ago ImportStepper.js 1 year ago InstallModal.js 1 year ago License.js 2 years ago LicensePanelContext.js 3 years ago Loading.js 4 years ago Main.js 1 year ago Migration.js 4 years ago NewTCNotice.js 1 year ago Notification.js 4 years ago OnboardingContent.js 4 years ago PreviewFrame.js 3 years ago Search.js 2 years ago StarterSiteCard.js 3 years ago
EditorSelector.js
114 lines
1 import classnames from 'classnames';
2 import { __ } from '@wordpress/i18n';
3 import { useState } from '@wordpress/element';
4 import { Button, Dashicon, Popover } from '@wordpress/components';
5 import { withDispatch, withSelect } from '@wordpress/data';
6 import { compose } from '@wordpress/compose';
7
8 const EditorSelector = ( {
9 EDITOR_MAP,
10 count,
11 editor,
12 setCurrentEditor,
13 sites,
14 isSmall,
15 } ) => {
16 const [ open, setOpen ] = useState( false );
17 const editorsOrderedFromAPI = Object.keys( sites );
18 const toggleDropdown = () => setOpen( ! open );
19 const wrapClasses = classnames( [
20 'ob-dropdown',
21 'editor-selector',
22 { small: isSmall },
23 ] );
24 return (
25 <div className={ wrapClasses }>
26 <Button onClick={ toggleDropdown } className="select ob-dropdown">
27 <img
28 className="editor-icon"
29 src={ tiobDash.assets + 'img/' + EDITOR_MAP[ editor ].icon }
30 alt={ __(
31 'Builder Logo',
32 'templates-patterns-collection'
33 ) }
34 />
35 { ! isSmall && <span>{ EDITOR_MAP[ editor ].niceName }</span> }
36 <span className="count">{ count[ editor ] }</span>
37 <Dashicon
38 size={ 14 }
39 icon={ open ? 'arrow-up-alt2' : 'arrow-down-alt2' }
40 />
41 { open && (
42 <Popover
43 position="bottom center"
44 onClose={ toggleDropdown }
45 inline
46 noArrow
47 inline
48 >
49 { open && (
50 <ul className="options">
51 { editorsOrderedFromAPI.map( ( key, index ) => {
52 if ( key === editor ) {
53 return null;
54 }
55 return (
56 <li key={ index }>
57 <a
58 href="#"
59 onClick={ ( e ) => {
60 e.preventDefault();
61 setCurrentEditor( key );
62 setOpen( false );
63 } }
64 >
65 <img
66 className="editor-icon"
67 src={
68 tiobDash.assets +
69 'img/' +
70 EDITOR_MAP[ key ].icon
71 }
72 alt={ __(
73 'Builder Logo',
74 'templates-patterns-collection'
75 ) }
76 />
77 <span>
78 {
79 EDITOR_MAP[ key ]
80 .niceName
81 }
82 </span>
83 <span className="count">
84 { count[ key ] }
85 </span>
86 </a>
87 </li>
88 );
89 } ) }
90 </ul>
91 ) }
92 </Popover>
93 ) }
94 </Button>
95 </div>
96 );
97 };
98
99 export default compose(
100 withSelect( ( select ) => {
101 const { getCurrentEditor, getSites } = select( 'neve-onboarding' );
102 return {
103 editor: getCurrentEditor(),
104 sites: getSites().sites,
105 };
106 } ),
107 withDispatch( ( dispatch ) => {
108 const { setCurrentEditor } = dispatch( 'neve-onboarding' );
109 return {
110 setCurrentEditor: ( editor ) => setCurrentEditor( editor ),
111 };
112 } )
113 )( EditorSelector );
114