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 / onboarding / src / Components / Search.js
templates-patterns-collection / onboarding / src / Components Last commit date
CustomizeControls 2 months ago Steps 2 weeks ago App.js 2 years ago CategoryButtons.js 2 weeks ago CustomTooltip.js 2 years ago EditorSelector.js 2 years ago FeaturesList.js 1 year ago Filters.js 2 weeks ago Header.js 2 weeks ago ImportError.js 2 years ago ImportForm.js 1 year ago ImportMock.js 2 years ago ImportProgress.js 1 year ago Onboarding.js 2 weeks ago ProgressBar.js 2 years ago Search.js 2 weeks ago SitePreview.js 2 years ago SiteSettings.js 2 months ago Sites.js 2 weeks ago StarterSiteCard.js 2 weeks ago Toast.js 2 weeks ago WelcomeMock.js 2 years ago
Search.js
103 lines
1 /* global tiobDash */
2 import { Icon } from '@wordpress/components';
3 import { compose } from '@wordpress/compose';
4 import { withDispatch, withSelect } from '@wordpress/data';
5 import classnames from 'classnames';
6 import SVG from '../utils/svg';
7 import { track } from '../utils/rest';
8
9 const Search = ( {
10 onSearch,
11 query,
12 handleSubmit,
13 step,
14 deleteQuery,
15 label,
16 placeholder,
17 } ) => {
18 return (
19 <form onSubmit={ handleSubmit } className="ob-search-form">
20 { label && <label htmlFor="ob-search-ss">{ label }</label> }
21 <div className="ob-search-wrap">
22 <Icon className="search-icon" icon={ SVG.search } />
23 <input
24 id="ob-search-ss"
25 type="text"
26 value={ query }
27 placeholder={ placeholder }
28 onChange={ ( e ) => {
29 onSearch( e.target.value );
30 } }
31 className="search-input"
32 />
33 { step === 1 ? (
34 <button
35 type="submit"
36 className={ classnames(
37 'search-button',
38 query ? 'active' : ''
39 ) }
40 >
41 <Icon icon={ SVG.arrow } width={ 17 } height={ 12 } />
42 </button>
43 ) : (
44 <Icon
45 className={ classnames(
46 'remove-button',
47 query ? 'active' : ''
48 ) }
49 onClick={ deleteQuery }
50 icon={ SVG.delete }
51 width={ 16 }
52 height={ 16 }
53 />
54 ) }
55 </div>
56 </form>
57 );
58 };
59
60 export default compose(
61 withSelect( ( select ) => {
62 const {
63 getSearchQuery,
64 getCurrentStep,
65 getCurrentCategory,
66 getTrackingId,
67 } = select( 'ti-onboarding' );
68 return {
69 category: getCurrentCategory(),
70 query: getSearchQuery(),
71 step: getCurrentStep(),
72 trackingId: getTrackingId(),
73 };
74 } ),
75 withDispatch( ( dispatch, { step, query, trackingId } ) => {
76 const { setSearchQuery, setCategory, setOnboardingStep } =
77 dispatch( 'ti-onboarding' );
78 return {
79 onSearch: ( searchQuery ) => setSearchQuery( searchQuery ),
80 deleteQuery: () => setSearchQuery( '' ),
81 handleSubmit: ( e ) => {
82 e.preventDefault();
83 if ( step === 1 ) {
84 setOnboardingStep( 2 );
85 const data = {
86 slug: 'neve',
87 license_id: tiobDash.license,
88 site: tiobDash.onboarding.homeUrl || '',
89 search: query,
90 cat: 'all',
91 step_id: 1,
92 step_status: 'completed',
93 };
94 track( trackingId, data ).catch( ( error ) => {
95 // eslint-disable-next-line no-console
96 console.error( error );
97 } );
98 }
99 },
100 };
101 } )
102 )( Search );
103