ywana-core8 0.0.628 → 0.0.631
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +69 -65
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +69 -65
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +69 -65
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/CollectionPage.js +8 -4
- package/src/domain/ContentEditor.js +0 -24
- package/src/domain/ContentType.js +32 -27
package/package.json
CHANGED
@@ -21,7 +21,7 @@ export const CollectionPage = (props) => {
|
|
21
21
|
schema, url, field, host, page, fetching = false,
|
22
22
|
actions = [], onSelect,
|
23
23
|
canFilter = false, canAdd = false, canDelete = false, canEdit = false, searchBy, addValidator,
|
24
|
-
autosave = false, delay = 1000,
|
24
|
+
autosave = false, delay = 1000, patch = false,
|
25
25
|
groupBy, levels, sorter,
|
26
26
|
editor,
|
27
27
|
footer,
|
@@ -86,7 +86,7 @@ export const CollectionPage = (props) => {
|
|
86
86
|
{levels ? <CollectionTree schema={schema} icon={icon} levels={levels} onSelect={onSelect} sorter={sorter} searchBy={searchBy} /> : <CollectionList groupBy={groupBy} onSelect={onSelect} searchBy={searchBy} />}
|
87
87
|
</menu>
|
88
88
|
<main key={id} className={`collection-page ${className}`}>
|
89
|
-
<CollectionEditor icon={icon} schema={schema} layout={editor} autosave={autosave} delay={delay} canDelete={canDelete} canEdit={canEdit} onReload={reloadSelection} />
|
89
|
+
<CollectionEditor icon={icon} schema={schema} layout={editor} autosave={autosave} delay={delay} canDelete={canDelete} canEdit={canEdit} onReload={reloadSelection} patch={patch}/>
|
90
90
|
{children ? <article>{children}</article> : null}
|
91
91
|
<footer>
|
92
92
|
{footer}
|
@@ -310,7 +310,7 @@ export const CollectionTree = (props) => {
|
|
310
310
|
const CollectionEditor = (props) => {
|
311
311
|
const [pageContext, setPageContext] = useContext(PageContext)
|
312
312
|
const { selected } = pageContext
|
313
|
-
const { icon, schema, layout, autosave = false, delay = 1000, canDelete, canEdit, onReload } = props
|
313
|
+
const { icon, schema, layout, autosave = false, delay = 1000, canDelete, canEdit, onReload, patch=false } = props
|
314
314
|
const timer = useRef(null)
|
315
315
|
const [form, setForm] = useState(selected)
|
316
316
|
|
@@ -348,7 +348,11 @@ const CollectionEditor = (props) => {
|
|
348
348
|
}
|
349
349
|
|
350
350
|
async function save() {
|
351
|
-
|
351
|
+
if (patch) {
|
352
|
+
await pageContext.patch(form.id, form)
|
353
|
+
} else {
|
354
|
+
await pageContext.update(form)
|
355
|
+
}
|
352
356
|
setPageContext(Object.assign({}, pageContext))
|
353
357
|
}
|
354
358
|
|
@@ -412,34 +412,10 @@ export const CollectionEditor = ({ field, value = [], onChange, onReload }) => {
|
|
412
412
|
}
|
413
413
|
}
|
414
414
|
|
415
|
-
function change(index, cellId, cellValue) {
|
416
|
-
if (onChange) {
|
417
|
-
const next = value.slice()
|
418
|
-
next[index][cellId] = cellValue
|
419
|
-
onChange(id, next)
|
420
|
-
}
|
421
|
-
}
|
422
|
-
|
423
415
|
function reload() {
|
424
416
|
if (onReload) onReload()
|
425
417
|
}
|
426
418
|
|
427
|
-
/* const columns = Object.values(item)
|
428
|
-
.filter(field => field.column === true)
|
429
|
-
.map((item) => ({ ...item, onChange: change }))
|
430
|
-
columns.push({ id: 'actions', label: 'Actions' })
|
431
|
-
|
432
|
-
const rows = value.map((item, index) => ({
|
433
|
-
...item,
|
434
|
-
id: index,
|
435
|
-
actions: [
|
436
|
-
<Icon icon='delete' clickable action={() => remove(index)} size="small" />
|
437
|
-
]
|
438
|
-
}))
|
439
|
-
|
440
|
-
const table = { columns, rows }
|
441
|
-
*/
|
442
|
-
|
443
419
|
return (
|
444
420
|
<div className='collection-editor'>
|
445
421
|
{
|
@@ -123,42 +123,47 @@ export class ContentType {
|
|
123
123
|
const fields = Object.entries(this._schema)
|
124
124
|
const next = fields.reduce((next, [name, field]) => {
|
125
125
|
|
126
|
-
const { type, item, optional } = field
|
126
|
+
const { type, item, optional, outsider } = field
|
127
127
|
const entryData = data ? data[name] : null
|
128
128
|
|
129
|
-
|
129
|
+
if (outsider === true) {
|
130
|
+
// Dont send outsider data
|
131
|
+
} else {
|
130
132
|
|
131
|
-
|
132
|
-
next[name] = entryData || field.default
|
133
|
-
break;
|
133
|
+
switch (type) {
|
134
134
|
|
135
|
-
|
136
|
-
|
137
|
-
|
135
|
+
case TYPES.STRING:
|
136
|
+
next[name] = entryData || field.default
|
137
|
+
break;
|
138
138
|
|
139
|
-
|
140
|
-
|
141
|
-
|
139
|
+
case TYPES.NUMBER:
|
140
|
+
next[name] = entryData || field.default
|
141
|
+
break;
|
142
142
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
next[name] = child1.value(entryData)
|
147
|
-
break;
|
143
|
+
case TYPES.BOOLEAN:
|
144
|
+
next[name] = entryData || field.default
|
145
|
+
break
|
148
146
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
next[name] = entryData ? entryData.map(data2 => child2.value(data2)) : []
|
155
|
-
}
|
156
|
-
break;
|
147
|
+
case TYPES.ENTITY:
|
148
|
+
if (optional === true && !entryData) break;
|
149
|
+
const child1 = new ContentType(item)
|
150
|
+
next[name] = child1.value(entryData)
|
151
|
+
break;
|
157
152
|
|
158
|
-
|
159
|
-
|
160
|
-
|
153
|
+
case TYPES.ARRAY:
|
154
|
+
if (item === TYPES.STRING) {
|
155
|
+
next[name] = entryData ? entryData : []
|
156
|
+
} else {
|
157
|
+
const child2 = new ContentType(item)
|
158
|
+
next[name] = entryData ? entryData.map(data2 => child2.value(data2)) : []
|
159
|
+
}
|
160
|
+
break;
|
161
|
+
|
162
|
+
default:
|
163
|
+
next[name] = field
|
164
|
+
break;
|
161
165
|
|
166
|
+
}
|
162
167
|
}
|
163
168
|
|
164
169
|
return next
|