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.
package/dist/index.umd.js CHANGED
@@ -921,275 +921,10 @@
921
921
  return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, child);
922
922
  };
923
923
 
924
- /**
925
- * Text Field
926
- */
927
-
928
- var TextField = function TextField(props) {
929
- var site = React.useContext(SiteContext);
930
- var id = props.id,
931
- _props$type = props.type,
932
- type = _props$type === void 0 ? 'text' : _props$type,
933
- label = props.label,
934
- placeholder = props.placeholder,
935
- value = props.value,
936
- outlined = props.outlined,
937
- _props$readOnly = props.readOnly,
938
- readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
939
- _props$canClear = props.canClear,
940
- canClear = _props$canClear === void 0 ? true : _props$canClear,
941
- onChange = props.onChange,
942
- onEnter = props.onEnter,
943
- onClick = props.onClick,
944
- onBlur = props.onBlur;
945
-
946
- function onKeyPress(event) {
947
- var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
948
-
949
- if (key == 13) {
950
- if (onEnter) onEnter();
951
- }
952
- }
953
-
954
- function change(event) {
955
- event.stopPropagation();
956
- event.preventDefault();
957
- var value = event.target.value;
958
- if (onChange) onChange(id, value);
959
- }
960
-
961
- function focus() {
962
- if (site && site.changeFocus) {
963
- site.changeFocus({
964
- lose: function lose() {// DO NOTHING
965
- }
966
- });
967
- }
968
- }
969
-
970
- function blur() {
971
- if (onBlur) onBlur();
972
- }
973
-
974
- function clear() {
975
- if (onChange) onChange(id, "");
976
- }
977
-
978
- var borderStyle = outlined ? "textfield-outlined" : "textfield";
979
- var labelStyle = label ? "" : "no-label";
980
- var style = labelStyle + " " + borderStyle + " textfield-" + type;
981
- var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text, null, label);
982
- return /*#__PURE__*/React__default["default"].createElement("div", {
983
- className: "" + style,
984
- onClick: onClick
985
- }, /*#__PURE__*/React__default["default"].createElement("input", {
986
- id: id,
987
- type: type,
988
- placeholder: placeholder,
989
- value: value,
990
- required: true,
991
- onChange: change,
992
- onKeyDown: onKeyPress,
993
- onFocus: focus,
994
- onBlur: blur,
995
- readOnly: readOnly
996
- }), canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
997
- icon: "close",
998
- clickable: true,
999
- size: "small",
1000
- action: clear
1001
- }) : null, /*#__PURE__*/React__default["default"].createElement("span", {
1002
- className: "bar"
1003
- }), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
1004
- };
1005
- /**
1006
- * Text Area
1007
- */
1008
-
1009
- var TextArea = function TextArea(props) {
1010
- var site = React.useContext(SiteContext);
1011
- var id = props.id,
1012
- _props$type2 = props.type,
1013
- type = _props$type2 === void 0 ? 'text' : _props$type2,
1014
- label = props.label,
1015
- placeholder = props.placeholder,
1016
- value = props.value,
1017
- _props$readOnly2 = props.readOnly,
1018
- readOnly = _props$readOnly2 === void 0 ? false : _props$readOnly2,
1019
- _props$canClear2 = props.canClear,
1020
- canClear = _props$canClear2 === void 0 ? true : _props$canClear2,
1021
- onChange = props.onChange,
1022
- onEnter = props.onEnter,
1023
- onClick = props.onClick;
1024
-
1025
- function onKeyPress(event) {
1026
- var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1027
-
1028
- if (key == 13) {
1029
- if (onEnter) onEnter();
1030
- }
1031
- }
1032
-
1033
- function change(event) {
1034
- event.stopPropagation();
1035
- event.preventDefault();
1036
- var value = event.target.value;
1037
- if (onChange) onChange(id, value);
1038
- }
1039
-
1040
- function focus() {
1041
- if (site && site.changeFocus) {
1042
- site.changeFocus({
1043
- lose: function lose() {// DO NOTHING
1044
- }
1045
- });
1046
- }
1047
- }
1048
-
1049
- function clear() {
1050
- if (onChange) onChange(id, "");
1051
- }
1052
-
1053
- var labelStyle = label ? "" : "no-label";
1054
- var style = "textarea " + labelStyle + " textarea-" + type;
1055
- var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text, null, label);
1056
- return /*#__PURE__*/React__default["default"].createElement("div", {
1057
- className: "" + style,
1058
- onClick: onClick
1059
- }, /*#__PURE__*/React__default["default"].createElement("textarea", {
1060
- id: id,
1061
- placeholder: placeholder,
1062
- value: value,
1063
- required: true,
1064
- onChange: change,
1065
- onKeyDown: onKeyPress,
1066
- onFocus: focus,
1067
- readOnly: readOnly
1068
- }), canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1069
- icon: "close",
1070
- clickable: true,
1071
- size: "small",
1072
- action: clear
1073
- }) : null, /*#__PURE__*/React__default["default"].createElement("span", {
1074
- className: "bar"
1075
- }), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
1076
- };
1077
- /**
1078
- * Dropdown
1079
- */
1080
-
1081
- var DropDown = function DropDown(props) {
1082
- var site = React.useContext(SiteContext);
1083
- var id = props.id,
1084
- _props$options = props.options,
1085
- options = _props$options === void 0 ? [] : _props$options,
1086
- value = props.value,
1087
- onChange = props.onChange,
1088
- _props$predictive = props.predictive,
1089
- predictive = _props$predictive === void 0 ? false : _props$predictive,
1090
- _props$readOnly3 = props.readOnly,
1091
- readOnly = _props$readOnly3 === void 0 ? false : _props$readOnly3,
1092
- _props$verbose = props.verbose,
1093
- verbose = _props$verbose === void 0 ? true : _props$verbose,
1094
- onBlur = props.onBlur;
1095
-
1096
- var _useState = React.useState(false),
1097
- open = _useState[0],
1098
- setOpen = _useState[1];
1099
-
1100
- var _useState2 = React.useState(),
1101
- label = _useState2[0],
1102
- setLabel = _useState2[1];
1103
-
1104
- React.useEffect(function () {
1105
- if (Array.isArray(options)) {
1106
- var option = options.find(function (option) {
1107
- return option.value === value;
1108
- });
1109
-
1110
- var _label = option ? option.label : "";
1111
-
1112
- setLabel(_label);
1113
- }
1114
- }, [value]);
1115
-
1116
- function change(id, value) {
1117
- if (predictive) {
1118
- setLabel(value);
1119
- } else {
1120
- if (onChange) onChange(id, value);
1121
- }
1122
- }
1123
-
1124
- function toggle() {
1125
- if (site && site.changeFocus) {
1126
- site.changeFocus({
1127
- lose: function lose() {
1128
- setOpen(false);
1129
- }
1130
- });
1131
- }
1132
-
1133
- if (!readOnly) setOpen(!open);
1134
- }
1135
-
1136
- function select(event) {
1137
- var next = event.target.getAttribute("value");
1138
- var option = options.find(function (option) {
1139
- return option.value === next;
1140
- });
1141
- setOpen(false);
1142
- var label = verbose ? option.label : "";
1143
- setLabel(label);
1144
- if (onChange) onChange(id, next);
1145
- }
1146
-
1147
- function blur() {
1148
- if (onBlur) onBlur();
1149
- }
1150
-
1151
- function renderOptions() {
1152
- var canShow = open == true && Array.isArray(options);
1153
-
1154
- if (canShow) {
1155
- var filterActive = predictive === true && label && label.length > 0;
1156
- var items = filterActive ? options.filter(function (option) {
1157
- return option.label.toUpperCase().indexOf(label.toUpperCase()) >= 0;
1158
- }) : options;
1159
- var lis = items.map(function (option) {
1160
- return /*#__PURE__*/React__default["default"].createElement("li", {
1161
- key: option.value,
1162
- value: option.value
1163
- }, option.label);
1164
- });
1165
- return /*#__PURE__*/React__default["default"].createElement("menu", null, /*#__PURE__*/React__default["default"].createElement("ul", {
1166
- onMouseDown: select
1167
- }, lis));
1168
- } else {
1169
- return null;
1170
- }
1171
- }
1172
-
1173
- return /*#__PURE__*/React__default["default"].createElement("div", {
1174
- className: "dropdown"
1175
- }, /*#__PURE__*/React__default["default"].createElement(TextField, _extends({}, props, {
1176
- onClick: toggle,
1177
- value: label,
1178
- onChange: change,
1179
- onBlur: blur,
1180
- readOnly: !predictive
1181
- })), !readOnly ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1182
- icon: "expand_more",
1183
- clickable: true,
1184
- size: "small",
1185
- action: toggle
1186
- }) : null, renderOptions());
1187
- };
1188
-
1189
924
  /**
1190
925
  * TYPES
1191
926
  */
1192
- var TYPES = {
927
+ var TYPES$1 = {
1193
928
  STRING: 'String',
1194
929
  NUMBER: 'Number',
1195
930
  BOOLEAN: 'Boolean',
@@ -1204,7 +939,7 @@
1204
939
  var FORMATS = {
1205
940
  NONE: '',
1206
941
  DATE: 'date',
1207
- DATERANGE: 'DATARANGE',
942
+ DATERANGE: 'DATERANGE',
1208
943
  TIME: 'time',
1209
944
  EMAIL: 'email',
1210
945
  HTML: 'HTML',
@@ -1217,7 +952,7 @@
1217
952
  * CHECK
1218
953
  */
1219
954
 
1220
- var CHECK = Object.values(TYPES).reduce(function (obj, name) {
955
+ var CHECK = Object.values(TYPES$1).reduce(function (obj, name) {
1221
956
  obj['is' + name] = function (x) {
1222
957
  return toString.call(x) == '[object ' + name + ']';
1223
958
  };
@@ -1245,19 +980,19 @@
1245
980
  var child = new ContentType(item);
1246
981
 
1247
982
  switch (type) {
1248
- case TYPES.ARRAY:
983
+ case TYPES$1.ARRAY:
1249
984
  valid = CHECK['is' + type](data);
1250
985
  validChildren = data.every(function (element) {
1251
986
  return child.validate(element);
1252
987
  });
1253
988
  break;
1254
989
 
1255
- case TYPES.ENTITY:
990
+ case TYPES$1.ENTITY:
1256
991
  valid = CHECK['is' + type](data);
1257
992
  validChildren = child.validate(data);
1258
993
  break;
1259
994
 
1260
- case TYPES.NUMBER:
995
+ case TYPES$1.NUMBER:
1261
996
  valid = CHECK['is' + type](data.value);
1262
997
  validChildren = true;
1263
998
  break;
@@ -1343,27 +1078,27 @@
1343
1078
  var entryData = data ? data[name] : null;
1344
1079
 
1345
1080
  switch (type) {
1346
- case TYPES.STRING:
1081
+ case TYPES$1.STRING:
1347
1082
  next[name] = entryData || field["default"];
1348
1083
  break;
1349
1084
 
1350
- case TYPES.NUMBER:
1085
+ case TYPES$1.NUMBER:
1351
1086
  next[name] = entryData || field["default"];
1352
1087
  break;
1353
1088
 
1354
- case TYPES.BOOLEAN:
1089
+ case TYPES$1.BOOLEAN:
1355
1090
  next[name] = entryData || field["default"];
1356
1091
  break;
1357
1092
 
1358
- case TYPES.ENTITY:
1093
+ case TYPES$1.ENTITY:
1359
1094
  if (optional === true) console.log('OPTIONAL', field, !entryData);
1360
1095
  if (optional === true && !entryData) break;
1361
1096
  var child1 = new ContentType(item);
1362
1097
  next[name] = child1.value(entryData);
1363
1098
  break;
1364
1099
 
1365
- case TYPES.ARRAY:
1366
- if (item === TYPES.STRING) {
1100
+ case TYPES$1.ARRAY:
1101
+ if (item === TYPES$1.STRING) {
1367
1102
  next[name] = entryData ? entryData : [];
1368
1103
  } else {
1369
1104
  var child2 = new ContentType(item);
@@ -1372,77 +1107,354 @@
1372
1107
  }) : [];
1373
1108
  }
1374
1109
 
1375
- break;
1110
+ break;
1111
+
1112
+ default:
1113
+ next[name] = field;
1114
+ break;
1115
+ }
1116
+
1117
+ return next;
1118
+ }, {});
1119
+ return next;
1120
+ };
1121
+
1122
+ return ContentType;
1123
+ }();
1124
+ /**
1125
+ * Content
1126
+ */
1127
+
1128
+ var Content = /*#__PURE__*/function () {
1129
+ function Content(type, value) {
1130
+ this.type = type;
1131
+ this._type = new ContentType(type);
1132
+ this._value = value;
1133
+ }
1134
+
1135
+ var _proto2 = Content.prototype;
1136
+
1137
+ _proto2.isValid = function isValid() {
1138
+ return this._type.validate(this._value);
1139
+ };
1140
+
1141
+ _proto2.value = function value() {
1142
+ return this._type.value(this._value);
1143
+ };
1144
+
1145
+ _proto2.form = function form() {
1146
+ return this._type.form(this._value);
1147
+ };
1148
+
1149
+ _proto2.sections = function sections() {
1150
+ return this._type.sections(this._value);
1151
+ };
1152
+
1153
+ _proto2.update = function update(value) {
1154
+ this._value = value;
1155
+ };
1156
+
1157
+ return Content;
1158
+ }();
1159
+
1160
+ /**
1161
+ * Text Field
1162
+ */
1163
+
1164
+ var TextField = function TextField(props) {
1165
+ var site = React.useContext(SiteContext);
1166
+ var id = props.id,
1167
+ _props$type = props.type,
1168
+ type = _props$type === void 0 ? 'text' : _props$type,
1169
+ label = props.label,
1170
+ placeholder = props.placeholder,
1171
+ value = props.value,
1172
+ outlined = props.outlined,
1173
+ _props$readOnly = props.readOnly,
1174
+ readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
1175
+ _props$canClear = props.canClear,
1176
+ canClear = _props$canClear === void 0 ? true : _props$canClear,
1177
+ onChange = props.onChange,
1178
+ onEnter = props.onEnter,
1179
+ onClick = props.onClick,
1180
+ onBlur = props.onBlur;
1181
+
1182
+ function onKeyPress(event) {
1183
+ var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1184
+
1185
+ if (key == 13) {
1186
+ if (onEnter) onEnter();
1187
+ }
1188
+ }
1189
+
1190
+ function change(event) {
1191
+ event.stopPropagation();
1192
+ event.preventDefault();
1193
+ var value = event.target.value;
1194
+ if (onChange) onChange(id, value);
1195
+ }
1196
+
1197
+ function focus() {
1198
+ if (site && site.changeFocus) {
1199
+ site.changeFocus({
1200
+ lose: function lose() {// DO NOTHING
1201
+ }
1202
+ });
1203
+ }
1204
+ }
1205
+
1206
+ function blur() {
1207
+ if (onBlur) onBlur();
1208
+ }
1209
+
1210
+ function clear() {
1211
+ if (onChange) onChange(id, "");
1212
+ }
1213
+
1214
+ var borderStyle = outlined ? "textfield-outlined" : "textfield";
1215
+ var labelStyle = label ? "" : "no-label";
1216
+ var style = labelStyle + " " + borderStyle + " textfield-" + type;
1217
+ var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text, null, label);
1218
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1219
+ className: "" + style,
1220
+ onClick: onClick
1221
+ }, /*#__PURE__*/React__default["default"].createElement("input", {
1222
+ id: id,
1223
+ type: type,
1224
+ placeholder: placeholder,
1225
+ value: value,
1226
+ required: true,
1227
+ onChange: change,
1228
+ onKeyDown: onKeyPress,
1229
+ onFocus: focus,
1230
+ onBlur: blur,
1231
+ readOnly: readOnly
1232
+ }), canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1233
+ icon: "close",
1234
+ clickable: true,
1235
+ size: "small",
1236
+ action: clear
1237
+ }) : null, /*#__PURE__*/React__default["default"].createElement("span", {
1238
+ className: "bar"
1239
+ }), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
1240
+ };
1241
+ /**
1242
+ * Text Area
1243
+ */
1244
+
1245
+ var TextArea = function TextArea(props) {
1246
+ var site = React.useContext(SiteContext);
1247
+ var id = props.id,
1248
+ _props$type2 = props.type,
1249
+ type = _props$type2 === void 0 ? 'text' : _props$type2,
1250
+ label = props.label,
1251
+ placeholder = props.placeholder,
1252
+ value = props.value,
1253
+ _props$readOnly2 = props.readOnly,
1254
+ readOnly = _props$readOnly2 === void 0 ? false : _props$readOnly2,
1255
+ _props$canClear2 = props.canClear,
1256
+ canClear = _props$canClear2 === void 0 ? true : _props$canClear2,
1257
+ onChange = props.onChange,
1258
+ onEnter = props.onEnter,
1259
+ onClick = props.onClick;
1260
+
1261
+ function onKeyPress(event) {
1262
+ var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1263
+
1264
+ if (key == 13) {
1265
+ if (onEnter) onEnter();
1266
+ }
1267
+ }
1268
+
1269
+ function change(event) {
1270
+ event.stopPropagation();
1271
+ event.preventDefault();
1272
+ var value = event.target.value;
1273
+ if (onChange) onChange(id, value);
1274
+ }
1275
+
1276
+ function focus() {
1277
+ if (site && site.changeFocus) {
1278
+ site.changeFocus({
1279
+ lose: function lose() {// DO NOTHING
1280
+ }
1281
+ });
1282
+ }
1283
+ }
1284
+
1285
+ function clear() {
1286
+ if (onChange) onChange(id, "");
1287
+ }
1288
+
1289
+ var labelStyle = label ? "" : "no-label";
1290
+ var style = "textarea " + labelStyle + " textarea-" + type;
1291
+ var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text, null, label);
1292
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1293
+ className: "" + style,
1294
+ onClick: onClick
1295
+ }, /*#__PURE__*/React__default["default"].createElement("textarea", {
1296
+ id: id,
1297
+ placeholder: placeholder,
1298
+ value: value,
1299
+ required: true,
1300
+ onChange: change,
1301
+ onKeyDown: onKeyPress,
1302
+ onFocus: focus,
1303
+ readOnly: readOnly
1304
+ }), canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1305
+ icon: "close",
1306
+ clickable: true,
1307
+ size: "small",
1308
+ action: clear
1309
+ }) : null, /*#__PURE__*/React__default["default"].createElement("span", {
1310
+ className: "bar"
1311
+ }), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
1312
+ };
1313
+ /**
1314
+ * Dropdown
1315
+ */
1316
+
1317
+ var DropDown = function DropDown(props) {
1318
+ var site = React.useContext(SiteContext);
1319
+ var id = props.id,
1320
+ _props$options = props.options,
1321
+ options = _props$options === void 0 ? [] : _props$options,
1322
+ value = props.value,
1323
+ onChange = props.onChange,
1324
+ _props$predictive = props.predictive,
1325
+ predictive = _props$predictive === void 0 ? false : _props$predictive,
1326
+ _props$readOnly3 = props.readOnly,
1327
+ readOnly = _props$readOnly3 === void 0 ? false : _props$readOnly3,
1328
+ _props$verbose = props.verbose,
1329
+ verbose = _props$verbose === void 0 ? true : _props$verbose,
1330
+ onBlur = props.onBlur;
1331
+
1332
+ var _useState = React.useState(false),
1333
+ open = _useState[0],
1334
+ setOpen = _useState[1];
1376
1335
 
1377
- default:
1378
- next[name] = field;
1379
- break;
1380
- }
1336
+ var _useState2 = React.useState(),
1337
+ label = _useState2[0],
1338
+ setLabel = _useState2[1];
1381
1339
 
1382
- return next;
1383
- }, {});
1384
- return next;
1385
- };
1340
+ React.useEffect(function () {
1341
+ if (Array.isArray(options)) {
1342
+ var option = options.find(function (option) {
1343
+ return option.value === value;
1344
+ });
1386
1345
 
1387
- return ContentType;
1388
- }();
1389
- /**
1390
- * Content
1391
- */
1346
+ var _label = option ? option.label : "";
1392
1347
 
1393
- var Content = /*#__PURE__*/function () {
1394
- function Content(type, value) {
1395
- this.type = type;
1396
- this._type = new ContentType(type);
1397
- this._value = value;
1398
- }
1348
+ setLabel(_label);
1349
+ }
1350
+ }, [value]);
1399
1351
 
1400
- var _proto2 = Content.prototype;
1352
+ function change(id, value) {
1353
+ if (predictive) {
1354
+ setLabel(value);
1355
+ } else {
1356
+ if (onChange) onChange(id, value);
1357
+ }
1358
+ }
1401
1359
 
1402
- _proto2.isValid = function isValid() {
1403
- return this._type.validate(this._value);
1404
- };
1360
+ function toggle() {
1361
+ if (site && site.changeFocus) {
1362
+ site.changeFocus({
1363
+ lose: function lose() {
1364
+ setOpen(false);
1365
+ }
1366
+ });
1367
+ }
1405
1368
 
1406
- _proto2.value = function value() {
1407
- return this._type.value(this._value);
1408
- };
1369
+ if (!readOnly) setOpen(!open);
1370
+ }
1409
1371
 
1410
- _proto2.form = function form() {
1411
- return this._type.form(this._value);
1412
- };
1372
+ function select(event) {
1373
+ var next = event.target.getAttribute("value");
1374
+ var option = options.find(function (option) {
1375
+ return option.value === next;
1376
+ });
1377
+ setOpen(false);
1378
+ var label = verbose ? option.label : "";
1379
+ setLabel(label);
1380
+ if (onChange) onChange(id, next);
1381
+ }
1413
1382
 
1414
- _proto2.sections = function sections() {
1415
- return this._type.sections(this._value);
1416
- };
1383
+ function blur() {
1384
+ if (onBlur) onBlur();
1385
+ }
1417
1386
 
1418
- _proto2.update = function update(value) {
1419
- this._value = value;
1420
- };
1387
+ function renderOptions() {
1388
+ var canShow = open == true && Array.isArray(options);
1421
1389
 
1422
- return Content;
1423
- }();
1390
+ if (canShow) {
1391
+ var filterActive = predictive === true && label && label.length > 0;
1392
+ var items = filterActive ? options.filter(function (option) {
1393
+ return option.label.toUpperCase().indexOf(label.toUpperCase()) >= 0;
1394
+ }) : options;
1395
+ var lis = items.map(function (option) {
1396
+ return /*#__PURE__*/React__default["default"].createElement("li", {
1397
+ key: option.value,
1398
+ value: option.value
1399
+ }, option.label);
1400
+ });
1401
+ return /*#__PURE__*/React__default["default"].createElement("menu", null, /*#__PURE__*/React__default["default"].createElement("ul", {
1402
+ onMouseDown: select
1403
+ }, lis));
1404
+ } else {
1405
+ return null;
1406
+ }
1407
+ }
1424
1408
 
1425
- var ColorField = function ColorField(props) {
1409
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1410
+ className: "dropdown"
1411
+ }, /*#__PURE__*/React__default["default"].createElement(TextField, _extends({}, props, {
1412
+ onClick: toggle,
1413
+ value: label,
1414
+ onChange: change,
1415
+ onBlur: blur,
1416
+ readOnly: !predictive
1417
+ })), !readOnly ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1418
+ icon: "expand_more",
1419
+ clickable: true,
1420
+ size: "small",
1421
+ action: toggle
1422
+ }) : null, renderOptions());
1423
+ };
1424
+ var DateRange = function DateRange(props) {
1426
1425
  var id = props.id,
1427
- _props$label = props.label,
1428
- label = _props$label === void 0 ? "Color" : _props$label,
1429
- value = props.value,
1426
+ label = props.label,
1430
1427
  onChange = props.onChange;
1431
1428
 
1432
- function change(event) {
1433
- var color = event.target.value;
1434
- if (onChange) onChange(id, color);
1429
+ var _useState3 = React.useState({}),
1430
+ form = _useState3[0],
1431
+ setForm = _useState3[1];
1432
+
1433
+ React.useEffect(function () {
1434
+ if (onChange) onChange(id, form);
1435
+ }, [form]);
1436
+
1437
+ function change(id, value) {
1438
+ var _Object$assign;
1439
+
1440
+ var next = Object.assign({}, form, (_Object$assign = {}, _Object$assign[id] = value, _Object$assign));
1441
+ setForm(next);
1435
1442
  }
1436
1443
 
1437
1444
  return /*#__PURE__*/React__default["default"].createElement("div", {
1438
- className: "color-field"
1439
- }, /*#__PURE__*/React__default["default"].createElement("label", {
1440
- htmlFor: id
1441
- }, label), /*#__PURE__*/React__default["default"].createElement("input", {
1442
- id: id,
1443
- type: "color",
1444
- onChange: change,
1445
- value: value
1445
+ className: "date-range"
1446
+ }, label ? /*#__PURE__*/React__default["default"].createElement("label", null, label) : null, /*#__PURE__*/React__default["default"].createElement(TextField, {
1447
+ id: "from",
1448
+ type: "date",
1449
+ label: "From",
1450
+ value: form.from,
1451
+ onChange: change
1452
+ }), /*#__PURE__*/React__default["default"].createElement(TextField, {
1453
+ id: "to",
1454
+ type: "date",
1455
+ label: "To",
1456
+ value: form.to,
1457
+ onChange: change
1446
1458
  }));
1447
1459
  };
1448
1460
 
@@ -1469,17 +1481,31 @@
1469
1481
  className = props.className;
1470
1482
 
1471
1483
  var _useState = React.useState({}),
1472
- sortDir = _useState[0];
1484
+ sortDir = _useState[0],
1485
+ setSortDir = _useState[1];
1473
1486
 
1474
1487
  var _useState2 = React.useState(false),
1475
1488
  allChecked = _useState2[0],
1476
1489
  setAllChecked = _useState2[1];
1477
1490
 
1491
+ React.useEffect(function () {
1492
+ console.log(sortDir);
1493
+ }, [sortDir]);
1494
+
1495
+ function changeSort(id) {
1496
+ var _Object$assign;
1497
+
1498
+ var nextDir = sortDir[id] ? sortDir[id] * -1 : 1;
1499
+ var next = Object.assign({}, sortDir, (_Object$assign = {}, _Object$assign[id] = nextDir, _Object$assign));
1500
+ setSortDir(next);
1501
+ }
1502
+
1478
1503
  function multiSort(array, sortObject) {
1479
1504
  if (sortObject === void 0) {
1480
1505
  sortObject = {};
1481
1506
  }
1482
1507
 
1508
+ console.log('multisort', sortObject);
1483
1509
  var sortKeys = Object.keys(sortObject);
1484
1510
 
1485
1511
  if (!sortKeys.length) {
@@ -1522,7 +1548,7 @@
1522
1548
  }
1523
1549
  }
1524
1550
 
1525
- function sort(dragged, dropped) {
1551
+ function moveRow(dragged, dropped) {
1526
1552
  if (onSort) onSort(dragged, dropped);
1527
1553
  }
1528
1554
 
@@ -1544,7 +1570,7 @@
1544
1570
  item = _ref.item,
1545
1571
  sortable = _ref.sortable;
1546
1572
 
1547
- var _ref2 = type === TYPES.ENTITY ? [1, Object.values(item).filter(function (v) {
1573
+ var _ref2 = type === TYPES$1.ENTITY ? [1, Object.values(item).filter(function (v) {
1548
1574
  return v.column === true;
1549
1575
  }).length] : [2, 1],
1550
1576
  rowspan = _ref2[0],
@@ -1554,22 +1580,25 @@
1554
1580
  key: id,
1555
1581
  rowSpan: rowspan,
1556
1582
  colSpan: colspan
1557
- }, id === "checked" ? /*#__PURE__*/React__default["default"].createElement(CheckBox, {
1583
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, id === "checked" ? /*#__PURE__*/React__default["default"].createElement(CheckBox, {
1558
1584
  onChange: checkAll,
1559
1585
  value: allChecked
1560
1586
  }) : /*#__PURE__*/React__default["default"].createElement(Text, {
1561
1587
  key: "th_" + id
1562
1588
  }, label), sortable ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1563
- icon: "arrow_up",
1589
+ icon: "expand_less",
1564
1590
  size: "small",
1565
- clickable: true
1566
- }) : null);
1591
+ clickable: true,
1592
+ action: function action() {
1593
+ return changeSort(id);
1594
+ }
1595
+ }) : null));
1567
1596
  }), /*#__PURE__*/React__default["default"].createElement("th", {
1568
1597
  rowSpan: 2,
1569
1598
  colSpan: 1
1570
1599
  })), /*#__PURE__*/React__default["default"].createElement("tr", null, columns.filter(function (_ref3) {
1571
1600
  var type = _ref3.type;
1572
- return type === TYPES.ENTITY;
1601
+ return type === TYPES$1.ENTITY;
1573
1602
  }).map(function (column) {
1574
1603
  var item = column.item;
1575
1604
  var fields = item ? Object.values(item) : [];
@@ -1584,7 +1613,7 @@
1584
1613
  row: row,
1585
1614
  columns: columns,
1586
1615
  onSelect: select,
1587
- onDrop: sort,
1616
+ onDrop: moveRow,
1588
1617
  editable: editable,
1589
1618
  expanded: expanded
1590
1619
  });
@@ -1782,7 +1811,7 @@
1782
1811
  }
1783
1812
  };
1784
1813
 
1785
- return column.type === TYPES.ENTITY ? /*#__PURE__*/React__default["default"].createElement(EntityCellViewer, {
1814
+ return column.type === TYPES$1.ENTITY ? /*#__PURE__*/React__default["default"].createElement(EntityCellViewer, {
1786
1815
  id: column.id,
1787
1816
  item: column.item,
1788
1817
  value: cell
@@ -3680,12 +3709,12 @@
3680
3709
  var type = props.type;
3681
3710
 
3682
3711
  switch (type) {
3683
- case TYPES.BOOLEAN:
3712
+ case TYPES$1.BOOLEAN:
3684
3713
  return /*#__PURE__*/React__default["default"].createElement(CheckBox, _extends({
3685
3714
  key: props.id
3686
3715
  }, props));
3687
3716
 
3688
- case TYPES.NUMBER:
3717
+ case TYPES$1.NUMBER:
3689
3718
  return /*#__PURE__*/React__default["default"].createElement(NumberField, _extends({
3690
3719
  key: props.id
3691
3720
  }, props));
@@ -3714,7 +3743,7 @@
3714
3743
  value = _ref2.value,
3715
3744
  onChange = _ref2.onChange,
3716
3745
  outlined = _ref2.outlined;
3717
- var fieldTypes = (_fieldTypes = {}, _fieldTypes[TYPES.NUMBER] = 'number', _fieldTypes[TYPES.DATE] = 'date', _fieldTypes);
3746
+ var fieldTypes = (_fieldTypes = {}, _fieldTypes[TYPES$1.NUMBER] = 'number', _fieldTypes[TYPES$1.DATE] = 'date', _fieldTypes);
3718
3747
 
3719
3748
  function buildOptions() {
3720
3749
  var opts = typeof options === 'function' ? options() : options;
@@ -3783,6 +3812,30 @@
3783
3812
  });
3784
3813
  };
3785
3814
 
3815
+ var ColorField = function ColorField(props) {
3816
+ var id = props.id,
3817
+ _props$label = props.label,
3818
+ label = _props$label === void 0 ? "Color" : _props$label,
3819
+ value = props.value,
3820
+ onChange = props.onChange;
3821
+
3822
+ function change(event) {
3823
+ var color = event.target.value;
3824
+ if (onChange) onChange(id, color);
3825
+ }
3826
+
3827
+ return /*#__PURE__*/React__default["default"].createElement("div", {
3828
+ className: "color-field"
3829
+ }, /*#__PURE__*/React__default["default"].createElement("label", {
3830
+ htmlFor: id
3831
+ }, label), /*#__PURE__*/React__default["default"].createElement("input", {
3832
+ id: id,
3833
+ type: "color",
3834
+ onChange: change,
3835
+ value: value
3836
+ }));
3837
+ };
3838
+
3786
3839
  /**
3787
3840
  * Content Editor
3788
3841
  */
@@ -3923,7 +3976,7 @@
3923
3976
  onChange = _ref3.onChange;
3924
3977
  var value = content.value();
3925
3978
  var nodes = Object.values(content.type).filter(function (field) {
3926
- return field.type === TYPES.ARRAY;
3979
+ return field.type === TYPES$1.ARRAY;
3927
3980
  });
3928
3981
 
3929
3982
  var _useState2 = React.useState(),
@@ -4010,14 +4063,14 @@
4010
4063
  return null;
4011
4064
  } else {
4012
4065
  switch (type) {
4013
- case TYPES.ENTITY:
4066
+ case TYPES$1.ENTITY:
4014
4067
  return /*#__PURE__*/React__default["default"].createElement(EntityEditor, {
4015
4068
  field: field,
4016
4069
  value: value1,
4017
4070
  onChange: change
4018
4071
  });
4019
4072
 
4020
- case TYPES.STRING:
4073
+ case TYPES$1.STRING:
4021
4074
  return /*#__PURE__*/React__default["default"].createElement(StringEditor, {
4022
4075
  outlined: outlined,
4023
4076
  field: field,
@@ -4026,7 +4079,7 @@
4026
4079
  content: content
4027
4080
  });
4028
4081
 
4029
- case TYPES.BOOLEAN:
4082
+ case TYPES$1.BOOLEAN:
4030
4083
  return /*#__PURE__*/React__default["default"].createElement(CheckBox, {
4031
4084
  outlined: true,
4032
4085
  id: id,
@@ -4035,7 +4088,7 @@
4035
4088
  onChange: change
4036
4089
  });
4037
4090
 
4038
- case TYPES.NUMBER:
4091
+ case TYPES$1.NUMBER:
4039
4092
  return /*#__PURE__*/React__default["default"].createElement(NumberEditor, {
4040
4093
  outlined: outlined,
4041
4094
  field: field,
@@ -4043,8 +4096,8 @@
4043
4096
  onChange: change
4044
4097
  });
4045
4098
 
4046
- case TYPES.ARRAY:
4047
- return item === TYPES.STRING ? options ? /*#__PURE__*/React__default["default"].createElement(MultiSelectionEditor, {
4099
+ case TYPES$1.ARRAY:
4100
+ return item === TYPES$1.STRING ? options ? /*#__PURE__*/React__default["default"].createElement(MultiSelectionEditor, {
4048
4101
  content: content,
4049
4102
  field: field,
4050
4103
  value: value1,
@@ -4831,17 +4884,70 @@
4831
4884
  delay: delay
4832
4885
  }), children ? /*#__PURE__*/React__default["default"].createElement("article", null, children) : null));
4833
4886
  };
4834
-
4835
4887
  var CollectionFilters = function CollectionFilters(props) {
4836
- return /*#__PURE__*/React__default["default"].createElement("div", {
4837
- className: "collection-filters"
4838
- }, "TODO: filters");
4888
+ var change = function change(next) {
4889
+ try {
4890
+ setForm(next);
4891
+ return Promise.resolve();
4892
+ } catch (e) {
4893
+ return Promise.reject(e);
4894
+ }
4895
+ };
4896
+
4897
+ var schema = props.schema,
4898
+ onChange = props.onChange;
4899
+
4900
+ var _useState = React.useState({}),
4901
+ form = _useState[0],
4902
+ setForm = _useState[1];
4903
+
4904
+ var filterSchema = useMemo(function () {
4905
+ var filterSchema = Object.assign({}, schema);
4906
+
4907
+ for (var key in filterSchema) {
4908
+ if (filterSchema[key].filter === false) {
4909
+ delete filterSchema[key];
4910
+ } else {
4911
+ if (filterSchema[key].type === TYPES.ENTITY) {
4912
+ var fs = filterSchema[key].item;
4913
+
4914
+ for (var key in fs) {
4915
+ if (fs[key].filter === false) delete fs[key];
4916
+ }
4917
+ }
4918
+ }
4919
+ }
4920
+
4921
+ return filterSchema;
4922
+ }, [schema]);
4923
+ React.useEffect(function () {
4924
+ if (onChange) onChange(form);
4925
+ }, [form]);
4926
+
4927
+ function clear() {
4928
+ change({});
4929
+ }
4930
+
4931
+ var content = new Content(filterSchema, form);
4932
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement(Header, {
4933
+ className: "table-filters",
4934
+ title: /*#__PURE__*/React__default["default"].createElement(Text, null, "Filters")
4935
+ }, /*#__PURE__*/React__default["default"].createElement(Icon, {
4936
+ icon: "filter_list_off",
4937
+ size: "small",
4938
+ clickable: true,
4939
+ action: clear
4940
+ })), /*#__PURE__*/React__default["default"].createElement("main", {
4941
+ className: "table-filters"
4942
+ }, /*#__PURE__*/React__default["default"].createElement(ContentEditor, {
4943
+ content: content,
4944
+ onChange: change
4945
+ })));
4839
4946
  };
4840
4947
  /**
4841
4948
  * Collection List
4842
4949
  */
4843
4950
 
4844
-
4845
4951
  var CollectionList = function CollectionList(props) {
4846
4952
  var select = function select(id) {
4847
4953
  try {
@@ -5011,9 +5117,9 @@
5011
5117
  delay = _props$delay2 === void 0 ? 1000 : _props$delay2;
5012
5118
  var timer = React.useRef(null);
5013
5119
 
5014
- var _useState = React.useState(selected),
5015
- form = _useState[0],
5016
- setForm = _useState[1];
5120
+ var _useState2 = React.useState(selected),
5121
+ form = _useState2[0],
5122
+ setForm = _useState2[1];
5017
5123
 
5018
5124
  React.useEffect(function () {
5019
5125
  setForm(selected);
@@ -5341,19 +5447,19 @@
5341
5447
  if (optional && value === undefined) return null;
5342
5448
 
5343
5449
  switch (type) {
5344
- case TYPES.STRING:
5450
+ case TYPES$1.STRING:
5345
5451
  return /*#__PURE__*/React__default["default"].createElement(Property, {
5346
5452
  label: label,
5347
5453
  value: value
5348
5454
  });
5349
5455
 
5350
- case TYPES.ENTITY:
5456
+ case TYPES$1.ENTITY:
5351
5457
  return /*#__PURE__*/React__default["default"].createElement(EntityViewer, {
5352
5458
  field: field,
5353
5459
  value: value
5354
5460
  });
5355
5461
 
5356
- case TYPES.ARRAY:
5462
+ case TYPES$1.ARRAY:
5357
5463
  return /*#__PURE__*/React__default["default"].createElement(ArrayViewer, {
5358
5464
  label: label,
5359
5465
  item: item,
@@ -5418,12 +5524,12 @@
5418
5524
  var QUERY = {
5419
5525
  id: {
5420
5526
  id: "id",
5421
- type: TYPES.STRING,
5527
+ type: TYPES$1.STRING,
5422
5528
  editable: false
5423
5529
  },
5424
5530
  name: {
5425
5531
  id: "name",
5426
- type: TYPES.STRING,
5532
+ type: TYPES$1.STRING,
5427
5533
  required: true,
5428
5534
  label: "Name"
5429
5535
  }
@@ -5923,7 +6029,7 @@
5923
6029
  if (filterSchema[key].filter === false) {
5924
6030
  delete filterSchema[key];
5925
6031
  } else {
5926
- if (filterSchema[key].type === TYPES.ENTITY) {
6032
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
5927
6033
  var fs = filterSchema[key].item;
5928
6034
 
5929
6035
  for (var key in fs) {
@@ -6991,7 +7097,7 @@
6991
7097
  if (filterSchema[key].filter === false) {
6992
7098
  delete filterSchema[key];
6993
7099
  } else {
6994
- if (filterSchema[key].type === TYPES.ENTITY) {
7100
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
6995
7101
  var fs = filterSchema[key].item;
6996
7102
 
6997
7103
  for (var key in fs) {
@@ -7550,6 +7656,7 @@
7550
7656
  exports.CircularProgress = CircularProgress;
7551
7657
  exports.CollectionContext = CollectionContext;
7552
7658
  exports.CollectionEditor = CollectionEditor$1;
7659
+ exports.CollectionFilters = CollectionFilters;
7553
7660
  exports.CollectionPage = CollectionPage;
7554
7661
  exports.CollectionTree = CollectionTree;
7555
7662
  exports.Content = Content;
@@ -7594,7 +7701,7 @@
7594
7701
  exports.Stack = Stack;
7595
7702
  exports.Switch = Switch;
7596
7703
  exports.TEXTFORMATS = TEXTFORMATS;
7597
- exports.TYPES = TYPES;
7704
+ exports.TYPES = TYPES$1;
7598
7705
  exports.Tab = Tab;
7599
7706
  exports.TabbedContentEditor = TabbedContentEditor;
7600
7707
  exports.TabbedTablePage = TabbedTablePage;