ywana-core8 0.0.631 → 0.0.632

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.631",
3
+ "version": "0.0.632",
4
4
  "description": "ywana-core8",
5
5
  "homepage": "https://ywana.github.io/workspace",
6
6
  "author": "Ernesto Roldan Garcia",
@@ -9,6 +9,9 @@ menu.collection-page {
9
9
 
10
10
  menu.collection-page>header {
11
11
  border-bottom: dotted 1px var(--divider-color);
12
+ display: flex;
13
+ align-items: center;
14
+ padding: 0 0.5rem
12
15
  }
13
16
 
14
17
  menu.collection-page>nav.collection-filters {
@@ -2,7 +2,7 @@ import equal from 'deep-equal'
2
2
  import React, { Fragment, useContext, useEffect, useRef, useState, useMemo } from 'react'
3
3
  import { HTTPClient, Session } from '../http'
4
4
  import { PageContext } from '../site'
5
- import { Button, Header, Icon, List, Menu, MenuIcon, MenuItem, Text, Tree, TreeItem, TreeNode, TextField } from '../html'
5
+ import { Button, Header, Icon, List, Menu, MenuIcon, MenuItem, Text, Tree, TreeItem, TreeNode, TextField, Chip } from '../html'
6
6
  import { Content, TYPES } from './ContentType'
7
7
  import { ContentEditor, TabbedContentEditor, TreededContentEditor } from './ContentEditor'
8
8
  import { CreateContentDialog } from './CreateContentDialog'
@@ -30,7 +30,7 @@ export const CollectionPage = (props) => {
30
30
 
31
31
  const [pageContext, setPageContext] = useContext(PageContext)
32
32
  const context = CollectionContext(url, field, host, page, fetching)
33
- const [showFilter, setShowFilter] = useState(false)
33
+
34
34
  const { all } = pageContext
35
35
 
36
36
  useEffect(async () => {
@@ -38,9 +38,7 @@ export const CollectionPage = (props) => {
38
38
  setPageContext(context)
39
39
  }, [])
40
40
 
41
- function toggleFilters() {
42
- setShowFilter(!showFilter)
43
- }
41
+
44
42
 
45
43
  async function reload() {
46
44
  await pageContext.load()
@@ -79,14 +77,11 @@ export const CollectionPage = (props) => {
79
77
  {renderActions()}
80
78
  </Header>
81
79
  <menu className={`collection-page ${className}`}>
82
- <Header title={<Text>{name}</Text>} >
83
- {canFilter ? showFilter ? <Icon icon="filter_list" size="small" clickable action={toggleFilters} /> : <Icon icon="filter_list_off" size="small" clickable action={toggleFilters} /> : false}
84
- </Header>
85
- {canFilter && showFilter ? <CollectionFilters schema={schema} /> : null}
80
+ {canFilter ? <CollectionFilters schema={schema} /> : null}
86
81
  {levels ? <CollectionTree schema={schema} icon={icon} levels={levels} onSelect={onSelect} sorter={sorter} searchBy={searchBy} /> : <CollectionList groupBy={groupBy} onSelect={onSelect} searchBy={searchBy} />}
87
82
  </menu>
88
83
  <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} patch={patch}/>
84
+ <CollectionEditor icon={icon} schema={schema} layout={editor} autosave={autosave} delay={delay} canDelete={canDelete} canEdit={canEdit} onReload={reloadSelection} patch={patch} />
90
85
  {children ? <article>{children}</article> : null}
91
86
  <footer>
92
87
  {footer}
@@ -103,6 +98,7 @@ export const CollectionFilters = (props) => {
103
98
 
104
99
  const { schema, onChange } = props
105
100
  const [form, setForm] = useState({})
101
+ const [showFilter, setShowFilter] = useState(false)
106
102
 
107
103
  const filterSchema = useMemo(() => {
108
104
  const filterSchema = Object.assign({}, schema)
@@ -133,15 +129,29 @@ export const CollectionFilters = (props) => {
133
129
  change({})
134
130
  }
135
131
 
132
+ function toggleFilters() {
133
+ setShowFilter(!showFilter)
134
+ }
135
+
136
136
  const content = new Content(filterSchema, form)
137
137
  return (
138
138
  <Fragment>
139
- <nav className="collection-filters">
140
- <Icon icon="clear_all" size="small" clickable action={clear} />
141
- </nav>
142
- <main className="collection-filters">
143
- <ContentEditor content={content} onChange={change} />
144
- </main>
139
+ <header>
140
+ <div className='expand'>
141
+ <Chip label="Activas" />
142
+ </div>
143
+ {showFilter ? <Icon icon="expand_less" size="small" clickable action={toggleFilters} /> : <Icon icon="expand_more" size="small" clickable action={toggleFilters} />}
144
+ </header>
145
+ {showFilter ? (
146
+ <>
147
+ <nav className="collection-filters">
148
+ <Icon icon="clear_all" size="small" clickable action={clear} />
149
+ </nav>
150
+ <main className="collection-filters">
151
+ <ContentEditor content={content} onChange={change} />
152
+ </main>
153
+ </>
154
+ ) : null}
145
155
  </Fragment>
146
156
  )
147
157
  }
@@ -310,7 +320,7 @@ export const CollectionTree = (props) => {
310
320
  const CollectionEditor = (props) => {
311
321
  const [pageContext, setPageContext] = useContext(PageContext)
312
322
  const { selected } = pageContext
313
- const { icon, schema, layout, autosave = false, delay = 1000, canDelete, canEdit, onReload, patch=false } = props
323
+ const { icon, schema, layout, autosave = false, delay = 1000, canDelete, canEdit, onReload, patch = false } = props
314
324
  const timer = useRef(null)
315
325
  const [form, setForm] = useState(selected)
316
326
 
@@ -348,10 +358,10 @@ const CollectionEditor = (props) => {
348
358
  }
349
359
 
350
360
  async function save() {
351
- if (patch) { 
361
+ if (patch) {
352
362
  await pageContext.patch(form.id, form)
353
- } else {
354
- await pageContext.update(form)
363
+ } else {
364
+ await pageContext.update(form)
355
365
  }
356
366
  setPageContext(Object.assign({}, pageContext))
357
367
  }
@@ -79,7 +79,7 @@ export class ContentType {
79
79
  const attributes = Object.entries(this._schema)
80
80
  return attributes
81
81
  .filter(([name, attr]) => attr.required === true)
82
- .every(([name, attr]) => data[name] !== undefined ? this.checkType(attr, data[name]) : false)
82
+ .every(([name, attr]) => data[name] && typeof(data[name]) !== undefined ? this.checkType(attr, data[name]) : false)
83
83
  }
84
84
 
85
85
  /**
@@ -20,7 +20,7 @@ const SiteTest = (prop) => {
20
20
  const footer = <div>FOOTER</div>
21
21
 
22
22
  return (
23
- <Site icon="star" title="Site Test" init={"PAGE3"} footer={footer}>
23
+ <Site icon="star" title="Site Test" init={"PAGE5"} footer={footer}>
24
24
  <Page id="PAGE1" section="SECTION1" icon="description" title="Page 1" layout="workspace">
25
25
  <Page1 />
26
26
  </Page>
@@ -201,7 +201,7 @@ const Page5 = (props) => {
201
201
  const schema = {
202
202
  field6: { id: "field6", section: "C", type: TYPES.ARRAY , item: ENTITYTYPE , filter: false , label: "Collection 100"},
203
203
  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" },
204
- state : { id: "state" , section: "A", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: true , grouper: true , column: true , filter: false , label: "State" , options: [
204
+ state : { id: "state" , section: "A", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: true , grouper: true , column: true , filter: true , label: "State" , options: [
205
205
  { label: "Pendiente", value: "NOT_CLASSIFIED" },
206
206
  { label: "Clasificada", value: "CLASSIFIED"},
207
207
  ]},
@@ -217,9 +217,9 @@ const Page5 = (props) => {
217
217
  <CollectionPage
218
218
  title="Referencias"
219
219
  schema={schema} host="http://localhost:3000" url="/references" fetching={true} // resource
220
- searchBy={["field1"]} levels={["color"]} canFilter={true} // menu
220
+ searchBy={["name"]} levels={["color"]} canFilter={true} // menu
221
221
  editor="TABBED" canAdd={true} // editor
222
222
  />
223
223
  </Fragment>
224
224
  )
225
- }
225
+ }