@@ -33,77 +33,102 @@ const CreateContentModelPageSettings = function () {
33
33
'meta'
34
34
) ;
35
35
36
+ const [ slug , setSlug ] = useEntityProp (
37
+ 'postType' ,
38
+ contentModelFields . postType ,
39
+ 'slug'
40
+ ) ;
41
+
36
42
// Saving the fields as serialized JSON because I was tired of fighting the REST API.
37
43
const fields = meta ?. fields ? JSON . parse ( meta . fields ) : [ ] ;
38
44
39
45
return (
40
- < PluginDocumentSettingPanel
41
- name = "create-content-model-page-settings"
42
- title = { __ ( 'Custom Fields' ) }
43
- className = "create-content-model-page-settings"
44
- >
45
- < ItemGroup isBordered isSeparated >
46
- { fields . map ( ( field ) => (
47
- < Item key = { field . slug } size = "small" >
48
- { field . label }
49
- < code > { field . slug } </ code >
50
- </ Item >
51
- ) ) }
52
- </ ItemGroup >
53
- < div
54
- style = { {
55
- textAlign : 'right' ,
56
- } }
46
+ < >
47
+ < PluginDocumentSettingPanel
48
+ name = "create-content-model-post-settings"
49
+ title = { __ ( 'Post Type' ) }
50
+ className = "create-content-model-post-settings"
57
51
>
58
- < Button
59
- icon = { plus }
60
- onClick = { ( ) => setAddNewOpen ( true ) }
61
- label = { __ ( 'Add Field' ) }
52
+ < TextControl
53
+ label = { __ ( 'Slug' ) }
54
+ value = { slug }
55
+ onChange = { ( value ) => setSlug ( value ) }
56
+ help = { __ (
57
+ 'Warning: Changing the slug will break existing content.'
58
+ ) }
59
+ />
60
+ </ PluginDocumentSettingPanel >
61
+ < PluginDocumentSettingPanel
62
+ name = "create-content-model-field-settings"
63
+ title = { __ ( 'Custom Fields' ) }
64
+ className = "create-content-model-field-settings"
65
+ >
66
+ < ItemGroup isBordered isSeparated >
67
+ { fields . map ( ( field ) => (
68
+ < Item key = { field . slug } size = "small" >
69
+ { field . label }
70
+ < code > { field . slug } </ code >
71
+ </ Item >
72
+ ) ) }
73
+ </ ItemGroup >
74
+ < div
62
75
style = { {
63
- background : '#1e1e1e' ,
64
- borderRadius : '2px' ,
65
- color : '#fff' ,
66
- height : '24px' ,
67
- minWidth : '24px' ,
68
- borderRadius : '0' ,
76
+ textAlign : 'right' ,
69
77
} }
70
- />
71
- </ div >
72
-
73
- < Button variant = "secondary" onClick = { ( ) => setFieldsOpen ( true ) } >
74
- { __ ( 'Manage Fields' ) }
75
- </ Button >
76
-
77
- { isFieldsOpen && (
78
- < Modal
79
- title = { __ ( 'Manage Fields' ) }
80
- size = "large"
81
- onRequestClose = { ( ) => setFieldsOpen ( false ) }
82
- >
83
- < FieldsList />
84
- </ Modal >
85
- ) }
86
- { isAddNewOpen && (
87
- < Modal
88
- title = { __ ( 'Add New Field' ) }
89
- size = "large"
90
- onRequestClose = { ( ) => setAddNewOpen ( false ) }
91
78
>
92
- < EditFieldForm
93
- save = { ( formData ) => {
94
- console . log ( 'Save' , formData ) ;
95
- setMeta ( {
96
- fields : JSON . stringify ( [
97
- ...fields ,
98
- formData ,
99
- ] ) ,
100
- } ) ;
101
- setAddNewOpen ( false ) ;
79
+ < Button
80
+ icon = { plus }
81
+ onClick = { ( ) => setAddNewOpen ( true ) }
82
+ label = { __ ( 'Add Field' ) }
83
+ style = { {
84
+ background : '#1e1e1e' ,
85
+ borderRadius : '2px' ,
86
+ color : '#fff' ,
87
+ height : '24px' ,
88
+ minWidth : '24px' ,
89
+ borderRadius : '0' ,
102
90
} }
103
91
/>
104
- </ Modal >
105
- ) }
106
- </ PluginDocumentSettingPanel >
92
+ </ div >
93
+
94
+ < Button
95
+ variant = "secondary"
96
+ onClick = { ( ) => setFieldsOpen ( true ) }
97
+ >
98
+ { __ ( 'Manage Fields' ) }
99
+ </ Button >
100
+
101
+ { isFieldsOpen && (
102
+ < Modal
103
+ title = { __ ( 'Manage Fields' ) }
104
+ size = "large"
105
+ onRequestClose = { ( ) => setFieldsOpen ( false ) }
106
+ >
107
+ < FieldsList />
108
+ </ Modal >
109
+ ) }
110
+ { isAddNewOpen && (
111
+ < Modal
112
+ title = { __ ( 'Add New Field' ) }
113
+ size = "large"
114
+ onRequestClose = { ( ) => setAddNewOpen ( false ) }
115
+ >
116
+ < EditFieldForm
117
+ save = { ( formData ) => {
118
+ console . log ( 'Save' , formData ) ;
119
+ setMeta ( {
120
+ fields : JSON . stringify ( [
121
+ ...fields ,
122
+ formData ,
123
+ ] ) ,
124
+ } ) ;
125
+ setAddNewOpen ( false ) ;
126
+ } }
127
+ />
128
+ </ Modal >
129
+ ) }
130
+ </ PluginDocumentSettingPanel >
131
+ </ >
107
132
) ;
108
133
} ;
109
134
0 commit comments