PluginProbe ʕ •ᴥ•ʔ
FAPI Member / 2.2.30
FAPI Member v2.2.30
2.2.33 2.2.32 trunk 1.9.47 2.1.18 2.2.24 2.2.25 2.2.26 2.2.28 2.2.29 2.2.30 2.2.31
fapi-member / src / Divi / includes / fields / MultiSelect / MultiSelect.jsx
fapi-member / src / Divi / includes / fields / MultiSelect Last commit date
MultiSelect.jsx 2 months ago
MultiSelect.jsx
52 lines
1 // External Dependencies
2 import React, { Component, useState } from 'react';
3
4 class MultiSelect extends Component
5 {
6 static slug = 'fmd_multi_select';
7
8 render() {
9 const options = Object.values(this.props.fieldDefinition.options);
10 var selected = this.props.value;
11
12 if (selected && selected !== '') {
13 selected = Object.values(JSON.parse(selected));
14 }
15 const handleSelectChange = (value) => {
16 let newSelected;
17 if (selected.includes(value)) {
18 newSelected = selected.filter((item) => item !== value);
19 } else {
20 newSelected = [...selected, value];
21 }
22 selected = newSelected;
23 this.props._onChange(this.props.name, JSON.stringify(Object.assign({}, selected)));
24 };
25
26 return(
27 <div className="multi-select">
28 {options.map((option) => (
29 <div key={option.id}>
30 <input
31 style={{marginRight: '5px'}}
32 type="checkbox"
33 value={option.id}
34 defaultChecked={selected.includes(option.id)}
35 id={'fm-level-' + option.id}
36 name={'fm-level-' + option.id}
37 onChange={() => handleSelectChange(option.id)}
38 />
39 <label
40 htmlFor={'fm-level-' + option.id}
41 >
42 {option.name}
43 </label>
44 </div>
45 ))}
46 </div>
47 );
48 }
49 }
50
51 export default MultiSelect;
52