PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.3.1
GiveWP – Donation Plugin and Fundraising Platform v3.3.1
4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonorDashboards / resources / js / app / components / select-control / index.js
give / src / DonorDashboards / resources / js / app / components / select-control Last commit date
index.js 4 years ago style.scss 4 years ago
index.js
121 lines
1 // Import vendor dependencies
2 import PropTypes from 'prop-types';
3 import Select from 'react-select';
4
5 // Import utilities
6 import {toUniqueId} from '../../utils';
7 import {useAccentColor} from '../../hooks';
8
9 // Import styles
10 import './style.scss';
11
12 import {__} from '@wordpress/i18n';
13
14 const SelectControl = ({label, value, isLoading, onChange, options, placeholder, width, isClearable}) => {
15 if (options && options.length < 2) {
16 return null;
17 }
18
19 const accentColor = useAccentColor();
20
21 const id = toUniqueId(label);
22
23 const selectedOptionValue = options !== null ? options.filter((option) => option.value === value) : null;
24 const selectStyles = {
25 control: (provided) => ({
26 ...provided,
27 fontSize: '14px',
28 fontFamily: 'Montserrat, Arial, Helvetica, sans-serif',
29 fontWeight: '500',
30 color: '#828382',
31 lineHeight: '1.2',
32 boxSizing: 'border-box',
33 marginTop: '8px',
34 border: '1px solid #b8b8b8',
35 borderRadius: '4px',
36 }),
37 input: (provided) => ({
38 ...provided,
39 fontSize: '14px',
40 fontFamily: 'Montserrat, Arial, Helvetica, sans-serif',
41 fontWeight: '500',
42 color: '#828382',
43 lineHeight: '1.2',
44 }),
45 valueContainer: (provided) => ({
46 ...provided,
47 padding: '7px 12px',
48 }),
49 clearIndicator: (provided) => ({
50 ...provided,
51 padding: '0px',
52 }),
53 dropdownIndicator: (provided) => ({
54 ...provided,
55 padding: '0 8px 0 0',
56 }),
57 option: (provided, state) => ({
58 ...provided,
59 fontSize: '14px',
60 fontFamily: 'Montserrat, Arial, Helvetica, sans-serif',
61 fontWeight: '500',
62 color: state.isSelected ? '#fff' : '#333',
63 lineHeight: '1.2',
64 }),
65 indicatorSeparator: () => ({
66 display: 'none',
67 }),
68 };
69
70 return (
71 <div className="give-donor-dashboard-select-control" style={width ? {maxWidth: width} : null}>
72 {label && (
73 <label className="give-donor-dashboard-select-control__label" htmlFor={id}>
74 {label}
75 </label>
76 )}
77 <Select
78 placeholder={placeholder}
79 isLoading={isLoading}
80 inputId={id}
81 value={selectedOptionValue}
82 onChange={(selectedOption) => onChange(selectedOption ? selectedOption.value : '')}
83 options={options}
84 styles={selectStyles}
85 maxMenuHeight="200px"
86 isDisabled={isLoading}
87 isClearable={isClearable}
88 theme={(theme) => ({
89 ...theme,
90 colors: {
91 ...theme.colors,
92 primary: accentColor,
93 },
94 })}
95 />
96 </div>
97 );
98 };
99
100 SelectControl.propTypes = {
101 label: PropTypes.string,
102 value: PropTypes.string.isRequired,
103 onChange: PropTypes.func,
104 options: PropTypes.array.isRequired,
105 placeholder: PropTypes.string,
106 width: PropTypes.string,
107 isClearable: PropTypes.bool,
108 };
109
110 SelectControl.defaultProps = {
111 label: null,
112 value: null,
113 onChange: null,
114 options: null,
115 placeholder: __('Select...', 'give'),
116 width: null,
117 isClearable: false,
118 };
119
120 export default SelectControl;
121