PluginProbe
ElasticPress / 5.0.2
ElasticPress v5.0.2
5.3.5 5.3.4 3.6.5 3.6.6 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 5.0.0 5.0.1 5.0.2 All 108 releases
elasticpress / assets / js / weighting / components / field.js

field.js in ElasticPress 5.0.2, at assets/js/weighting/components/field.js

79 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * WordPress Dependencies.
3 */
4 import { Button, CheckboxControl, RangeControl } from '@wordpress/components';
5 import { WPElement } from '@wordpress/element';
6 import { __ } from '@wordpress/i18n';
7 import { trash } from '@wordpress/icons';
8
9 /**
10 * Field settings component.
11 *
12 * @param {object} props Component props.
13 * @param {string} props.label Property label.
14 * @param {Function} props.onChange Change handler.
15 * @param {Function} props.onDelete Delete handler.
16 * @param {object} props.value Values.
17 * @returns {WPElement} Component element.
18 */
19 export default ({ label, onChange, onDelete, value }) => {
20 const { enabled = false, weight = 0 } = value;
21
22 /**
23 * Handle change of searchable.
24 *
25 * @param {boolean} enabled New searchable value.
26 * @returns {void}
27 */
28 const onChangeSearchable = (enabled) => {
29 onChange({ weight, enabled });
30 };
31
32 /**
33 * Handle change of weighting.
34 *
35 * @param {number} weight New weight value.
36 * @returns {void}
37 */
38 const onChangeWeight = (weight) => {
39 onChange({ enabled: true, weight });
40 };
41
42 /**
43 * Render.
44 */
45 return (
46 <div className="ep-weighting-field">
47 <fieldset>
48 <legend className="ep-weighting-field__name">{label}</legend>
49 <div className="ep-weighting-field__searchable">
50 <CheckboxControl
51 checked={enabled}
52 label={__('Searchable', 'elasticpress')}
53 onChange={onChangeSearchable}
54 />
55 </div>
56 <div className="ep-weighting-field__weighting">
57 <RangeControl
58 disabled={!enabled}
59 label={__('Weight', 'elasticpress')}
60 max={100}
61 min={1}
62 onChange={onChangeWeight}
63 value={weight}
64 />
65 </div>
66 <div className="ep-weighting-field__actions">
67 <Button
68 className="ep-weighting-action ep-weighting-action--delete"
69 disabled={!onDelete}
70 icon={trash}
71 label={__('Remove', 'elasticpress')}
72 onClick={onDelete}
73 />
74 </div>
75 </fieldset>
76 </div>
77 );
78 };
79