ywana-core8 0.0.482 → 0.0.485
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/db/db.json +5 -56
- package/dist/index.cjs +38 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +5 -3
- package/dist/index.css.map +1 -1
- package/dist/index.modern.js +38 -11
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +38 -11
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/ContentEditor.css +4 -2
- package/src/domain/ContentEditor.js +32 -9
- package/src/domain/ContentEditor.test.js +9 -6
- package/src/domain/ContentType.js +1 -0
- package/src/html/table.css +1 -1
- package/src/html/textfield.js +23 -0
- package/src/html/textfield.test.js +2 -0
- package/src/html/tokenfield.js +1 -1
- package/src/site/site.test.js +17 -6
package/package.json
CHANGED
@@ -2,11 +2,13 @@
|
|
2
2
|
padding: 0 1rem;
|
3
3
|
}
|
4
4
|
|
5
|
-
.content-editor>section
|
5
|
+
.content-editor>section,
|
6
|
+
.entity-editor>section {
|
6
7
|
margin-bottom: 1rem;
|
7
8
|
}
|
8
9
|
|
9
|
-
.content-editor>section>header
|
10
|
+
.content-editor>section>header,
|
11
|
+
.entity-editor>section>header {
|
10
12
|
padding: .5rem;
|
11
13
|
border-bottom: solid 1px var(--divider-color);
|
12
14
|
margin-bottom: .5rem;
|
@@ -212,19 +212,42 @@ const EntityEditor = ({ field, value = {}, onChange }) => {
|
|
212
212
|
if (onChange) onChange(id, next)
|
213
213
|
}
|
214
214
|
|
215
|
+
/*
|
215
216
|
const form = content.form()
|
216
217
|
const fields = Object.keys(form).map((key) => form[key])
|
217
|
-
|
218
|
+
|
218
219
|
return (
|
219
220
|
<div className='entity-editor'>
|
220
|
-
|
221
|
+
<header>
|
221
222
|
<Text use='caption'>{label}</Text>
|
222
|
-
|
223
|
-
|
223
|
+
</header>
|
224
|
+
<main>
|
224
225
|
{fields.map((field) => (
|
225
226
|
<FieldEditor key={field.id} field={field} onChange={change} />
|
226
|
-
|
227
|
-
|
227
|
+
))}
|
228
|
+
</main>
|
229
|
+
</div>
|
230
|
+
)
|
231
|
+
*/
|
232
|
+
|
233
|
+
const sections = content.sections()
|
234
|
+
return (
|
235
|
+
<div className={`entity-editor`}>
|
236
|
+
<header>
|
237
|
+
<Text use='caption'>{label}</Text>
|
238
|
+
</header>
|
239
|
+
{sections.map((section) => {
|
240
|
+
const { title, fields } = section
|
241
|
+
const filtered = fields.filter(field => field.id !== 'id')
|
242
|
+
return filtered.length > 0 ? (
|
243
|
+
<section key={title}>
|
244
|
+
{title && title.length > 0 ? <header>{title}</header> : null}
|
245
|
+
<main>
|
246
|
+
{filtered.map((field) => <FieldEditor key={field.id} field={field} onChange={change} outlined={true} content={content} />)}
|
247
|
+
</main>
|
248
|
+
</section>
|
249
|
+
) : null
|
250
|
+
})}
|
228
251
|
</div>
|
229
252
|
)
|
230
253
|
}
|
@@ -246,16 +269,16 @@ export const StringEditor = ({ field, value = '', onChange, content, outlined })
|
|
246
269
|
|
247
270
|
function renderFormat(format, options) {
|
248
271
|
switch (format) {
|
249
|
-
case FORMATS.COLOR: return <ColorField id={id} onChange={change} value={value}/>
|
272
|
+
case FORMATS.COLOR: return <ColorField id={id} onChange={change} value={value} />
|
250
273
|
case FORMATS.HTML: return <Editor id={id} value={value} onChange={change} content={content} />
|
251
274
|
case FORMATS.DATE: return <TextField outlined={outlined} id={id} type="date" label={label} value={value} onChange={change} readOnly={!editable} />
|
252
|
-
case FORMATS.TOKENS:
|
275
|
+
case FORMATS.TOKENS:
|
253
276
|
return <TokenField id={id} label={label} onChange={change} options={buildOptions()} tokens={value} />
|
254
277
|
default:
|
255
278
|
return options ? (
|
256
279
|
<DropDown outlined={outlined} id={id} label={label} value={value} onChange={change} options={buildOptions()} readOnly={!editable} predictive={predictive} />
|
257
280
|
) : multivalue ? (
|
258
|
-
<TokenField id={id} label={label} onChange={change} readOnly={!editable}/>
|
281
|
+
<TokenField id={id} label={label} onChange={change} readOnly={!editable} />
|
259
282
|
) : (
|
260
283
|
<TextField outlined={outlined} id={id} label={label} value={value} onChange={change} readOnly={!editable} />
|
261
284
|
)
|
@@ -12,15 +12,17 @@ function buildTokenOptions() {
|
|
12
12
|
}
|
13
13
|
|
14
14
|
const schema = {
|
15
|
-
name : { id: "name" , type: TYPES.STRING, format: FORMATS.NONE, required: true, label: "Name" },
|
16
|
-
field1: { id: "field1", type: TYPES.STRING, format: FORMATS.NONE, required: true, label: "field1", multivalue: true
|
17
|
-
field2: { id: "field2", type: TYPES.STRING, format: FORMATS.NONE, required: true, label: "field2"
|
18
|
-
field3: { id: "field3", type: TYPES.STRING, format: FORMATS.TOKENS, required: true, label: "field3", options: buildTokenOptions },
|
19
|
-
field4: { id: "field4", type: TYPES.STRING, format: FORMATS.COLOR, required: true, label: "Color"
|
15
|
+
name : { id: "name" , type: TYPES.STRING, format: FORMATS.NONE , required: true, editable: false, label: "Name" , defValue: "John" },
|
16
|
+
field1: { id: "field1", type: TYPES.STRING, format: FORMATS.NONE , required: true, editable: true , label: "field1" , multivalue: true },
|
17
|
+
field2: { id: "field2", type: TYPES.STRING, format: FORMATS.NONE , required: true, editable: true , label: "field2" },
|
18
|
+
field3: { id: "field3", type: TYPES.STRING, format: FORMATS.TOKENS, required: true, editable: true , label: "field3" , options: buildTokenOptions },
|
19
|
+
field4: { id: "field4", type: TYPES.STRING, format: FORMATS.COLOR , required: true, editable: true , label: "Color" },
|
20
|
+
field5: { id: "field5", type: TYPES.STRING, format: FORMATS.TOKENS, required: true, editable: true , label: "field5" , multivalue: true },
|
21
|
+
|
20
22
|
}
|
21
23
|
|
22
24
|
const value = {
|
23
|
-
|
25
|
+
|
24
26
|
}
|
25
27
|
|
26
28
|
const ContentEditorTest = (prop) => {
|
@@ -28,6 +30,7 @@ const ContentEditorTest = (prop) => {
|
|
28
30
|
const [form, setForm] = useState(value)
|
29
31
|
|
30
32
|
function change(form) {
|
33
|
+
console.log(form)
|
31
34
|
setForm(form)
|
32
35
|
}
|
33
36
|
|
package/src/html/table.css
CHANGED
package/src/html/textfield.js
CHANGED
@@ -183,3 +183,26 @@ export const DropDown = (props) => {
|
|
183
183
|
</div>
|
184
184
|
)
|
185
185
|
}
|
186
|
+
|
187
|
+
|
188
|
+
export const DateRange = (props) => {
|
189
|
+
|
190
|
+
const { id, onChange } = props
|
191
|
+
const [form, setForm] = useState({})
|
192
|
+
|
193
|
+
useEffect(() => {
|
194
|
+
if (onChange) onChange(id, form)
|
195
|
+
}, [form])
|
196
|
+
|
197
|
+
function change(id, value) {
|
198
|
+
const next = Object.assign({}, form, { [id]: value })
|
199
|
+
setForm(next)
|
200
|
+
}
|
201
|
+
|
202
|
+
return (
|
203
|
+
<div className="date-range">
|
204
|
+
<TextField id="from" type="date" label="From" value={form.from} onChange={change} />
|
205
|
+
<TextField id="to" type="date" label="To" value={form.to} onChange={change} />
|
206
|
+
</div>
|
207
|
+
)
|
208
|
+
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import React, { useState } from 'react'
|
2
2
|
import { DropDown, TextField, TextArea, TokenField } from '.'
|
3
3
|
import { Wrapper } from '../../__reactpreview__/Wrapper'
|
4
|
+
import { DateRange } from './textfield'
|
4
5
|
|
5
6
|
const TextFieldTest = (prop) => {
|
6
7
|
|
@@ -35,6 +36,7 @@ const TextFieldTest = (prop) => {
|
|
35
36
|
<DropDown id="gender2" label="Dropdown 2" value={form.gender2} onChange={change} options={options} predictive={true}/>
|
36
37
|
<TextArea id="text1" label="Text 1" value={form.text1} onChange={change} />
|
37
38
|
<TextField id="date1" type="DATE" label="Date" value={form.date1} onChange={change} />
|
39
|
+
<DateRange id="range1" value={form.range1} onChange={change}/>
|
38
40
|
</>
|
39
41
|
)
|
40
42
|
}
|
package/src/html/tokenfield.js
CHANGED
@@ -33,7 +33,7 @@ export const TokenField = ({ id, label, tokens = [], readOnly, options, onChange
|
|
33
33
|
event.preventDefault()
|
34
34
|
event.stopPropagation()
|
35
35
|
const token = event.target.value
|
36
|
-
const next = tokens.concat(token
|
36
|
+
const next = Array.isArray(tokens) ? tokens.concat(token) : [token]
|
37
37
|
if (onChange) onChange(id, next)
|
38
38
|
setValue('')
|
39
39
|
}
|
package/src/site/site.test.js
CHANGED
@@ -115,20 +115,31 @@ const Page2 = (props) => {
|
|
115
115
|
|
116
116
|
const Page3 = (props) => {
|
117
117
|
|
118
|
+
const ENTITYTYPE = {
|
119
|
+
name : { id: "name" , section: "", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , like: true, label: "Name" },
|
120
|
+
field1: { id: "field1", section: "E-INFO1", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "E field1" },
|
121
|
+
field2: { id: "field2", section: "E-INFO2", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "E field2" },
|
122
|
+
field3: { id: "field3", section: "E-INFO2", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "E field3" },
|
123
|
+
|
124
|
+
}
|
125
|
+
|
126
|
+
|
118
127
|
const schema = {
|
119
|
-
name : { id: "name" , type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , like: true, label: "Name" },
|
120
|
-
state : { id: "state" , type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: true , grouper: true , column: true , filter: false , label: "State" , options: [
|
128
|
+
name : { id: "name" , section: "A", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , like: true, label: "Name" },
|
129
|
+
state : { id: "state" , section: "A", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: true , grouper: true , column: true , filter: false , label: "State" , options: [
|
121
130
|
{ label: "Pendiente", value: "NOT_CLASSIFIED" },
|
122
131
|
{ label: "Clasificada", value: "CLASSIFIED"},
|
123
132
|
]},
|
124
|
-
field1: { id: "field1", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "field1" },
|
125
|
-
field2: { id: "field2", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "field2" },
|
126
|
-
field4: { id: "field4", type: TYPES.STRING, format: FORMATS.COLOR, required: true, tab: false, grouper: true , column: true , filter: true , label: "Color" },
|
133
|
+
field1: { id: "field1", section: "A", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "field1" },
|
134
|
+
field2: { id: "field2", section: "B", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "field2" },
|
135
|
+
field4: { id: "field4", section: "B", type: TYPES.STRING , format: FORMATS.COLOR, required: true, tab: false, grouper: true , column: true , filter: true , label: "Color" },
|
136
|
+
field5: { id: "field5", section: "B", type: TYPES.ENTITY, item: ENTITYTYPE, format: FORMATS.NONE , editable: true, tab: false, grouper: false, column: true , filter: true , like: false, label: "Entity5"},
|
137
|
+
|
127
138
|
}
|
128
139
|
|
129
140
|
return (
|
130
141
|
<Fragment>
|
131
|
-
<
|
142
|
+
<TablePage title="Referencias" schema={schema} host="http://localhost:3000" url="/references" canFilter={true} tableClassName="condensed"/>
|
132
143
|
</Fragment>
|
133
144
|
)
|
134
145
|
}
|