ywana-core8 0.0.535 → 0.0.538

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 CHANGED
@@ -1,13 +1,29 @@
1
1
  {
2
2
  "references": [
3
3
  {
4
+ "id": 1,
5
+ "field6": [
6
+ {
7
+ "name": "aaa",
8
+ "field1": "aaa",
9
+ "field2": "aaa",
10
+ "field3": "aaa"
11
+ },
12
+ {
13
+ "name": "aaa",
14
+ "field1": "bbb",
15
+ "field2": "bbb",
16
+ "field3": "bbb"
17
+ }
18
+ ],
4
19
  "name": "111111",
5
20
  "state": "NOT_CLASSIFIED",
6
- "field1": "111111",
21
+ "field1": "1111114444",
7
22
  "field2": "111111",
8
23
  "field4": "#ce1212",
9
- "field5": {},
10
- "id": 1
24
+ "field5": {
25
+ "name": "xxx"
26
+ }
11
27
  },
12
28
  {
13
29
  "name": "2222",
package/dist/index.cjs CHANGED
@@ -4052,7 +4052,7 @@ var TabbedContentEditor = function TabbedContentEditor(_ref2) {
4052
4052
  fields = section.fields;
4053
4053
  return /*#__PURE__*/React__default["default"].createElement("section", {
4054
4054
  key: title
4055
- }, /*#__PURE__*/React__default["default"].createElement("nav", null, "\xA0"), /*#__PURE__*/React__default["default"].createElement("main", null, grouped ? group(section).map(function (group) {
4055
+ }, grouped ? group(section).map(function (group) {
4056
4056
  return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, group.name.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
4057
4057
  className: "group-caption"
4058
4058
  }, group.name) : null, group.fields.filter(function (field) {
@@ -4078,7 +4078,7 @@ var TabbedContentEditor = function TabbedContentEditor(_ref2) {
4078
4078
  onChange: change,
4079
4079
  content: content
4080
4080
  });
4081
- })));
4081
+ }));
4082
4082
  })));
4083
4083
  };
4084
4084
  /**
@@ -4541,9 +4541,7 @@ var CollectionEditor$1 = function CollectionEditor(_ref10) {
4541
4541
  Feeder = field.Feeder,
4542
4542
  Renderer = field.Renderer,
4543
4543
  _field$Adder = field.Adder,
4544
- Adder = _field$Adder === void 0 ? true : _field$Adder,
4545
- _field$editable3 = field.editable,
4546
- editable = _field$editable3 === void 0 ? true : _field$editable3;
4544
+ Adder = _field$Adder === void 0 ? true : _field$Adder;
4547
4545
 
4548
4546
  function add(rows) {
4549
4547
  if (onChange) {
@@ -4569,7 +4567,9 @@ var CollectionEditor$1 = function CollectionEditor(_ref10) {
4569
4567
  }
4570
4568
  }
4571
4569
 
4572
- var columns = Object.values(item).map(function (item) {
4570
+ var columns = Object.values(item).filter(function (field) {
4571
+ return field.column === true;
4572
+ }).map(function (item) {
4573
4573
  return _extends({}, item, {
4574
4574
  onChange: change
4575
4575
  });
@@ -4578,7 +4578,7 @@ var CollectionEditor$1 = function CollectionEditor(_ref10) {
4578
4578
  id: 'actions',
4579
4579
  label: 'Actions'
4580
4580
  });
4581
- var rows = value.map(function (item, index) {
4581
+ value.map(function (item, index) {
4582
4582
  return _extends({}, item, {
4583
4583
  id: index,
4584
4584
  actions: [/*#__PURE__*/React__default["default"].createElement(Icon, {
@@ -4591,26 +4591,23 @@ var CollectionEditor$1 = function CollectionEditor(_ref10) {
4591
4591
  })]
4592
4592
  });
4593
4593
  });
4594
- var table = {
4595
- columns: columns,
4596
- rows: rows
4597
- };
4598
4594
  return /*#__PURE__*/React__default["default"].createElement("div", {
4599
4595
  className: "collection-editor"
4600
- }, /*#__PURE__*/React__default["default"].createElement("header", null, /*#__PURE__*/React__default["default"].createElement(Text, {
4601
- use: "caption"
4602
- }, label), /*#__PURE__*/React__default["default"].createElement("div", {
4603
- className: "actions"
4604
- }, Feeder ? /*#__PURE__*/React__default["default"].createElement(Feeder, {
4605
- onAdd: add
4606
- }) : null)), Renderer ? /*#__PURE__*/React__default["default"].createElement(Renderer, {
4596
+ }, Renderer ? /*#__PURE__*/React__default["default"].createElement(Renderer, {
4607
4597
  field: field,
4608
4598
  value: value,
4609
4599
  onRemove: remove,
4610
4600
  onChange: onChange
4611
- }) : /*#__PURE__*/React__default["default"].createElement(DataTable, _extends({}, table, {
4612
- editable: editable
4613
- })), /*#__PURE__*/React__default["default"].createElement("footer", null, Adder ? /*#__PURE__*/React__default["default"].createElement(CollectionAdder, {
4601
+ }) // : <DataTable {...table} editable={editable} />
4602
+ : /*#__PURE__*/React__default["default"].createElement(TableEditor$2, {
4603
+ icon: "info",
4604
+ title: label,
4605
+ data: value,
4606
+ schema: item,
4607
+ groupBy: "field1"
4608
+ }), /*#__PURE__*/React__default["default"].createElement("footer", null, Feeder ? /*#__PURE__*/React__default["default"].createElement(Feeder, {
4609
+ onAdd: add
4610
+ }) : null, Adder ? /*#__PURE__*/React__default["default"].createElement(CollectionAdder, {
4614
4611
  item: item,
4615
4612
  onAdd: add
4616
4613
  }) : null));
@@ -4685,6 +4682,166 @@ var CollectionAdder = function CollectionAdder(_ref11) {
4685
4682
  action: toggle
4686
4683
  }));
4687
4684
  };
4685
+ /**
4686
+ * Table Editor
4687
+ */
4688
+
4689
+
4690
+ var TableEditor$2 = function TableEditor(props) {
4691
+ var select = function select(row) {
4692
+ try {
4693
+ if (onSelect) onSelect(row.id);
4694
+ return Promise.resolve();
4695
+ } catch (e) {
4696
+ return Promise.reject(e);
4697
+ }
4698
+ };
4699
+
4700
+ var _props$data = props.data,
4701
+ data = _props$data === void 0 ? [] : _props$data,
4702
+ icon = props.icon,
4703
+ title = props.title,
4704
+ schema = props.schema,
4705
+ editable = props.editable,
4706
+ canDelete = props.canDelete,
4707
+ filter = props.filter,
4708
+ actions = props.actions,
4709
+ className = props.className;
4710
+
4711
+ var _useState5 = React.useState(props.groupBy),
4712
+ groupBy = _useState5[0],
4713
+ setGroupBy = _useState5[1];
4714
+
4715
+ function changeGroup(id, value) {
4716
+ setGroupBy(value);
4717
+ }
4718
+
4719
+ function renderGroupLabel(groupName) {
4720
+ var grouper = schema[groupBy];
4721
+ if (!groupName || !grouper) return "";
4722
+
4723
+ if (grouper.options) {
4724
+ var options = CHECK['isFunction'](grouper.options) ? grouper.options() : grouper.options;
4725
+ var option = options.find(function (option) {
4726
+ return option.value === groupName;
4727
+ });
4728
+ return option ? option.label : groupName;
4729
+ } else {
4730
+ return groupName;
4731
+ }
4732
+ }
4733
+
4734
+ function renderGroups() {
4735
+ var items = filter ? filter(data) : data;
4736
+ if (items.length === 0) return /*#__PURE__*/React__default["default"].createElement("div", {
4737
+ className: "empty-message"
4738
+ }, /*#__PURE__*/React__default["default"].createElement(Icon, {
4739
+ icon: "search_off"
4740
+ }), /*#__PURE__*/React__default["default"].createElement(Text, null, "No Result Found"));
4741
+ var groups = items.reduce(function (groups, item) {
4742
+ var groupName = item[groupBy];
4743
+ var group = groups[groupName];
4744
+ if (!group) groups[groupName] = [];
4745
+ groups[groupName].push(item);
4746
+ return groups;
4747
+ }, {});
4748
+ return Object.keys(groups).map(function (groupName) {
4749
+ var table = {
4750
+ columns: Object.values(schema).filter(function (field) {
4751
+ return field.column === true;
4752
+ }).map(function (field) {
4753
+ var options = field.options;
4754
+
4755
+ if (options && typeof options == 'function') {
4756
+ options = options();
4757
+ }
4758
+
4759
+ return {
4760
+ id: field.id,
4761
+ label: field.label,
4762
+ type: field.type,
4763
+ format: field.format,
4764
+ item: field.item ? field.item : [],
4765
+ onChange: field.id === "checked" ? checkOne : field.editable ? change : null,
4766
+
4767
+ /* checked has it´s own handler */
4768
+ options: options
4769
+ };
4770
+ }),
4771
+ rows: groups[groupName].map(function (item) {
4772
+ item.actions = actions ? actions.map(function (_action) {
4773
+ return _action.filter ? _action.filter(item) ? /*#__PURE__*/React__default["default"].createElement(Icon, {
4774
+ icon: _action.icon,
4775
+ clickable: true,
4776
+ size: "small",
4777
+ action: function action() {
4778
+ return run(_action, item);
4779
+ }
4780
+ }) : null : /*#__PURE__*/React__default["default"].createElement(Icon, {
4781
+ icon: _action.icon,
4782
+ clickable: true,
4783
+ size: "small",
4784
+ action: function action() {
4785
+ return run(_action, item);
4786
+ }
4787
+ });
4788
+ }) : [];
4789
+ if (canDelete) item.actions.push( /*#__PURE__*/React__default["default"].createElement(Icon, {
4790
+ icon: "delete",
4791
+ size: "small",
4792
+ clickable: true,
4793
+ action: function action() {
4794
+ return remove(item.id);
4795
+ }
4796
+ }));
4797
+ return item;
4798
+ })
4799
+ };
4800
+ table.columns.push({
4801
+ id: "actions"
4802
+ });
4803
+ var groupSize = groups[groupName].length;
4804
+ var title = /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement("span", {
4805
+ className: "size"
4806
+ }, groupSize), renderGroupLabel(groupName));
4807
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
4808
+ key: groupName
4809
+ }, /*#__PURE__*/React__default["default"].createElement(Header, {
4810
+ title: title
4811
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
4812
+ className: "size"
4813
+ }, groupSize)), /*#__PURE__*/React__default["default"].createElement(DataTable, _extends({}, table, {
4814
+ onRowSelection: select,
4815
+ editable: editable,
4816
+ className: className
4817
+ })));
4818
+ });
4819
+ }
4820
+
4821
+ function buildGroupOptions(schema) {
4822
+ return Object.values(schema).filter(function (field) {
4823
+ return field.grouper === true;
4824
+ }).map(function (field) {
4825
+ return {
4826
+ label: field.label,
4827
+ value: field.id
4828
+ };
4829
+ });
4830
+ }
4831
+
4832
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement(Header, {
4833
+ icon: icon,
4834
+ title: /*#__PURE__*/React__default["default"].createElement(Text, null, title)
4835
+ }, /*#__PURE__*/React__default["default"].createElement(DropDown, {
4836
+ id: "groupBy",
4837
+ label: "Agrupar Por",
4838
+ value: groupBy,
4839
+ options: buildGroupOptions(schema),
4840
+ onChange: changeGroup
4841
+ })), /*#__PURE__*/React__default["default"].createElement("main", {
4842
+ className: "table-editor"
4843
+ }, renderGroups()));
4844
+ };
4688
4845
 
4689
4846
  /**
4690
4847
  * Create Content Dialog
@@ -4924,6 +5081,7 @@ var CollectionPage = function CollectionPage(props) {
4924
5081
  canFilter = _props$canFilter === void 0 ? false : _props$canFilter,
4925
5082
  _props$canAdd = props.canAdd,
4926
5083
  canAdd = _props$canAdd === void 0 ? false : _props$canAdd,
5084
+ searchBy = props.searchBy,
4927
5085
  _props$autosave = props.autosave,
4928
5086
  autosave = _props$autosave === void 0 ? false : _props$autosave,
4929
5087
  _props$delay = props.delay,
@@ -5001,10 +5159,12 @@ var CollectionPage = function CollectionPage(props) {
5001
5159
  icon: icon,
5002
5160
  levels: levels,
5003
5161
  onSelect: onSelect,
5004
- sorter: sorter
5162
+ sorter: sorter,
5163
+ searchBy: searchBy
5005
5164
  }) : /*#__PURE__*/React__default["default"].createElement(CollectionList, {
5006
5165
  groupBy: groupBy,
5007
- onSelect: onSelect
5166
+ onSelect: onSelect,
5167
+ searchBy: searchBy
5008
5168
  })), /*#__PURE__*/React__default["default"].createElement("main", {
5009
5169
  key: id,
5010
5170
  className: "collection-page " + className
@@ -5094,7 +5254,9 @@ var CollectionList = function CollectionList(props) {
5094
5254
  };
5095
5255
 
5096
5256
  var groupBy = props.groupBy,
5097
- onSelect = props.onSelect;
5257
+ onSelect = props.onSelect,
5258
+ _props$searchBy = props.searchBy,
5259
+ searchBy = _props$searchBy === void 0 ? [] : _props$searchBy;
5098
5260
 
5099
5261
  var _useContext2 = React.useContext(PageContext),
5100
5262
  pageContext = _useContext2[0],
@@ -5103,12 +5265,32 @@ var CollectionList = function CollectionList(props) {
5103
5265
  var _pageContext$all = pageContext.all,
5104
5266
  all = _pageContext$all === void 0 ? [] : _pageContext$all;
5105
5267
 
5268
+ var _useState2 = React.useState(),
5269
+ filter = _useState2[0],
5270
+ setFilter = _useState2[1];
5271
+
5106
5272
  function clear() {
5107
5273
  pageContext.clear();
5108
5274
  setPageContext(Object.assign({}, pageContext));
5109
5275
  }
5110
5276
 
5111
- var items = all ? all.map(function (content) {
5277
+ function changeSearch(id, value) {
5278
+ setFilter(value);
5279
+ }
5280
+
5281
+ function search() {
5282
+ var items = filter ? all.filter(function (item) {
5283
+ var result = searchBy.some(function (fieldName) {
5284
+ var value = item[fieldName];
5285
+ return value ? value.indexOf(filter.toUpperCase()) >= 0 : false;
5286
+ });
5287
+ return result;
5288
+ }) : all;
5289
+ return items;
5290
+ }
5291
+
5292
+ var items = search();
5293
+ var items2 = items.map(function (content) {
5112
5294
  return {
5113
5295
  id: content.id,
5114
5296
  line1: content.name || content.centre || content.tag,
@@ -5116,12 +5298,20 @@ var CollectionList = function CollectionList(props) {
5116
5298
  line2: content.description,
5117
5299
  content: content
5118
5300
  };
5119
- }) : [];
5120
- return /*#__PURE__*/React__default["default"].createElement(List, {
5121
- items: items,
5301
+ });
5302
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement("main", null, /*#__PURE__*/React__default["default"].createElement(List, {
5303
+ items: items2,
5122
5304
  onSelect: select,
5123
5305
  groupBy: groupBy
5124
- });
5306
+ })), /*#__PURE__*/React__default["default"].createElement("footer", null, /*#__PURE__*/React__default["default"].createElement("div", {
5307
+ className: "search-box"
5308
+ }, /*#__PURE__*/React__default["default"].createElement(TextField, {
5309
+ icon: "search",
5310
+ label: "Search",
5311
+ onChange: changeSearch,
5312
+ outlined: true,
5313
+ className: "search-box"
5314
+ }))));
5125
5315
  };
5126
5316
  /**
5127
5317
  * Collection Tree
@@ -5145,7 +5335,9 @@ var CollectionTree = function CollectionTree(props) {
5145
5335
  icon = _props$icon === void 0 ? "description" : _props$icon,
5146
5336
  levels = props.levels,
5147
5337
  onSelect = props.onSelect,
5148
- sorter = props.sorter;
5338
+ sorter = props.sorter,
5339
+ _props$searchBy2 = props.searchBy,
5340
+ searchBy = _props$searchBy2 === void 0 ? [] : _props$searchBy2;
5149
5341
 
5150
5342
  var _useContext3 = React.useContext(PageContext),
5151
5343
  pageContext = _useContext3[0],
@@ -5154,16 +5346,16 @@ var CollectionTree = function CollectionTree(props) {
5154
5346
  var _pageContext$all2 = pageContext.all,
5155
5347
  all = _pageContext$all2 === void 0 ? [] : _pageContext$all2;
5156
5348
 
5157
- var _useState2 = React.useState(),
5158
- filter = _useState2[0],
5159
- setFilter = _useState2[1];
5349
+ var _useState3 = React.useState(),
5350
+ filter = _useState3[0],
5351
+ setFilter = _useState3[1];
5160
5352
 
5161
5353
  function clear() {
5162
5354
  pageContext.clear();
5163
5355
  setPageContext(Object.assign({}, pageContext));
5164
5356
  }
5165
5357
 
5166
- function search(id, value) {
5358
+ function changeSearch(id, value) {
5167
5359
  setFilter(value);
5168
5360
  }
5169
5361
 
@@ -5217,17 +5409,26 @@ var CollectionTree = function CollectionTree(props) {
5217
5409
  });
5218
5410
  }
5219
5411
 
5220
- var items = sorter ? sorter(all) : all;
5221
- var items2 = filter ? items.filter(function (item) {
5222
- return item.name.toUpperCase().indexOf(filter.toUpperCase()) >= 0;
5223
- }) : items;
5412
+ function search() {
5413
+ var items = filter ? all.filter(function (item) {
5414
+ var result = searchBy.some(function (fieldName) {
5415
+ var value = item[fieldName];
5416
+ return value ? value.indexOf(filter.toUpperCase()) >= 0 : false;
5417
+ });
5418
+ return result;
5419
+ }) : all;
5420
+ return items;
5421
+ }
5422
+
5423
+ var items = search();
5424
+ var items2 = sorter ? sorter(items) : items;
5224
5425
  var nodes = generateNodes(levels, items2);
5225
5426
  return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement("main", null, /*#__PURE__*/React__default["default"].createElement(Tree, null, renderNodes(nodes))), /*#__PURE__*/React__default["default"].createElement("footer", null, /*#__PURE__*/React__default["default"].createElement("div", {
5226
5427
  className: "search-box"
5227
5428
  }, /*#__PURE__*/React__default["default"].createElement(TextField, {
5228
5429
  icon: "search",
5229
5430
  label: "Search",
5230
- onChange: search,
5431
+ onChange: changeSearch,
5231
5432
  outlined: true,
5232
5433
  className: "search-box"
5233
5434
  }))));
@@ -5273,9 +5474,9 @@ var CollectionEditor = function CollectionEditor(props) {
5273
5474
  delay = _props$delay2 === void 0 ? 1000 : _props$delay2;
5274
5475
  var timer = React.useRef(null);
5275
5476
 
5276
- var _useState3 = React.useState(selected),
5277
- form = _useState3[0],
5278
- setForm = _useState3[1];
5477
+ var _useState4 = React.useState(selected),
5478
+ form = _useState4[0],
5479
+ setForm = _useState4[1];
5279
5480
 
5280
5481
  React.useEffect(function () {
5281
5482
  setForm(selected);