ywana-core8 0.0.621 → 0.0.624
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 +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +18 -2
- package/dist/index.css.map +1 -1
- package/dist/index.modern.js +2 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +2 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/CollectionPage.css +19 -2
- package/src/domain/CollectionPage.js +5 -1
- package/src/html/icon.js +2 -2
- package/src/html/textfield.css +15 -0
- package/src/html/textfield.js +13 -4
- package/src/html/textfield.test.js +4 -2
package/package.json
CHANGED
@@ -25,12 +25,12 @@ menu.collection-page>main.collection-filters {
|
|
25
25
|
}
|
26
26
|
|
27
27
|
menu.collection-page>.list {
|
28
|
-
overflow:auto;
|
28
|
+
overflow: auto;
|
29
29
|
}
|
30
30
|
|
31
31
|
menu.collection-page>main {
|
32
32
|
flex: 1;
|
33
|
-
overflow:auto;
|
33
|
+
overflow: auto;
|
34
34
|
}
|
35
35
|
|
36
36
|
menu.collection-page>footer>.search-box {
|
@@ -47,4 +47,21 @@ main.collection-page>.content-editor {
|
|
47
47
|
flex: 1;
|
48
48
|
}
|
49
49
|
|
50
|
+
main.collection-page.dock-to-right {
|
51
|
+
display: grid;
|
52
|
+
grid-template-areas: "header header" "main dock" "footer dock";
|
53
|
+
grid-template-columns: 1fr auto;
|
54
|
+
grid-template-rows: auto 1fr auto;
|
55
|
+
}
|
56
|
+
|
57
|
+
main.collection-page.dock-to-right>header {
|
58
|
+
grid-area: header;
|
59
|
+
}
|
60
|
+
|
61
|
+
main.collection-page.dock-to-right>main {
|
62
|
+
grid-area: main;
|
63
|
+
}
|
50
64
|
|
65
|
+
main.collection-page.dock-to-right>article {
|
66
|
+
grid-area: dock;
|
67
|
+
}
|
@@ -24,6 +24,7 @@ export const CollectionPage = (props) => {
|
|
24
24
|
autosave = false, delay = 1000,
|
25
25
|
groupBy, levels, sorter,
|
26
26
|
editor,
|
27
|
+
footer,
|
27
28
|
children
|
28
29
|
} = props
|
29
30
|
|
@@ -87,6 +88,9 @@ export const CollectionPage = (props) => {
|
|
87
88
|
<main key={id} className={`collection-page ${className}`}>
|
88
89
|
<CollectionEditor icon={icon} schema={schema} layout={editor} autosave={autosave} delay={delay} canDelete={canDelete} canEdit={canEdit} onReload={reloadSelection} />
|
89
90
|
{children ? <article>{children}</article> : null}
|
91
|
+
<footer>
|
92
|
+
{footer}
|
93
|
+
</footer>
|
90
94
|
</main>
|
91
95
|
</Fragment>
|
92
96
|
)
|
@@ -171,7 +175,7 @@ const CollectionList = (props) => {
|
|
171
175
|
function search() {
|
172
176
|
const items = filter ? all.filter(item => {
|
173
177
|
const result = searchBy.some(fieldName => {
|
174
|
-
const value = item[fieldName]
|
178
|
+
const value = item[fieldName] ? item[fieldName].toUpperCase() : ""
|
175
179
|
return value ? value.indexOf(filter.toUpperCase()) >= 0 : false
|
176
180
|
})
|
177
181
|
return result
|
package/src/html/icon.js
CHANGED
@@ -4,7 +4,7 @@ import './icon.css'
|
|
4
4
|
/**
|
5
5
|
* Icon
|
6
6
|
*/
|
7
|
-
export const Icon = ({ icon, size = "normal", clickable = false, disabled = false, action, eventPropagation = false }) => {
|
7
|
+
export const Icon = ({ icon, size = "normal", clickable = false, disabled = false, action, eventPropagation = false, className }) => {
|
8
8
|
|
9
9
|
function click (event) {
|
10
10
|
if (!eventPropagation) {
|
@@ -16,7 +16,7 @@ export const Icon = ({ icon, size = "normal", clickable = false, disabled = fals
|
|
16
16
|
|
17
17
|
const style = disabled ? "disabled" : clickable ? "clickable" : ""
|
18
18
|
return (
|
19
|
-
<i className={`icon ${size} ${style} material-icons`} onClick={click}>
|
19
|
+
<i className={`icon ${size} ${style} ${className} material-icons`} onClick={click}>
|
20
20
|
{icon}
|
21
21
|
</i>
|
22
22
|
)
|
package/src/html/textfield.css
CHANGED
@@ -60,6 +60,14 @@
|
|
60
60
|
-webkit-transition: 0.2s ease all;
|
61
61
|
}
|
62
62
|
|
63
|
+
.textfield > label .row .icon {
|
64
|
+
width: 1.2rem;
|
65
|
+
height: 1.2rem;
|
66
|
+
font-size: 1rem;
|
67
|
+
margin-left: .3rem;
|
68
|
+
color: var(--text-color-lighter);
|
69
|
+
}
|
70
|
+
|
63
71
|
input:read-only {
|
64
72
|
background-color: rgba(200,200,200,.1);
|
65
73
|
border: 0px !important;
|
@@ -122,6 +130,13 @@ input:read-only ~ label,
|
|
122
130
|
right: .2rem;
|
123
131
|
}
|
124
132
|
|
133
|
+
.dropdown>.decorator {
|
134
|
+
position: absolute;
|
135
|
+
top: 1.5rem;
|
136
|
+
right: 1.7rem !important;
|
137
|
+
color: rgba(150,150,150,1);
|
138
|
+
}
|
139
|
+
|
125
140
|
.dropdown>.textfield>.icon,
|
126
141
|
.dropdown>.textfield-outlined>.icon {
|
127
142
|
position: absolute;
|
package/src/html/textfield.js
CHANGED
@@ -119,26 +119,34 @@ export const TextArea = (props) => {
|
|
119
119
|
export const DropDown = (props) => {
|
120
120
|
|
121
121
|
const site = useContext(SiteContext)
|
122
|
-
const { id, options = [], value, onChange, predictive = false, readOnly = false, verbose = true, onBlur } = props
|
122
|
+
const { id, options = [], value, onChange, predictive = false, readOnly = false, verbose = true, editable = false, onBlur } = props
|
123
123
|
const [open, setOpen] = useState(false)
|
124
124
|
const [label, setLabel] = useState()
|
125
125
|
|
126
126
|
useEffect(() => {
|
127
|
+
|
127
128
|
if (Array.isArray(options)) {
|
128
129
|
const option = options.find(option => option.value === value)
|
129
130
|
const label = option ? option.label : ""
|
130
|
-
|
131
|
+
if (editable && label === "") setLabel(value)
|
132
|
+
if (!editable) setLabel(label)
|
131
133
|
}
|
132
|
-
}, [value])
|
133
134
|
|
135
|
+
}, [value])
|
136
|
+
|
134
137
|
function change(id, value) {
|
135
138
|
if (predictive) {
|
136
139
|
setLabel(value)
|
137
140
|
} else {
|
141
|
+
console.log('change',id, value)
|
138
142
|
if (onChange) onChange(id, value)
|
139
143
|
}
|
140
144
|
}
|
141
145
|
|
146
|
+
function onFocus() {
|
147
|
+
if (!editable) toggle()
|
148
|
+
}
|
149
|
+
|
142
150
|
function toggle() {
|
143
151
|
if (site && site.changeFocus) {
|
144
152
|
site.changeFocus({
|
@@ -175,9 +183,10 @@ export const DropDown = (props) => {
|
|
175
183
|
}
|
176
184
|
}
|
177
185
|
|
186
|
+
const title = editable ? <div className='row'>{props.label}<Icon className="decorator" icon="edit" size="small" /></div> : props.label}
|
178
187
|
return (
|
179
188
|
<div className="dropdown">
|
180
|
-
<TextField {...props} onClick={
|
189
|
+
<TextField {...props} label={title} onClick={onFocus} value={label} onChange={change} onBlur={blur} readOnly={!predictive && !editable} />
|
181
190
|
{!readOnly ? <Icon icon="expand_more" clickable size="small" action={toggle} /> : null}
|
182
191
|
{renderOptions()}
|
183
192
|
</div>
|
@@ -8,6 +8,7 @@ const TextFieldTest = (prop) => {
|
|
8
8
|
const [form, setForm] = useState({})
|
9
9
|
|
10
10
|
function change(id, value) {
|
11
|
+
console.log('2', id, value)
|
11
12
|
const next = Object.assign({}, form, { [id]: value })
|
12
13
|
setForm(next)
|
13
14
|
}
|
@@ -29,11 +30,12 @@ const TextFieldTest = (prop) => {
|
|
29
30
|
return (
|
30
31
|
<>
|
31
32
|
<DropDown id="b1" label="Boolean1" onChange={change} options={options2} value={form.b1} />
|
33
|
+
<DropDown id="gender1" label="Dropdown 1" value={form.gender1} onChange={change} options={options} predictive={false}/>
|
34
|
+
<DropDown id="gender2" label="Dropdown 2" value={form.gender2} onChange={change} options={options} predictive={true}/>
|
35
|
+
<DropDown id="gender3" label="Dropdown 3" value={form.gender3} onChange={change} options={options} predictive={false} editable={true}/>
|
32
36
|
<TokenField id="token1" label="Tokens" onChange={change} />
|
33
37
|
<TokenField id="token2" label="Tokens DropDown" onChange={change} options={options} tokens={form.token2}/>
|
34
38
|
<TextField id="name" label="Name" value={form.name} onChange={change} />
|
35
|
-
<DropDown id="gender1" label="Dropdown 1" value={form.gender1} onChange={change} options={options} predictive={false}/>
|
36
|
-
<DropDown id="gender2" label="Dropdown 2" value={form.gender2} onChange={change} options={options} predictive={true}/>
|
37
39
|
<TextArea id="text1" label="Text 1" value={form.text1} onChange={change} />
|
38
40
|
<TextField id="date1" type="DATE" label="Date" value={form.date1} onChange={change} />
|
39
41
|
<DateRange id="range1" value={form.range1} onChange={change}/>
|