ywana-core8 0.0.486 → 0.0.489

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.
@@ -1,5 +1,5 @@
1
1
  import 'material-design-icons-iconfont/dist/material-design-icons.css';
2
- import React, { useContext, useState, useEffect, Fragment, useMemo, useRef, Children } from 'react';
2
+ import React, { useContext, useState, useEffect, Fragment, useMemo as useMemo$1, useRef, Children } from 'react';
3
3
  import RSwitch from 'react-switch';
4
4
  import moment from 'moment';
5
5
  import { extendMoment } from 'moment-range';
@@ -918,275 +918,10 @@ var Stack = function Stack(props) {
918
918
  return /*#__PURE__*/React.createElement(Fragment, null, child);
919
919
  };
920
920
 
921
- /**
922
- * Text Field
923
- */
924
-
925
- var TextField = function TextField(props) {
926
- var site = useContext(SiteContext);
927
- var id = props.id,
928
- _props$type = props.type,
929
- type = _props$type === void 0 ? 'text' : _props$type,
930
- label = props.label,
931
- placeholder = props.placeholder,
932
- value = props.value,
933
- outlined = props.outlined,
934
- _props$readOnly = props.readOnly,
935
- readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
936
- _props$canClear = props.canClear,
937
- canClear = _props$canClear === void 0 ? true : _props$canClear,
938
- onChange = props.onChange,
939
- onEnter = props.onEnter,
940
- onClick = props.onClick,
941
- onBlur = props.onBlur;
942
-
943
- function onKeyPress(event) {
944
- var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
945
-
946
- if (key == 13) {
947
- if (onEnter) onEnter();
948
- }
949
- }
950
-
951
- function change(event) {
952
- event.stopPropagation();
953
- event.preventDefault();
954
- var value = event.target.value;
955
- if (onChange) onChange(id, value);
956
- }
957
-
958
- function focus() {
959
- if (site && site.changeFocus) {
960
- site.changeFocus({
961
- lose: function lose() {// DO NOTHING
962
- }
963
- });
964
- }
965
- }
966
-
967
- function blur() {
968
- if (onBlur) onBlur();
969
- }
970
-
971
- function clear() {
972
- if (onChange) onChange(id, "");
973
- }
974
-
975
- var borderStyle = outlined ? "textfield-outlined" : "textfield";
976
- var labelStyle = label ? "" : "no-label";
977
- var style = labelStyle + " " + borderStyle + " textfield-" + type;
978
- var labelTxt = /*#__PURE__*/React.createElement(Text, null, label);
979
- return /*#__PURE__*/React.createElement("div", {
980
- className: "" + style,
981
- onClick: onClick
982
- }, /*#__PURE__*/React.createElement("input", {
983
- id: id,
984
- type: type,
985
- placeholder: placeholder,
986
- value: value,
987
- required: true,
988
- onChange: change,
989
- onKeyDown: onKeyPress,
990
- onFocus: focus,
991
- onBlur: blur,
992
- readOnly: readOnly
993
- }), canClear && value && value.length > 0 ? /*#__PURE__*/React.createElement(Icon, {
994
- icon: "close",
995
- clickable: true,
996
- size: "small",
997
- action: clear
998
- }) : null, /*#__PURE__*/React.createElement("span", {
999
- className: "bar"
1000
- }), label ? /*#__PURE__*/React.createElement("label", null, labelTxt) : null);
1001
- };
1002
- /**
1003
- * Text Area
1004
- */
1005
-
1006
- var TextArea = function TextArea(props) {
1007
- var site = useContext(SiteContext);
1008
- var id = props.id,
1009
- _props$type2 = props.type,
1010
- type = _props$type2 === void 0 ? 'text' : _props$type2,
1011
- label = props.label,
1012
- placeholder = props.placeholder,
1013
- value = props.value,
1014
- _props$readOnly2 = props.readOnly,
1015
- readOnly = _props$readOnly2 === void 0 ? false : _props$readOnly2,
1016
- _props$canClear2 = props.canClear,
1017
- canClear = _props$canClear2 === void 0 ? true : _props$canClear2,
1018
- onChange = props.onChange,
1019
- onEnter = props.onEnter,
1020
- onClick = props.onClick;
1021
-
1022
- function onKeyPress(event) {
1023
- var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1024
-
1025
- if (key == 13) {
1026
- if (onEnter) onEnter();
1027
- }
1028
- }
1029
-
1030
- function change(event) {
1031
- event.stopPropagation();
1032
- event.preventDefault();
1033
- var value = event.target.value;
1034
- if (onChange) onChange(id, value);
1035
- }
1036
-
1037
- function focus() {
1038
- if (site && site.changeFocus) {
1039
- site.changeFocus({
1040
- lose: function lose() {// DO NOTHING
1041
- }
1042
- });
1043
- }
1044
- }
1045
-
1046
- function clear() {
1047
- if (onChange) onChange(id, "");
1048
- }
1049
-
1050
- var labelStyle = label ? "" : "no-label";
1051
- var style = "textarea " + labelStyle + " textarea-" + type;
1052
- var labelTxt = /*#__PURE__*/React.createElement(Text, null, label);
1053
- return /*#__PURE__*/React.createElement("div", {
1054
- className: "" + style,
1055
- onClick: onClick
1056
- }, /*#__PURE__*/React.createElement("textarea", {
1057
- id: id,
1058
- placeholder: placeholder,
1059
- value: value,
1060
- required: true,
1061
- onChange: change,
1062
- onKeyDown: onKeyPress,
1063
- onFocus: focus,
1064
- readOnly: readOnly
1065
- }), canClear && value && value.length > 0 ? /*#__PURE__*/React.createElement(Icon, {
1066
- icon: "close",
1067
- clickable: true,
1068
- size: "small",
1069
- action: clear
1070
- }) : null, /*#__PURE__*/React.createElement("span", {
1071
- className: "bar"
1072
- }), label ? /*#__PURE__*/React.createElement("label", null, labelTxt) : null);
1073
- };
1074
- /**
1075
- * Dropdown
1076
- */
1077
-
1078
- var DropDown = function DropDown(props) {
1079
- var site = useContext(SiteContext);
1080
- var id = props.id,
1081
- _props$options = props.options,
1082
- options = _props$options === void 0 ? [] : _props$options,
1083
- value = props.value,
1084
- onChange = props.onChange,
1085
- _props$predictive = props.predictive,
1086
- predictive = _props$predictive === void 0 ? false : _props$predictive,
1087
- _props$readOnly3 = props.readOnly,
1088
- readOnly = _props$readOnly3 === void 0 ? false : _props$readOnly3,
1089
- _props$verbose = props.verbose,
1090
- verbose = _props$verbose === void 0 ? true : _props$verbose,
1091
- onBlur = props.onBlur;
1092
-
1093
- var _useState = useState(false),
1094
- open = _useState[0],
1095
- setOpen = _useState[1];
1096
-
1097
- var _useState2 = useState(),
1098
- label = _useState2[0],
1099
- setLabel = _useState2[1];
1100
-
1101
- useEffect(function () {
1102
- if (Array.isArray(options)) {
1103
- var option = options.find(function (option) {
1104
- return option.value === value;
1105
- });
1106
-
1107
- var _label = option ? option.label : "";
1108
-
1109
- setLabel(_label);
1110
- }
1111
- }, [value]);
1112
-
1113
- function change(id, value) {
1114
- if (predictive) {
1115
- setLabel(value);
1116
- } else {
1117
- if (onChange) onChange(id, value);
1118
- }
1119
- }
1120
-
1121
- function toggle() {
1122
- if (site && site.changeFocus) {
1123
- site.changeFocus({
1124
- lose: function lose() {
1125
- setOpen(false);
1126
- }
1127
- });
1128
- }
1129
-
1130
- if (!readOnly) setOpen(!open);
1131
- }
1132
-
1133
- function select(event) {
1134
- var next = event.target.getAttribute("value");
1135
- var option = options.find(function (option) {
1136
- return option.value === next;
1137
- });
1138
- setOpen(false);
1139
- var label = verbose ? option.label : "";
1140
- setLabel(label);
1141
- if (onChange) onChange(id, next);
1142
- }
1143
-
1144
- function blur() {
1145
- if (onBlur) onBlur();
1146
- }
1147
-
1148
- function renderOptions() {
1149
- var canShow = open == true && Array.isArray(options);
1150
-
1151
- if (canShow) {
1152
- var filterActive = predictive === true && label && label.length > 0;
1153
- var items = filterActive ? options.filter(function (option) {
1154
- return option.label.toUpperCase().indexOf(label.toUpperCase()) >= 0;
1155
- }) : options;
1156
- var lis = items.map(function (option) {
1157
- return /*#__PURE__*/React.createElement("li", {
1158
- key: option.value,
1159
- value: option.value
1160
- }, option.label);
1161
- });
1162
- return /*#__PURE__*/React.createElement("menu", null, /*#__PURE__*/React.createElement("ul", {
1163
- onMouseDown: select
1164
- }, lis));
1165
- } else {
1166
- return null;
1167
- }
1168
- }
1169
-
1170
- return /*#__PURE__*/React.createElement("div", {
1171
- className: "dropdown"
1172
- }, /*#__PURE__*/React.createElement(TextField, _extends({}, props, {
1173
- onClick: toggle,
1174
- value: label,
1175
- onChange: change,
1176
- onBlur: blur,
1177
- readOnly: !predictive
1178
- })), !readOnly ? /*#__PURE__*/React.createElement(Icon, {
1179
- icon: "expand_more",
1180
- clickable: true,
1181
- size: "small",
1182
- action: toggle
1183
- }) : null, renderOptions());
1184
- };
1185
-
1186
921
  /**
1187
922
  * TYPES
1188
923
  */
1189
- var TYPES = {
924
+ var TYPES$1 = {
1190
925
  STRING: 'String',
1191
926
  NUMBER: 'Number',
1192
927
  BOOLEAN: 'Boolean',
@@ -1201,7 +936,7 @@ var TYPES = {
1201
936
  var FORMATS = {
1202
937
  NONE: '',
1203
938
  DATE: 'date',
1204
- DATERANGE: 'DATARANGE',
939
+ DATERANGE: 'DATERANGE',
1205
940
  TIME: 'time',
1206
941
  EMAIL: 'email',
1207
942
  HTML: 'HTML',
@@ -1214,7 +949,7 @@ var FORMATS = {
1214
949
  * CHECK
1215
950
  */
1216
951
 
1217
- var CHECK = Object.values(TYPES).reduce(function (obj, name) {
952
+ var CHECK = Object.values(TYPES$1).reduce(function (obj, name) {
1218
953
  obj['is' + name] = function (x) {
1219
954
  return toString.call(x) == '[object ' + name + ']';
1220
955
  };
@@ -1242,19 +977,19 @@ var ContentType = /*#__PURE__*/function () {
1242
977
  var child = new ContentType(item);
1243
978
 
1244
979
  switch (type) {
1245
- case TYPES.ARRAY:
980
+ case TYPES$1.ARRAY:
1246
981
  valid = CHECK['is' + type](data);
1247
982
  validChildren = data.every(function (element) {
1248
983
  return child.validate(element);
1249
984
  });
1250
985
  break;
1251
986
 
1252
- case TYPES.ENTITY:
987
+ case TYPES$1.ENTITY:
1253
988
  valid = CHECK['is' + type](data);
1254
989
  validChildren = child.validate(data);
1255
990
  break;
1256
991
 
1257
- case TYPES.NUMBER:
992
+ case TYPES$1.NUMBER:
1258
993
  valid = CHECK['is' + type](data.value);
1259
994
  validChildren = true;
1260
995
  break;
@@ -1340,27 +1075,27 @@ var ContentType = /*#__PURE__*/function () {
1340
1075
  var entryData = data ? data[name] : null;
1341
1076
 
1342
1077
  switch (type) {
1343
- case TYPES.STRING:
1078
+ case TYPES$1.STRING:
1344
1079
  next[name] = entryData || field["default"];
1345
1080
  break;
1346
1081
 
1347
- case TYPES.NUMBER:
1082
+ case TYPES$1.NUMBER:
1348
1083
  next[name] = entryData || field["default"];
1349
1084
  break;
1350
1085
 
1351
- case TYPES.BOOLEAN:
1086
+ case TYPES$1.BOOLEAN:
1352
1087
  next[name] = entryData || field["default"];
1353
1088
  break;
1354
1089
 
1355
- case TYPES.ENTITY:
1090
+ case TYPES$1.ENTITY:
1356
1091
  if (optional === true) console.log('OPTIONAL', field, !entryData);
1357
1092
  if (optional === true && !entryData) break;
1358
1093
  var child1 = new ContentType(item);
1359
1094
  next[name] = child1.value(entryData);
1360
1095
  break;
1361
1096
 
1362
- case TYPES.ARRAY:
1363
- if (item === TYPES.STRING) {
1097
+ case TYPES$1.ARRAY:
1098
+ if (item === TYPES$1.STRING) {
1364
1099
  next[name] = entryData ? entryData : [];
1365
1100
  } else {
1366
1101
  var child2 = new ContentType(item);
@@ -1369,77 +1104,354 @@ var ContentType = /*#__PURE__*/function () {
1369
1104
  }) : [];
1370
1105
  }
1371
1106
 
1372
- break;
1107
+ break;
1108
+
1109
+ default:
1110
+ next[name] = field;
1111
+ break;
1112
+ }
1113
+
1114
+ return next;
1115
+ }, {});
1116
+ return next;
1117
+ };
1118
+
1119
+ return ContentType;
1120
+ }();
1121
+ /**
1122
+ * Content
1123
+ */
1124
+
1125
+ var Content = /*#__PURE__*/function () {
1126
+ function Content(type, value) {
1127
+ this.type = type;
1128
+ this._type = new ContentType(type);
1129
+ this._value = value;
1130
+ }
1131
+
1132
+ var _proto2 = Content.prototype;
1133
+
1134
+ _proto2.isValid = function isValid() {
1135
+ return this._type.validate(this._value);
1136
+ };
1137
+
1138
+ _proto2.value = function value() {
1139
+ return this._type.value(this._value);
1140
+ };
1141
+
1142
+ _proto2.form = function form() {
1143
+ return this._type.form(this._value);
1144
+ };
1145
+
1146
+ _proto2.sections = function sections() {
1147
+ return this._type.sections(this._value);
1148
+ };
1149
+
1150
+ _proto2.update = function update(value) {
1151
+ this._value = value;
1152
+ };
1153
+
1154
+ return Content;
1155
+ }();
1156
+
1157
+ /**
1158
+ * Text Field
1159
+ */
1160
+
1161
+ var TextField = function TextField(props) {
1162
+ var site = useContext(SiteContext);
1163
+ var id = props.id,
1164
+ _props$type = props.type,
1165
+ type = _props$type === void 0 ? 'text' : _props$type,
1166
+ label = props.label,
1167
+ placeholder = props.placeholder,
1168
+ value = props.value,
1169
+ outlined = props.outlined,
1170
+ _props$readOnly = props.readOnly,
1171
+ readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
1172
+ _props$canClear = props.canClear,
1173
+ canClear = _props$canClear === void 0 ? true : _props$canClear,
1174
+ onChange = props.onChange,
1175
+ onEnter = props.onEnter,
1176
+ onClick = props.onClick,
1177
+ onBlur = props.onBlur;
1178
+
1179
+ function onKeyPress(event) {
1180
+ var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1181
+
1182
+ if (key == 13) {
1183
+ if (onEnter) onEnter();
1184
+ }
1185
+ }
1186
+
1187
+ function change(event) {
1188
+ event.stopPropagation();
1189
+ event.preventDefault();
1190
+ var value = event.target.value;
1191
+ if (onChange) onChange(id, value);
1192
+ }
1193
+
1194
+ function focus() {
1195
+ if (site && site.changeFocus) {
1196
+ site.changeFocus({
1197
+ lose: function lose() {// DO NOTHING
1198
+ }
1199
+ });
1200
+ }
1201
+ }
1202
+
1203
+ function blur() {
1204
+ if (onBlur) onBlur();
1205
+ }
1206
+
1207
+ function clear() {
1208
+ if (onChange) onChange(id, "");
1209
+ }
1210
+
1211
+ var borderStyle = outlined ? "textfield-outlined" : "textfield";
1212
+ var labelStyle = label ? "" : "no-label";
1213
+ var style = labelStyle + " " + borderStyle + " textfield-" + type;
1214
+ var labelTxt = /*#__PURE__*/React.createElement(Text, null, label);
1215
+ return /*#__PURE__*/React.createElement("div", {
1216
+ className: "" + style,
1217
+ onClick: onClick
1218
+ }, /*#__PURE__*/React.createElement("input", {
1219
+ id: id,
1220
+ type: type,
1221
+ placeholder: placeholder,
1222
+ value: value,
1223
+ required: true,
1224
+ onChange: change,
1225
+ onKeyDown: onKeyPress,
1226
+ onFocus: focus,
1227
+ onBlur: blur,
1228
+ readOnly: readOnly
1229
+ }), canClear && value && value.length > 0 ? /*#__PURE__*/React.createElement(Icon, {
1230
+ icon: "close",
1231
+ clickable: true,
1232
+ size: "small",
1233
+ action: clear
1234
+ }) : null, /*#__PURE__*/React.createElement("span", {
1235
+ className: "bar"
1236
+ }), label ? /*#__PURE__*/React.createElement("label", null, labelTxt) : null);
1237
+ };
1238
+ /**
1239
+ * Text Area
1240
+ */
1241
+
1242
+ var TextArea = function TextArea(props) {
1243
+ var site = useContext(SiteContext);
1244
+ var id = props.id,
1245
+ _props$type2 = props.type,
1246
+ type = _props$type2 === void 0 ? 'text' : _props$type2,
1247
+ label = props.label,
1248
+ placeholder = props.placeholder,
1249
+ value = props.value,
1250
+ _props$readOnly2 = props.readOnly,
1251
+ readOnly = _props$readOnly2 === void 0 ? false : _props$readOnly2,
1252
+ _props$canClear2 = props.canClear,
1253
+ canClear = _props$canClear2 === void 0 ? true : _props$canClear2,
1254
+ onChange = props.onChange,
1255
+ onEnter = props.onEnter,
1256
+ onClick = props.onClick;
1257
+
1258
+ function onKeyPress(event) {
1259
+ var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1260
+
1261
+ if (key == 13) {
1262
+ if (onEnter) onEnter();
1263
+ }
1264
+ }
1265
+
1266
+ function change(event) {
1267
+ event.stopPropagation();
1268
+ event.preventDefault();
1269
+ var value = event.target.value;
1270
+ if (onChange) onChange(id, value);
1271
+ }
1272
+
1273
+ function focus() {
1274
+ if (site && site.changeFocus) {
1275
+ site.changeFocus({
1276
+ lose: function lose() {// DO NOTHING
1277
+ }
1278
+ });
1279
+ }
1280
+ }
1281
+
1282
+ function clear() {
1283
+ if (onChange) onChange(id, "");
1284
+ }
1285
+
1286
+ var labelStyle = label ? "" : "no-label";
1287
+ var style = "textarea " + labelStyle + " textarea-" + type;
1288
+ var labelTxt = /*#__PURE__*/React.createElement(Text, null, label);
1289
+ return /*#__PURE__*/React.createElement("div", {
1290
+ className: "" + style,
1291
+ onClick: onClick
1292
+ }, /*#__PURE__*/React.createElement("textarea", {
1293
+ id: id,
1294
+ placeholder: placeholder,
1295
+ value: value,
1296
+ required: true,
1297
+ onChange: change,
1298
+ onKeyDown: onKeyPress,
1299
+ onFocus: focus,
1300
+ readOnly: readOnly
1301
+ }), canClear && value && value.length > 0 ? /*#__PURE__*/React.createElement(Icon, {
1302
+ icon: "close",
1303
+ clickable: true,
1304
+ size: "small",
1305
+ action: clear
1306
+ }) : null, /*#__PURE__*/React.createElement("span", {
1307
+ className: "bar"
1308
+ }), label ? /*#__PURE__*/React.createElement("label", null, labelTxt) : null);
1309
+ };
1310
+ /**
1311
+ * Dropdown
1312
+ */
1313
+
1314
+ var DropDown = function DropDown(props) {
1315
+ var site = useContext(SiteContext);
1316
+ var id = props.id,
1317
+ _props$options = props.options,
1318
+ options = _props$options === void 0 ? [] : _props$options,
1319
+ value = props.value,
1320
+ onChange = props.onChange,
1321
+ _props$predictive = props.predictive,
1322
+ predictive = _props$predictive === void 0 ? false : _props$predictive,
1323
+ _props$readOnly3 = props.readOnly,
1324
+ readOnly = _props$readOnly3 === void 0 ? false : _props$readOnly3,
1325
+ _props$verbose = props.verbose,
1326
+ verbose = _props$verbose === void 0 ? true : _props$verbose,
1327
+ onBlur = props.onBlur;
1328
+
1329
+ var _useState = useState(false),
1330
+ open = _useState[0],
1331
+ setOpen = _useState[1];
1373
1332
 
1374
- default:
1375
- next[name] = field;
1376
- break;
1377
- }
1333
+ var _useState2 = useState(),
1334
+ label = _useState2[0],
1335
+ setLabel = _useState2[1];
1378
1336
 
1379
- return next;
1380
- }, {});
1381
- return next;
1382
- };
1337
+ useEffect(function () {
1338
+ if (Array.isArray(options)) {
1339
+ var option = options.find(function (option) {
1340
+ return option.value === value;
1341
+ });
1383
1342
 
1384
- return ContentType;
1385
- }();
1386
- /**
1387
- * Content
1388
- */
1343
+ var _label = option ? option.label : "";
1389
1344
 
1390
- var Content = /*#__PURE__*/function () {
1391
- function Content(type, value) {
1392
- this.type = type;
1393
- this._type = new ContentType(type);
1394
- this._value = value;
1395
- }
1345
+ setLabel(_label);
1346
+ }
1347
+ }, [value]);
1396
1348
 
1397
- var _proto2 = Content.prototype;
1349
+ function change(id, value) {
1350
+ if (predictive) {
1351
+ setLabel(value);
1352
+ } else {
1353
+ if (onChange) onChange(id, value);
1354
+ }
1355
+ }
1398
1356
 
1399
- _proto2.isValid = function isValid() {
1400
- return this._type.validate(this._value);
1401
- };
1357
+ function toggle() {
1358
+ if (site && site.changeFocus) {
1359
+ site.changeFocus({
1360
+ lose: function lose() {
1361
+ setOpen(false);
1362
+ }
1363
+ });
1364
+ }
1402
1365
 
1403
- _proto2.value = function value() {
1404
- return this._type.value(this._value);
1405
- };
1366
+ if (!readOnly) setOpen(!open);
1367
+ }
1406
1368
 
1407
- _proto2.form = function form() {
1408
- return this._type.form(this._value);
1409
- };
1369
+ function select(event) {
1370
+ var next = event.target.getAttribute("value");
1371
+ var option = options.find(function (option) {
1372
+ return option.value === next;
1373
+ });
1374
+ setOpen(false);
1375
+ var label = verbose ? option.label : "";
1376
+ setLabel(label);
1377
+ if (onChange) onChange(id, next);
1378
+ }
1410
1379
 
1411
- _proto2.sections = function sections() {
1412
- return this._type.sections(this._value);
1413
- };
1380
+ function blur() {
1381
+ if (onBlur) onBlur();
1382
+ }
1414
1383
 
1415
- _proto2.update = function update(value) {
1416
- this._value = value;
1417
- };
1384
+ function renderOptions() {
1385
+ var canShow = open == true && Array.isArray(options);
1418
1386
 
1419
- return Content;
1420
- }();
1387
+ if (canShow) {
1388
+ var filterActive = predictive === true && label && label.length > 0;
1389
+ var items = filterActive ? options.filter(function (option) {
1390
+ return option.label.toUpperCase().indexOf(label.toUpperCase()) >= 0;
1391
+ }) : options;
1392
+ var lis = items.map(function (option) {
1393
+ return /*#__PURE__*/React.createElement("li", {
1394
+ key: option.value,
1395
+ value: option.value
1396
+ }, option.label);
1397
+ });
1398
+ return /*#__PURE__*/React.createElement("menu", null, /*#__PURE__*/React.createElement("ul", {
1399
+ onMouseDown: select
1400
+ }, lis));
1401
+ } else {
1402
+ return null;
1403
+ }
1404
+ }
1421
1405
 
1422
- var ColorField = function ColorField(props) {
1406
+ return /*#__PURE__*/React.createElement("div", {
1407
+ className: "dropdown"
1408
+ }, /*#__PURE__*/React.createElement(TextField, _extends({}, props, {
1409
+ onClick: toggle,
1410
+ value: label,
1411
+ onChange: change,
1412
+ onBlur: blur,
1413
+ readOnly: !predictive
1414
+ })), !readOnly ? /*#__PURE__*/React.createElement(Icon, {
1415
+ icon: "expand_more",
1416
+ clickable: true,
1417
+ size: "small",
1418
+ action: toggle
1419
+ }) : null, renderOptions());
1420
+ };
1421
+ var DateRange = function DateRange(props) {
1423
1422
  var id = props.id,
1424
- _props$label = props.label,
1425
- label = _props$label === void 0 ? "Color" : _props$label,
1426
- value = props.value,
1423
+ label = props.label,
1427
1424
  onChange = props.onChange;
1428
1425
 
1429
- function change(event) {
1430
- var color = event.target.value;
1431
- if (onChange) onChange(id, color);
1426
+ var _useState3 = useState({}),
1427
+ form = _useState3[0],
1428
+ setForm = _useState3[1];
1429
+
1430
+ useEffect(function () {
1431
+ if (onChange) onChange(id, form);
1432
+ }, [form]);
1433
+
1434
+ function change(id, value) {
1435
+ var _Object$assign;
1436
+
1437
+ var next = Object.assign({}, form, (_Object$assign = {}, _Object$assign[id] = value, _Object$assign));
1438
+ setForm(next);
1432
1439
  }
1433
1440
 
1434
1441
  return /*#__PURE__*/React.createElement("div", {
1435
- className: "color-field"
1436
- }, /*#__PURE__*/React.createElement("label", {
1437
- htmlFor: id
1438
- }, label), /*#__PURE__*/React.createElement("input", {
1439
- id: id,
1440
- type: "color",
1441
- onChange: change,
1442
- value: value
1442
+ className: "date-range"
1443
+ }, label ? /*#__PURE__*/React.createElement("label", null, label) : null, /*#__PURE__*/React.createElement(TextField, {
1444
+ id: "from",
1445
+ type: "date",
1446
+ label: "From",
1447
+ value: form.from,
1448
+ onChange: change
1449
+ }), /*#__PURE__*/React.createElement(TextField, {
1450
+ id: "to",
1451
+ type: "date",
1452
+ label: "To",
1453
+ value: form.to,
1454
+ onChange: change
1443
1455
  }));
1444
1456
  };
1445
1457
 
@@ -1466,17 +1478,31 @@ var DataTable = function DataTable(props) {
1466
1478
  className = props.className;
1467
1479
 
1468
1480
  var _useState = useState({}),
1469
- sortDir = _useState[0];
1481
+ sortDir = _useState[0],
1482
+ setSortDir = _useState[1];
1470
1483
 
1471
1484
  var _useState2 = useState(false),
1472
1485
  allChecked = _useState2[0],
1473
1486
  setAllChecked = _useState2[1];
1474
1487
 
1488
+ useEffect(function () {
1489
+ console.log(sortDir);
1490
+ }, [sortDir]);
1491
+
1492
+ function changeSort(id) {
1493
+ var _Object$assign;
1494
+
1495
+ var nextDir = sortDir[id] ? sortDir[id] * -1 : 1;
1496
+ var next = Object.assign({}, sortDir, (_Object$assign = {}, _Object$assign[id] = nextDir, _Object$assign));
1497
+ setSortDir(next);
1498
+ }
1499
+
1475
1500
  function multiSort(array, sortObject) {
1476
1501
  if (sortObject === void 0) {
1477
1502
  sortObject = {};
1478
1503
  }
1479
1504
 
1505
+ console.log('multisort', sortObject);
1480
1506
  var sortKeys = Object.keys(sortObject);
1481
1507
 
1482
1508
  if (!sortKeys.length) {
@@ -1519,7 +1545,7 @@ var DataTable = function DataTable(props) {
1519
1545
  }
1520
1546
  }
1521
1547
 
1522
- function sort(dragged, dropped) {
1548
+ function moveRow(dragged, dropped) {
1523
1549
  if (onSort) onSort(dragged, dropped);
1524
1550
  }
1525
1551
 
@@ -1541,7 +1567,7 @@ var DataTable = function DataTable(props) {
1541
1567
  item = _ref.item,
1542
1568
  sortable = _ref.sortable;
1543
1569
 
1544
- var _ref2 = type === TYPES.ENTITY ? [1, Object.values(item).filter(function (v) {
1570
+ var _ref2 = type === TYPES$1.ENTITY ? [1, Object.values(item).filter(function (v) {
1545
1571
  return v.column === true;
1546
1572
  }).length] : [2, 1],
1547
1573
  rowspan = _ref2[0],
@@ -1551,22 +1577,25 @@ var DataTable = function DataTable(props) {
1551
1577
  key: id,
1552
1578
  rowSpan: rowspan,
1553
1579
  colSpan: colspan
1554
- }, id === "checked" ? /*#__PURE__*/React.createElement(CheckBox, {
1580
+ }, /*#__PURE__*/React.createElement("div", null, id === "checked" ? /*#__PURE__*/React.createElement(CheckBox, {
1555
1581
  onChange: checkAll,
1556
1582
  value: allChecked
1557
1583
  }) : /*#__PURE__*/React.createElement(Text, {
1558
1584
  key: "th_" + id
1559
1585
  }, label), sortable ? /*#__PURE__*/React.createElement(Icon, {
1560
- icon: "arrow_up",
1586
+ icon: "expand_less",
1561
1587
  size: "small",
1562
- clickable: true
1563
- }) : null);
1588
+ clickable: true,
1589
+ action: function action() {
1590
+ return changeSort(id);
1591
+ }
1592
+ }) : null));
1564
1593
  }), /*#__PURE__*/React.createElement("th", {
1565
1594
  rowSpan: 2,
1566
1595
  colSpan: 1
1567
1596
  })), /*#__PURE__*/React.createElement("tr", null, columns.filter(function (_ref3) {
1568
1597
  var type = _ref3.type;
1569
- return type === TYPES.ENTITY;
1598
+ return type === TYPES$1.ENTITY;
1570
1599
  }).map(function (column) {
1571
1600
  var item = column.item;
1572
1601
  var fields = item ? Object.values(item) : [];
@@ -1581,7 +1610,7 @@ var DataTable = function DataTable(props) {
1581
1610
  row: row,
1582
1611
  columns: columns,
1583
1612
  onSelect: select,
1584
- onDrop: sort,
1613
+ onDrop: moveRow,
1585
1614
  editable: editable,
1586
1615
  expanded: expanded
1587
1616
  });
@@ -1779,7 +1808,7 @@ var DataTableCell = function DataTableCell(_ref4) {
1779
1808
  }
1780
1809
  };
1781
1810
 
1782
- return column.type === TYPES.ENTITY ? /*#__PURE__*/React.createElement(EntityCellViewer, {
1811
+ return column.type === TYPES$1.ENTITY ? /*#__PURE__*/React.createElement(EntityCellViewer, {
1783
1812
  id: column.id,
1784
1813
  item: column.item,
1785
1814
  value: cell
@@ -2584,7 +2613,7 @@ var Planner = function Planner(_ref) {
2584
2613
  if (onSelectCell) onSelectCell(lane, date);
2585
2614
  }
2586
2615
 
2587
- var period = useMemo(function () {
2616
+ var period = useMemo$1(function () {
2588
2617
  var start = ranges(from, "YYYY-MM-DD");
2589
2618
  var end = ranges(to, "YYYY-MM-DD");
2590
2619
  var range = ranges.range(start, end);
@@ -2935,7 +2964,7 @@ var Uploader = function Uploader(_ref) {
2935
2964
  onSuccess = _ref.onSuccess,
2936
2965
  onError = _ref.onError,
2937
2966
  onComplete = _ref.onComplete;
2938
- var resumable = useMemo(function () {
2967
+ var resumable = useMemo$1(function () {
2939
2968
  var config = {
2940
2969
  target: target,
2941
2970
  chunkSize: 1 * 1024 * 1024,
@@ -3677,12 +3706,12 @@ var ContentFormField = function ContentFormField(props) {
3677
3706
  var type = props.type;
3678
3707
 
3679
3708
  switch (type) {
3680
- case TYPES.BOOLEAN:
3709
+ case TYPES$1.BOOLEAN:
3681
3710
  return /*#__PURE__*/React.createElement(CheckBox, _extends({
3682
3711
  key: props.id
3683
3712
  }, props));
3684
3713
 
3685
- case TYPES.NUMBER:
3714
+ case TYPES$1.NUMBER:
3686
3715
  return /*#__PURE__*/React.createElement(NumberField, _extends({
3687
3716
  key: props.id
3688
3717
  }, props));
@@ -3711,7 +3740,7 @@ var StringField = function StringField(_ref2) {
3711
3740
  value = _ref2.value,
3712
3741
  onChange = _ref2.onChange,
3713
3742
  outlined = _ref2.outlined;
3714
- var fieldTypes = (_fieldTypes = {}, _fieldTypes[TYPES.NUMBER] = 'number', _fieldTypes[TYPES.DATE] = 'date', _fieldTypes);
3743
+ var fieldTypes = (_fieldTypes = {}, _fieldTypes[TYPES$1.NUMBER] = 'number', _fieldTypes[TYPES$1.DATE] = 'date', _fieldTypes);
3715
3744
 
3716
3745
  function buildOptions() {
3717
3746
  var opts = typeof options === 'function' ? options() : options;
@@ -3780,6 +3809,30 @@ var NumberField = function NumberField(_ref3) {
3780
3809
  });
3781
3810
  };
3782
3811
 
3812
+ var ColorField = function ColorField(props) {
3813
+ var id = props.id,
3814
+ _props$label = props.label,
3815
+ label = _props$label === void 0 ? "Color" : _props$label,
3816
+ value = props.value,
3817
+ onChange = props.onChange;
3818
+
3819
+ function change(event) {
3820
+ var color = event.target.value;
3821
+ if (onChange) onChange(id, color);
3822
+ }
3823
+
3824
+ return /*#__PURE__*/React.createElement("div", {
3825
+ className: "color-field"
3826
+ }, /*#__PURE__*/React.createElement("label", {
3827
+ htmlFor: id
3828
+ }, label), /*#__PURE__*/React.createElement("input", {
3829
+ id: id,
3830
+ type: "color",
3831
+ onChange: change,
3832
+ value: value
3833
+ }));
3834
+ };
3835
+
3783
3836
  /**
3784
3837
  * Content Editor
3785
3838
  */
@@ -3920,7 +3973,7 @@ var TreededContentEditor = function TreededContentEditor(_ref3) {
3920
3973
  onChange = _ref3.onChange;
3921
3974
  var value = content.value();
3922
3975
  var nodes = Object.values(content.type).filter(function (field) {
3923
- return field.type === TYPES.ARRAY;
3976
+ return field.type === TYPES$1.ARRAY;
3924
3977
  });
3925
3978
 
3926
3979
  var _useState2 = useState(),
@@ -4007,14 +4060,14 @@ var FieldEditor = function FieldEditor(_ref4) {
4007
4060
  return null;
4008
4061
  } else {
4009
4062
  switch (type) {
4010
- case TYPES.ENTITY:
4063
+ case TYPES$1.ENTITY:
4011
4064
  return /*#__PURE__*/React.createElement(EntityEditor, {
4012
4065
  field: field,
4013
4066
  value: value1,
4014
4067
  onChange: change
4015
4068
  });
4016
4069
 
4017
- case TYPES.STRING:
4070
+ case TYPES$1.STRING:
4018
4071
  return /*#__PURE__*/React.createElement(StringEditor, {
4019
4072
  outlined: outlined,
4020
4073
  field: field,
@@ -4023,7 +4076,7 @@ var FieldEditor = function FieldEditor(_ref4) {
4023
4076
  content: content
4024
4077
  });
4025
4078
 
4026
- case TYPES.BOOLEAN:
4079
+ case TYPES$1.BOOLEAN:
4027
4080
  return /*#__PURE__*/React.createElement(CheckBox, {
4028
4081
  outlined: true,
4029
4082
  id: id,
@@ -4032,7 +4085,7 @@ var FieldEditor = function FieldEditor(_ref4) {
4032
4085
  onChange: change
4033
4086
  });
4034
4087
 
4035
- case TYPES.NUMBER:
4088
+ case TYPES$1.NUMBER:
4036
4089
  return /*#__PURE__*/React.createElement(NumberEditor, {
4037
4090
  outlined: outlined,
4038
4091
  field: field,
@@ -4040,8 +4093,8 @@ var FieldEditor = function FieldEditor(_ref4) {
4040
4093
  onChange: change
4041
4094
  });
4042
4095
 
4043
- case TYPES.ARRAY:
4044
- return item === TYPES.STRING ? options ? /*#__PURE__*/React.createElement(MultiSelectionEditor, {
4096
+ case TYPES$1.ARRAY:
4097
+ return item === TYPES$1.STRING ? options ? /*#__PURE__*/React.createElement(MultiSelectionEditor, {
4045
4098
  content: content,
4046
4099
  field: field,
4047
4100
  value: value1,
@@ -4828,17 +4881,70 @@ var CollectionPage = function CollectionPage(props) {
4828
4881
  delay: delay
4829
4882
  }), children ? /*#__PURE__*/React.createElement("article", null, children) : null));
4830
4883
  };
4831
-
4832
4884
  var CollectionFilters = function CollectionFilters(props) {
4833
- return /*#__PURE__*/React.createElement("div", {
4834
- className: "collection-filters"
4835
- }, "TODO: filters");
4885
+ var change = function change(next) {
4886
+ try {
4887
+ setForm(next);
4888
+ return Promise.resolve();
4889
+ } catch (e) {
4890
+ return Promise.reject(e);
4891
+ }
4892
+ };
4893
+
4894
+ var schema = props.schema,
4895
+ onChange = props.onChange;
4896
+
4897
+ var _useState = useState({}),
4898
+ form = _useState[0],
4899
+ setForm = _useState[1];
4900
+
4901
+ var filterSchema = useMemo(function () {
4902
+ var filterSchema = Object.assign({}, schema);
4903
+
4904
+ for (var key in filterSchema) {
4905
+ if (filterSchema[key].filter === false) {
4906
+ delete filterSchema[key];
4907
+ } else {
4908
+ if (filterSchema[key].type === TYPES.ENTITY) {
4909
+ var fs = filterSchema[key].item;
4910
+
4911
+ for (var key in fs) {
4912
+ if (fs[key].filter === false) delete fs[key];
4913
+ }
4914
+ }
4915
+ }
4916
+ }
4917
+
4918
+ return filterSchema;
4919
+ }, [schema]);
4920
+ useEffect(function () {
4921
+ if (onChange) onChange(form);
4922
+ }, [form]);
4923
+
4924
+ function clear() {
4925
+ change({});
4926
+ }
4927
+
4928
+ var content = new Content(filterSchema, form);
4929
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Header, {
4930
+ className: "table-filters",
4931
+ title: /*#__PURE__*/React.createElement(Text, null, "Filters")
4932
+ }, /*#__PURE__*/React.createElement(Icon, {
4933
+ icon: "filter_list_off",
4934
+ size: "small",
4935
+ clickable: true,
4936
+ action: clear
4937
+ })), /*#__PURE__*/React.createElement("main", {
4938
+ className: "table-filters"
4939
+ }, /*#__PURE__*/React.createElement(ContentEditor, {
4940
+ content: content,
4941
+ onChange: change
4942
+ })));
4836
4943
  };
4837
4944
  /**
4838
4945
  * Collection List
4839
4946
  */
4840
4947
 
4841
-
4842
4948
  var CollectionList = function CollectionList(props) {
4843
4949
  var select = function select(id) {
4844
4950
  try {
@@ -5008,9 +5114,9 @@ var CollectionEditor = function CollectionEditor(props) {
5008
5114
  delay = _props$delay2 === void 0 ? 1000 : _props$delay2;
5009
5115
  var timer = useRef(null);
5010
5116
 
5011
- var _useState = useState(selected),
5012
- form = _useState[0],
5013
- setForm = _useState[1];
5117
+ var _useState2 = useState(selected),
5118
+ form = _useState2[0],
5119
+ setForm = _useState2[1];
5014
5120
 
5015
5121
  useEffect(function () {
5016
5122
  setForm(selected);
@@ -5338,19 +5444,19 @@ var FieldViewer = function FieldViewer(props) {
5338
5444
  if (optional && value === undefined) return null;
5339
5445
 
5340
5446
  switch (type) {
5341
- case TYPES.STRING:
5447
+ case TYPES$1.STRING:
5342
5448
  return /*#__PURE__*/React.createElement(Property, {
5343
5449
  label: label,
5344
5450
  value: value
5345
5451
  });
5346
5452
 
5347
- case TYPES.ENTITY:
5453
+ case TYPES$1.ENTITY:
5348
5454
  return /*#__PURE__*/React.createElement(EntityViewer, {
5349
5455
  field: field,
5350
5456
  value: value
5351
5457
  });
5352
5458
 
5353
- case TYPES.ARRAY:
5459
+ case TYPES$1.ARRAY:
5354
5460
  return /*#__PURE__*/React.createElement(ArrayViewer, {
5355
5461
  label: label,
5356
5462
  item: item,
@@ -5415,12 +5521,12 @@ var ArrayViewer = function ArrayViewer(props) {
5415
5521
  var QUERY = {
5416
5522
  id: {
5417
5523
  id: "id",
5418
- type: TYPES.STRING,
5524
+ type: TYPES$1.STRING,
5419
5525
  editable: false
5420
5526
  },
5421
5527
  name: {
5422
5528
  id: "name",
5423
- type: TYPES.STRING,
5529
+ type: TYPES$1.STRING,
5424
5530
  required: true,
5425
5531
  label: "Name"
5426
5532
  }
@@ -5913,14 +6019,14 @@ var TableFilters$1 = function TableFilters(props) {
5913
6019
  form = _useState3[0],
5914
6020
  setForm = _useState3[1];
5915
6021
 
5916
- var filterSchema = useMemo(function () {
6022
+ var filterSchema = useMemo$1(function () {
5917
6023
  var filterSchema = Object.assign({}, schema);
5918
6024
 
5919
6025
  for (var key in filterSchema) {
5920
6026
  if (filterSchema[key].filter === false) {
5921
6027
  delete filterSchema[key];
5922
6028
  } else {
5923
- if (filterSchema[key].type === TYPES.ENTITY) {
6029
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
5924
6030
  var fs = filterSchema[key].item;
5925
6031
 
5926
6032
  for (var key in fs) {
@@ -6981,14 +7087,14 @@ var TableFilters = function TableFilters(props) {
6981
7087
  form = _useState4[0],
6982
7088
  setForm = _useState4[1];
6983
7089
 
6984
- var filterSchema = useMemo(function () {
7090
+ var filterSchema = useMemo$1(function () {
6985
7091
  var filterSchema = Object.assign({}, schema);
6986
7092
 
6987
7093
  for (var key in filterSchema) {
6988
7094
  if (filterSchema[key].filter === false) {
6989
7095
  delete filterSchema[key];
6990
7096
  } else {
6991
- if (filterSchema[key].type === TYPES.ENTITY) {
7097
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
6992
7098
  var fs = filterSchema[key].item;
6993
7099
 
6994
7100
  for (var key in fs) {
@@ -7002,7 +7108,7 @@ var TableFilters = function TableFilters(props) {
7002
7108
  delete filterSchema.flows;
7003
7109
  return filterSchema;
7004
7110
  }, [schema]);
7005
- var likes = useMemo(function () {
7111
+ var likes = useMemo$1(function () {
7006
7112
  var fields = Object.values(schema);
7007
7113
  return fields.reduce(function (likes, field) {
7008
7114
  if (field.like === true) likes.push(field.id);
@@ -7539,5 +7645,5 @@ var isFunction = function isFunction(value) {
7539
7645
  return value && (Object.prototype.toString.call(value) === "[object Function]" || "function" === typeof value || value instanceof Function);
7540
7646
  };
7541
7647
 
7542
- export { Avatar, Button, CheckBox, Chip, Chips, CircularProgress, CollectionContext, CollectionEditor$1 as CollectionEditor, CollectionPage, CollectionTree, Content, ContentEditor, ContentForm, CreateContentDialog, DataTable, Dialog, DropDown, EditContentDialog, FORMATS, FieldEditor, FileExplorer, FileIconsView, Form, HTTPClient, Header, Icon, Kanban, KanbanCard, KanbanColumn, LinearProgress, List, ListEditor, LoginBox, Menu, MenuIcon, MenuItem, MenuSeparator, Page, PageContext, PageProvider, Planner, Property, RadioButton, ResetPasswordBox, Section, Session, Site, SiteContext, SiteProvider, Stack, Switch, TEXTFORMATS, TYPES, Tab, TabbedContentEditor, TabbedTablePage, TableEditor$1 as TableEditor, TablePage, Tabs, Text, TextArea, TextField, Thumbnail, TokenField, Tooltip, Tree, TreeItem, TreeNode, TreededContentEditor, UploadArea, UploadDialog, UploadFile, UploadIcon, Uploader, View, Viewer, WaitScreen, isFunction };
7648
+ export { Avatar, Button, CheckBox, Chip, Chips, CircularProgress, CollectionContext, CollectionEditor$1 as CollectionEditor, CollectionFilters, CollectionPage, CollectionTree, Content, ContentEditor, ContentForm, CreateContentDialog, DataTable, Dialog, DropDown, EditContentDialog, FORMATS, FieldEditor, FileExplorer, FileIconsView, Form, HTTPClient, Header, Icon, Kanban, KanbanCard, KanbanColumn, LinearProgress, List, ListEditor, LoginBox, Menu, MenuIcon, MenuItem, MenuSeparator, Page, PageContext, PageProvider, Planner, Property, RadioButton, ResetPasswordBox, Section, Session, Site, SiteContext, SiteProvider, Stack, Switch, TEXTFORMATS, TYPES$1 as TYPES, Tab, TabbedContentEditor, TabbedTablePage, TableEditor$1 as TableEditor, TablePage, Tabs, Text, TextArea, TextField, Thumbnail, TokenField, Tooltip, Tree, TreeItem, TreeNode, TreededContentEditor, UploadArea, UploadDialog, UploadFile, UploadIcon, Uploader, View, Viewer, WaitScreen, isFunction };
7543
7649
  //# sourceMappingURL=index.modern.js.map