ywana-core8 0.0.488 → 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,311 +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
- var DateRange = function DateRange(props) {
1189
- var id = props.id,
1190
- label = props.label,
1191
- onChange = props.onChange;
1192
-
1193
- var _useState3 = React.useState({}),
1194
- form = _useState3[0],
1195
- setForm = _useState3[1];
1196
-
1197
- React.useEffect(function () {
1198
- if (onChange) onChange(id, form);
1199
- }, [form]);
1200
-
1201
- function change(id, value) {
1202
- var _Object$assign;
1203
-
1204
- var next = Object.assign({}, form, (_Object$assign = {}, _Object$assign[id] = value, _Object$assign));
1205
- setForm(next);
1206
- }
1207
-
1208
- return /*#__PURE__*/React__default["default"].createElement("div", {
1209
- className: "date-range"
1210
- }, label ? /*#__PURE__*/React__default["default"].createElement("label", null, label) : null, /*#__PURE__*/React__default["default"].createElement(TextField, {
1211
- id: "from",
1212
- type: "date",
1213
- label: "From",
1214
- value: form.from,
1215
- onChange: change
1216
- }), /*#__PURE__*/React__default["default"].createElement(TextField, {
1217
- id: "to",
1218
- type: "date",
1219
- label: "To",
1220
- value: form.to,
1221
- onChange: change
1222
- }));
1223
- };
1224
-
1225
924
  /**
1226
925
  * TYPES
1227
926
  */
1228
- var TYPES = {
927
+ var TYPES$1 = {
1229
928
  STRING: 'String',
1230
929
  NUMBER: 'Number',
1231
930
  BOOLEAN: 'Boolean',
@@ -1253,7 +952,7 @@
1253
952
  * CHECK
1254
953
  */
1255
954
 
1256
- var CHECK = Object.values(TYPES).reduce(function (obj, name) {
955
+ var CHECK = Object.values(TYPES$1).reduce(function (obj, name) {
1257
956
  obj['is' + name] = function (x) {
1258
957
  return toString.call(x) == '[object ' + name + ']';
1259
958
  };
@@ -1281,19 +980,19 @@
1281
980
  var child = new ContentType(item);
1282
981
 
1283
982
  switch (type) {
1284
- case TYPES.ARRAY:
983
+ case TYPES$1.ARRAY:
1285
984
  valid = CHECK['is' + type](data);
1286
985
  validChildren = data.every(function (element) {
1287
986
  return child.validate(element);
1288
987
  });
1289
988
  break;
1290
989
 
1291
- case TYPES.ENTITY:
990
+ case TYPES$1.ENTITY:
1292
991
  valid = CHECK['is' + type](data);
1293
992
  validChildren = child.validate(data);
1294
993
  break;
1295
994
 
1296
- case TYPES.NUMBER:
995
+ case TYPES$1.NUMBER:
1297
996
  valid = CHECK['is' + type](data.value);
1298
997
  validChildren = true;
1299
998
  break;
@@ -1379,27 +1078,27 @@
1379
1078
  var entryData = data ? data[name] : null;
1380
1079
 
1381
1080
  switch (type) {
1382
- case TYPES.STRING:
1081
+ case TYPES$1.STRING:
1383
1082
  next[name] = entryData || field["default"];
1384
1083
  break;
1385
1084
 
1386
- case TYPES.NUMBER:
1085
+ case TYPES$1.NUMBER:
1387
1086
  next[name] = entryData || field["default"];
1388
1087
  break;
1389
1088
 
1390
- case TYPES.BOOLEAN:
1089
+ case TYPES$1.BOOLEAN:
1391
1090
  next[name] = entryData || field["default"];
1392
1091
  break;
1393
1092
 
1394
- case TYPES.ENTITY:
1093
+ case TYPES$1.ENTITY:
1395
1094
  if (optional === true) console.log('OPTIONAL', field, !entryData);
1396
1095
  if (optional === true && !entryData) break;
1397
1096
  var child1 = new ContentType(item);
1398
1097
  next[name] = child1.value(entryData);
1399
1098
  break;
1400
1099
 
1401
- case TYPES.ARRAY:
1402
- if (item === TYPES.STRING) {
1100
+ case TYPES$1.ARRAY:
1101
+ if (item === TYPES$1.STRING) {
1403
1102
  next[name] = entryData ? entryData : [];
1404
1103
  } else {
1405
1104
  var child2 = new ContentType(item);
@@ -1408,77 +1107,354 @@
1408
1107
  }) : [];
1409
1108
  }
1410
1109
 
1411
- 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];
1335
+
1336
+ var _useState2 = React.useState(),
1337
+ label = _useState2[0],
1338
+ setLabel = _useState2[1];
1412
1339
 
1413
- default:
1414
- next[name] = field;
1415
- break;
1416
- }
1340
+ React.useEffect(function () {
1341
+ if (Array.isArray(options)) {
1342
+ var option = options.find(function (option) {
1343
+ return option.value === value;
1344
+ });
1417
1345
 
1418
- return next;
1419
- }, {});
1420
- return next;
1421
- };
1346
+ var _label = option ? option.label : "";
1422
1347
 
1423
- return ContentType;
1424
- }();
1425
- /**
1426
- * Content
1427
- */
1348
+ setLabel(_label);
1349
+ }
1350
+ }, [value]);
1428
1351
 
1429
- var Content = /*#__PURE__*/function () {
1430
- function Content(type, value) {
1431
- this.type = type;
1432
- this._type = new ContentType(type);
1433
- this._value = value;
1352
+ function change(id, value) {
1353
+ if (predictive) {
1354
+ setLabel(value);
1355
+ } else {
1356
+ if (onChange) onChange(id, value);
1357
+ }
1434
1358
  }
1435
1359
 
1436
- var _proto2 = Content.prototype;
1437
-
1438
- _proto2.isValid = function isValid() {
1439
- return this._type.validate(this._value);
1440
- };
1360
+ function toggle() {
1361
+ if (site && site.changeFocus) {
1362
+ site.changeFocus({
1363
+ lose: function lose() {
1364
+ setOpen(false);
1365
+ }
1366
+ });
1367
+ }
1441
1368
 
1442
- _proto2.value = function value() {
1443
- return this._type.value(this._value);
1444
- };
1369
+ if (!readOnly) setOpen(!open);
1370
+ }
1445
1371
 
1446
- _proto2.form = function form() {
1447
- return this._type.form(this._value);
1448
- };
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
+ }
1449
1382
 
1450
- _proto2.sections = function sections() {
1451
- return this._type.sections(this._value);
1452
- };
1383
+ function blur() {
1384
+ if (onBlur) onBlur();
1385
+ }
1453
1386
 
1454
- _proto2.update = function update(value) {
1455
- this._value = value;
1456
- };
1387
+ function renderOptions() {
1388
+ var canShow = open == true && Array.isArray(options);
1457
1389
 
1458
- return Content;
1459
- }();
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
+ }
1460
1408
 
1461
- 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) {
1462
1425
  var id = props.id,
1463
- _props$label = props.label,
1464
- label = _props$label === void 0 ? "Color" : _props$label,
1465
- value = props.value,
1426
+ label = props.label,
1466
1427
  onChange = props.onChange;
1467
1428
 
1468
- function change(event) {
1469
- var color = event.target.value;
1470
- 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);
1471
1442
  }
1472
1443
 
1473
1444
  return /*#__PURE__*/React__default["default"].createElement("div", {
1474
- className: "color-field"
1475
- }, /*#__PURE__*/React__default["default"].createElement("label", {
1476
- htmlFor: id
1477
- }, label), /*#__PURE__*/React__default["default"].createElement("input", {
1478
- id: id,
1479
- type: "color",
1480
- onChange: change,
1481
- 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
1482
1458
  }));
1483
1459
  };
1484
1460
 
@@ -1505,17 +1481,31 @@
1505
1481
  className = props.className;
1506
1482
 
1507
1483
  var _useState = React.useState({}),
1508
- sortDir = _useState[0];
1484
+ sortDir = _useState[0],
1485
+ setSortDir = _useState[1];
1509
1486
 
1510
1487
  var _useState2 = React.useState(false),
1511
1488
  allChecked = _useState2[0],
1512
1489
  setAllChecked = _useState2[1];
1513
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
+
1514
1503
  function multiSort(array, sortObject) {
1515
1504
  if (sortObject === void 0) {
1516
1505
  sortObject = {};
1517
1506
  }
1518
1507
 
1508
+ console.log('multisort', sortObject);
1519
1509
  var sortKeys = Object.keys(sortObject);
1520
1510
 
1521
1511
  if (!sortKeys.length) {
@@ -1558,7 +1548,7 @@
1558
1548
  }
1559
1549
  }
1560
1550
 
1561
- function sort(dragged, dropped) {
1551
+ function moveRow(dragged, dropped) {
1562
1552
  if (onSort) onSort(dragged, dropped);
1563
1553
  }
1564
1554
 
@@ -1580,7 +1570,7 @@
1580
1570
  item = _ref.item,
1581
1571
  sortable = _ref.sortable;
1582
1572
 
1583
- 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) {
1584
1574
  return v.column === true;
1585
1575
  }).length] : [2, 1],
1586
1576
  rowspan = _ref2[0],
@@ -1590,22 +1580,25 @@
1590
1580
  key: id,
1591
1581
  rowSpan: rowspan,
1592
1582
  colSpan: colspan
1593
- }, id === "checked" ? /*#__PURE__*/React__default["default"].createElement(CheckBox, {
1583
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, id === "checked" ? /*#__PURE__*/React__default["default"].createElement(CheckBox, {
1594
1584
  onChange: checkAll,
1595
1585
  value: allChecked
1596
1586
  }) : /*#__PURE__*/React__default["default"].createElement(Text, {
1597
1587
  key: "th_" + id
1598
1588
  }, label), sortable ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1599
- icon: "arrow_up",
1589
+ icon: "expand_less",
1600
1590
  size: "small",
1601
- clickable: true
1602
- }) : null);
1591
+ clickable: true,
1592
+ action: function action() {
1593
+ return changeSort(id);
1594
+ }
1595
+ }) : null));
1603
1596
  }), /*#__PURE__*/React__default["default"].createElement("th", {
1604
1597
  rowSpan: 2,
1605
1598
  colSpan: 1
1606
1599
  })), /*#__PURE__*/React__default["default"].createElement("tr", null, columns.filter(function (_ref3) {
1607
1600
  var type = _ref3.type;
1608
- return type === TYPES.ENTITY;
1601
+ return type === TYPES$1.ENTITY;
1609
1602
  }).map(function (column) {
1610
1603
  var item = column.item;
1611
1604
  var fields = item ? Object.values(item) : [];
@@ -1620,7 +1613,7 @@
1620
1613
  row: row,
1621
1614
  columns: columns,
1622
1615
  onSelect: select,
1623
- onDrop: sort,
1616
+ onDrop: moveRow,
1624
1617
  editable: editable,
1625
1618
  expanded: expanded
1626
1619
  });
@@ -1818,7 +1811,7 @@
1818
1811
  }
1819
1812
  };
1820
1813
 
1821
- return column.type === TYPES.ENTITY ? /*#__PURE__*/React__default["default"].createElement(EntityCellViewer, {
1814
+ return column.type === TYPES$1.ENTITY ? /*#__PURE__*/React__default["default"].createElement(EntityCellViewer, {
1822
1815
  id: column.id,
1823
1816
  item: column.item,
1824
1817
  value: cell
@@ -3716,12 +3709,12 @@
3716
3709
  var type = props.type;
3717
3710
 
3718
3711
  switch (type) {
3719
- case TYPES.BOOLEAN:
3712
+ case TYPES$1.BOOLEAN:
3720
3713
  return /*#__PURE__*/React__default["default"].createElement(CheckBox, _extends({
3721
3714
  key: props.id
3722
3715
  }, props));
3723
3716
 
3724
- case TYPES.NUMBER:
3717
+ case TYPES$1.NUMBER:
3725
3718
  return /*#__PURE__*/React__default["default"].createElement(NumberField, _extends({
3726
3719
  key: props.id
3727
3720
  }, props));
@@ -3750,7 +3743,7 @@
3750
3743
  value = _ref2.value,
3751
3744
  onChange = _ref2.onChange,
3752
3745
  outlined = _ref2.outlined;
3753
- 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);
3754
3747
 
3755
3748
  function buildOptions() {
3756
3749
  var opts = typeof options === 'function' ? options() : options;
@@ -3819,6 +3812,30 @@
3819
3812
  });
3820
3813
  };
3821
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
+
3822
3839
  /**
3823
3840
  * Content Editor
3824
3841
  */
@@ -3959,7 +3976,7 @@
3959
3976
  onChange = _ref3.onChange;
3960
3977
  var value = content.value();
3961
3978
  var nodes = Object.values(content.type).filter(function (field) {
3962
- return field.type === TYPES.ARRAY;
3979
+ return field.type === TYPES$1.ARRAY;
3963
3980
  });
3964
3981
 
3965
3982
  var _useState2 = React.useState(),
@@ -4046,14 +4063,14 @@
4046
4063
  return null;
4047
4064
  } else {
4048
4065
  switch (type) {
4049
- case TYPES.ENTITY:
4066
+ case TYPES$1.ENTITY:
4050
4067
  return /*#__PURE__*/React__default["default"].createElement(EntityEditor, {
4051
4068
  field: field,
4052
4069
  value: value1,
4053
4070
  onChange: change
4054
4071
  });
4055
4072
 
4056
- case TYPES.STRING:
4073
+ case TYPES$1.STRING:
4057
4074
  return /*#__PURE__*/React__default["default"].createElement(StringEditor, {
4058
4075
  outlined: outlined,
4059
4076
  field: field,
@@ -4062,7 +4079,7 @@
4062
4079
  content: content
4063
4080
  });
4064
4081
 
4065
- case TYPES.BOOLEAN:
4082
+ case TYPES$1.BOOLEAN:
4066
4083
  return /*#__PURE__*/React__default["default"].createElement(CheckBox, {
4067
4084
  outlined: true,
4068
4085
  id: id,
@@ -4071,7 +4088,7 @@
4071
4088
  onChange: change
4072
4089
  });
4073
4090
 
4074
- case TYPES.NUMBER:
4091
+ case TYPES$1.NUMBER:
4075
4092
  return /*#__PURE__*/React__default["default"].createElement(NumberEditor, {
4076
4093
  outlined: outlined,
4077
4094
  field: field,
@@ -4079,8 +4096,8 @@
4079
4096
  onChange: change
4080
4097
  });
4081
4098
 
4082
- case TYPES.ARRAY:
4083
- 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, {
4084
4101
  content: content,
4085
4102
  field: field,
4086
4103
  value: value1,
@@ -4867,17 +4884,70 @@
4867
4884
  delay: delay
4868
4885
  }), children ? /*#__PURE__*/React__default["default"].createElement("article", null, children) : null));
4869
4886
  };
4870
-
4871
4887
  var CollectionFilters = function CollectionFilters(props) {
4872
- return /*#__PURE__*/React__default["default"].createElement("div", {
4873
- className: "collection-filters"
4874
- }, "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
+ })));
4875
4946
  };
4876
4947
  /**
4877
4948
  * Collection List
4878
4949
  */
4879
4950
 
4880
-
4881
4951
  var CollectionList = function CollectionList(props) {
4882
4952
  var select = function select(id) {
4883
4953
  try {
@@ -5047,9 +5117,9 @@
5047
5117
  delay = _props$delay2 === void 0 ? 1000 : _props$delay2;
5048
5118
  var timer = React.useRef(null);
5049
5119
 
5050
- var _useState = React.useState(selected),
5051
- form = _useState[0],
5052
- setForm = _useState[1];
5120
+ var _useState2 = React.useState(selected),
5121
+ form = _useState2[0],
5122
+ setForm = _useState2[1];
5053
5123
 
5054
5124
  React.useEffect(function () {
5055
5125
  setForm(selected);
@@ -5377,19 +5447,19 @@
5377
5447
  if (optional && value === undefined) return null;
5378
5448
 
5379
5449
  switch (type) {
5380
- case TYPES.STRING:
5450
+ case TYPES$1.STRING:
5381
5451
  return /*#__PURE__*/React__default["default"].createElement(Property, {
5382
5452
  label: label,
5383
5453
  value: value
5384
5454
  });
5385
5455
 
5386
- case TYPES.ENTITY:
5456
+ case TYPES$1.ENTITY:
5387
5457
  return /*#__PURE__*/React__default["default"].createElement(EntityViewer, {
5388
5458
  field: field,
5389
5459
  value: value
5390
5460
  });
5391
5461
 
5392
- case TYPES.ARRAY:
5462
+ case TYPES$1.ARRAY:
5393
5463
  return /*#__PURE__*/React__default["default"].createElement(ArrayViewer, {
5394
5464
  label: label,
5395
5465
  item: item,
@@ -5454,12 +5524,12 @@
5454
5524
  var QUERY = {
5455
5525
  id: {
5456
5526
  id: "id",
5457
- type: TYPES.STRING,
5527
+ type: TYPES$1.STRING,
5458
5528
  editable: false
5459
5529
  },
5460
5530
  name: {
5461
5531
  id: "name",
5462
- type: TYPES.STRING,
5532
+ type: TYPES$1.STRING,
5463
5533
  required: true,
5464
5534
  label: "Name"
5465
5535
  }
@@ -5959,7 +6029,7 @@
5959
6029
  if (filterSchema[key].filter === false) {
5960
6030
  delete filterSchema[key];
5961
6031
  } else {
5962
- if (filterSchema[key].type === TYPES.ENTITY) {
6032
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
5963
6033
  var fs = filterSchema[key].item;
5964
6034
 
5965
6035
  for (var key in fs) {
@@ -7027,7 +7097,7 @@
7027
7097
  if (filterSchema[key].filter === false) {
7028
7098
  delete filterSchema[key];
7029
7099
  } else {
7030
- if (filterSchema[key].type === TYPES.ENTITY) {
7100
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
7031
7101
  var fs = filterSchema[key].item;
7032
7102
 
7033
7103
  for (var key in fs) {
@@ -7586,6 +7656,7 @@
7586
7656
  exports.CircularProgress = CircularProgress;
7587
7657
  exports.CollectionContext = CollectionContext;
7588
7658
  exports.CollectionEditor = CollectionEditor$1;
7659
+ exports.CollectionFilters = CollectionFilters;
7589
7660
  exports.CollectionPage = CollectionPage;
7590
7661
  exports.CollectionTree = CollectionTree;
7591
7662
  exports.Content = Content;
@@ -7630,7 +7701,7 @@
7630
7701
  exports.Stack = Stack;
7631
7702
  exports.Switch = Switch;
7632
7703
  exports.TEXTFORMATS = TEXTFORMATS;
7633
- exports.TYPES = TYPES;
7704
+ exports.TYPES = TYPES$1;
7634
7705
  exports.Tab = Tab;
7635
7706
  exports.TabbedContentEditor = TabbedContentEditor;
7636
7707
  exports.TabbedTablePage = TabbedTablePage;