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.cjs CHANGED
@@ -926,311 +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
- var DateRange = function DateRange(props) {
1194
- var id = props.id,
1195
- label = props.label,
1196
- onChange = props.onChange;
1197
-
1198
- var _useState3 = React.useState({}),
1199
- form = _useState3[0],
1200
- setForm = _useState3[1];
1201
-
1202
- React.useEffect(function () {
1203
- if (onChange) onChange(id, form);
1204
- }, [form]);
1205
-
1206
- function change(id, value) {
1207
- var _Object$assign;
1208
-
1209
- var next = Object.assign({}, form, (_Object$assign = {}, _Object$assign[id] = value, _Object$assign));
1210
- setForm(next);
1211
- }
1212
-
1213
- return /*#__PURE__*/React__default["default"].createElement("div", {
1214
- className: "date-range"
1215
- }, label ? /*#__PURE__*/React__default["default"].createElement("label", null, label) : null, /*#__PURE__*/React__default["default"].createElement(TextField, {
1216
- id: "from",
1217
- type: "date",
1218
- label: "From",
1219
- value: form.from,
1220
- onChange: change
1221
- }), /*#__PURE__*/React__default["default"].createElement(TextField, {
1222
- id: "to",
1223
- type: "date",
1224
- label: "To",
1225
- value: form.to,
1226
- onChange: change
1227
- }));
1228
- };
1229
-
1230
929
  /**
1231
930
  * TYPES
1232
931
  */
1233
- var TYPES = {
932
+ var TYPES$1 = {
1234
933
  STRING: 'String',
1235
934
  NUMBER: 'Number',
1236
935
  BOOLEAN: 'Boolean',
@@ -1258,7 +957,7 @@ var FORMATS = {
1258
957
  * CHECK
1259
958
  */
1260
959
 
1261
- var CHECK = Object.values(TYPES).reduce(function (obj, name) {
960
+ var CHECK = Object.values(TYPES$1).reduce(function (obj, name) {
1262
961
  obj['is' + name] = function (x) {
1263
962
  return toString.call(x) == '[object ' + name + ']';
1264
963
  };
@@ -1286,19 +985,19 @@ var ContentType = /*#__PURE__*/function () {
1286
985
  var child = new ContentType(item);
1287
986
 
1288
987
  switch (type) {
1289
- case TYPES.ARRAY:
988
+ case TYPES$1.ARRAY:
1290
989
  valid = CHECK['is' + type](data);
1291
990
  validChildren = data.every(function (element) {
1292
991
  return child.validate(element);
1293
992
  });
1294
993
  break;
1295
994
 
1296
- case TYPES.ENTITY:
995
+ case TYPES$1.ENTITY:
1297
996
  valid = CHECK['is' + type](data);
1298
997
  validChildren = child.validate(data);
1299
998
  break;
1300
999
 
1301
- case TYPES.NUMBER:
1000
+ case TYPES$1.NUMBER:
1302
1001
  valid = CHECK['is' + type](data.value);
1303
1002
  validChildren = true;
1304
1003
  break;
@@ -1384,27 +1083,27 @@ var ContentType = /*#__PURE__*/function () {
1384
1083
  var entryData = data ? data[name] : null;
1385
1084
 
1386
1085
  switch (type) {
1387
- case TYPES.STRING:
1086
+ case TYPES$1.STRING:
1388
1087
  next[name] = entryData || field["default"];
1389
1088
  break;
1390
1089
 
1391
- case TYPES.NUMBER:
1090
+ case TYPES$1.NUMBER:
1392
1091
  next[name] = entryData || field["default"];
1393
1092
  break;
1394
1093
 
1395
- case TYPES.BOOLEAN:
1094
+ case TYPES$1.BOOLEAN:
1396
1095
  next[name] = entryData || field["default"];
1397
1096
  break;
1398
1097
 
1399
- case TYPES.ENTITY:
1098
+ case TYPES$1.ENTITY:
1400
1099
  if (optional === true) console.log('OPTIONAL', field, !entryData);
1401
1100
  if (optional === true && !entryData) break;
1402
1101
  var child1 = new ContentType(item);
1403
1102
  next[name] = child1.value(entryData);
1404
1103
  break;
1405
1104
 
1406
- case TYPES.ARRAY:
1407
- if (item === TYPES.STRING) {
1105
+ case TYPES$1.ARRAY:
1106
+ if (item === TYPES$1.STRING) {
1408
1107
  next[name] = entryData ? entryData : [];
1409
1108
  } else {
1410
1109
  var child2 = new ContentType(item);
@@ -1413,77 +1112,354 @@ var ContentType = /*#__PURE__*/function () {
1413
1112
  }) : [];
1414
1113
  }
1415
1114
 
1416
- 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];
1340
+
1341
+ var _useState2 = React.useState(),
1342
+ label = _useState2[0],
1343
+ setLabel = _useState2[1];
1417
1344
 
1418
- default:
1419
- next[name] = field;
1420
- break;
1421
- }
1345
+ React.useEffect(function () {
1346
+ if (Array.isArray(options)) {
1347
+ var option = options.find(function (option) {
1348
+ return option.value === value;
1349
+ });
1422
1350
 
1423
- return next;
1424
- }, {});
1425
- return next;
1426
- };
1351
+ var _label = option ? option.label : "";
1427
1352
 
1428
- return ContentType;
1429
- }();
1430
- /**
1431
- * Content
1432
- */
1353
+ setLabel(_label);
1354
+ }
1355
+ }, [value]);
1433
1356
 
1434
- var Content = /*#__PURE__*/function () {
1435
- function Content(type, value) {
1436
- this.type = type;
1437
- this._type = new ContentType(type);
1438
- this._value = value;
1357
+ function change(id, value) {
1358
+ if (predictive) {
1359
+ setLabel(value);
1360
+ } else {
1361
+ if (onChange) onChange(id, value);
1362
+ }
1439
1363
  }
1440
1364
 
1441
- var _proto2 = Content.prototype;
1442
-
1443
- _proto2.isValid = function isValid() {
1444
- return this._type.validate(this._value);
1445
- };
1365
+ function toggle() {
1366
+ if (site && site.changeFocus) {
1367
+ site.changeFocus({
1368
+ lose: function lose() {
1369
+ setOpen(false);
1370
+ }
1371
+ });
1372
+ }
1446
1373
 
1447
- _proto2.value = function value() {
1448
- return this._type.value(this._value);
1449
- };
1374
+ if (!readOnly) setOpen(!open);
1375
+ }
1450
1376
 
1451
- _proto2.form = function form() {
1452
- return this._type.form(this._value);
1453
- };
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
+ }
1454
1387
 
1455
- _proto2.sections = function sections() {
1456
- return this._type.sections(this._value);
1457
- };
1388
+ function blur() {
1389
+ if (onBlur) onBlur();
1390
+ }
1458
1391
 
1459
- _proto2.update = function update(value) {
1460
- this._value = value;
1461
- };
1392
+ function renderOptions() {
1393
+ var canShow = open == true && Array.isArray(options);
1462
1394
 
1463
- return Content;
1464
- }();
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
+ }
1465
1413
 
1466
- 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) {
1467
1430
  var id = props.id,
1468
- _props$label = props.label,
1469
- label = _props$label === void 0 ? "Color" : _props$label,
1470
- value = props.value,
1431
+ label = props.label,
1471
1432
  onChange = props.onChange;
1472
1433
 
1473
- function change(event) {
1474
- var color = event.target.value;
1475
- 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);
1476
1447
  }
1477
1448
 
1478
1449
  return /*#__PURE__*/React__default["default"].createElement("div", {
1479
- className: "color-field"
1480
- }, /*#__PURE__*/React__default["default"].createElement("label", {
1481
- htmlFor: id
1482
- }, label), /*#__PURE__*/React__default["default"].createElement("input", {
1483
- id: id,
1484
- type: "color",
1485
- onChange: change,
1486
- 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
1487
1463
  }));
1488
1464
  };
1489
1465
 
@@ -1510,17 +1486,31 @@ var DataTable = function DataTable(props) {
1510
1486
  className = props.className;
1511
1487
 
1512
1488
  var _useState = React.useState({}),
1513
- sortDir = _useState[0];
1489
+ sortDir = _useState[0],
1490
+ setSortDir = _useState[1];
1514
1491
 
1515
1492
  var _useState2 = React.useState(false),
1516
1493
  allChecked = _useState2[0],
1517
1494
  setAllChecked = _useState2[1];
1518
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
+
1519
1508
  function multiSort(array, sortObject) {
1520
1509
  if (sortObject === void 0) {
1521
1510
  sortObject = {};
1522
1511
  }
1523
1512
 
1513
+ console.log('multisort', sortObject);
1524
1514
  var sortKeys = Object.keys(sortObject);
1525
1515
 
1526
1516
  if (!sortKeys.length) {
@@ -1563,7 +1553,7 @@ var DataTable = function DataTable(props) {
1563
1553
  }
1564
1554
  }
1565
1555
 
1566
- function sort(dragged, dropped) {
1556
+ function moveRow(dragged, dropped) {
1567
1557
  if (onSort) onSort(dragged, dropped);
1568
1558
  }
1569
1559
 
@@ -1585,7 +1575,7 @@ var DataTable = function DataTable(props) {
1585
1575
  item = _ref.item,
1586
1576
  sortable = _ref.sortable;
1587
1577
 
1588
- 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) {
1589
1579
  return v.column === true;
1590
1580
  }).length] : [2, 1],
1591
1581
  rowspan = _ref2[0],
@@ -1595,22 +1585,25 @@ var DataTable = function DataTable(props) {
1595
1585
  key: id,
1596
1586
  rowSpan: rowspan,
1597
1587
  colSpan: colspan
1598
- }, id === "checked" ? /*#__PURE__*/React__default["default"].createElement(CheckBox, {
1588
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, id === "checked" ? /*#__PURE__*/React__default["default"].createElement(CheckBox, {
1599
1589
  onChange: checkAll,
1600
1590
  value: allChecked
1601
1591
  }) : /*#__PURE__*/React__default["default"].createElement(Text, {
1602
1592
  key: "th_" + id
1603
1593
  }, label), sortable ? /*#__PURE__*/React__default["default"].createElement(Icon, {
1604
- icon: "arrow_up",
1594
+ icon: "expand_less",
1605
1595
  size: "small",
1606
- clickable: true
1607
- }) : null);
1596
+ clickable: true,
1597
+ action: function action() {
1598
+ return changeSort(id);
1599
+ }
1600
+ }) : null));
1608
1601
  }), /*#__PURE__*/React__default["default"].createElement("th", {
1609
1602
  rowSpan: 2,
1610
1603
  colSpan: 1
1611
1604
  })), /*#__PURE__*/React__default["default"].createElement("tr", null, columns.filter(function (_ref3) {
1612
1605
  var type = _ref3.type;
1613
- return type === TYPES.ENTITY;
1606
+ return type === TYPES$1.ENTITY;
1614
1607
  }).map(function (column) {
1615
1608
  var item = column.item;
1616
1609
  var fields = item ? Object.values(item) : [];
@@ -1625,7 +1618,7 @@ var DataTable = function DataTable(props) {
1625
1618
  row: row,
1626
1619
  columns: columns,
1627
1620
  onSelect: select,
1628
- onDrop: sort,
1621
+ onDrop: moveRow,
1629
1622
  editable: editable,
1630
1623
  expanded: expanded
1631
1624
  });
@@ -1823,7 +1816,7 @@ var DataTableCell = function DataTableCell(_ref4) {
1823
1816
  }
1824
1817
  };
1825
1818
 
1826
- return column.type === TYPES.ENTITY ? /*#__PURE__*/React__default["default"].createElement(EntityCellViewer, {
1819
+ return column.type === TYPES$1.ENTITY ? /*#__PURE__*/React__default["default"].createElement(EntityCellViewer, {
1827
1820
  id: column.id,
1828
1821
  item: column.item,
1829
1822
  value: cell
@@ -3721,12 +3714,12 @@ var ContentFormField = function ContentFormField(props) {
3721
3714
  var type = props.type;
3722
3715
 
3723
3716
  switch (type) {
3724
- case TYPES.BOOLEAN:
3717
+ case TYPES$1.BOOLEAN:
3725
3718
  return /*#__PURE__*/React__default["default"].createElement(CheckBox, _extends({
3726
3719
  key: props.id
3727
3720
  }, props));
3728
3721
 
3729
- case TYPES.NUMBER:
3722
+ case TYPES$1.NUMBER:
3730
3723
  return /*#__PURE__*/React__default["default"].createElement(NumberField, _extends({
3731
3724
  key: props.id
3732
3725
  }, props));
@@ -3755,7 +3748,7 @@ var StringField = function StringField(_ref2) {
3755
3748
  value = _ref2.value,
3756
3749
  onChange = _ref2.onChange,
3757
3750
  outlined = _ref2.outlined;
3758
- 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);
3759
3752
 
3760
3753
  function buildOptions() {
3761
3754
  var opts = typeof options === 'function' ? options() : options;
@@ -3824,6 +3817,30 @@ var NumberField = function NumberField(_ref3) {
3824
3817
  });
3825
3818
  };
3826
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
+
3827
3844
  /**
3828
3845
  * Content Editor
3829
3846
  */
@@ -3964,7 +3981,7 @@ var TreededContentEditor = function TreededContentEditor(_ref3) {
3964
3981
  onChange = _ref3.onChange;
3965
3982
  var value = content.value();
3966
3983
  var nodes = Object.values(content.type).filter(function (field) {
3967
- return field.type === TYPES.ARRAY;
3984
+ return field.type === TYPES$1.ARRAY;
3968
3985
  });
3969
3986
 
3970
3987
  var _useState2 = React.useState(),
@@ -4051,14 +4068,14 @@ var FieldEditor = function FieldEditor(_ref4) {
4051
4068
  return null;
4052
4069
  } else {
4053
4070
  switch (type) {
4054
- case TYPES.ENTITY:
4071
+ case TYPES$1.ENTITY:
4055
4072
  return /*#__PURE__*/React__default["default"].createElement(EntityEditor, {
4056
4073
  field: field,
4057
4074
  value: value1,
4058
4075
  onChange: change
4059
4076
  });
4060
4077
 
4061
- case TYPES.STRING:
4078
+ case TYPES$1.STRING:
4062
4079
  return /*#__PURE__*/React__default["default"].createElement(StringEditor, {
4063
4080
  outlined: outlined,
4064
4081
  field: field,
@@ -4067,7 +4084,7 @@ var FieldEditor = function FieldEditor(_ref4) {
4067
4084
  content: content
4068
4085
  });
4069
4086
 
4070
- case TYPES.BOOLEAN:
4087
+ case TYPES$1.BOOLEAN:
4071
4088
  return /*#__PURE__*/React__default["default"].createElement(CheckBox, {
4072
4089
  outlined: true,
4073
4090
  id: id,
@@ -4076,7 +4093,7 @@ var FieldEditor = function FieldEditor(_ref4) {
4076
4093
  onChange: change
4077
4094
  });
4078
4095
 
4079
- case TYPES.NUMBER:
4096
+ case TYPES$1.NUMBER:
4080
4097
  return /*#__PURE__*/React__default["default"].createElement(NumberEditor, {
4081
4098
  outlined: outlined,
4082
4099
  field: field,
@@ -4084,8 +4101,8 @@ var FieldEditor = function FieldEditor(_ref4) {
4084
4101
  onChange: change
4085
4102
  });
4086
4103
 
4087
- case TYPES.ARRAY:
4088
- 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, {
4089
4106
  content: content,
4090
4107
  field: field,
4091
4108
  value: value1,
@@ -4872,17 +4889,70 @@ var CollectionPage = function CollectionPage(props) {
4872
4889
  delay: delay
4873
4890
  }), children ? /*#__PURE__*/React__default["default"].createElement("article", null, children) : null));
4874
4891
  };
4875
-
4876
4892
  var CollectionFilters = function CollectionFilters(props) {
4877
- return /*#__PURE__*/React__default["default"].createElement("div", {
4878
- className: "collection-filters"
4879
- }, "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 = 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
+ })));
4880
4951
  };
4881
4952
  /**
4882
4953
  * Collection List
4883
4954
  */
4884
4955
 
4885
-
4886
4956
  var CollectionList = function CollectionList(props) {
4887
4957
  var select = function select(id) {
4888
4958
  try {
@@ -5052,9 +5122,9 @@ var CollectionEditor = function CollectionEditor(props) {
5052
5122
  delay = _props$delay2 === void 0 ? 1000 : _props$delay2;
5053
5123
  var timer = React.useRef(null);
5054
5124
 
5055
- var _useState = React.useState(selected),
5056
- form = _useState[0],
5057
- setForm = _useState[1];
5125
+ var _useState2 = React.useState(selected),
5126
+ form = _useState2[0],
5127
+ setForm = _useState2[1];
5058
5128
 
5059
5129
  React.useEffect(function () {
5060
5130
  setForm(selected);
@@ -5382,19 +5452,19 @@ var FieldViewer = function FieldViewer(props) {
5382
5452
  if (optional && value === undefined) return null;
5383
5453
 
5384
5454
  switch (type) {
5385
- case TYPES.STRING:
5455
+ case TYPES$1.STRING:
5386
5456
  return /*#__PURE__*/React__default["default"].createElement(Property, {
5387
5457
  label: label,
5388
5458
  value: value
5389
5459
  });
5390
5460
 
5391
- case TYPES.ENTITY:
5461
+ case TYPES$1.ENTITY:
5392
5462
  return /*#__PURE__*/React__default["default"].createElement(EntityViewer, {
5393
5463
  field: field,
5394
5464
  value: value
5395
5465
  });
5396
5466
 
5397
- case TYPES.ARRAY:
5467
+ case TYPES$1.ARRAY:
5398
5468
  return /*#__PURE__*/React__default["default"].createElement(ArrayViewer, {
5399
5469
  label: label,
5400
5470
  item: item,
@@ -5459,12 +5529,12 @@ var ArrayViewer = function ArrayViewer(props) {
5459
5529
  var QUERY = {
5460
5530
  id: {
5461
5531
  id: "id",
5462
- type: TYPES.STRING,
5532
+ type: TYPES$1.STRING,
5463
5533
  editable: false
5464
5534
  },
5465
5535
  name: {
5466
5536
  id: "name",
5467
- type: TYPES.STRING,
5537
+ type: TYPES$1.STRING,
5468
5538
  required: true,
5469
5539
  label: "Name"
5470
5540
  }
@@ -5964,7 +6034,7 @@ var TableFilters$1 = function TableFilters(props) {
5964
6034
  if (filterSchema[key].filter === false) {
5965
6035
  delete filterSchema[key];
5966
6036
  } else {
5967
- if (filterSchema[key].type === TYPES.ENTITY) {
6037
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
5968
6038
  var fs = filterSchema[key].item;
5969
6039
 
5970
6040
  for (var key in fs) {
@@ -7032,7 +7102,7 @@ var TableFilters = function TableFilters(props) {
7032
7102
  if (filterSchema[key].filter === false) {
7033
7103
  delete filterSchema[key];
7034
7104
  } else {
7035
- if (filterSchema[key].type === TYPES.ENTITY) {
7105
+ if (filterSchema[key].type === TYPES$1.ENTITY) {
7036
7106
  var fs = filterSchema[key].item;
7037
7107
 
7038
7108
  for (var key in fs) {
@@ -7591,6 +7661,7 @@ exports.Chips = Chips;
7591
7661
  exports.CircularProgress = CircularProgress;
7592
7662
  exports.CollectionContext = CollectionContext;
7593
7663
  exports.CollectionEditor = CollectionEditor$1;
7664
+ exports.CollectionFilters = CollectionFilters;
7594
7665
  exports.CollectionPage = CollectionPage;
7595
7666
  exports.CollectionTree = CollectionTree;
7596
7667
  exports.Content = Content;
@@ -7635,7 +7706,7 @@ exports.SiteProvider = SiteProvider;
7635
7706
  exports.Stack = Stack;
7636
7707
  exports.Switch = Switch;
7637
7708
  exports.TEXTFORMATS = TEXTFORMATS;
7638
- exports.TYPES = TYPES;
7709
+ exports.TYPES = TYPES$1;
7639
7710
  exports.Tab = Tab;
7640
7711
  exports.TabbedContentEditor = TabbedContentEditor;
7641
7712
  exports.TabbedTablePage = TabbedTablePage;