-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.jsx
77 lines (62 loc) · 1.43 KB
/
index.jsx
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/**
* Post selector for Say Hello components
* [email protected] since 27.8.2019
*
* Usage:
<PostSelector
post_type="post"
attributes={attributes}
setAttributes={setAttributes}
label={_x( 'Blogpost auswählen', 'Select field label', 'sha' )}
/>
*/
const { SelectControl } = wp.components;
const { select, withSelect } = wp.data;
const { Component } = wp.element;
const { _x } = wp.i18n;
class PostSelector extends Component {
constructor(props) {
super(...arguments);
this.props = props;
}
setPost( post ) {
const { setAttributes } = this.props;
setAttributes( { post } );
}
/**
* Must return a single DOM node, hence the anonymous wrapper
*/
render() {
const { attributes, name, selectOptions, label } = this.props;
const { post } = attributes;
return (
<SelectControl
label={label}
value={post}
options={selectOptions}
onChange={this.setPost.bind( this )}
/>
);
}
}
export default withSelect( ( select, props ) => {
const { getEntityRecords } = select( 'core' );
let posts = getEntityRecords( 'postType', props.post_type, {
per_page: -1,
orderby: 'title',
order: 'asc'
} );
if ( !posts ) {
return posts;
}
let selectOptions = [{
label: _x( 'Auswählen', 'Default selector label', 'sha' ),
value: ''
}];
posts.map( post => {
selectOptions.push( { value: post.id, label: post.title.raw } );
} );
return {
selectOptions: selectOptions
};
} )( PostSelector );