ywana-core8 0.0.17 → 0.0.21

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 CHANGED
@@ -9,7 +9,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
9
9
  var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
10
10
  var ResumableJS__default = /*#__PURE__*/_interopDefaultLegacy(ResumableJS);
11
11
 
12
- function _catch$1(body, recover) {
12
+ function _catch$2(body, recover) {
13
13
  try {
14
14
  var result = body();
15
15
  } catch (e) {
@@ -40,7 +40,7 @@ var fetchAsync = function fetchAsync(method, URL, body, token) {
40
40
  },
41
41
  body: body
42
42
  };
43
- return Promise.resolve(_catch$1(function () {
43
+ return Promise.resolve(_catch$2(function () {
44
44
  return Promise.resolve(fetch(URL, request)).then(function (response) {
45
45
  var _exit;
46
46
 
@@ -3134,7 +3134,7 @@ var CollectionAdder = function CollectionAdder(_ref11) {
3134
3134
  * Create Content Dialog
3135
3135
  */
3136
3136
 
3137
- var CreateContentDialog = function CreateContentDialog(_ref) {
3137
+ var CreateContentDialog$1 = function CreateContentDialog(_ref) {
3138
3138
  var label = _ref.label,
3139
3139
  type = _ref.type,
3140
3140
  _ref$value = _ref.value,
@@ -3301,7 +3301,102 @@ var EditContentDialog = function EditContentDialog(_ref) {
3301
3301
  }));
3302
3302
  };
3303
3303
 
3304
- function _catch(body, recover) {
3304
+ /**
3305
+ * Create Content Dialog
3306
+ */
3307
+
3308
+ var CreateContentDialog = function CreateContentDialog(_ref) {
3309
+ var label = _ref.label,
3310
+ type = _ref.type,
3311
+ validator = _ref.validator,
3312
+ onOK = _ref.onOK,
3313
+ _ref$onActionClose = _ref.onActionClose,
3314
+ onActionClose = _ref$onActionClose === void 0 ? true : _ref$onActionClose;
3315
+ var site = React.useContext(SiteContext);
3316
+
3317
+ var _useState = React.useState({}),
3318
+ form = _useState[0],
3319
+ setForm = _useState[1];
3320
+
3321
+ var _useState2 = React.useState(false),
3322
+ isValid = _useState2[0],
3323
+ setValid = _useState2[1];
3324
+
3325
+ var _useState3 = React.useState([]),
3326
+ errors = _useState3[0],
3327
+ setErrors = _useState3[1];
3328
+
3329
+ function change(form, validForm) {
3330
+ setForm(form);
3331
+
3332
+ if (validator) {
3333
+ var _validator = validator(form),
3334
+ validation = _validator.validation,
3335
+ _validator$errors = _validator.errors,
3336
+ _errors = _validator$errors === void 0 ? [] : _validator$errors;
3337
+
3338
+ setValid(validForm && validation);
3339
+ setErrors(_errors);
3340
+ } else {
3341
+ setValid(validForm);
3342
+ }
3343
+ }
3344
+
3345
+ function onAction(action) {
3346
+ if (action === 'OK' && onOK) onOK(form);
3347
+ if (action === 'CLOSE' || onActionClose === true) site.closeDialog();
3348
+ }
3349
+
3350
+ function isRequired(field) {
3351
+ var _field$required = field.required,
3352
+ required = _field$required === void 0 ? false : _field$required;
3353
+ return required;
3354
+ }
3355
+
3356
+ function isOptional(field) {
3357
+ var _field$creation = field.creation,
3358
+ creation = _field$creation === void 0 ? false : _field$creation;
3359
+ return creation;
3360
+ }
3361
+
3362
+ var actions = /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement(Button, {
3363
+ label: "CLOSE",
3364
+ action: function action() {
3365
+ return onAction("CLOSE");
3366
+ }
3367
+ }), /*#__PURE__*/React__default["default"].createElement(Button, {
3368
+ label: "OK",
3369
+ action: function action() {
3370
+ return onAction("OK");
3371
+ },
3372
+ disabled: !isValid,
3373
+ raised: true
3374
+ }));
3375
+ var title = /*#__PURE__*/React__default["default"].createElement(Text, {
3376
+ use: "headline6"
3377
+ }, label);
3378
+ var content = new Content(type, form);
3379
+ return /*#__PURE__*/React__default["default"].createElement(Dialog, {
3380
+ title: title,
3381
+ open: true,
3382
+ onAction: onAction,
3383
+ actions: actions
3384
+ }, /*#__PURE__*/React__default["default"].createElement(ContentForm, {
3385
+ content: content,
3386
+ filter: function filter(field) {
3387
+ return isRequired(field) || isOptional(field);
3388
+ },
3389
+ onChange: change
3390
+ }), errors.map(function (error) {
3391
+ return /*#__PURE__*/React__default["default"].createElement(Text, {
3392
+ use: "overline",
3393
+ tag: "div",
3394
+ className: "error"
3395
+ }, error);
3396
+ }));
3397
+ };
3398
+
3399
+ function _catch$1(body, recover) {
3305
3400
  try {
3306
3401
  var result = body();
3307
3402
  } catch (e) {
@@ -3315,7 +3410,7 @@ function _catch(body, recover) {
3315
3410
  return result;
3316
3411
  }
3317
3412
 
3318
- var http = HTTPClient(window.API || process.env.REACT_APP_API, Session);
3413
+ var http$1 = HTTPClient(window.API || process.env.REACT_APP_API, Session);
3319
3414
  /**
3320
3415
  * Collection Page
3321
3416
  */
@@ -3376,8 +3471,8 @@ var CollectionPage = function CollectionPage(props) {
3376
3471
  }
3377
3472
  };
3378
3473
 
3379
- site.openDialog( /*#__PURE__*/React__default["default"].createElement(EditContentDialog, {
3380
- label: "Crear " + name,
3474
+ site.openDialog( /*#__PURE__*/React__default["default"].createElement(CreateContentDialog, {
3475
+ label: "" + name,
3381
3476
  type: schema,
3382
3477
  onOK: onOK
3383
3478
  }));
@@ -3670,7 +3765,7 @@ var CollectionContext = function CollectionContext(url, field) {
3670
3765
  try {
3671
3766
  var _this2 = this;
3672
3767
 
3673
- var _temp2 = _catch(function () {
3768
+ var _temp2 = _catch$1(function () {
3674
3769
  return Promise.resolve(API.all()).then(function (data) {
3675
3770
  _this2.all = field ? data[field] : data;
3676
3771
  });
@@ -3696,7 +3791,7 @@ var CollectionContext = function CollectionContext(url, field) {
3696
3791
  try {
3697
3792
  var _this4 = this;
3698
3793
 
3699
- var _temp4 = _catch(function () {
3794
+ var _temp4 = _catch$1(function () {
3700
3795
  return Promise.resolve(API.create(form)).then(function () {
3701
3796
  return Promise.resolve(_this4.load()).then(function () {});
3702
3797
  });
@@ -3713,7 +3808,7 @@ var CollectionContext = function CollectionContext(url, field) {
3713
3808
  try {
3714
3809
  var _this6 = this;
3715
3810
 
3716
- var _temp6 = _catch(function () {
3811
+ var _temp6 = _catch$1(function () {
3717
3812
  return Promise.resolve(API.update(form)).then(function () {
3718
3813
  return Promise.resolve(_this6.load()).then(function () {});
3719
3814
  });
@@ -3730,7 +3825,7 @@ var CollectionContext = function CollectionContext(url, field) {
3730
3825
  try {
3731
3826
  var _this8 = this;
3732
3827
 
3733
- var _temp8 = _catch(function () {
3828
+ var _temp8 = _catch$1(function () {
3734
3829
  return Promise.resolve(API.patch(id, form)).then(function () {
3735
3830
  return Promise.resolve(_this8.load()).then(function () {});
3736
3831
  });
@@ -3747,7 +3842,7 @@ var CollectionContext = function CollectionContext(url, field) {
3747
3842
  try {
3748
3843
  var _this10 = this;
3749
3844
 
3750
- var _temp10 = _catch(function () {
3845
+ var _temp10 = _catch$1(function () {
3751
3846
  return Promise.resolve(API.updateProperty(id, propertyName, form)).then(function () {
3752
3847
  return Promise.resolve(_this10.load()).then(function () {});
3753
3848
  });
@@ -3764,7 +3859,7 @@ var CollectionContext = function CollectionContext(url, field) {
3764
3859
  try {
3765
3860
  var _this12 = this;
3766
3861
 
3767
- var _temp12 = _catch(function () {
3862
+ var _temp12 = _catch$1(function () {
3768
3863
  return Promise.resolve(API.remove(id)).then(function () {
3769
3864
  return Promise.resolve(_this12.load()).then(function () {});
3770
3865
  });
@@ -3786,26 +3881,599 @@ var CollectionContext = function CollectionContext(url, field) {
3786
3881
  var CollectionAPI = function CollectionAPI(url) {
3787
3882
  return {
3788
3883
  all: function all() {
3789
- return http.GET(url);
3884
+ return http$1.GET(url);
3790
3885
  },
3791
3886
  find: function find(id) {
3792
- return http.GET(url + "/" + id);
3887
+ return http$1.GET(url + "/" + id);
3793
3888
  },
3794
3889
  create: function create(form) {
3795
3890
  var body = JSON.stringify(form);
3796
- return http.POST(url, body);
3891
+ return http$1.POST(url, body);
3797
3892
  },
3798
3893
  update: function update(form) {
3799
3894
  var body = JSON.stringify(form);
3800
- return http.PUT(url + "/" + form.id, body);
3895
+ return http$1.PUT(url + "/" + form.id, body);
3801
3896
  },
3802
3897
  patch: function patch(id, form) {
3803
3898
  var body = JSON.stringify(form);
3804
- return http.PATCH(url + "/" + id, body);
3899
+ return http$1.PATCH(url + "/" + id, body);
3805
3900
  },
3806
3901
  updateProperty: function updateProperty(id, propertyName, form) {
3807
3902
  var body = JSON.stringify(form);
3808
- return http.PUT(url + "/" + id + "/" + propertyName, body);
3903
+ return http$1.PUT(url + "/" + id + "/" + propertyName, body);
3904
+ },
3905
+ remove: function remove(id) {
3906
+ return http$1.DELETE(url + "/" + id);
3907
+ }
3908
+ };
3909
+ };
3910
+
3911
+ function _catch(body, recover) {
3912
+ try {
3913
+ var result = body();
3914
+ } catch (e) {
3915
+ return recover(e);
3916
+ }
3917
+
3918
+ if (result && result.then) {
3919
+ return result.then(void 0, recover);
3920
+ }
3921
+
3922
+ return result;
3923
+ }
3924
+
3925
+ var http = HTTPClient(window.API || process.env.REACT_APP_API, Session);
3926
+ /**
3927
+ * Table Page
3928
+ */
3929
+
3930
+ var TablePage = function TablePage(props) {
3931
+ var playScenario = function playScenario() {
3932
+ try {
3933
+ var promises1 = pageContext.all.map(function (item) {
3934
+ try {
3935
+ return Promise.resolve(pageContext.remove(item.id));
3936
+ } catch (e) {
3937
+ return Promise.reject(e);
3938
+ }
3939
+ });
3940
+ Promise.all(promises1).then(function () {
3941
+ try {
3942
+ var promises2 = scenario.map(function (item) {
3943
+ try {
3944
+ return Promise.resolve(pageContext.create(item));
3945
+ } catch (e) {
3946
+ return Promise.reject(e);
3947
+ }
3948
+ });
3949
+ Promise.all(promises2).then(function () {
3950
+ try {
3951
+ return Promise.resolve(pageContext.load()).then(function () {
3952
+ setPageContext(Object.assign({}, pageContext));
3953
+ });
3954
+ } catch (e) {
3955
+ return Promise.reject(e);
3956
+ }
3957
+ });
3958
+ return Promise.resolve();
3959
+ } catch (e) {
3960
+ return Promise.reject(e);
3961
+ }
3962
+ });
3963
+ return Promise.resolve();
3964
+ } catch (e) {
3965
+ return Promise.reject(e);
3966
+ }
3967
+ };
3968
+
3969
+ var save = function save() {
3970
+ try {
3971
+ console.log('saving.....');
3972
+ return Promise.resolve(pageContext.update(form)).then(function () {
3973
+ setPageContext(Object.assign({}, pageContext));
3974
+ });
3975
+ } catch (e) {
3976
+ return Promise.reject(e);
3977
+ }
3978
+ };
3979
+
3980
+ var site = React.useContext(SiteContext);
3981
+ var _props$id = props.id,
3982
+ id = _props$id === void 0 ? "table" : _props$id,
3983
+ icon = props.icon,
3984
+ title = props.title,
3985
+ _props$name = props.name,
3986
+ name = _props$name === void 0 ? "table 1" : _props$name,
3987
+ schema = props.schema,
3988
+ url = props.url,
3989
+ field = props.field,
3990
+ _props$delay = props.delay,
3991
+ delay = _props$delay === void 0 ? 1000 : _props$delay,
3992
+ actions = props.actions,
3993
+ editable = props.editable,
3994
+ _props$canAdd = props.canAdd,
3995
+ canAdd = _props$canAdd === void 0 ? true : _props$canAdd,
3996
+ _props$dev = props.dev,
3997
+ dev = _props$dev === void 0 ? false : _props$dev,
3998
+ _props$autosave = props.autosave,
3999
+ autosave = _props$autosave === void 0 ? true : _props$autosave,
4000
+ groupBy = props.groupBy,
4001
+ validator = props.validator,
4002
+ scenario = props.scenario;
4003
+
4004
+ var _useContext = React.useContext(PageContext),
4005
+ pageContext = _useContext[0],
4006
+ setPageContext = _useContext[1];
4007
+
4008
+ var selected = pageContext.selected;
4009
+ var timer = React.useRef(null);
4010
+
4011
+ var _useState = React.useState(selected),
4012
+ form = _useState[0],
4013
+ setForm = _useState[1];
4014
+
4015
+ React.useEffect(function () {
4016
+ setForm(selected);
4017
+ }, [selected]);
4018
+ React.useEffect(function () {
4019
+ if (autosave) {
4020
+ clearTimeout(timer.current);
4021
+ timer.current = setTimeout(function () {
4022
+ if (canSave()) save();
4023
+ }, delay);
4024
+ }
4025
+ }, [form]);
4026
+ React.useEffect(function () {
4027
+ try {
4028
+ var context = TableContext(url, field);
4029
+ return Promise.resolve(context.load()).then(function () {
4030
+ setPageContext(context);
4031
+ });
4032
+ } catch (e) {
4033
+ return Promise.reject(e);
4034
+ }
4035
+ }, []);
4036
+
4037
+ function add() {
4038
+ var onOK = function onOK(form) {
4039
+ try {
4040
+ return Promise.resolve(pageContext.create(form)).then(function () {
4041
+ setPageContext(Object.assign({}, pageContext));
4042
+ });
4043
+ } catch (e) {
4044
+ return Promise.reject(e);
4045
+ }
4046
+ };
4047
+
4048
+ site.openDialog( /*#__PURE__*/React__default["default"].createElement(EditContentDialog, {
4049
+ label: "Crear " + name,
4050
+ type: schema,
4051
+ onOK: onOK,
4052
+ validator: validator
4053
+ }));
4054
+ }
4055
+
4056
+ function change(next) {
4057
+ setForm(next);
4058
+ }
4059
+
4060
+ function canSave() {
4061
+ var can = !equal__default["default"](form, selected);
4062
+ return can;
4063
+ }
4064
+
4065
+ function closeAside() {
4066
+ pageContext.select(null);
4067
+ setPageContext(Object.assign({}, pageContext));
4068
+ }
4069
+
4070
+ function renderAside() {
4071
+ if (selected && form) {
4072
+ var content = new Content(schema, form);
4073
+ return /*#__PURE__*/React__default["default"].createElement("aside", {
4074
+ className: "table-page"
4075
+ }, /*#__PURE__*/React__default["default"].createElement(Header, {
4076
+ icon: "local_offer",
4077
+ title: selected.name || "Propiedades"
4078
+ }, /*#__PURE__*/React__default["default"].createElement(Icon, {
4079
+ icon: "close",
4080
+ clickable: true,
4081
+ action: closeAside
4082
+ })), /*#__PURE__*/React__default["default"].createElement(ContentEditor, {
4083
+ content: content,
4084
+ onChange: change
4085
+ }));
4086
+ }
4087
+
4088
+ return null;
4089
+ }
4090
+
4091
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement(Header, {
4092
+ className: "table-page",
4093
+ title: /*#__PURE__*/React__default["default"].createElement(Text, null, title)
4094
+ }, canAdd ? /*#__PURE__*/React__default["default"].createElement(Button, {
4095
+ icon: "add",
4096
+ label: "A\xF1adir",
4097
+ action: add,
4098
+ raised: true
4099
+ }) : null, dev ? /*#__PURE__*/React__default["default"].createElement(MenuIcon, {
4100
+ align: "alignRight"
4101
+ }, /*#__PURE__*/React__default["default"].createElement(MenuItem, {
4102
+ label: "Cargar Escenario 1",
4103
+ onSelect: playScenario
4104
+ })) : null, actions), /*#__PURE__*/React__default["default"].createElement("menu", {
4105
+ className: "table-page"
4106
+ }, /*#__PURE__*/React__default["default"].createElement(TableFilters, {
4107
+ schema: schema
4108
+ })), /*#__PURE__*/React__default["default"].createElement("main", {
4109
+ key: id,
4110
+ className: "table-page"
4111
+ }, /*#__PURE__*/React__default["default"].createElement(TableEditor, {
4112
+ icon: icon,
4113
+ title: name,
4114
+ schema: schema,
4115
+ delay: delay,
4116
+ editable: editable,
4117
+ groupBy: groupBy
4118
+ })), renderAside());
4119
+ };
4120
+ /**
4121
+ * Table Filters
4122
+ */
4123
+
4124
+ var TableFilters = function TableFilters(props) {
4125
+ var change = function change(next) {
4126
+ try {
4127
+ setForm(next);
4128
+ return Promise.resolve(pageContext.load(next)).then(function () {
4129
+ setPageContext(Object.assign({}, pageContext));
4130
+ });
4131
+ } catch (e) {
4132
+ return Promise.reject(e);
4133
+ }
4134
+ };
4135
+
4136
+ var _useContext2 = React.useContext(PageContext),
4137
+ pageContext = _useContext2[0],
4138
+ setPageContext = _useContext2[1];
4139
+
4140
+ var schema = props.schema;
4141
+
4142
+ var _useState2 = React.useState({}),
4143
+ form = _useState2[0],
4144
+ setForm = _useState2[1];
4145
+
4146
+ var filterSchema = React.useMemo(function () {
4147
+ var filterSchema = Object.assign({}, schema);
4148
+ Object.values(filterSchema).forEach(function (field) {
4149
+ return field.section = null;
4150
+ });
4151
+ delete filterSchema.flows;
4152
+ return filterSchema;
4153
+ }, [schema]);
4154
+
4155
+ function clear() {
4156
+ setForm({});
4157
+ }
4158
+
4159
+ var content = new Content(filterSchema, form);
4160
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement(Header, {
4161
+ title: /*#__PURE__*/React__default["default"].createElement(Text, null, "Filtros")
4162
+ }, /*#__PURE__*/React__default["default"].createElement(Button, {
4163
+ icon: "filter_list_off",
4164
+ label: "Limpiar",
4165
+ action: clear
4166
+ })), /*#__PURE__*/React__default["default"].createElement("main", null, /*#__PURE__*/React__default["default"].createElement(ContentEditor, {
4167
+ content: content,
4168
+ onChange: change
4169
+ })));
4170
+ };
4171
+ /**
4172
+ * Table Editor
4173
+ */
4174
+
4175
+
4176
+ var TableEditor = function TableEditor(props) {
4177
+ var select = function select(row, event) {
4178
+ try {
4179
+ clear();
4180
+ return Promise.resolve(pageContext.select(row.id)).then(function () {
4181
+ setPageContext(Object.assign({}, pageContext));
4182
+ });
4183
+ } catch (e) {
4184
+ return Promise.reject(e);
4185
+ }
4186
+ };
4187
+
4188
+ var remove = function remove(id) {
4189
+ try {
4190
+ return Promise.resolve(pageContext.remove(id)).then(function () {
4191
+ pageContext.clear();
4192
+ setPageContext(Object.assign({}, pageContext));
4193
+ });
4194
+ } catch (e) {
4195
+ return Promise.reject(e);
4196
+ }
4197
+ };
4198
+
4199
+ var _useContext3 = React.useContext(PageContext),
4200
+ pageContext = _useContext3[0],
4201
+ setPageContext = _useContext3[1];
4202
+
4203
+ var _pageContext$all = pageContext.all,
4204
+ all = _pageContext$all === void 0 ? [] : _pageContext$all;
4205
+ var icon = props.icon,
4206
+ title = props.title,
4207
+ schema = props.schema,
4208
+ editable = props.editable;
4209
+
4210
+ var _useState3 = React.useState(props.groupBy),
4211
+ groupBy = _useState3[0],
4212
+ setGroupBy = _useState3[1];
4213
+
4214
+ function changeGroup(id, value) {
4215
+ setGroupBy(value);
4216
+ }
4217
+
4218
+ function change(rowID, cellID, value) {
4219
+ var _Object$assign;
4220
+
4221
+ var row = all.find(function (r) {
4222
+ return r.id === rowID;
4223
+ });
4224
+ var next = Object.assign({}, row, (_Object$assign = {}, _Object$assign[cellID] = value, _Object$assign));
4225
+ delete next.actions;
4226
+ pageContext.update(next);
4227
+ setPageContext(Object.assign({}, pageContext));
4228
+ }
4229
+
4230
+ function clear() {
4231
+ pageContext.clear();
4232
+ setPageContext(Object.assign({}, pageContext));
4233
+ }
4234
+
4235
+ function renderGroups() {
4236
+ var groups = all.reduce(function (groups, filter) {
4237
+ var groupName = filter[groupBy];
4238
+ var group = groups[groupName];
4239
+ if (!group) groups[groupName] = [];
4240
+ groups[groupName].push(filter);
4241
+ return groups;
4242
+ }, {});
4243
+ return Object.keys(groups).map(function (groupName) {
4244
+ var table = {
4245
+ columns: Object.values(schema).filter(function (field) {
4246
+ return field.column === true;
4247
+ }).map(function (field) {
4248
+ var options = field.options;
4249
+
4250
+ if (options && typeof options == 'function') {
4251
+ options = options();
4252
+ }
4253
+
4254
+ return {
4255
+ id: field.id,
4256
+ label: field.label,
4257
+ type: field.type,
4258
+ onChange: field.editable ? change : null,
4259
+ options: options
4260
+ };
4261
+ }),
4262
+ rows: groups[groupName].map(function (item) {
4263
+ item.actions = [/*#__PURE__*/React__default["default"].createElement(Icon, {
4264
+ icon: "delete",
4265
+ size: "small",
4266
+ clickable: true,
4267
+ action: function action() {
4268
+ return remove(item.id);
4269
+ }
4270
+ })];
4271
+ return item;
4272
+ })
4273
+ };
4274
+ table.columns.push({
4275
+ id: "actions"
4276
+ });
4277
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
4278
+ key: groupName
4279
+ }, /*#__PURE__*/React__default["default"].createElement(Header, {
4280
+ title: groupName
4281
+ }), /*#__PURE__*/React__default["default"].createElement(DataTable, _extends({}, table, {
4282
+ onRowSelection: select,
4283
+ editable: editable
4284
+ })));
4285
+ });
4286
+ }
4287
+
4288
+ var table = {
4289
+ columns: Object.values(schema).filter(function (field) {
4290
+ return field.column === true;
4291
+ }).map(function (field) {
4292
+ var options = field.options;
4293
+
4294
+ if (options && typeof options == 'function') {
4295
+ options = options();
4296
+ }
4297
+
4298
+ return {
4299
+ id: field.id,
4300
+ label: field.label,
4301
+ type: field.type,
4302
+ onChange: field.editable ? change : null,
4303
+ options: options
4304
+ };
4305
+ }),
4306
+ rows: all.map(function (item) {
4307
+ item.actions = [/*#__PURE__*/React__default["default"].createElement(Icon, {
4308
+ icon: "delete",
4309
+ size: "small",
4310
+ clickable: true,
4311
+ action: function action() {
4312
+ return remove(item.id);
4313
+ }
4314
+ })];
4315
+ return item;
4316
+ })
4317
+ };
4318
+ table.columns.push({
4319
+ id: "actions"
4320
+ });
4321
+
4322
+ function buildGroupOptions(schema) {
4323
+ return Object.values(schema).filter(function (field) {
4324
+ return field.grouper === true;
4325
+ }).map(function (field) {
4326
+ return {
4327
+ label: field.label,
4328
+ value: field.id
4329
+ };
4330
+ });
4331
+ }
4332
+
4333
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement(Header, {
4334
+ icon: icon,
4335
+ title: /*#__PURE__*/React__default["default"].createElement(Text, null, title)
4336
+ }, /*#__PURE__*/React__default["default"].createElement(DropDown, {
4337
+ id: "groupBy",
4338
+ label: "Agrupar Por",
4339
+ value: groupBy,
4340
+ options: buildGroupOptions(schema),
4341
+ onChange: changeGroup
4342
+ })), /*#__PURE__*/React__default["default"].createElement("main", {
4343
+ className: "table-editor"
4344
+ }, renderGroups()));
4345
+ };
4346
+ /**
4347
+ * table Context
4348
+ */
4349
+
4350
+
4351
+ var TableContext = function TableContext(url, field) {
4352
+ var API = TableAPI(url);
4353
+ return {
4354
+ all: [],
4355
+ selected: null,
4356
+ filters: {},
4357
+ load: function load(filter) {
4358
+ try {
4359
+ var _this2 = this;
4360
+
4361
+ var _temp2 = _catch(function () {
4362
+ var filters = filter ? Object.keys(filter).reduce(function (filters, key) {
4363
+ var field = filter[key];
4364
+ if (field) filters[key] = field;
4365
+ return filters;
4366
+ }, {}) : [];
4367
+ return Promise.resolve(API.all(filters)).then(function (data) {
4368
+ _this2.all = field ? data[field] : data;
4369
+ });
4370
+ }, function (error) {
4371
+ console.log(error);
4372
+ });
4373
+
4374
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
4375
+ } catch (e) {
4376
+ return Promise.reject(e);
4377
+ }
4378
+ },
4379
+ select: function select(id) {
4380
+ var result = this.all.find(function (item) {
4381
+ return item.id === id;
4382
+ });
4383
+ this.selected = result;
4384
+ },
4385
+ clear: function clear() {
4386
+ this.selected = null;
4387
+ },
4388
+ create: function create(form) {
4389
+ try {
4390
+ var _this4 = this;
4391
+
4392
+ var _temp4 = _catch(function () {
4393
+ return Promise.resolve(API.create(form)).then(function () {
4394
+ return Promise.resolve(_this4.load()).then(function () {});
4395
+ });
4396
+ }, function (error) {
4397
+ console.log(error);
4398
+ });
4399
+
4400
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
4401
+ } catch (e) {
4402
+ return Promise.reject(e);
4403
+ }
4404
+ },
4405
+ update: function update(form) {
4406
+ try {
4407
+ var _this6 = this;
4408
+
4409
+ var _temp6 = _catch(function () {
4410
+ return Promise.resolve(API.update(form)).then(function () {
4411
+ return Promise.resolve(_this6.load()).then(function () {});
4412
+ });
4413
+ }, function (error) {
4414
+ console.log(error);
4415
+ });
4416
+
4417
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
4418
+ } catch (e) {
4419
+ return Promise.reject(e);
4420
+ }
4421
+ },
4422
+ remove: function remove(id) {
4423
+ try {
4424
+ var _this8 = this;
4425
+
4426
+ var _temp8 = _catch(function () {
4427
+ return Promise.resolve(API.remove(id)).then(function () {
4428
+ return Promise.resolve(_this8.load()).then(function () {});
4429
+ });
4430
+ }, function (error) {
4431
+ console.log(error);
4432
+ });
4433
+
4434
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(function () {}) : void 0);
4435
+ } catch (e) {
4436
+ return Promise.reject(e);
4437
+ }
4438
+ },
4439
+ changeFilters: function changeFilters(filters) {
4440
+ this.filters = filters;
4441
+ }
4442
+ };
4443
+ };
4444
+ /**
4445
+ * table API
4446
+ */
4447
+
4448
+
4449
+ var TableAPI = function TableAPI(url) {
4450
+ return {
4451
+ all: function all(filters) {
4452
+ var queryParams = "?";
4453
+
4454
+ if (filters) {
4455
+ var filterQuery = Object.keys(filters).reduce(function (query, key) {
4456
+ if (typeof filters[key] === 'boolean') {
4457
+ return query.concat(key + "=" + filters[key] + "&");
4458
+ } else {
4459
+ return query.concat(key + "=%" + filters[key] + "%&");
4460
+ }
4461
+ }, "");
4462
+ queryParams = queryParams.concat(filterQuery);
4463
+ }
4464
+
4465
+ return http.GET(url + queryParams);
4466
+ },
4467
+ find: function find(id) {
4468
+ return http.GET(url + "/" + id);
4469
+ },
4470
+ create: function create(form) {
4471
+ var body = JSON.stringify(form);
4472
+ return http.POST(url, body);
4473
+ },
4474
+ update: function update(form) {
4475
+ var body = JSON.stringify(form);
4476
+ return http.PUT(url + "/" + form.id, body);
3809
4477
  },
3810
4478
  remove: function remove(id) {
3811
4479
  return http.DELETE(url + "/" + id);
@@ -4092,7 +4760,7 @@ exports.CollectionPage = CollectionPage;
4092
4760
  exports.Content = Content;
4093
4761
  exports.ContentEditor = ContentEditor;
4094
4762
  exports.ContentForm = ContentForm;
4095
- exports.CreateContentDialog = CreateContentDialog;
4763
+ exports.CreateContentDialog = CreateContentDialog$1;
4096
4764
  exports.DataTable = DataTable;
4097
4765
  exports.Dialog = Dialog;
4098
4766
  exports.DropDown = DropDown;
@@ -4128,6 +4796,7 @@ exports.Stack = Stack;
4128
4796
  exports.TYPES = TYPES;
4129
4797
  exports.Tab = Tab;
4130
4798
  exports.TabbedContentEditor = TabbedContentEditor;
4799
+ exports.TablePage = TablePage;
4131
4800
  exports.Tabs = Tabs;
4132
4801
  exports.Text = Text;
4133
4802
  exports.TextField = TextField;