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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ywana-core8",
3
- "version": "0.0.621",
3
+ "version": "0.0.624",
4
4
  "description": "ywana-core8",
5
5
  "homepage": "https://ywana.github.io/workspace",
6
6
  "author": "Ernesto Roldan Garcia",
@@ -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
  )
@@ -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;
@@ -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
- setLabel(label)
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={toggle} value={label} onChange={change} onBlur={blur} readOnly={!predictive} />
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}/>