-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathblock.js
More file actions
50 lines (43 loc) · 1.73 KB
/
Copy pathblock.js
File metadata and controls
50 lines (43 loc) · 1.73 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
41
42
43
44
45
46
47
48
49
50
(function (blocks, element, components, apiFetch) {
var el = element.createElement;
var registerBlockType = blocks.registerBlockType;
var SelectControl = components.SelectControl;
var useEffect = element.useEffect;
var useState = element.useState;
registerBlockType('wp/v2/accordion-selector', {
title: 'Accordion Selector',
icon: 'list-view',
category: 'widgets',
attributes: {
selectedAccordion: {
type: 'string',
},
},
edit: function (props) {
var [accordions, setAccordions] = useState([]);
var selectedAccordion = props.attributes.selectedAccordion;
useEffect(() => {
apiFetch({ path: '/wp/v2/accordions' }).then((items) => {
setAccordions(items);
});
}, []);
function onChangeAccordion(selected) {
props.setAttributes({ selectedAccordion: selected });
}
return el('div', {},
el(SelectControl, {
label: 'Select an Accordion',
value: selectedAccordion,
options: accordions.map(function (accordion) {
return { label: accordion.name, value: accordion.id };
}),
onChange: onChangeAccordion,
}),
selectedAccordion && el('p', {}, 'Shortcode: [accordion id="' + selectedAccordion + '"]')
);
},
save: function () {
return null; // Content is rendered in PHP and thus save returns null.
},
});
})(window.wp.blocks, window.wp.element, window.wp.components, window.wp.apiFetch);