ywana-core8 0.0.487 → 0.0.490

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -926,275 +926,10 @@ var Stack = function Stack(props) {
926
926
  return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, child);
927
927
  };
928
928
 
929
- /**
930
- * Text Field
931
- */
932
-
933
- var TextField = function TextField(props) {
934
- var site = React.useContext(SiteContext);
935
- var id = props.id,
936
- _props$type = props.type,
937
- type = _props$type === void 0 ? 'text' : _props$type,
938
- label = props.label,
939
- placeholder = props.placeholder,
940
- value = props.value,
941
- outlined = props.outlined,
942
- _props$readOnly = props.readOnly,
943
- readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
944
- _props$canClear = props.canClear,
945
- canClear = _props$canClear === void 0 ? true : _props$canClear,
946
- onChange = props.onChange,
947
- onEnter = props.onEnter,
948
- onClick = props.onClick,
949
- onBlur = props.onBlur;
950
-
951
- function onKeyPress(event) {
952
- var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
953
-
954
- if (key == 13) {
955
- if (onEnter) onEnter();
956
- }
957
- }
958
-
959
- function change(event) {
960
- event.stopPropagation();
961
- event.preventDefault();
962
- var value = event.target.value;
963
- if (onChange) onChange(id, value);
964
- }
965
-
966
- function focus() {
967
- if (site && site.changeFocus) {
968
- site.changeFocus({
969
- lose: function lose() {// DO NOTHING
970
- }
971
- });
972
- }
973
- }
974
-
975
- function blur() {
976
- if (onBlur) onBlur();
977
- }
978
-
979
- function clear() {
980
- if (onChange) onChange(id, "");
981
- }
982
-
983
- var borderStyle = outlined ? "textfield-outlined" : "textfield";
984
- var labelStyle = label ? "" : "no-label";
985
- var style = labelStyle + " " + borderStyle + " textfield-" + type;
986
- var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text, null, label);
987
- return /*#__PURE__*/React__default["default"].createElement("div", {
988
- className: "" + style,
989
- onClick: onClick
990
- }, /*#__PURE__*/React__default["default"].createElement("input", {
991
- id: id,
992
- type: type,
993
- placeholder: placeholder,
994
- value: value,
995
- required: true,
996
- onChange: change,
997
- onKeyDown: onKeyPress,
998
- onFocus: focus,
999
- onBlur: blur,
1000
- readOnly: readOnly
1001
- }), canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1002
- icon: "close",
1003
- clickable: true,
1004
- size: "small",
1005
- action: clear
1006
- }) : null, /*#__PURE__*/React__default["default"].createElement("span", {
1007
- className: "bar"
1008
- }), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
1009
- };
1010
- /**
1011
- * Text Area
1012
- */
1013
-
1014
- var TextArea = function TextArea(props) {
1015
- var site = React.useContext(SiteContext);
1016
- var id = props.id,
1017
- _props$type2 = props.type,
1018
- type = _props$type2 === void 0 ? 'text' : _props$type2,
1019
- label = props.label,
1020
- placeholder = props.placeholder,
1021
- value = props.value,
1022
- _props$readOnly2 = props.readOnly,
1023
- readOnly = _props$readOnly2 === void 0 ? false : _props$readOnly2,
1024
- _props$canClear2 = props.canClear,
1025
- canClear = _props$canClear2 === void 0 ? true : _props$canClear2,
1026
- onChange = props.onChange,
1027
- onEnter = props.onEnter,
1028
- onClick = props.onClick;
1029
-
1030
- function onKeyPress(event) {
1031
- var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1032
-
1033
- if (key == 13) {
1034
- if (onEnter) onEnter();
1035
- }
1036
- }
1037
-
1038
- function change(event) {
1039
- event.stopPropagation();
1040
- event.preventDefault();
1041
- var value = event.target.value;
1042
- if (onChange) onChange(id, value);
1043
- }
1044
-
1045
- function focus() {
1046
- if (site && site.changeFocus) {
1047
- site.changeFocus({
1048
- lose: function lose() {// DO NOTHING
1049
- }
1050
- });
1051
- }
1052
- }
1053
-
1054
- function clear() {
1055
- if (onChange) onChange(id, "");
1056
- }
1057
-
1058
- var labelStyle = label ? "" : "no-label";
1059
- var style = "textarea " + labelStyle + " textarea-" + type;
1060
- var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text, null, label);
1061
- return /*#__PURE__*/React__default["default"].createElement("div", {
1062
- className: "" + style,
1063
- onClick: onClick
1064
- }, /*#__PURE__*/React__default["default"].createElement("textarea", {
1065
- id: id,
1066
- placeholder: placeholder,
1067
- value: value,
1068
- required: true,
1069
- onChange: change,
1070
- onKeyDown: onKeyPress,
1071
- onFocus: focus,
1072
- readOnly: readOnly
1073
- }), canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1074
- icon: "close",
1075
- clickable: true,
1076
- size: "small",
1077
- action: clear
1078
- }) : null, /*#__PURE__*/React__default["default"].createElement("span", {
1079
- className: "bar"
1080
- }), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
1081
- };
1082
- /**
1083
- * Dropdown
1084
- */
1085
-
1086
- var DropDown = function DropDown(props) {
1087
- var site = React.useContext(SiteContext);
1088
- var id = props.id,
1089
- _props$options = props.options,
1090
- options = _props$options === void 0 ? [] : _props$options,
1091
- value = props.value,
1092
- onChange = props.onChange,
1093
- _props$predictive = props.predictive,
1094
- predictive = _props$predictive === void 0 ? false : _props$predictive,
1095
- _props$readOnly3 = props.readOnly,
1096
- readOnly = _props$readOnly3 === void 0 ? false : _props$readOnly3,
1097
- _props$verbose = props.verbose,
1098
- verbose = _props$verbose === void 0 ? true : _props$verbose,
1099
- onBlur = props.onBlur;
1100
-
1101
- var _useState = React.useState(false),
1102
- open = _useState[0],
1103
- setOpen = _useState[1];
1104
-
1105
- var _useState2 = React.useState(),
1106
- label = _useState2[0],
1107
- setLabel = _useState2[1];
1108
-
1109
- React.useEffect(function () {
1110
- if (Array.isArray(options)) {
1111
- var option = options.find(function (option) {
1112
- return option.value === value;
1113
- });
1114
-
1115
- var _label = option ? option.label : "";
1116
-
1117
- setLabel(_label);
1118
- }
1119
- }, [value]);
1120
-
1121
- function change(id, value) {
1122
- if (predictive) {
1123
- setLabel(value);
1124
- } else {
1125
- if (onChange) onChange(id, value);
1126
- }
1127
- }
1128
-
1129
- function toggle() {
1130
- if (site && site.changeFocus) {
1131
- site.changeFocus({
1132
- lose: function lose() {
1133
- setOpen(false);
1134
- }
1135
- });
1136
- }
1137
-
1138
- if (!readOnly) setOpen(!open);
1139
- }
1140
-
1141
- function select(event) {
1142
- var next = event.target.getAttribute("value");
1143
- var option = options.find(function (option) {
1144
- return option.value === next;
1145
- });
1146
- setOpen(false);
1147
- var label = verbose ? option.label : "";
1148
- setLabel(label);
1149
- if (onChange) onChange(id, next);
1150
- }
1151
-
1152
- function blur() {
1153
- if (onBlur) onBlur();
1154
- }
1155
-
1156
- function renderOptions() {
1157
- var canShow = open == true && Array.isArray(options);
1158
-
1159
- if (canShow) {
1160
- var filterActive = predictive === true && label && label.length > 0;
1161
- var items = filterActive ? options.filter(function (option) {
1162
- return option.label.toUpperCase().indexOf(label.toUpperCase()) >= 0;
1163
- }) : options;
1164
- var lis = items.map(function (option) {
1165
- return /*#__PURE__*/React__default["default"].createElement("li", {
1166
- key: option.value,
1167
- value: option.value
1168
- }, option.label);
1169
- });
1170
- return /*#__PURE__*/React__default["default"].createElement("menu", null, /*#__PURE__*/React__default["default"].createElement("ul", {
1171
- onMouseDown: select
1172
- }, lis));
1173
- } else {
1174
- return null;
1175
- }
1176
- }
1177
-
1178
- return /*#__PURE__*/React__default["default"].createElement("div", {
1179
- className: "dropdown"
1180
- }, /*#__PURE__*/React__default["default"].createElement(TextField, _extends({}, props, {
1181
- onClick: toggle,
1182
- value: label,
1183
- onChange: change,
1184
- onBlur: blur,
1185
- readOnly: !predictive
1186
- })), !readOnly ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1187
- icon: "expand_more",
1188
- clickable: true,
1189
- size: "small",
1190
- action: toggle
1191
- }) : null, renderOptions());
1192
- };
1193
-
1194
929
  /**
1195
930
  * TYPES
1196
931
  */
1197
- var TYPES = {
932
+ var TYPES$1 = {
1198
933
  STRING: 'String',
1199
934
  NUMBER: 'Number',
1200
935
  BOOLEAN: 'Boolean',
@@ -1209,7 +944,7 @@ var TYPES = {
1209
944
  var FORMATS = {
1210
945
  NONE: '',
1211
946
  DATE: 'date',
1212
- DATERANGE: 'DATARANGE',
947
+ DATERANGE: 'DATERANGE',
1213
948
  TIME: 'time',
1214
949
  EMAIL: 'email',
1215
950
  HTML: 'HTML',
@@ -1222,7 +957,7 @@ var FORMATS = {
1222
957
  * CHECK
1223
958
  */
1224
959
 
1225
- var CHECK = Object.values(TYPES).reduce(function (obj, name) {
960
+ var CHECK = Object.values(TYPES$1).reduce(function (obj, name) {
1226
961
  obj['is' + name] = function (x) {
1227
962
  return toString.call(x) == '[object ' + name + ']';
1228
963
  };
@@ -1250,19 +985,19 @@ var ContentType = /*#__PURE__*/function () {
1250
985
  var child = new ContentType(item);
1251
986
 
1252
987
  switch (type) {
1253
- case TYPES.ARRAY:
988
+ case TYPES$1.ARRAY:
1254
989
  valid = CHECK['is' + type](data);
1255
990
  validChildren = data.every(function (element) {
1256
991
  return child.validate(element);
1257
992
  });
1258
993
  break;
1259
994
 
1260
- case TYPES.ENTITY:
995
+ case TYPES$1.ENTITY:
1261
996
  valid = CHECK['is' + type](data);
1262
997
  validChildren = child.validate(data);
1263
998
  break;
1264
999
 
1265
- case TYPES.NUMBER:
1000
+ case TYPES$1.NUMBER:
1266
1001
  valid = CHECK['is' + type](data.value);
1267
1002
  validChildren = true;
1268
1003
  break;
@@ -1348,27 +1083,27 @@ var ContentType = /*#__PURE__*/function () {
1348
1083
  var entryData = data ? data[name] : null;
1349
1084
 
1350
1085
  switch (type) {
1351
- case TYPES.STRING:
1086
+ case TYPES$1.STRING:
1352
1087
  next[name] = entryData || field["default"];
1353
1088
  break;
1354
1089
 
1355
- case TYPES.NUMBER:
1090
+ case TYPES$1.NUMBER:
1356
1091
  next[name] = entryData || field["default"];
1357
1092
  break;
1358
1093
 
1359
- case TYPES.BOOLEAN:
1094
+ case TYPES$1.BOOLEAN:
1360
1095
  next[name] = entryData || field["default"];
1361
1096
  break;
1362
1097
 
1363
- case TYPES.ENTITY:
1098
+ case TYPES$1.ENTITY:
1364
1099
  if (optional === true) console.log('OPTIONAL', field, !entryData);
1365
1100
  if (optional === true && !entryData) break;
1366
1101
  var child1 = new ContentType(item);
1367
1102
  next[name] = child1.value(entryData);
1368
1103
  break;
1369
1104
 
1370
- case TYPES.ARRAY:
1371
- if (item === TYPES.STRING) {
1105
+ case TYPES$1.ARRAY:
1106
+ if (item === TYPES$1.STRING) {
1372
1107
  next[name] = entryData ? entryData : [];
1373
1108
  } else {
1374
1109
  var child2 = new ContentType(item);
@@ -1377,77 +1112,354 @@ var ContentType = /*#__PURE__*/function () {
1377
1112
  }) : [];
1378
1113
  }
1379
1114
 
1380
- break;
1115
+ break;
1116
+
1117
+ default:
1118
+ next[name] = field;
1119
+ break;
1120
+ }
1121
+
1122
+ return next;
1123
+ }, {});
1124
+ return next;
1125
+ };
1126
+
1127
+ return ContentType;
1128
+ }();
1129
+ /**
1130
+ * Content
1131
+ */
1132
+
1133
+ var Content = /*#__PURE__*/function () {
1134
+ function Content(type, value) {
1135
+ this.type = type;
1136
+ this._type = new ContentType(type);
1137
+ this._value = value;
1138
+ }
1139
+
1140
+ var _proto2 = Content.prototype;
1141
+
1142
+ _proto2.isValid = function isValid() {
1143
+ return this._type.validate(this._value);
1144
+ };
1145
+
1146
+ _proto2.value = function value() {
1147
+ return this._type.value(this._value);
1148
+ };
1149
+
1150
+ _proto2.form = function form() {
1151
+ return this._type.form(this._value);
1152
+ };
1153
+
1154
+ _proto2.sections = function sections() {
1155
+ return this._type.sections(this._value);
1156
+ };
1157
+
1158
+ _proto2.update = function update(value) {
1159
+ this._value = value;
1160
+ };
1161
+
1162
+ return Content;
1163
+ }();
1164
+
1165
+ /**
1166
+ * Text Field
1167
+ */
1168
+
1169
+ var TextField = function TextField(props) {
1170
+ var site = React.useContext(SiteContext);
1171
+ var id = props.id,
1172
+ _props$type = props.type,
1173
+ type = _props$type === void 0 ? 'text' : _props$type,
1174
+ label = props.label,
1175
+ placeholder = props.placeholder,
1176
+ value = props.value,
1177
+ outlined = props.outlined,
1178
+ _props$readOnly = props.readOnly,
1179
+ readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
1180
+ _props$canClear = props.canClear,
1181
+ canClear = _props$canClear === void 0 ? true : _props$canClear,
1182
+ onChange = props.onChange,
1183
+ onEnter = props.onEnter,
1184
+ onClick = props.onClick,
1185
+ onBlur = props.onBlur;
1186
+
1187
+ function onKeyPress(event) {
1188
+ var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1189
+
1190
+ if (key == 13) {
1191
+ if (onEnter) onEnter();
1192
+ }
1193
+ }
1194
+
1195
+ function change(event) {
1196
+ event.stopPropagation();
1197
+ event.preventDefault();
1198
+ var value = event.target.value;
1199
+ if (onChange) onChange(id, value);
1200
+ }
1201
+
1202
+ function focus() {
1203
+ if (site && site.changeFocus) {
1204
+ site.changeFocus({
1205
+ lose: function lose() {// DO NOTHING
1206
+ }
1207
+ });
1208
+ }
1209
+ }
1210
+
1211
+ function blur() {
1212
+ if (onBlur) onBlur();
1213
+ }
1214
+
1215
+ function clear() {
1216
+ if (onChange) onChange(id, "");
1217
+ }
1218
+
1219
+ var borderStyle = outlined ? "textfield-outlined" : "textfield";
1220
+ var labelStyle = label ? "" : "no-label";
1221
+ var style = labelStyle + " " + borderStyle + " textfield-" + type;
1222
+ var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text, null, label);
1223
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1224
+ className: "" + style,
1225
+ onClick: onClick
1226
+ }, /*#__PURE__*/React__default["default"].createElement("input", {
1227
+ id: id,
1228
+ type: type,
1229
+ placeholder: placeholder,
1230
+ value: value,
1231
+ required: true,
1232
+ onChange: change,
1233
+ onKeyDown: onKeyPress,
1234
+ onFocus: focus,
1235
+ onBlur: blur,
1236
+ readOnly: readOnly
1237
+ }), canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1238
+ icon: "close",
1239
+ clickable: true,
1240
+ size: "small",
1241
+ action: clear
1242
+ }) : null, /*#__PURE__*/React__default["default"].createElement("span", {
1243
+ className: "bar"
1244
+ }), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
1245
+ };
1246
+ /**
1247
+ * Text Area
1248
+ */
1249
+
1250
+ var TextArea = function TextArea(props) {
1251
+ var site = React.useContext(SiteContext);
1252
+ var id = props.id,
1253
+ _props$type2 = props.type,
1254
+ type = _props$type2 === void 0 ? 'text' : _props$type2,
1255
+ label = props.label,
1256
+ placeholder = props.placeholder,
1257
+ value = props.value,
1258
+ _props$readOnly2 = props.readOnly,
1259
+ readOnly = _props$readOnly2 === void 0 ? false : _props$readOnly2,
1260
+ _props$canClear2 = props.canClear,
1261
+ canClear = _props$canClear2 === void 0 ? true : _props$canClear2,
1262
+ onChange = props.onChange,
1263
+ onEnter = props.onEnter,
1264
+ onClick = props.onClick;
1265
+
1266
+ function onKeyPress(event) {
1267
+ var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
1268
+
1269
+ if (key == 13) {
1270
+ if (onEnter) onEnter();
1271
+ }
1272
+ }
1273
+
1274
+ function change(event) {
1275
+ event.stopPropagation();
1276
+ event.preventDefault();
1277
+ var value = event.target.value;
1278
+ if (onChange) onChange(id, value);
1279
+ }
1280
+
1281
+ function focus() {
1282
+ if (site && site.changeFocus) {
1283
+ site.changeFocus({
1284
+ lose: function lose() {// DO NOTHING
1285
+ }
1286
+ });
1287
+ }
1288
+ }
1289
+
1290
+ function clear() {
1291
+ if (onChange) onChange(id, "");
1292
+ }
1293
+
1294
+ var labelStyle = label ? "" : "no-label";
1295
+ var style = "textarea " + labelStyle + " textarea-" + type;
1296
+ var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text, null, label);
1297
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1298
+ className: "" + style,
1299
+ onClick: onClick
1300
+ }, /*#__PURE__*/React__default["default"].createElement("textarea", {
1301
+ id: id,
1302
+ placeholder: placeholder,
1303
+ value: value,
1304
+ required: true,
1305
+ onChange: change,
1306
+ onKeyDown: onKeyPress,
1307
+ onFocus: focus,
1308
+ readOnly: readOnly
1309
+ }), canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1310
+ icon: "close",
1311
+ clickable: true,
1312
+ size: "small",
1313
+ action: clear
1314
+ }) : null, /*#__PURE__*/React__default["default"].createElement("span", {
1315
+ className: "bar"
1316
+ }), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
1317
+ };
1318
+ /**
1319
+ * Dropdown
1320
+ */
1321
+
1322
+ var DropDown = function DropDown(props) {
1323
+ var site = React.useContext(SiteContext);
1324
+ var id = props.id,
1325
+ _props$options = props.options,
1326
+ options = _props$options === void 0 ? [] : _props$options,
1327
+ value = props.value,
1328
+ onChange = props.onChange,
1329
+ _props$predictive = props.predictive,
1330
+ predictive = _props$predictive === void 0 ? false : _props$predictive,
1331
+ _props$readOnly3 = props.readOnly,
1332
+ readOnly = _props$readOnly3 === void 0 ? false : _props$readOnly3,
1333
+ _props$verbose = props.verbose,
1334
+ verbose = _props$verbose === void 0 ? true : _props$verbose,
1335
+ onBlur = props.onBlur;
1336
+
1337
+ var _useState = React.useState(false),
1338
+ open = _useState[0],
1339
+ setOpen = _useState[1];
1381
1340
 
1382
- default:
1383
- next[name] = field;
1384
- break;
1385
- }
1341
+ var _useState2 = React.useState(),
1342
+ label = _useState2[0],
1343
+ setLabel = _useState2[1];
1386
1344
 
1387
- return next;
1388
- }, {});
1389
- return next;
1390
- };
1345
+ React.useEffect(function () {
1346
+ if (Array.isArray(options)) {
1347
+ var option = options.find(function (option) {
1348
+ return option.value === value;
1349
+ });
1391
1350
 
1392
- return ContentType;
1393
- }();
1394
- /**
1395
- * Content
1396
- */
1351
+ var _label = option ? option.label : "";
1397
1352
 
1398
- var Content = /*#__PURE__*/function () {
1399
- function Content(type, value) {
1400
- this.type = type;
1401
- this._type = new ContentType(type);
1402
- this._value = value;
1403
- }
1353
+ setLabel(_label);
1354
+ }
1355
+ }, [value]);
1404
1356
 
1405
- var _proto2 = Content.prototype;
1357
+ function change(id, value) {
1358
+ if (predictive) {
1359
+ setLabel(value);
1360
+ } else {
1361
+ if (onChange) onChange(id, value);
1362
+ }
1363
+ }
1406
1364
 
1407
- _proto2.isValid = function isValid() {
1408
- return this._type.validate(this._value);
1409
- };
1365
+ function toggle() {
1366
+ if (site && site.changeFocus) {
1367
+ site.changeFocus({
1368
+ lose: function lose() {
1369
+ setOpen(false);
1370
+ }
1371
+ });
1372
+ }
1410
1373
 
1411
- _proto2.value = function value() {
1412
- return this._type.value(this._value);
1413
- };
1374
+ if (!readOnly) setOpen(!open);
1375
+ }
1414
1376
 
1415
- _proto2.form = function form() {
1416
- return this._type.form(this._value);
1417
- };
1377
+ function select(event) {
1378
+ var next = event.target.getAttribute("value");
1379
+ var option = options.find(function (option) {
1380
+ return option.value === next;
1381
+ });
1382
+ setOpen(false);
1383
+ var label = verbose ? option.label : "";
1384
+ setLabel(label);
1385
+ if (onChange) onChange(id, next);
1386
+ }
1418
1387
 
1419
- _proto2.sections = function sections() {
1420
- return this._type.sections(this._value);
1421
- };
1388
+ function blur() {
1389
+ if (onBlur) onBlur();
1390
+ }
1422
1391
 
1423
- _proto2.update = function update(value) {
1424
- this._value = value;
1425
- };
1392
+ function renderOptions() {
1393
+ var canShow = open == true && Array.isArray(options);
1426
1394
 
1427
- return Content;
1428
- }();
1395
+ if (canShow) {
1396
+ var filterActive = predictive === true && label && label.length > 0;
1397
+ var items = filterActive ? options.filter(function (option) {
1398
+ return option.label.toUpperCase().indexOf(label.toUpperCase()) >= 0;
1399
+ }) : options;
1400
+ var lis = items.map(function (option) {
1401
+ return /*#__PURE__*/React__default["default"].createElement("li", {
1402
+ key: option.value,
1403
+ value: option.value
1404
+ }, option.label);
1405
+ });
1406
+ return /*#__PURE__*/React__default["default"].createElement("menu", null, /*#__PURE__*/React__default["default"].createElement("ul", {
1407
+ onMouseDown: select
1408
+ }, lis));
1409
+ } else {
1410
+ return null;
1411
+ }
1412
+ }
1429
1413
 
1430
- var ColorField = function ColorField(props) {
1414
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1415
+ className: "dropdown"
1416
+ }, /*#__PURE__*/React__default["default"].createElement(TextField, _extends({}, props, {
1417
+ onClick: toggle,
1418
+ value: label,
1419
+ onChange: change,
1420
+ onBlur: blur,
1421
+ readOnly: !predictive
1422
+ })), !readOnly ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1423
+ icon: "expand_more",
1424
+ clickable: true,
1425
+ size: "small",
1426
+ action: toggle
1427
+ }) : null, renderOptions());
1428
+ };
1429
+ var DateRange = function DateRange(props) {
1431
1430
  var id = props.id,
1432
- _props$label = props.label,
1433
- label = _props$label === void 0 ? "Color" : _props$label,
1434
- value = props.value,
1431
+ label = props.label,
1435
1432
  onChange = props.onChange;
1436
1433
 
1437
- function change(event) {
1438
- var color = event.target.value;
1439
- if (onChange) onChange(id, color);
1434
+ var _useState3 = React.useState({}),
1435
+ form = _useState3[0],
1436
+ setForm = _useState3[1];
1437
+
1438
+ React.useEffect(function () {
1439
+ if (onChange) onChange(id, form);
1440
+ }, [form]);
1441
+
1442
+ function change(id, value) {
1443
+ var _Object$assign;
1444
+
1445
+ var next = Object.assign({}, form, (_Object$assign = {}, _Object$assign[id] = value, _Object$assign));
1446
+ setForm(next);
1440
1447
  }
1441
1448
 
1442
1449
  return /*#__PURE__*/React__default["default"].createElement("div", {
1443
- className: "color-field"
1444
- }, /*#__PURE__*/React__default["default"].createElement("label", {
1445
- htmlFor: id
1446
- }, label), /*#__PURE__*/React__default["default"].createElement("input", {
1447
- id: id,
1448
- type: "color",
1449
- onChange: change,
1450
- value: value
1450
+ className: "date-range"
1451
+ }, label ? /*#__PURE__*/React__default["default"].createElement("label", null, label) : null, /*#__PURE__*/React__default["default"].createElement(TextField, {
1452
+ id: "from",
1453
+ type: "date",
1454
+ label: "From",
1455
+ value: form.from,
1456
+ onChange: change
1457
+ }), /*#__PURE__*/React__default["default"].createElement(TextField, {
1458
+ id: "to",
1459
+ type: "date",
1460
+ label: "To",
1461
+ value: form.to,
1462
+ onChange: change
1451
1463
  }));
1452
1464
  };
1453
1465
 
@@ -1474,17 +1486,31 @@ var DataTable = function DataTable(props) {
1474
1486
  className = props.className;
1475
1487
 
1476
1488
  var _useState = React.useState({}),
1477
- sortDir = _useState[0];
1489
+ sortDir = _useState[0],
1490
+ setSortDir = _useState[1];
1478
1491
 
1479
1492
  var _useState2 = React.useState(false),
1480
1493
  allChecked = _useState2[0],
1481
1494
  setAllChecked = _useState2[1];
1482
1495
 
1496
+ React.useEffect(function () {
1497
+ console.log(sortDir);
1498
+ }, [sortDir]);
1499
+
1500
+ function changeSort(id) {
1501
+ var _Object$assign;
1502
+
1503
+ var nextDir = sortDir[id] ? sortDir[id] * -1 : 1;
1504
+ var next = Object.assign({}, sortDir, (_Object$assign = {}, _Object$assign[id] = nextDir, _Object$assign));
1505
+ setSortDir(next);
1506
+ }
1507
+
1483
1508
  function multiSort(array, sortObject) {
1484
1509
  if (sortObject === void 0) {
1485
1510
  sortObject = {};
1486
1511
  }
1487
1512
 
1513
+ console.log('multisort', sortObject);
1488
1514
  var sortKeys = Object.keys(sortObject);
1489
1515
 
1490
1516
  if (!sortKeys.length) {
@@ -1527,7 +1553,7 @@ var DataTable = function DataTable(props) {
1527
1553
  }
1528
1554
  }
1529
1555
 
1530
- function sort(dragged, dropped) {
1556
+ function moveRow(dragged, dropped) {
1531
1557
  if (onSort) onSort(dragged, dropped);
1532
1558
  }
1533
1559
 
@@ -1549,7 +1575,7 @@ var DataTable = function DataTable(props) {
1549
1575
  item = _ref.item,
1550
1576
  sortable = _ref.sortable;
1551
1577
 
1552
- var _ref2 = type === TYPES.ENTITY ? [1, Object.values(item).filter(function (v) {
1578
+ var _ref2 = type === TYPES$1.ENTITY ? [1, Object.values(item).filter(function (v) {
1553
1579
  return v.column === true;
1554
1580
  }).length] : [2, 1],
1555
1581
  rowspan = _ref2[0],
@@ -1559,22 +1585,25 @@ var DataTable = function DataTable(props) {
1559
1585
  key: id,
1560
1586
  rowSpan: rowspan,
1561
1587
  colSpan: colspan
1562
- }, id === "checked" ? /*#__PURE__*/React__default["default"].createElement(CheckBox, {
1588
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, id === "checked" ? /*#__PURE__*/React__default["default"].createElement(CheckBox, {
1563
1589
  onChange: checkAll,
1564
1590
  value: allChecked
1565
1591
  }) : /*#__PURE__*/React__default["default"].createElement(Text, {
1566
1592
  key: "th_" + id
1567
1593
  }, label), sortable ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1568
- icon: "arrow_up",
1594
+ icon: "expand_less",
1569
1595
  size: "small",
1570
- clickable: true
1571
- }) : null);
1596
+ clickable: true,
1597
+ action: function action() {
1598
+ return changeSort(id);
1599
+ }
1600
+ }) : null));
1572
1601
  }), /*#__PURE__*/React__default["default"].createElement("th", {
1573
1602
  rowSpan: 2,
1574
1603
  colSpan: 1
1575
1604
  })), /*#__PURE__*/React__default["default"].createElement("tr", null, columns.filter(function (_ref3) {
1576
1605
  var type = _ref3.type;
1577
- return type === TYPES.ENTITY;
1606
+ return type === TYPES$1.ENTITY;
1578
1607
  }).map(function (column) {
1579
1608
  var item = column.item;
1580
1609
  var fields = item ? Object.values(item) : [];
@@ -1589,7 +1618,7 @@ var DataTable = function DataTable(props) {
1589
1618
  row: row,
1590
1619
  columns: columns,
1591
1620
  onSelect: select,
1592
- onDrop: sort,
1621
+ onDrop: moveRow,
1593
1622
  editable: editable,
1594
1623
  expanded: expanded
1595
1624
  });
@@ -1787,7 +1816,7 @@ var DataTableCell = function DataTableCell(_ref4) {
1787
1816
  }
1788
1817
  };
1789
1818
 
1790
- return column.type === TYPES.ENTITY ? /*#__PURE__*/React__default["default"].createElement(EntityCellViewer, {
1819
+ return column.type === TYPES$1.ENTITY ? /*#__PURE__*/React__default["default"].createElement(EntityCellViewer, {
1791
1820
  id: column.id,
1792
1821
  item: column.item,
1793
1822
  value: cell
@@ -3685,12 +3714,12 @@ var ContentFormField = function ContentFormField(props) {
3685
3714
  var type = props.type;
3686
3715
 
3687
3716
  switch (type) {
3688
- case TYPES.BOOLEAN:
3717
+ case TYPES$1.BOOLEAN:
3689
3718
  return /*#__PURE__*/React__default["default"].createElement(CheckBox, _extends({
3690
3719
  key: props.id
3691
3720
  }, props));
3692
3721
 
3693
- case TYPES.NUMBER:
3722
+ case TYPES$1.NUMBER:
3694
3723
  return /*#__PURE__*/React__default["default"].createElement(NumberField, _extends({
3695
3724
  key: props.id
3696
3725
  }, props));
@@ -3719,7 +3748,7 @@ var StringField = function StringField(_ref2) {
3719
3748
  value = _ref2.value,
3720
3749
  onChange = _ref2.onChange,
3721
3750
  outlined = _ref2.outlined;
3722
- var fieldTypes = (_fieldTypes = {}, _fieldTypes[TYPES.NUMBER] = 'number', _fieldTypes[TYPES.DATE] = 'date', _fieldTypes);
3751
+ var fieldTypes = (_fieldTypes = {}, _fieldTypes[TYPES$1.NUMBER] = 'number', _fieldTypes[TYPES$1.DATE] = 'date', _fieldTypes);
3723
3752
 
3724
3753
  function buildOptions() {
3725
3754
  var opts = typeof options === 'function' ? options() : options;
@@ -3788,6 +3817,30 @@ var NumberField = function NumberField(_ref3) {
3788
3817
  });
3789
3818
  };
3790
3819
 
3820
+ var ColorField = function ColorField(props) {
3821
+ var id = props.id,
3822
+ _props$label = props.label,
3823
+ label = _props$label === void 0 ? "Color" : _props$label,
3824
+ value = props.value,
3825
+ onChange = props.onChange;
3826
+
3827
+ function change(event) {
3828
+ var color = event.target.value;
3829
+ if (onChange) onChange(id, color);
3830
+ }
3831
+
3832
+ return /*#__PURE__*/React__default["default"].createElement("div", {
3833
+ className: "color-field"
3834
+ }, /*#__PURE__*/React__default["default"].createElement("label", {
3835
+ htmlFor: id
3836
+ }, label), /*#__PURE__*/React__default["default"].createElement("input", {
3837
+ id: id,
3838
+ type: "color",
3839
+ onChange: change,
3840
+ value: value
3841
+ }));
3842
+ };
3843
+
3791
3844
  /**
3792
3845
  * Content Editor
3793
3846
  */
@@ -3928,7 +3981,7 @@ var TreededContentEditor = function TreededContentEditor(_ref3) {
3928
3981
  onChange = _ref3.onChange;
3929
3982
  var value = content.value();
3930
3983
  var nodes = Object.values(content.type).filter(function (field) {
3931
- return field.type === TYPES.ARRAY;
3984
+ return field.type === TYPES$1.ARRAY;
3932
3985
  });
3933
3986
 
3934
3987
  var _useState2 = React.useState(),
@@ -4015,14 +4068,14 @@ var FieldEditor = function FieldEditor(_ref4) {
4015
4068
  return null;
4016
4069
  } else {
4017
4070
  switch (type) {
4018
- case TYPES.ENTITY:
4071
+ case TYPES$1.ENTITY:
4019
4072
  return /*#__PURE__*/React__default["default"].createElement(EntityEditor, {
4020
4073
  field: field,
4021
4074
  value: value1,
4022
4075
  onChange: change
4023
4076
  });
4024
4077
 
4025
- case TYPES.STRING:
4078
+ case TYPES$1.STRING:
4026
4079
  return /*#__PURE__*/React__default["default"].createElement(StringEditor, {
4027
4080
  outlined: outlined,
4028
4081
  field: field,
@@ -4031,7 +4084,7 @@ var FieldEditor = function FieldEditor(_ref4) {
4031
4084
  content: content
4032
4085
  });
4033
4086
 
4034
- case TYPES.BOOLEAN:
4087
+ case TYPES$1.BOOLEAN:
4035
4088
  return /*#__PURE__*/React__default["default"].createElement(CheckBox, {
4036
4089
  outlined: true,
4037
4090
  id: id,
@@ -4040,7 +4093,7 @@ var FieldEditor = function FieldEditor(_ref4) {
4040
4093
  onChange: change
4041
4094
  });
4042
4095
 
4043
- case TYPES.NUMBER:
4096
+ case TYPES$1.NUMBER:
4044
4097
  return /*#__PURE__*/React__default["default"].createElement(NumberEditor, {
4045
4098
  outlined: outlined,
4046
4099
  field: field,
@@ -4048,8 +4101,8 @@ var FieldEditor = function FieldEditor(_ref4) {
4048
4101
  onChange: change
4049
4102
  });
4050
4103
 
4051
- case TYPES.ARRAY:
4052
- return item === TYPES.STRING ? options ? /*#__PURE__*/React__default["default"].createElement(MultiSelectionEditor, {
4104
+ case TYPES$1.ARRAY:
4105
+ return item === TYPES$1.STRING ? options ? /*#__PURE__*/React__default["default"].createElement(MultiSelectionEditor, {
4053
4106
  content: content,
4054
4107
  field: field,
4055
4108
  value: value1,
@@ -4836,17 +4889,70 @@ var CollectionPage = function CollectionPage(props) {
4836
4889
  delay: delay
4837
4890
  }), children ? /*#__PURE__*/React__default["default"].createElement("article", null, children) : null));
4838
4891
  };
4839
-
4840
4892
  var CollectionFilters = function CollectionFilters(props) {
4841
- return /*#__PURE__*/React__default["default"].createElement("div", {
4842
- className: "collection-filters"
4843
- }, "TODO: filters");
4893
+ var change = function change(next) {
4894
+ try {
4895
+ setForm(next);
4896
+ return Promise.resolve();
4897
+ } catch (e) {
4898
+ return Promise.reject(e);
4899
+ }
4900
+ };
4901
+
4902
+ var schema = props.schema,
4903
+ onChange = props.onChange;
4904
+
4905
+ var _useState = React.useState({}),
4906
+ form = _useState[0],
4907
+ setForm = _useState[1];
4908
+
4909
+ var filterSchema = React.useMemo(function () {
4910
+ var filterSchema = Object.assign({}, schema);
4911
+
4912
+ for (var key in filterSchema) {
4913
+ if (filterSchema[key].filter === false) {
4914
+ delete filterSchema[key];
4915
+ } else {
4916
+ if (filterSchema[key].type === TYPES.ENTITY) {
4917
+ var fs = filterSchema[key].item;
4918
+
4919
+ for (var key in fs) {
4920
+ if (fs[key].filter === false) delete fs[key];
4921
+ }
4922
+ }
4923
+ }
4924
+ }
4925
+
4926
+ return filterSchema;
4927
+ }, [schema]);
4928
+ React.useEffect(function () {
4929
+ if (onChange) onChange(form);
4930
+ }, [form]);
4931
+
4932
+ function clear() {
4933
+ change({});
4934
+ }
4935
+
4936
+ var content = new Content(filterSchema, form);
4937
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement(Header, {
4938
+ className: "table-filters",
4939
+ title: /*#__PURE__*/React__default["default"].createElement(Text, null, "Filters")
4940
+ }, /*#__PURE__*/React__default["default"].createElement(Icon, {
4941
+ icon: "filter_list_off",
4942
+ size: "small",
4943
+ clickable: true,
4944
+ action: clear
4945
+ })), /*#__PURE__*/React__default["default"].createElement("main", {
4946
+ className: "table-filters"
4947
+ }, /*#__PURE__*/React__default["default"].createElement(ContentEditor, {
4948
+ content: content,
4949
+ onChange: change
4950
+ })));
4844
4951
  };
4845
4952
  /**
4846
4953
  * Collection List
4847
4954
  */
4848
4955
 
4849
-
4850
4956
  var CollectionList = function CollectionList(props) {
4851
4957
  var select = function select(id) {
4852
4958
  try {
@@ -5016,9 +5122,9 @@ var CollectionEditor = function CollectionEditor(props) {
5016
5122
  delay = _props$delay2 === void 0 ? 1000 : _props$delay2;
5017
5123
  var timer = React.useRef(null);
5018
5124
 
5019
- var _useState = React.useState(selected),
5020
- form = _useState[0],
5021
- setForm = _useState[1];
5125
+ var _useState2 = React.useState(selected),
5126
+ form = _useState2[0],
5127
+ setForm = _useState2[1];
5022
5128
 
5023
5129
  React.useEffect(function () {
5024
5130
  setForm(selected);
@@ -5346,19 +5452,19 @@ var FieldViewer = function FieldViewer(props) {
5346
5452
  if (optional && value === undefined) return null;
5347
5453
 
5348
5454
  switch (type) {
5349
- case TYPES.STRING:
5455
+ case TYPES$1.STRING:
5350
5456
  return /*#__PURE__*/React__default["default"].createElement(Property, {
5351
5457
  label: label,
5352
5458
  value: value
5353
5459
  });
5354
5460
 
5355
- case TYPES.ENTITY:
5461
+ case TYPES$1.ENTITY:
5356
5462
  return /*#__PURE__*/React__default["default"].createElement(EntityViewer, {
5357
5463
  field: field,
5358
5464
  value: value
5359
5465
  });
5360
5466
 
5361
- case TYPES.ARRAY:
5467
+ case TYPES$1.ARRAY:
5362
5468
  return /*#__PURE__*/React__default["default"].createElement(ArrayViewer, {
5363
5469
  label: label,
5364
5470
  item: item,
@@ -5423,12 +5529,12 @@ var ArrayViewer = function ArrayViewer(props) {
5423
5529
  var QUERY = {
5424
5530
  id: {
5425
5531
  id: "id",
5426
- type: TYPES.STRING,
5532
+ type: TYPES$1.STRING,
5427
5533
  editable: false
5428
5534
  },
5429
5535
  name: {
5430
5536
  id: "name",
5431
- type: TYPES.STRING,
5537
+ type: TYPES$1.STRING,
5432
5538
  required: true,
5433
5539
  label: "Name"
5434
5540
  }
@@ -5928,7 +6034,7 @@ var TableFilters$1 = function TableFilters(props) {
5928
6034
  if (filterSchema[key].filter === false) {
5929
6035
  delete filterSchema[key];
5930
6036
  } else {
5931
- if (filterSchema[key].type === TYPES.ENTITY) {
6037
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
5932
6038
  var fs = filterSchema[key].item;
5933
6039
 
5934
6040
  for (var key in fs) {
@@ -6996,7 +7102,7 @@ var TableFilters = function TableFilters(props) {
6996
7102
  if (filterSchema[key].filter === false) {
6997
7103
  delete filterSchema[key];
6998
7104
  } else {
6999
- if (filterSchema[key].type === TYPES.ENTITY) {
7105
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
7000
7106
  var fs = filterSchema[key].item;
7001
7107
 
7002
7108
  for (var key in fs) {
@@ -7555,6 +7661,7 @@ exports.Chips = Chips;
7555
7661
  exports.CircularProgress = CircularProgress;
7556
7662
  exports.CollectionContext = CollectionContext;
7557
7663
  exports.CollectionEditor = CollectionEditor$1;
7664
+ exports.CollectionFilters = CollectionFilters;
7558
7665
  exports.CollectionPage = CollectionPage;
7559
7666
  exports.CollectionTree = CollectionTree;
7560
7667
  exports.Content = Content;
@@ -7599,7 +7706,7 @@ exports.SiteProvider = SiteProvider;
7599
7706
  exports.Stack = Stack;
7600
7707
  exports.Switch = Switch;
7601
7708
  exports.TEXTFORMATS = TEXTFORMATS;
7602
- exports.TYPES = TYPES;
7709
+ exports.TYPES = TYPES$1;
7603
7710
  exports.Tab = Tab;
7604
7711
  exports.TabbedContentEditor = TabbedContentEditor;
7605
7712
  exports.TabbedTablePage = TabbedTablePage;