orc-shared 5.10.0-dev.7 → 5.10.0-dev.9
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/components/AppFrame/Preferences.js +46 -45
- package/dist/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.js +15 -3
- package/dist/components/MaterialUI/DataDisplay/Table.js +15 -8
- package/dist/hocs/withScrollBox.js +9 -3
- package/dist/hooks/useInMemoryPaging.js +139 -0
- package/dist/utils/ListHelper.js +271 -0
- package/dist/utils/comparisonHelper.js +176 -0
- package/package.json +1 -1
- package/src/components/AppFrame/Preferences.js +30 -29
- package/src/components/AppFrame/Preferences.test.js +108 -123
- package/src/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.js +17 -2
- package/src/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.test.js +3 -1
- package/src/components/MaterialUI/DataDisplay/Table.js +121 -121
- package/src/components/MaterialUI/DataDisplay/Table.test.js +115 -1
- package/src/hocs/withScrollBox.js +10 -5
- package/src/hocs/withScrollBox.test.js +12 -0
- package/src/hooks/useInMemoryPaging.js +85 -0
- package/src/hooks/useInMemoryPaging.test.js +551 -0
- package/src/utils/ListHelper.js +203 -0
- package/src/utils/ListHelper.test.js +710 -0
- package/src/utils/comparisonHelper.js +124 -0
- package/src/utils/comparisonHelper.test.js +324 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = exports.ListInfoPropertyName = void 0;
|
|
5
|
+
var _immutable = _interopRequireDefault(require("immutable"));
|
|
6
|
+
var _lodash = require("lodash");
|
|
7
|
+
var _ListHelper;
|
|
8
|
+
var _excluded = ["resetList", "scope", "filters", "sorting"],
|
|
9
|
+
_excluded2 = ["sorting", "filters", "scope", "page", "nextPageToLoad", "index", "list", "totalCount"];
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
(function () {
|
|
12
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
13
|
+
enterModule && enterModule(module);
|
|
14
|
+
})();
|
|
15
|
+
(function () {
|
|
16
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
17
|
+
enterModule && enterModule(module);
|
|
18
|
+
})();
|
|
19
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
22
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
|
23
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
24
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
25
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
27
|
+
return a;
|
|
28
|
+
};
|
|
29
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
30
|
+
return a;
|
|
31
|
+
};
|
|
32
|
+
var ListInfoPropertyName = exports.ListInfoPropertyName = "listInfo";
|
|
33
|
+
var standardInfoKeys = ["scope", "page", "filters", "sorting", "totalCount", "nextPageToLoad", "index", "list"];
|
|
34
|
+
var ListReducerHelper = /*#__PURE__*/function () {
|
|
35
|
+
function ListReducerHelper(groupPropertyName) {
|
|
36
|
+
var _this = this;
|
|
37
|
+
_defineProperty(this, "setNextPageToLoad", function (state, nextPageToLoad) {
|
|
38
|
+
return state.setIn([_this.groupPropertyName, "nextPageToLoad"], nextPageToLoad);
|
|
39
|
+
});
|
|
40
|
+
_defineProperty(this, "setResults", function (state, listInfo, forceReset) {
|
|
41
|
+
if (forceReset === void 0) {
|
|
42
|
+
forceReset = false;
|
|
43
|
+
}
|
|
44
|
+
return state.withMutations(function (s) {
|
|
45
|
+
var page = s.getIn([_this.groupPropertyName, "nextPageToLoad"]);
|
|
46
|
+
var entities = _immutable.default.fromJS(listInfo.indexEntities || {});
|
|
47
|
+
if (page === 1 || forceReset) {
|
|
48
|
+
s.setIn([_this.groupPropertyName, "index"], entities);
|
|
49
|
+
s.setIn([_this.groupPropertyName, "list"], _immutable.default.fromJS(listInfo.listEntities));
|
|
50
|
+
} else {
|
|
51
|
+
s.mergeIn([_this.groupPropertyName, "index"], entities);
|
|
52
|
+
s.setIn([_this.groupPropertyName, "list"], s.getIn([_this.groupPropertyName, "list"]).concat(_immutable.default.fromJS(listInfo.listEntities)));
|
|
53
|
+
}
|
|
54
|
+
s.setIn([_this.groupPropertyName, "totalCount"], listInfo.totalCount);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
_defineProperty(this, "setCurrentInfo", function (state, _ref) {
|
|
58
|
+
if (_ref === void 0) {
|
|
59
|
+
_ref = {};
|
|
60
|
+
}
|
|
61
|
+
var _ref2 = _ref,
|
|
62
|
+
resetList = _ref2.resetList,
|
|
63
|
+
scope = _ref2.scope,
|
|
64
|
+
filters = _ref2.filters,
|
|
65
|
+
sorting = _ref2.sorting,
|
|
66
|
+
others = _objectWithoutProperties(_ref2, _excluded);
|
|
67
|
+
return state.withMutations(function (s) {
|
|
68
|
+
if (resetList) {
|
|
69
|
+
s.setIn([_this.groupPropertyName, "nextPageToLoad"], 1);
|
|
70
|
+
s.setIn([_this.groupPropertyName, "page"], null);
|
|
71
|
+
s.setIn([_this.groupPropertyName, "index"], _immutable.default.fromJS({}));
|
|
72
|
+
s.setIn([_this.groupPropertyName, "list"], _immutable.default.fromJS([]));
|
|
73
|
+
s.setIn([_this.groupPropertyName, "totalCount"], 0);
|
|
74
|
+
} else {
|
|
75
|
+
var nextPageToLoad = state.getIn([_this.groupPropertyName, "nextPageToLoad"]);
|
|
76
|
+
s.setIn([_this.groupPropertyName, "nextPageToLoad"], nextPageToLoad);
|
|
77
|
+
s.setIn([_this.groupPropertyName, "page"], nextPageToLoad);
|
|
78
|
+
}
|
|
79
|
+
s.setIn([_this.groupPropertyName, "scope"], scope != null ? scope : null);
|
|
80
|
+
s.setIn([_this.groupPropertyName, "filters"], _immutable.default.fromJS(filters != null ? filters : null));
|
|
81
|
+
s.setIn([_this.groupPropertyName, "sorting"], _immutable.default.fromJS(sorting != null ? sorting : null));
|
|
82
|
+
var otherKeys = Object.keys(others);
|
|
83
|
+
s.get(_this.groupPropertyName).keySeq().forEach(function (key) {
|
|
84
|
+
if (!standardInfoKeys.includes(key) && !otherKeys.includes(key)) {
|
|
85
|
+
s.removeIn([_this.groupPropertyName, key]);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
otherKeys.forEach(function (key) {
|
|
89
|
+
s.setIn([_this.groupPropertyName, key], (0, _lodash.isObject)(others[key]) ? _immutable.default.fromJS(others[key]) : others[key]);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
_defineProperty(this, "addIndexWithMutations", function (mutator, id, value) {
|
|
94
|
+
mutator.setIn([_this.groupPropertyName, "index", id], _immutable.default.fromJS(value));
|
|
95
|
+
});
|
|
96
|
+
_defineProperty(this, "appendIdToListWithMutations", function (mutator, id) {
|
|
97
|
+
mutator.setIn([_this.groupPropertyName, "list"], mutator.getIn([_this.groupPropertyName, "list"]).push(id));
|
|
98
|
+
});
|
|
99
|
+
_defineProperty(this, "updateIndexWithMutations", function (mutator, id, value) {
|
|
100
|
+
var key = [_this.groupPropertyName, "index", id];
|
|
101
|
+
if (mutator.getIn(key)) {
|
|
102
|
+
mutator.setIn(key, _immutable.default.fromJS(value));
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
_defineProperty(this, "removeFromIndexWithMutations", function (mutator, id) {
|
|
106
|
+
mutator.removeIn([_this.groupPropertyName, "index", id]);
|
|
107
|
+
});
|
|
108
|
+
_defineProperty(this, "resetListInfo", function (state, propertiesToKeep) {
|
|
109
|
+
if (propertiesToKeep === void 0) {
|
|
110
|
+
propertiesToKeep = {};
|
|
111
|
+
}
|
|
112
|
+
var updatedState = state.setIn([_this.groupPropertyName, "nextPageToLoad"], 1).setIn([_this.groupPropertyName, "index"], _immutable.default.fromJS({})).setIn([_this.groupPropertyName, "list"], _immutable.default.fromJS([])).setIn([_this.groupPropertyName, "totalCount"], 0);
|
|
113
|
+
if (!propertiesToKeep.filters) {
|
|
114
|
+
updatedState = updatedState.setIn([_this.groupPropertyName, "filters"], null);
|
|
115
|
+
}
|
|
116
|
+
if (!propertiesToKeep.sorting) {
|
|
117
|
+
updatedState = updatedState.setIn([_this.groupPropertyName, "sorting"], null);
|
|
118
|
+
}
|
|
119
|
+
if (!propertiesToKeep.scope) {
|
|
120
|
+
updatedState = updatedState.setIn([_this.groupPropertyName, "scope"], null);
|
|
121
|
+
}
|
|
122
|
+
if (!propertiesToKeep.page) {
|
|
123
|
+
updatedState = updatedState.setIn([_this.groupPropertyName, "page"], null);
|
|
124
|
+
}
|
|
125
|
+
return updatedState;
|
|
126
|
+
});
|
|
127
|
+
this.groupPropertyName = groupPropertyName;
|
|
128
|
+
}
|
|
129
|
+
var _proto = ListReducerHelper.prototype;
|
|
130
|
+
// @ts-ignore
|
|
131
|
+
_proto.__reactstandin__regenerateByEval = function __reactstandin__regenerateByEval(key, code) {
|
|
132
|
+
// @ts-ignore
|
|
133
|
+
this[key] = eval(code);
|
|
134
|
+
};
|
|
135
|
+
return ListReducerHelper;
|
|
136
|
+
}();
|
|
137
|
+
var ListSelectorHelper = /*#__PURE__*/function () {
|
|
138
|
+
function ListSelectorHelper(groupPropertyName) {
|
|
139
|
+
var _this2 = this;
|
|
140
|
+
_defineProperty(this, "getCurrentInfo", function (state) {
|
|
141
|
+
var _listInfo$get, _listInfo$get2;
|
|
142
|
+
var listInfo = state.get(_this2.groupPropertyName) || _immutable.default.Map();
|
|
143
|
+
var info = {
|
|
144
|
+
currentScope: listInfo.get("scope"),
|
|
145
|
+
currentPage: listInfo.get("page"),
|
|
146
|
+
currentFilters: (_listInfo$get = listInfo.get("filters")) == null ? void 0 : _listInfo$get.toJS(),
|
|
147
|
+
currentSorting: (_listInfo$get2 = listInfo.get("sorting")) == null ? void 0 : _listInfo$get2.toJS(),
|
|
148
|
+
totalCount: listInfo.get("totalCount")
|
|
149
|
+
};
|
|
150
|
+
listInfo.mapKeys(function (key, value) {
|
|
151
|
+
if (standardInfoKeys.includes(key)) {
|
|
152
|
+
// standard key, nothing to do
|
|
153
|
+
} else {
|
|
154
|
+
info[key] = value != null && value.toJS ? value.toJS() : value;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
return info;
|
|
158
|
+
});
|
|
159
|
+
_defineProperty(this, "getIndex", function (state) {
|
|
160
|
+
return state.getIn([_this2.groupPropertyName, "index"]);
|
|
161
|
+
});
|
|
162
|
+
_defineProperty(this, "getList", function (state) {
|
|
163
|
+
return state.getIn([_this2.groupPropertyName, "list"]);
|
|
164
|
+
});
|
|
165
|
+
_defineProperty(this, "getNextPageToLoad", function (state) {
|
|
166
|
+
return state.getIn([_this2.groupPropertyName, "nextPageToLoad"]);
|
|
167
|
+
});
|
|
168
|
+
this.groupPropertyName = groupPropertyName;
|
|
169
|
+
}
|
|
170
|
+
var _proto2 = ListSelectorHelper.prototype;
|
|
171
|
+
// @ts-ignore
|
|
172
|
+
_proto2.__reactstandin__regenerateByEval = function __reactstandin__regenerateByEval(key, code) {
|
|
173
|
+
// @ts-ignore
|
|
174
|
+
this[key] = eval(code);
|
|
175
|
+
};
|
|
176
|
+
return ListSelectorHelper;
|
|
177
|
+
}();
|
|
178
|
+
var ListHelper = /*#__PURE__*/function () {
|
|
179
|
+
function ListHelper(groupPropertyName) {
|
|
180
|
+
var _this3 = this;
|
|
181
|
+
if (groupPropertyName === void 0) {
|
|
182
|
+
groupPropertyName = ListInfoPropertyName;
|
|
183
|
+
}
|
|
184
|
+
_defineProperty(this, "createInitialListInfo", function (additionalValues) {
|
|
185
|
+
if (additionalValues === void 0) {
|
|
186
|
+
additionalValues = null;
|
|
187
|
+
}
|
|
188
|
+
return _this3.createListInfoFrom(_objectSpread({}, additionalValues));
|
|
189
|
+
});
|
|
190
|
+
_defineProperty(this, "createListInfoFrom", function (_ref3) {
|
|
191
|
+
if (_ref3 === void 0) {
|
|
192
|
+
_ref3 = {};
|
|
193
|
+
}
|
|
194
|
+
var _ref4 = _ref3,
|
|
195
|
+
sorting = _ref4.sorting,
|
|
196
|
+
filters = _ref4.filters,
|
|
197
|
+
scope = _ref4.scope,
|
|
198
|
+
page = _ref4.page,
|
|
199
|
+
nextPageToLoad = _ref4.nextPageToLoad,
|
|
200
|
+
index = _ref4.index,
|
|
201
|
+
list = _ref4.list,
|
|
202
|
+
totalCount = _ref4.totalCount,
|
|
203
|
+
additionalValues = _objectWithoutProperties(_ref4, _excluded2);
|
|
204
|
+
return _defineProperty({}, _this3.groupPropertyName, _objectSpread({
|
|
205
|
+
sorting: sorting != null ? sorting : null,
|
|
206
|
+
filters: filters != null ? filters : null,
|
|
207
|
+
scope: scope != null ? scope : null,
|
|
208
|
+
page: page != null ? page : null,
|
|
209
|
+
nextPageToLoad: nextPageToLoad != null ? nextPageToLoad : 1,
|
|
210
|
+
index: index != null ? index : {},
|
|
211
|
+
list: list != null ? list : [],
|
|
212
|
+
totalCount: totalCount != null ? totalCount : 0
|
|
213
|
+
}, additionalValues));
|
|
214
|
+
});
|
|
215
|
+
this.groupPropertyName = groupPropertyName;
|
|
216
|
+
this.reducer = new ListReducerHelper(this.groupPropertyName);
|
|
217
|
+
this.selector = new ListSelectorHelper(this.groupPropertyName);
|
|
218
|
+
}
|
|
219
|
+
var _proto3 = ListHelper.prototype;
|
|
220
|
+
// @ts-ignore
|
|
221
|
+
_proto3.__reactstandin__regenerateByEval = function __reactstandin__regenerateByEval(key, code) {
|
|
222
|
+
// @ts-ignore
|
|
223
|
+
this[key] = eval(code);
|
|
224
|
+
};
|
|
225
|
+
return ListHelper;
|
|
226
|
+
}();
|
|
227
|
+
_ListHelper = ListHelper;
|
|
228
|
+
_defineProperty(ListHelper, "defaultInstance", new _ListHelper());
|
|
229
|
+
_defineProperty(ListHelper, "reducer", _ListHelper.defaultInstance.reducer);
|
|
230
|
+
_defineProperty(ListHelper, "selector", _ListHelper.defaultInstance.selector);
|
|
231
|
+
_defineProperty(ListHelper, "createInitialListInfo", _ListHelper.defaultInstance.createInitialListInfo);
|
|
232
|
+
_defineProperty(ListHelper, "createListInfoFrom", _ListHelper.defaultInstance.createListInfoFrom);
|
|
233
|
+
var _default = ListHelper;
|
|
234
|
+
var _default2 = _default;
|
|
235
|
+
var _default3 = exports.default = _default2;
|
|
236
|
+
;
|
|
237
|
+
(function () {
|
|
238
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
239
|
+
if (!reactHotLoader) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
reactHotLoader.register(ListInfoPropertyName, "ListInfoPropertyName", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
243
|
+
reactHotLoader.register(standardInfoKeys, "standardInfoKeys", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
244
|
+
reactHotLoader.register(ListReducerHelper, "ListReducerHelper", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
245
|
+
reactHotLoader.register(ListSelectorHelper, "ListSelectorHelper", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
246
|
+
reactHotLoader.register(ListHelper, "ListHelper", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
247
|
+
reactHotLoader.register(_default, "default", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
248
|
+
})();
|
|
249
|
+
;
|
|
250
|
+
(function () {
|
|
251
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
252
|
+
leaveModule && leaveModule(module);
|
|
253
|
+
})();
|
|
254
|
+
;
|
|
255
|
+
(function () {
|
|
256
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
257
|
+
if (!reactHotLoader) {
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
reactHotLoader.register(ListInfoPropertyName, "ListInfoPropertyName", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
261
|
+
reactHotLoader.register(standardInfoKeys, "standardInfoKeys", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
262
|
+
reactHotLoader.register(ListReducerHelper, "ListReducerHelper", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
263
|
+
reactHotLoader.register(ListSelectorHelper, "ListSelectorHelper", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
264
|
+
reactHotLoader.register(ListHelper, "ListHelper", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
265
|
+
reactHotLoader.register(_default2, "default", "/home/vsts/work/1/s/src/utils/ListHelper.js");
|
|
266
|
+
})();
|
|
267
|
+
;
|
|
268
|
+
(function () {
|
|
269
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
270
|
+
leaveModule && leaveModule(module);
|
|
271
|
+
})();
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.partialDeepEqual = exports.getBooleanValue = exports.doesObjectContainsTextCaseInsensitive = exports.compareTextCaseInsensitive = exports.compareNumeric = exports.compareBoolean = exports.areGuidsEquals = exports.areEqualCaseInsensitive = void 0;
|
|
5
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
6
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
(function () {
|
|
8
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
9
|
+
enterModule && enterModule(module);
|
|
10
|
+
})();
|
|
11
|
+
(function () {
|
|
12
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
13
|
+
enterModule && enterModule(module);
|
|
14
|
+
})();
|
|
15
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
16
|
+
return a;
|
|
17
|
+
};
|
|
18
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
19
|
+
return a;
|
|
20
|
+
};
|
|
21
|
+
var partialDeepEqual = exports.partialDeepEqual = function partialDeepEqual(x, y, ignoredRootProps) {
|
|
22
|
+
if (ignoredRootProps === void 0) {
|
|
23
|
+
ignoredRootProps = null;
|
|
24
|
+
}
|
|
25
|
+
if (x == null || y == null) return x === y;
|
|
26
|
+
var keys = Object.keys(x);
|
|
27
|
+
if (!_lodash.default.isEqual(keys, Object.keys(y))) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
|
|
31
|
+
var key = _keys[_i];
|
|
32
|
+
if (ignoredRootProps && ignoredRootProps.includes(key)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (!_lodash.default.isEqual(x[key], y[key])) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
};
|
|
41
|
+
var areGuidsEquals = exports.areGuidsEquals = function areGuidsEquals(first, second) {
|
|
42
|
+
function stripDash(value) {
|
|
43
|
+
return value == null ? void 0 : value.replace(/-/g, "");
|
|
44
|
+
}
|
|
45
|
+
return areEqualCaseInsensitive(stripDash(first), stripDash(second));
|
|
46
|
+
};
|
|
47
|
+
var areEqualCaseInsensitive = exports.areEqualCaseInsensitive = function areEqualCaseInsensitive(first, second) {
|
|
48
|
+
var isFirstNullish = first === null || first === undefined;
|
|
49
|
+
var isSecondNullish = second === null || second === undefined;
|
|
50
|
+
if (isFirstNullish || isSecondNullish) {
|
|
51
|
+
return isFirstNullish && isSecondNullish;
|
|
52
|
+
}
|
|
53
|
+
return first.localeCompare(second, undefined, {
|
|
54
|
+
sensitivity: "accent"
|
|
55
|
+
}) === 0;
|
|
56
|
+
};
|
|
57
|
+
var processOrderResult = function processOrderResult(ascendingOrder, compareResult) {
|
|
58
|
+
if (!ascendingOrder && compareResult != 0) {
|
|
59
|
+
return compareResult * -1;
|
|
60
|
+
}
|
|
61
|
+
return compareResult;
|
|
62
|
+
};
|
|
63
|
+
var compareTextCaseInsensitive = exports.compareTextCaseInsensitive = function compareTextCaseInsensitive(first, second, ascendingOrder, nullValue) {
|
|
64
|
+
if (ascendingOrder === void 0) {
|
|
65
|
+
ascendingOrder = true;
|
|
66
|
+
}
|
|
67
|
+
if (nullValue === void 0) {
|
|
68
|
+
nullValue = "";
|
|
69
|
+
}
|
|
70
|
+
return processOrderResult(ascendingOrder, (first != null ? first : nullValue).localeCompare(second != null ? second : nullValue, undefined, {
|
|
71
|
+
sensitivity: "accent"
|
|
72
|
+
}));
|
|
73
|
+
};
|
|
74
|
+
var getBooleanValue = exports.getBooleanValue = function getBooleanValue(value) {
|
|
75
|
+
var result = null;
|
|
76
|
+
if (typeof value === "string") {
|
|
77
|
+
if (areEqualCaseInsensitive(value, "true")) {
|
|
78
|
+
result = true;
|
|
79
|
+
} else if (areEqualCaseInsensitive(value, "false")) {
|
|
80
|
+
result = false;
|
|
81
|
+
}
|
|
82
|
+
} else if (typeof value === "boolean") {
|
|
83
|
+
result = value === true;
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
};
|
|
87
|
+
var compareBoolean = exports.compareBoolean = function compareBoolean(first, second) {
|
|
88
|
+
var firstBool = getBooleanValue(first);
|
|
89
|
+
var secondBool = getBooleanValue(second);
|
|
90
|
+
if (firstBool === null && secondBool === null) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
return firstBool === secondBool;
|
|
94
|
+
};
|
|
95
|
+
var compareNumeric = exports.compareNumeric = function compareNumeric(first, second, ascendingOrder, nullValue) {
|
|
96
|
+
if (ascendingOrder === void 0) {
|
|
97
|
+
ascendingOrder = true;
|
|
98
|
+
}
|
|
99
|
+
if (nullValue === void 0) {
|
|
100
|
+
nullValue = 0.0;
|
|
101
|
+
}
|
|
102
|
+
if (typeof first === "string" || first instanceof String || typeof second === "string" || second instanceof String) {
|
|
103
|
+
return processOrderResult(ascendingOrder, (first != null ? first : nullValue.toString()).localeCompare(second != null ? second : nullValue.toString(), undefined, {
|
|
104
|
+
numeric: true
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
var result = 0;
|
|
108
|
+
if ((first != null ? first : nullValue) < (second != null ? second : nullValue)) {
|
|
109
|
+
result = -1;
|
|
110
|
+
} else if ((first != null ? first : nullValue) > (second != null ? second : nullValue)) {
|
|
111
|
+
result = 1;
|
|
112
|
+
}
|
|
113
|
+
return processOrderResult(ascendingOrder, result);
|
|
114
|
+
};
|
|
115
|
+
var doesObjectContainsTextCaseInsensitive = exports.doesObjectContainsTextCaseInsensitive = function doesObjectContainsTextCaseInsensitive(obj, searchTerm, properties) {
|
|
116
|
+
if (properties === void 0) {
|
|
117
|
+
properties = [];
|
|
118
|
+
}
|
|
119
|
+
var caseInsensitiveIncludes = function caseInsensitiveIncludes(a, b) {
|
|
120
|
+
return a == null ? void 0 : a.toLowerCase().includes(b);
|
|
121
|
+
};
|
|
122
|
+
if (!obj) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
if (searchTerm === null || searchTerm === undefined || searchTerm === "") {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
var loweredSearchTerm = searchTerm.toLowerCase();
|
|
129
|
+
var propertiesToSearch = properties.length > 0 ? properties : Object.keys(obj);
|
|
130
|
+
var result = propertiesToSearch.find(function (key) {
|
|
131
|
+
return typeof obj[key] === "string" && caseInsensitiveIncludes(obj[key], loweredSearchTerm);
|
|
132
|
+
}) !== undefined;
|
|
133
|
+
return result;
|
|
134
|
+
};
|
|
135
|
+
;
|
|
136
|
+
(function () {
|
|
137
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
138
|
+
if (!reactHotLoader) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
reactHotLoader.register(partialDeepEqual, "partialDeepEqual", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
142
|
+
reactHotLoader.register(areGuidsEquals, "areGuidsEquals", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
143
|
+
reactHotLoader.register(areEqualCaseInsensitive, "areEqualCaseInsensitive", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
144
|
+
reactHotLoader.register(processOrderResult, "processOrderResult", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
145
|
+
reactHotLoader.register(compareTextCaseInsensitive, "compareTextCaseInsensitive", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
146
|
+
reactHotLoader.register(getBooleanValue, "getBooleanValue", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
147
|
+
reactHotLoader.register(compareBoolean, "compareBoolean", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
148
|
+
reactHotLoader.register(compareNumeric, "compareNumeric", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
149
|
+
reactHotLoader.register(doesObjectContainsTextCaseInsensitive, "doesObjectContainsTextCaseInsensitive", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
150
|
+
})();
|
|
151
|
+
;
|
|
152
|
+
(function () {
|
|
153
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
154
|
+
leaveModule && leaveModule(module);
|
|
155
|
+
})();
|
|
156
|
+
;
|
|
157
|
+
(function () {
|
|
158
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
159
|
+
if (!reactHotLoader) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
reactHotLoader.register(partialDeepEqual, "partialDeepEqual", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
163
|
+
reactHotLoader.register(areGuidsEquals, "areGuidsEquals", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
164
|
+
reactHotLoader.register(areEqualCaseInsensitive, "areEqualCaseInsensitive", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
165
|
+
reactHotLoader.register(processOrderResult, "processOrderResult", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
166
|
+
reactHotLoader.register(compareTextCaseInsensitive, "compareTextCaseInsensitive", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
167
|
+
reactHotLoader.register(getBooleanValue, "getBooleanValue", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
168
|
+
reactHotLoader.register(compareBoolean, "compareBoolean", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
169
|
+
reactHotLoader.register(compareNumeric, "compareNumeric", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
170
|
+
reactHotLoader.register(doesObjectContainsTextCaseInsensitive, "doesObjectContainsTextCaseInsensitive", "/home/vsts/work/1/s/src/utils/comparisonHelper.js");
|
|
171
|
+
})();
|
|
172
|
+
;
|
|
173
|
+
(function () {
|
|
174
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
175
|
+
leaveModule && leaveModule(module);
|
|
176
|
+
})();
|
package/package.json
CHANGED
|
@@ -5,8 +5,6 @@ import { getThemeProp, memoize, unwrapImmutable } from "../../utils";
|
|
|
5
5
|
import Sidepanel from "../Sidepanel";
|
|
6
6
|
import Button from "../Button";
|
|
7
7
|
import Text from "../Text";
|
|
8
|
-
import { FormContext } from "../Form/Form";
|
|
9
|
-
import FieldElements from "../Form/FieldElements";
|
|
10
8
|
import useViewState from "../../hooks/useViewState";
|
|
11
9
|
import { setValue } from "../../actions/view";
|
|
12
10
|
import { setDefaultLanguage } from "../../actions/locale";
|
|
@@ -18,6 +16,9 @@ import { defaultAppId } from "../../selectors/settings";
|
|
|
18
16
|
import withClickOutside from "../../hocs/withClickOutside";
|
|
19
17
|
import { resetVersionInfo } from "../../actions/versionInfo";
|
|
20
18
|
import sharedMessages from "./../../sharedMessages";
|
|
19
|
+
import SelectProps from "../MaterialUI/Inputs/SelectProps";
|
|
20
|
+
import InformationItem from "../MaterialUI/DataDisplay/PredefinedElements/InformationItem";
|
|
21
|
+
import Select from "../MaterialUI/Inputs/Select";
|
|
21
22
|
|
|
22
23
|
export const PREFS_NAME = "__prefsDialog";
|
|
23
24
|
|
|
@@ -29,6 +30,7 @@ export const PrefPanel = styled(Sidepanel)`
|
|
|
29
30
|
top: 40px;
|
|
30
31
|
box-shadow: -3px 2px 5px 0px rgba(0, 0, 0, 0.2);
|
|
31
32
|
z-index: 9998;
|
|
33
|
+
transition: right 400ms ease-out;
|
|
32
34
|
`;
|
|
33
35
|
|
|
34
36
|
export const Wrapper = withClickOutside(styled.div`
|
|
@@ -74,22 +76,33 @@ export const PrefButton = styled(Button)`
|
|
|
74
76
|
min-width: 110px;
|
|
75
77
|
`;
|
|
76
78
|
|
|
77
|
-
export const
|
|
79
|
+
export const stateEventUpdater = memoize((update, key) => value => update(key, value));
|
|
78
80
|
|
|
79
81
|
const usePreferenceSetup = () => {
|
|
80
82
|
const dispatch = useDispatch();
|
|
81
83
|
const [viewState, updateViewState] = useViewState(PREFS_NAME);
|
|
82
84
|
|
|
85
|
+
const initialLanguage = useSelector(currentLocaleOrDefault);
|
|
86
|
+
const initialApplication = useSelector(defaultAppId) || "";
|
|
87
|
+
|
|
88
|
+
const languageSelectProps = new SelectProps();
|
|
89
|
+
languageSelectProps.set(SelectProps.propNames.value, viewState.language ?? initialLanguage);
|
|
90
|
+
languageSelectProps.set(SelectProps.propNames.disabled, false);
|
|
91
|
+
languageSelectProps.set(SelectProps.propNames.positionOverride, { disablePortal: true });
|
|
92
|
+
languageSelectProps.set(SelectProps.propNames.update, stateEventUpdater(updateViewState, "language"));
|
|
93
|
+
|
|
94
|
+
const applicationSelectProps = new SelectProps();
|
|
95
|
+
applicationSelectProps.set(SelectProps.propNames.value, viewState.application ?? initialApplication);
|
|
96
|
+
applicationSelectProps.set(SelectProps.propNames.disabled, false);
|
|
97
|
+
applicationSelectProps.set(SelectProps.propNames.positionOverride, { disablePortal: true });
|
|
98
|
+
applicationSelectProps.set(SelectProps.propNames.update, stateEventUpdater(updateViewState, "application"));
|
|
99
|
+
|
|
83
100
|
return {
|
|
84
101
|
show: viewState.show,
|
|
85
|
-
values: {
|
|
86
|
-
language: useSelector(currentLocaleOrDefault),
|
|
87
|
-
application: useSelector(defaultAppId) || "",
|
|
88
|
-
...viewState,
|
|
89
|
-
},
|
|
90
|
-
getUpdater: createGetUpdater(updateViewState),
|
|
91
102
|
languageOptions: unwrapImmutable(useSelector(cultureOptionList)),
|
|
103
|
+
languageSelectProps,
|
|
92
104
|
applicationOptions: unwrapImmutable(useSelector(localizedAppOptionSelector)),
|
|
105
|
+
applicationSelectProps,
|
|
93
106
|
clear: () => dispatch(setValue(PREFS_NAME, { show: false })),
|
|
94
107
|
save: () => {
|
|
95
108
|
if (viewState.language) {
|
|
@@ -112,7 +125,8 @@ export const clickOutsideHandler = e => {
|
|
|
112
125
|
};
|
|
113
126
|
|
|
114
127
|
export const Preferences = () => {
|
|
115
|
-
const { show,
|
|
128
|
+
const { show, save, clear, languageOptions, languageSelectProps, applicationOptions, applicationSelectProps } =
|
|
129
|
+
usePreferenceSetup();
|
|
116
130
|
return (
|
|
117
131
|
<PrefPanel in={show} width="380px" timeout={400}>
|
|
118
132
|
<Wrapper onClickOutside={clickOutsideHandler}>
|
|
@@ -120,25 +134,12 @@ export const Preferences = () => {
|
|
|
120
134
|
<Text message={sharedMessages.preferences} />
|
|
121
135
|
</Header>
|
|
122
136
|
<PrefForm>
|
|
123
|
-
<
|
|
124
|
-
<
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
name: "language",
|
|
130
|
-
options: languageOptions,
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
label: sharedMessages.defaultApp,
|
|
134
|
-
type: "Selector",
|
|
135
|
-
name: "application",
|
|
136
|
-
options: applicationOptions,
|
|
137
|
-
},
|
|
138
|
-
]}
|
|
139
|
-
getUpdater={getUpdater}
|
|
140
|
-
/>
|
|
141
|
-
</FormContext.Provider>
|
|
137
|
+
<InformationItem label={sharedMessages.displayLanguage}>
|
|
138
|
+
<Select options={languageOptions} selectProps={languageSelectProps} />
|
|
139
|
+
</InformationItem>
|
|
140
|
+
<InformationItem label={sharedMessages.defaultApp}>
|
|
141
|
+
<Select options={applicationOptions} selectProps={applicationSelectProps} />
|
|
142
|
+
</InformationItem>
|
|
142
143
|
</PrefForm>
|
|
143
144
|
<Footer>
|
|
144
145
|
<PrefButton id="cancelPrefs" onClick={clear}>
|