-
Notifications
You must be signed in to change notification settings - Fork 68
Expand file tree
/
Copy pathindex.js
More file actions
40 lines (35 loc) · 1.09 KB
/
index.js
File metadata and controls
40 lines (35 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { useState } from '@wordpress/element'
import classnames from 'classnames'
let i = 1
const AdminBaseSetting = props => {
const [ uid ] = useState( `ugb-admin-setting-${ i++ }` )
const isSearched = props.searchTerm && props.label.toLowerCase().includes( props.searchTerm )
const mainClasses = classnames( [
'ugb-admin-setting',
props.className,
], {
[ `ugb-admin-setting--${ props.size }` ]: props.size,
'ugb-admin-setting--highlight': isSearched,
'ugb-admin-setting--not-highlight': props.searchTerm && ! isSearched,
} )
return (
<div className={ mainClasses } id={ uid }>
<label // eslint-disable-line
className="ugb-admin-setting__label-wrapper"
htmlFor={ uid }
onClick={ props.onClick }
>
{ !! props.label && <span className="ugb-admin-setting__label">{ props.label }</span> }
<div className="ugb-admin-setting__field">
{ props.children }
</div>
</label>
{ props.help && <p className="ugb-admin-setting__help">{ props.help }</p> }
</div>
)
}
AdminBaseSetting.defaultProps = {
label: '',
onClick: () => {},
}
export default AdminBaseSetting