ywana-core8 0.0.518 → 0.0.521
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 +13 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +12 -0
- package/dist/index.css.map +1 -1
- package/dist/index.modern.js +13 -2
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +13 -2
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/css/html.css +12 -0
- package/src/domain/TabbedTablePage.js +22 -13
- package/src/html/table.js +12 -3
- package/src/html/table.test.js +16 -2
package/package.json
CHANGED
package/src/css/html.css
CHANGED
@@ -42,4 +42,16 @@ td.actions {
|
|
42
42
|
*/
|
43
43
|
body > iframe[style*="2147483647"]:not([id="webpack-dev-server-client-overlay"]) {
|
44
44
|
display: none;
|
45
|
+
}
|
46
|
+
|
47
|
+
.empty-message {
|
48
|
+
width: 100%;
|
49
|
+
height: 100%;
|
50
|
+
min-height: 10rem;
|
51
|
+
flex: 1;
|
52
|
+
display: flex;
|
53
|
+
flex-direction: column;
|
54
|
+
justify-content: center;
|
55
|
+
align-items: center;
|
56
|
+
color: var(--text-color-lighter)
|
45
57
|
}
|
@@ -36,16 +36,16 @@ export const TabbedTablePage = (props) => {
|
|
36
36
|
const timer = useRef(null)
|
37
37
|
const [form, setForm] = useState(selected)
|
38
38
|
const [tabs, setTabs] = useState([])
|
39
|
-
|
39
|
+
|
40
40
|
useEffect(async () => {
|
41
41
|
const field = Object.values(schema).find(field => field.tab && field.tab === true)
|
42
|
-
const tabs = field.options.map(option => Object.assign({}, option, { field: field.id}))
|
42
|
+
const tabs = field.options.map(option => Object.assign({}, option, { field: field.id }))
|
43
43
|
setTabs(tabs)
|
44
44
|
context.changeTab(tabs[0])
|
45
45
|
setPageContext(context)
|
46
46
|
}, [])
|
47
|
-
|
48
|
-
useEffect(
|
47
|
+
|
48
|
+
useEffect(async () => {
|
49
49
|
if (tab) {
|
50
50
|
const filter = { [tab.field]: tab.value }
|
51
51
|
await pageContext.load(filter, [])
|
@@ -151,7 +151,7 @@ export const TabbedTablePage = (props) => {
|
|
151
151
|
}
|
152
152
|
|
153
153
|
function renderTabs() {
|
154
|
-
const selected = tab ? tab.value : null
|
154
|
+
const selected = tab ? tab.value : null
|
155
155
|
return (
|
156
156
|
<Tabs selected={selected} onChange={changeTab} fillRight={true} fillLeft={false}>
|
157
157
|
{tabs.map(tab => <Tab id={tab.value} label={tab.label} />)}
|
@@ -179,7 +179,7 @@ export const TabbedTablePage = (props) => {
|
|
179
179
|
</menu>
|
180
180
|
) : null}
|
181
181
|
<main key={id} className="table-page">
|
182
|
-
<TableEditor icon={icon} title={name} tabs={renderTabs()} schema={schema} delay={delay} editable={editable} groupBy={groupBy} filter={tableFilter} actions={tableActions} canDelete={canDelete} className={tableClassName}/>
|
182
|
+
<TableEditor icon={icon} title={name} tabs={renderTabs()} schema={schema} delay={delay} editable={editable} groupBy={groupBy} filter={tableFilter} actions={tableActions} canDelete={canDelete} className={tableClassName} />
|
183
183
|
{children ? <article>{children}</article> : null}
|
184
184
|
</main>
|
185
185
|
{renderAside()}
|
@@ -326,10 +326,10 @@ const TableFilters = (props) => {
|
|
326
326
|
|
327
327
|
const likes = useMemo(() => {
|
328
328
|
const fields = Object.values(schema)
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
329
|
+
return fields.reduce((likes, field) => {
|
330
|
+
if (field.like === true) likes.push(field.id)
|
331
|
+
return likes
|
332
|
+
}, [])
|
333
333
|
}, [schema])
|
334
334
|
|
335
335
|
useEffect(() => {
|
@@ -446,6 +446,14 @@ export const TableEditor = (props) => {
|
|
446
446
|
|
447
447
|
function renderGroups() {
|
448
448
|
const items = filter ? filter(all) : all
|
449
|
+
|
450
|
+
if (items.length === 0) return (
|
451
|
+
<div className='empty-message'>
|
452
|
+
<Icon icon="search_off" />
|
453
|
+
<Text>No Result Found</Text>
|
454
|
+
</div>
|
455
|
+
)
|
456
|
+
|
449
457
|
const groups = items.reduce((groups, item) => {
|
450
458
|
const groupName = item[groupBy]
|
451
459
|
const group = groups[groupName]
|
@@ -453,6 +461,7 @@ export const TableEditor = (props) => {
|
|
453
461
|
groups[groupName].push(item)
|
454
462
|
return groups
|
455
463
|
}, {})
|
464
|
+
|
456
465
|
return Object.keys(groups).map(groupName => {
|
457
466
|
const table = {
|
458
467
|
columns: Object.values(schema)
|
@@ -492,7 +501,7 @@ export const TableEditor = (props) => {
|
|
492
501
|
<Header title={title} >
|
493
502
|
<span className="size">{groupSize}</span>
|
494
503
|
</Header>
|
495
|
-
<DataTable {...table} onRowSelection={select} editable={editable} onCheckAll={check} className={className}/>
|
504
|
+
<DataTable {...table} onRowSelection={select} editable={editable} onCheckAll={check} className={className} />
|
496
505
|
</Fragment>
|
497
506
|
)
|
498
507
|
})
|
@@ -550,7 +559,7 @@ const TableContext = (url, field, host, urlQuery) => {
|
|
550
559
|
|
551
560
|
return filters;
|
552
561
|
}, {}) : []
|
553
|
-
|
562
|
+
|
554
563
|
if (this.tab) {
|
555
564
|
filters[this.tab.field] = this.tab.value
|
556
565
|
}
|
@@ -670,7 +679,7 @@ const TableAPI = (url, host) => {
|
|
670
679
|
}, "")
|
671
680
|
return query.concat(param)
|
672
681
|
} else {
|
673
|
-
return like.includes(key) ? query.concat(`${key}=%${filters[key]}%&`) :
|
682
|
+
return like.includes(key) ? query.concat(`${key}=%${filters[key]}%&`) : query.concat(`${key}=${filters[key]}&`)
|
674
683
|
}
|
675
684
|
}, "")
|
676
685
|
queryParams = queryParams.concat(filterQuery)
|
package/src/html/table.js
CHANGED
@@ -110,10 +110,19 @@ export const DataTable = (props) => {
|
|
110
110
|
</tr>
|
111
111
|
</thead>
|
112
112
|
<tbody>
|
113
|
-
{
|
113
|
+
{rows.length > 0 ?
|
114
114
|
multiSort(rows, sortDir).map(row => (
|
115
115
|
<DataTableRow key={row.id} row={row} columns={columns} onSelect={select} onDrop={moveRow} editable={editable} expanded={expanded} />
|
116
|
-
))
|
116
|
+
)) : (
|
117
|
+
<tr>
|
118
|
+
<td colSpan={columns.length+1}>
|
119
|
+
<div className='empty-message'>
|
120
|
+
<Icon icon="search_off" />
|
121
|
+
<Text>No Result Found</Text>
|
122
|
+
</div>
|
123
|
+
</td>
|
124
|
+
</tr>
|
125
|
+
)
|
117
126
|
}
|
118
127
|
</tbody>
|
119
128
|
</table>
|
@@ -194,7 +203,7 @@ const EntityCellViewer = ({ id, item, value }) => {
|
|
194
203
|
|
195
204
|
const fields = Object.values(item).filter(field => field.column === true)
|
196
205
|
const locale = window.navigator.userLanguage || window.navigator.language;
|
197
|
-
|
206
|
+
|
198
207
|
return fields.map(field => {
|
199
208
|
|
200
209
|
let text = value[field.id]
|
package/src/html/table.test.js
CHANGED
@@ -35,7 +35,7 @@ export const TableTest = (prop) => {
|
|
35
35
|
setRows(next)
|
36
36
|
}
|
37
37
|
|
38
|
-
const
|
38
|
+
const table1 = {
|
39
39
|
className: "xxx",
|
40
40
|
editable: true,
|
41
41
|
columns : [
|
@@ -49,9 +49,23 @@ export const TableTest = (prop) => {
|
|
49
49
|
rows
|
50
50
|
}
|
51
51
|
|
52
|
+
const table2 = {
|
53
|
+
className: "xxx",
|
54
|
+
editable: true,
|
55
|
+
columns : [
|
56
|
+
{ id: "checked", onChange: check },
|
57
|
+
{ id: "name", label: "Name", type: "String", onChange: editCell },
|
58
|
+
{ id: "name", label: "Name", type: "String", sortable: true },
|
59
|
+
{ id: "thumb", label: "Thumb", type: "String", format: FORMATS.IMG },
|
60
|
+
{ id: "color", label: "Color", type: "String", format: FORMATS.COLOR },
|
61
|
+
{ id: "date", label: "Date", type: "String", format: FORMATS.DATE },
|
62
|
+
],
|
63
|
+
rows: []
|
64
|
+
}
|
65
|
+
|
52
66
|
return (
|
53
67
|
<div style={{ maxHeight: "20rem", overflow: "hidden", border: "solid 1px red", margin: "2rem" }}>
|
54
|
-
<DataTable {...
|
68
|
+
<DataTable {...table2} onRowSelection={select} onCheckAll={checkAll}/>
|
55
69
|
</div>
|
56
70
|
)
|
57
71
|
}
|