orc-shared 1.2.0-dev.7 → 1.3.0-dev.2
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/LICENSE +1 -1
- package/README.md +1 -1
- package/dist/components/AppFrame/About.js +5 -1
- package/dist/components/AppFrame/AppFrame.js +14 -4
- package/dist/components/AppFrame/MenuItem.js +1 -4
- package/dist/components/Culture.js +106 -0
- package/dist/components/I18n.js +5 -2
- package/dist/components/MaterialUI/Inputs/DatePicker.js +10 -37
- package/dist/components/MaterialUI/Inputs/InputBase.js +42 -4
- package/dist/components/MaterialUI/Inputs/InputBaseProps.js +4 -1
- package/dist/components/MaterialUI/Inputs/TimePicker.js +5 -2
- package/dist/components/MaterialUI/ScopeSelector/ScopeSelector.js +8 -2
- package/dist/components/Provision.js +3 -1
- package/dist/components/Routing/FullPage.js +6 -3
- package/dist/content/icons/archives.svg +3 -0
- package/dist/content/icons/lock.svg +3 -0
- package/dist/content/icons/unlock.svg +3 -0
- package/dist/content/iconsSheet.svg +9 -3
- package/dist/selectors/metadata.js +13 -3
- package/dist/selectors/scope.js +2 -1
- package/dist/utils/localizationHelper.js +11 -1
- package/dist/utils/setTranslation.js +27 -1
- package/dist/utils/setTranslationWithFallback.js +30 -1
- package/package.json +1 -1
- package/src/components/AppFrame/About.js +8 -1
- package/src/components/AppFrame/AppFrame.js +13 -2
- package/src/components/AppFrame/AppFrame.test.js +53 -0
- package/src/components/AppFrame/MenuItem.js +1 -12
- package/src/components/Culture.js +25 -0
- package/src/components/Culture.test.js +86 -0
- package/src/components/I18n.js +4 -2
- package/src/components/I18n.test.js +32 -3
- package/src/components/MaterialUI/DataDisplay/PredefinedElements/Translations.test.js +7 -1
- package/src/components/MaterialUI/Inputs/DatePicker.js +5 -27
- package/src/components/MaterialUI/Inputs/DatePicker.test.js +6 -34
- package/src/components/MaterialUI/Inputs/InputBase.js +20 -2
- package/src/components/MaterialUI/Inputs/InputBase.test.js +68 -0
- package/src/components/MaterialUI/Inputs/InputBaseProps.js +2 -0
- package/src/components/MaterialUI/Inputs/InputBaseProps.test.js +2 -0
- package/src/components/MaterialUI/Inputs/TimePicker.js +6 -2
- package/src/components/MaterialUI/ScopeSelector/ScopeSelector.js +5 -1
- package/src/components/Provision.js +2 -0
- package/src/components/Routing/FullPage.js +12 -4
- package/src/components/Routing/FullPage.test.js +24 -0
- package/src/components/Scope/Scope.test.js +4 -0
- package/src/content/icons/archives.svg +3 -0
- package/src/content/icons/lock.svg +3 -0
- package/src/content/icons/unlock.svg +3 -0
- package/src/content/iconsSheet.svg +9 -3
- package/src/selectors/metadata.js +18 -7
- package/src/selectors/metadata.test.js +221 -283
- package/src/selectors/scope.js +1 -1
- package/src/translations/en-US.json +1 -1
- package/src/translations/fr-CA.json +1 -1
- package/src/utils/localizationHelper.js +12 -0
- package/src/utils/localizationHelper.test.js +64 -0
- package/src/utils/setTranslation.js +16 -1
- package/src/utils/setTranslation.test.js +24 -0
- package/src/utils/setTranslationWithFallback.js +18 -1
- package/src/utils/setTranslationWithFallback.test.js +108 -0
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ This library provides the [infrastructure](docs/infrastructure.md) to construct
|
|
|
10
10
|
|
|
11
11
|
## License
|
|
12
12
|
|
|
13
|
-
Copyright ©
|
|
13
|
+
Copyright © 2022 Orckestra Technologies Inc.
|
|
14
14
|
|
|
15
15
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
16
16
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -198,7 +198,11 @@ var About = function About(_ref2) {
|
|
|
198
198
|
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
199
199
|
message: _sharedMessages.default.ccName
|
|
200
200
|
}))), /*#__PURE__*/_react.default.createElement(AboutParagraph, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
201
|
-
message: _sharedMessages.default.copyright
|
|
201
|
+
message: _objectSpread(_objectSpread({}, _sharedMessages.default.copyright), {}, {
|
|
202
|
+
values: {
|
|
203
|
+
year: new Date().getFullYear()
|
|
204
|
+
}
|
|
205
|
+
})
|
|
202
206
|
}), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
203
207
|
message: _sharedMessages.default.allRightsReserved
|
|
204
208
|
})));
|
|
@@ -165,7 +165,17 @@ var AppFrame = function AppFrame(_ref) {
|
|
|
165
165
|
}, [needLogin]);
|
|
166
166
|
(0, _react.useEffect)(function () {
|
|
167
167
|
document.title = (currentApplication == null ? void 0 : currentApplication.displayName) || applicationId;
|
|
168
|
-
}, [currentApplication, applicationId]);
|
|
168
|
+
}, [currentApplication, applicationId]); // Extract only what's needed for the SideBar and its menuItems
|
|
169
|
+
|
|
170
|
+
var menuItemFromModules = (0, _react.useMemo)(function () {
|
|
171
|
+
return (modules != null ? modules : []).map(function (item) {
|
|
172
|
+
return {
|
|
173
|
+
id: item.id,
|
|
174
|
+
label: item.label,
|
|
175
|
+
icon: item.icon
|
|
176
|
+
};
|
|
177
|
+
});
|
|
178
|
+
}, [modules]);
|
|
169
179
|
|
|
170
180
|
var _useViewState = (0, _useViewState3.default)(_Preferences.PREFS_NAME),
|
|
171
181
|
_useViewState2 = _slicedToArray(_useViewState, 1),
|
|
@@ -191,7 +201,7 @@ var AppFrame = function AppFrame(_ref) {
|
|
|
191
201
|
}), /*#__PURE__*/_react.default.createElement(_Sidebar.default, {
|
|
192
202
|
open: open,
|
|
193
203
|
toggle: toggle,
|
|
194
|
-
modules:
|
|
204
|
+
modules: menuItemFromModules,
|
|
195
205
|
activeModules: activeModules
|
|
196
206
|
}), /*#__PURE__*/_react.default.createElement(ViewPort, {
|
|
197
207
|
open: open,
|
|
@@ -201,11 +211,11 @@ var AppFrame = function AppFrame(_ref) {
|
|
|
201
211
|
}), /*#__PURE__*/_react.default.createElement(_loadingScreen.default, null), /*#__PURE__*/_react.default.createElement(_Preferences.default, null));
|
|
202
212
|
};
|
|
203
213
|
|
|
204
|
-
__signature__(AppFrame, "useIntl{{ formatMessage }}\nuseSelector{locale}\nuseSelector{needLogin}\nuseSelector{}\nuseSelector{moduleName}\nuseApplicationHelpUrl{[helpUrl]}\nuseLoader{}\nuseToggle{[open, toggle, reset]}\nuseLoader{}\nuseState{[doesApplicationNeedRefresh, setDoesApplicationNeedRefresh](false)}\nuseEffect{}\nuseEffect{}\nuseViewState{[prefViewState]}", function () {
|
|
214
|
+
__signature__(AppFrame, "useIntl{{ formatMessage }}\nuseSelector{locale}\nuseSelector{needLogin}\nuseSelector{}\nuseSelector{moduleName}\nuseApplicationHelpUrl{[helpUrl]}\nuseLoader{}\nuseToggle{[open, toggle, reset]}\nuseLoader{}\nuseState{[doesApplicationNeedRefresh, setDoesApplicationNeedRefresh](false)}\nuseEffect{}\nuseEffect{}\nuseMemo{menuItemFromModules}\nuseViewState{[prefViewState]}", function () {
|
|
205
215
|
return [_reactIntl.useIntl, _reactRedux.useSelector, _reactRedux.useSelector, _reactRedux.useSelector, _reactRedux.useSelector, _useApplicationHelpUrl.default, _useLoader.default, _useToggle3.default, _useLoader.default, _useViewState3.default];
|
|
206
216
|
});
|
|
207
217
|
|
|
208
|
-
__signature__(AppFrame, "useIntl{{ formatMessage }}\nuseSelector{locale}\nuseSelector{needLogin}\nuseSelector{}\nuseSelector{moduleName}\nuseApplicationHelpUrl{[helpUrl]}\nuseLoader{}\nuseToggle{[open, toggle, reset]}\nuseLoader{}\nuseState{[doesApplicationNeedRefresh, setDoesApplicationNeedRefresh](false)}\nuseEffect{}\nuseEffect{}\nuseViewState{[prefViewState]}", function () {
|
|
218
|
+
__signature__(AppFrame, "useIntl{{ formatMessage }}\nuseSelector{locale}\nuseSelector{needLogin}\nuseSelector{}\nuseSelector{moduleName}\nuseApplicationHelpUrl{[helpUrl]}\nuseLoader{}\nuseToggle{[open, toggle, reset]}\nuseLoader{}\nuseState{[doesApplicationNeedRefresh, setDoesApplicationNeedRefresh](false)}\nuseEffect{}\nuseEffect{}\nuseMemo{menuItemFromModules}\nuseViewState{[prefViewState]}", function () {
|
|
209
219
|
return [_reactIntl.useIntl, _reactRedux.useSelector, _reactRedux.useSelector, _reactRedux.useSelector, _reactRedux.useSelector, _useApplicationHelpUrl.default, _useLoader.default, _useToggle3.default, _useLoader.default, _useViewState3.default];
|
|
210
220
|
});
|
|
211
221
|
|
|
@@ -20,7 +20,7 @@ var _Icon = _interopRequireDefault(require("../Icon"));
|
|
|
20
20
|
var _templateObject;
|
|
21
21
|
|
|
22
22
|
var _excluded = ["menuToggle", "staticContext", "dispatch", "active", "component"],
|
|
23
|
-
_excluded2 = ["open", "label", "icon", "alert", "
|
|
23
|
+
_excluded2 = ["open", "label", "icon", "alert", "isHidden", "href"];
|
|
24
24
|
|
|
25
25
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
26
26
|
|
|
@@ -134,9 +134,6 @@ var MenuItem = function MenuItem(_ref5) {
|
|
|
134
134
|
label = _ref5$label === void 0 ? "" : _ref5$label,
|
|
135
135
|
icon = _ref5.icon,
|
|
136
136
|
alert = _ref5.alert,
|
|
137
|
-
pageScopeSelector = _ref5.pageScopeSelector,
|
|
138
|
-
closingTabHandler = _ref5.closingTabHandler,
|
|
139
|
-
hide = _ref5.hide,
|
|
140
137
|
_ref5$isHidden = _ref5.isHidden,
|
|
141
138
|
isHidden = _ref5$isHidden === void 0 ? false : _ref5$isHidden,
|
|
142
139
|
href = _ref5.href,
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
7
|
+
|
|
8
|
+
var _reactRedux = require("react-redux");
|
|
9
|
+
|
|
10
|
+
var _locale = require("../selectors/locale");
|
|
11
|
+
|
|
12
|
+
var _reactDatepicker = require("react-datepicker");
|
|
13
|
+
|
|
14
|
+
var date_fns_locale = _interopRequireWildcard(require("date-fns/locale"));
|
|
15
|
+
|
|
16
|
+
var _localizationHelper = require("../utils/localizationHelper");
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
(function () {
|
|
23
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
24
|
+
enterModule && enterModule(module);
|
|
25
|
+
})();
|
|
26
|
+
|
|
27
|
+
(function () {
|
|
28
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
29
|
+
enterModule && enterModule(module);
|
|
30
|
+
})();
|
|
31
|
+
|
|
32
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
33
|
+
return a;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
37
|
+
return a;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var Culture = function Culture() {
|
|
41
|
+
var _navigator$language;
|
|
42
|
+
|
|
43
|
+
var locale = (0, _reactRedux.useSelector)(_locale.currentLocaleOrDefault);
|
|
44
|
+
var language = (_navigator$language = navigator.language) != null ? _navigator$language : locale;
|
|
45
|
+
(0, _react.useMemo)(function () {
|
|
46
|
+
var fnsLocale = (0, _localizationHelper.findCorrespondingLocale)(date_fns_locale, language);
|
|
47
|
+
|
|
48
|
+
if (fnsLocale != null) {
|
|
49
|
+
(0, _reactDatepicker.registerLocale)(language, fnsLocale);
|
|
50
|
+
(0, _reactDatepicker.setDefaultLocale)(language);
|
|
51
|
+
}
|
|
52
|
+
}, [language]);
|
|
53
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
__signature__(Culture, "useSelector{locale}\nuseMemo{}", function () {
|
|
57
|
+
return [_reactRedux.useSelector];
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
__signature__(Culture, "useSelector{locale}\nuseMemo{}", function () {
|
|
61
|
+
return [_reactRedux.useSelector];
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
var _default = Culture;
|
|
65
|
+
var _default2 = _default;
|
|
66
|
+
var _default3 = _default2;
|
|
67
|
+
exports.default = _default3;
|
|
68
|
+
;
|
|
69
|
+
|
|
70
|
+
(function () {
|
|
71
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
72
|
+
|
|
73
|
+
if (!reactHotLoader) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
reactHotLoader.register(Culture, "Culture", "/home/vsts/work/1/s/src/components/Culture.js");
|
|
78
|
+
reactHotLoader.register(_default, "default", "/home/vsts/work/1/s/src/components/Culture.js");
|
|
79
|
+
})();
|
|
80
|
+
|
|
81
|
+
;
|
|
82
|
+
|
|
83
|
+
(function () {
|
|
84
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
85
|
+
leaveModule && leaveModule(module);
|
|
86
|
+
})();
|
|
87
|
+
|
|
88
|
+
;
|
|
89
|
+
|
|
90
|
+
(function () {
|
|
91
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
92
|
+
|
|
93
|
+
if (!reactHotLoader) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
reactHotLoader.register(Culture, "Culture", "/home/vsts/work/1/s/src/components/Culture.js");
|
|
98
|
+
reactHotLoader.register(_default2, "default", "/home/vsts/work/1/s/src/components/Culture.js");
|
|
99
|
+
})();
|
|
100
|
+
|
|
101
|
+
;
|
|
102
|
+
|
|
103
|
+
(function () {
|
|
104
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
105
|
+
leaveModule && leaveModule(module);
|
|
106
|
+
})();
|
package/dist/components/I18n.js
CHANGED
|
@@ -34,14 +34,17 @@ var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoader
|
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
var I18n = function I18n(props) {
|
|
37
|
+
var _navigator$language;
|
|
38
|
+
|
|
37
39
|
var locale = (0, _reactRedux.useSelector)(_locale.currentLocaleOrDefault);
|
|
38
40
|
|
|
39
41
|
var messages = require("translations/" + locale + ".json");
|
|
40
42
|
|
|
43
|
+
var language = (_navigator$language = navigator.language) != null ? _navigator$language : locale;
|
|
41
44
|
return /*#__PURE__*/_react.default.createElement(_reactIntl.IntlProvider, _extends({
|
|
42
|
-
key:
|
|
45
|
+
key: language // TODO: Remove this when react-intl suports new React context API
|
|
43
46
|
,
|
|
44
|
-
locale:
|
|
47
|
+
locale: language,
|
|
45
48
|
messages: messages
|
|
46
49
|
}, props));
|
|
47
50
|
};
|
|
@@ -9,7 +9,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
9
9
|
|
|
10
10
|
var _Icon = _interopRequireDefault(require("../DataDisplay/Icon"));
|
|
11
11
|
|
|
12
|
-
var _reactDatepicker =
|
|
12
|
+
var _reactDatepicker = _interopRequireDefault(require("react-datepicker"));
|
|
13
13
|
|
|
14
14
|
require("react-datepicker/dist/react-datepicker.css");
|
|
15
15
|
|
|
@@ -17,16 +17,8 @@ var _TimePicker = _interopRequireDefault(require("./TimePicker"));
|
|
|
17
17
|
|
|
18
18
|
var _styles = require("@material-ui/core/styles");
|
|
19
19
|
|
|
20
|
-
var _reactIntl = require("react-intl");
|
|
21
|
-
|
|
22
|
-
var _locale = require("date-fns/locale");
|
|
23
|
-
|
|
24
20
|
var _excluded = ["value", "useTime", "useDate", "onChange", "dateFormat", "showTimeZone", "timeInputLabel", "readOnly", "showTimeSelectOnly", "metadata", "timePickerTimeZone", "error"];
|
|
25
21
|
|
|
26
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
-
|
|
28
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
-
|
|
30
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
23
|
|
|
32
24
|
(function () {
|
|
@@ -55,9 +47,6 @@ var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoader
|
|
|
55
47
|
return a;
|
|
56
48
|
};
|
|
57
49
|
|
|
58
|
-
(0, _reactDatepicker.registerLocale)("fr-CA", _locale.frCA);
|
|
59
|
-
(0, _reactDatepicker.registerLocale)("en-US", _locale.enUS);
|
|
60
|
-
(0, _reactDatepicker.registerLocale)("it-IT", _locale.it);
|
|
61
50
|
var useStyles = (0, _styles.makeStyles)(function (theme) {
|
|
62
51
|
return {
|
|
63
52
|
container: {
|
|
@@ -164,23 +153,14 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
|
|
|
164
153
|
}
|
|
165
154
|
};
|
|
166
155
|
});
|
|
167
|
-
var AMPMLocales = ["en-US", "en-CA"];
|
|
168
156
|
|
|
169
|
-
var createFormat = function createFormat(useDate, useTime
|
|
157
|
+
var createFormat = function createFormat(useDate, useTime) {
|
|
170
158
|
if (useDate && !useTime) {
|
|
171
159
|
return "P";
|
|
172
160
|
} else if (useTime && !useDate) {
|
|
173
|
-
|
|
174
|
-
return "p";
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
return "HH:mm";
|
|
161
|
+
return "p";
|
|
178
162
|
} else {
|
|
179
|
-
|
|
180
|
-
return "P p";
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
return "P HH:mm";
|
|
163
|
+
return "P p";
|
|
184
164
|
}
|
|
185
165
|
};
|
|
186
166
|
|
|
@@ -202,9 +182,6 @@ var WrappedDatePicker = function WrappedDatePicker(_ref) {
|
|
|
202
182
|
error = _ref.error,
|
|
203
183
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
204
184
|
|
|
205
|
-
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
206
|
-
locale = _useIntl.locale;
|
|
207
|
-
|
|
208
185
|
var classes = useStyles({
|
|
209
186
|
readOnly: readOnly
|
|
210
187
|
});
|
|
@@ -224,7 +201,7 @@ var WrappedDatePicker = function WrappedDatePicker(_ref) {
|
|
|
224
201
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
225
202
|
className: classes.datePickerContainer
|
|
226
203
|
}, /*#__PURE__*/_react.default.createElement(_reactDatepicker.default, _extends({}, props, {
|
|
227
|
-
dateFormat: dateFormat || createFormat(useDate, useTime
|
|
204
|
+
dateFormat: dateFormat || createFormat(useDate, useTime),
|
|
228
205
|
selected: startDate,
|
|
229
206
|
onChange: function onChange(date) {
|
|
230
207
|
return updateDate(date, metadata);
|
|
@@ -233,13 +210,11 @@ var WrappedDatePicker = function WrappedDatePicker(_ref) {
|
|
|
233
210
|
useTime: useTime != null ? useTime : false,
|
|
234
211
|
customTimeInput: useTime ? /*#__PURE__*/_react.default.createElement(_TimePicker.default, {
|
|
235
212
|
showTimeZone: showTimeZone,
|
|
236
|
-
showAMPM: AMPMLocales.includes(locale),
|
|
237
213
|
requestedTimeZone: timePickerTimeZone
|
|
238
214
|
}) : null,
|
|
239
215
|
timeInputLabel: timeInputLabel != null ? timeInputLabel : "",
|
|
240
216
|
readOnly: readOnly,
|
|
241
|
-
showTimeSelectOnly: showTimeSelectOnly
|
|
242
|
-
locale: locale
|
|
217
|
+
showTimeSelectOnly: showTimeSelectOnly
|
|
243
218
|
}))), !readOnly ? /*#__PURE__*/_react.default.createElement("div", {
|
|
244
219
|
className: classes.iconContainer
|
|
245
220
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
@@ -250,12 +225,12 @@ var WrappedDatePicker = function WrappedDatePicker(_ref) {
|
|
|
250
225
|
}, error));
|
|
251
226
|
};
|
|
252
227
|
|
|
253
|
-
__signature__(WrappedDatePicker, "
|
|
254
|
-
return [
|
|
228
|
+
__signature__(WrappedDatePicker, "useStyles{classes}", function () {
|
|
229
|
+
return [useStyles];
|
|
255
230
|
});
|
|
256
231
|
|
|
257
|
-
__signature__(WrappedDatePicker, "
|
|
258
|
-
return [
|
|
232
|
+
__signature__(WrappedDatePicker, "useStyles{classes}", function () {
|
|
233
|
+
return [useStyles];
|
|
259
234
|
});
|
|
260
235
|
|
|
261
236
|
var _default = WrappedDatePicker;
|
|
@@ -272,7 +247,6 @@ exports.default = _default3;
|
|
|
272
247
|
}
|
|
273
248
|
|
|
274
249
|
reactHotLoader.register(useStyles, "useStyles", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
275
|
-
reactHotLoader.register(AMPMLocales, "AMPMLocales", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
276
250
|
reactHotLoader.register(createFormat, "createFormat", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
277
251
|
reactHotLoader.register(WrappedDatePicker, "WrappedDatePicker", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
278
252
|
reactHotLoader.register(_default, "default", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
@@ -295,7 +269,6 @@ exports.default = _default3;
|
|
|
295
269
|
}
|
|
296
270
|
|
|
297
271
|
reactHotLoader.register(useStyles, "useStyles", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
298
|
-
reactHotLoader.register(AMPMLocales, "AMPMLocales", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
299
272
|
reactHotLoader.register(createFormat, "createFormat", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
300
273
|
reactHotLoader.register(WrappedDatePicker, "WrappedDatePicker", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
301
274
|
reactHotLoader.register(_default2, "default", "/home/vsts/work/1/s/src/components/MaterialUI/Inputs/DatePicker.js");
|
|
@@ -29,6 +29,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
29
29
|
enterModule && enterModule(module);
|
|
30
30
|
})();
|
|
31
31
|
|
|
32
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
33
|
+
|
|
34
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
35
|
+
|
|
36
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
37
|
+
|
|
38
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
39
|
+
|
|
40
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
41
|
+
|
|
42
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
43
|
+
|
|
32
44
|
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
33
45
|
return a;
|
|
34
46
|
};
|
|
@@ -144,6 +156,7 @@ var InputBase = function InputBase(_ref) {
|
|
|
144
156
|
var endAdornment = inputProps == null ? void 0 : inputProps.get(_InputBaseProps.default.propNames.endAdornment);
|
|
145
157
|
var metadata = inputProps == null ? void 0 : inputProps.get(_InputBaseProps.default.propNames.metadata);
|
|
146
158
|
var autoComplete = inputProps == null ? void 0 : inputProps.get(_InputBaseProps.default.propNames.autoComplete);
|
|
159
|
+
var timeoutDelay = (inputProps == null ? void 0 : inputProps.get(_InputBaseProps.default.propNames.timeoutDelay)) || 100;
|
|
147
160
|
var tooltipText = type === "text" ? value : "";
|
|
148
161
|
|
|
149
162
|
var onClick = function onClick(item) {
|
|
@@ -159,11 +172,36 @@ var InputBase = function InputBase(_ref) {
|
|
|
159
172
|
|
|
160
173
|
var onChangeHandler = function onChangeHandler(event) {
|
|
161
174
|
event.persist();
|
|
162
|
-
|
|
175
|
+
|
|
176
|
+
if (!event.target.value || window.bypassDebounce === true) {
|
|
177
|
+
update(event.target.value, metadata);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
setInputText(event.target.value);
|
|
163
181
|
};
|
|
164
182
|
|
|
165
183
|
var inputBaseInputStyle = inputProps == null ? void 0 : inputProps.getStyle(_InputBaseProps.default.ruleNames.input);
|
|
166
184
|
var errorTextStyle = inputProps == null ? void 0 : inputProps.getStyle(_InputBaseProps.default.ruleNames.errorText);
|
|
185
|
+
|
|
186
|
+
var _React$useState = _react.default.useState(null),
|
|
187
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
188
|
+
inputText = _React$useState2[0],
|
|
189
|
+
setInputText = _React$useState2[1];
|
|
190
|
+
|
|
191
|
+
var textToDisplay = inputText != null ? inputText : value;
|
|
192
|
+
|
|
193
|
+
_react.default.useEffect(function () {
|
|
194
|
+
if (inputText !== value && inputText != null && window.bypassDebounce !== true) {
|
|
195
|
+
var timeOutId = setTimeout(function () {
|
|
196
|
+
return update(inputText, metadata);
|
|
197
|
+
}, timeoutDelay);
|
|
198
|
+
return function () {
|
|
199
|
+
return clearTimeout(timeOutId);
|
|
200
|
+
};
|
|
201
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
202
|
+
|
|
203
|
+
}, [inputText, value]);
|
|
204
|
+
|
|
167
205
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
168
206
|
className: classes.container
|
|
169
207
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -182,7 +220,7 @@ var InputBase = function InputBase(_ref) {
|
|
|
182
220
|
onClick: onClick,
|
|
183
221
|
type: type,
|
|
184
222
|
placeholder: placeholder,
|
|
185
|
-
value:
|
|
223
|
+
value: textToDisplay,
|
|
186
224
|
fullWidth: true,
|
|
187
225
|
onChange: function onChange(event) {
|
|
188
226
|
return onChangeHandler(event);
|
|
@@ -201,11 +239,11 @@ var InputBase = function InputBase(_ref) {
|
|
|
201
239
|
}, error));
|
|
202
240
|
};
|
|
203
241
|
|
|
204
|
-
__signature__(InputBase, "useStyles{classes}", function () {
|
|
242
|
+
__signature__(InputBase, "useStyles{classes}\nuseState{[inputText, setInputText](null)}\nuseEffect{}", function () {
|
|
205
243
|
return [useStyles];
|
|
206
244
|
});
|
|
207
245
|
|
|
208
|
-
__signature__(InputBase, "useStyles{classes}", function () {
|
|
246
|
+
__signature__(InputBase, "useStyles{classes}\nuseState{[inputText, setInputText](null)}\nuseEffect{}", function () {
|
|
209
247
|
return [useStyles];
|
|
210
248
|
});
|
|
211
249
|
|
|
@@ -69,6 +69,8 @@ var InputBaseProps = /*#__PURE__*/function (_ComponentProps) {
|
|
|
69
69
|
|
|
70
70
|
_this.componentProps.set(_this.constructor.propNames.autoComplete, null);
|
|
71
71
|
|
|
72
|
+
_this.componentProps.set(_this.constructor.propNames.timeoutDelay, null);
|
|
73
|
+
|
|
72
74
|
_this.componentClasses.set(_this.constructor.ruleNames.input, null);
|
|
73
75
|
|
|
74
76
|
_this.componentClasses.set(_this.constructor.ruleNames.errorText, null);
|
|
@@ -103,7 +105,8 @@ _defineProperty(InputBaseProps, "propNames", {
|
|
|
103
105
|
startAdornment: "startAdornment",
|
|
104
106
|
endAdornment: "endAdornment",
|
|
105
107
|
metadata: "metadata",
|
|
106
|
-
autoComplete: "autoComplete"
|
|
108
|
+
autoComplete: "autoComplete",
|
|
109
|
+
timeoutDelay: "timeoutDelay"
|
|
107
110
|
});
|
|
108
111
|
|
|
109
112
|
_defineProperty(InputBaseProps, "ruleNames", {
|
|
@@ -295,6 +295,9 @@ var TimePicker = function TimePicker(_ref4) {
|
|
|
295
295
|
time = _useState2[0],
|
|
296
296
|
setTime = _useState2[1];
|
|
297
297
|
|
|
298
|
+
(0, _react.useEffect)(function () {
|
|
299
|
+
setTime(parseTime(value || "00:00"));
|
|
300
|
+
}, [value, setTime]);
|
|
298
301
|
var userTimeZone = (0, _timezoneHelper.getTimeZoneName)();
|
|
299
302
|
var localizedTimeZoneName = (0, _reactRedux.useSelector)((0, _metadata.namedLookupLocalizedSelector)("customer", "TimeZone", userTimeZone, null));
|
|
300
303
|
|
|
@@ -365,11 +368,11 @@ var TimePicker = function TimePicker(_ref4) {
|
|
|
365
368
|
}, showTimeZone && getTimeZone(requestedTimeZone)));
|
|
366
369
|
};
|
|
367
370
|
|
|
368
|
-
__signature__(TimePicker, "useStyles{classes}\nuseState{[time, setTime](parseTime(value || \"00:00\"))}\nuseSelector{localizedTimeZoneName}", function () {
|
|
371
|
+
__signature__(TimePicker, "useStyles{classes}\nuseState{[time, setTime](parseTime(value || \"00:00\"))}\nuseEffect{}\nuseSelector{localizedTimeZoneName}", function () {
|
|
369
372
|
return [useStyles, _reactRedux.useSelector];
|
|
370
373
|
});
|
|
371
374
|
|
|
372
|
-
__signature__(TimePicker, "useStyles{classes}\nuseState{[time, setTime](parseTime(value || \"00:00\"))}\nuseSelector{localizedTimeZoneName}", function () {
|
|
375
|
+
__signature__(TimePicker, "useStyles{classes}\nuseState{[time, setTime](parseTime(value || \"00:00\"))}\nuseEffect{}\nuseSelector{localizedTimeZoneName}", function () {
|
|
373
376
|
return [useStyles, _reactRedux.useSelector];
|
|
374
377
|
});
|
|
375
378
|
|
|
@@ -49,7 +49,11 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
|
|
|
49
49
|
backgroundColor: theme.palette.grey.light,
|
|
50
50
|
border: "1px solid ".concat(theme.palette.grey.borders),
|
|
51
51
|
boxShadow: "0 2px 4px rgba(0,0,0,0.5)",
|
|
52
|
-
width: theme.spacing(50)
|
|
52
|
+
width: theme.spacing(50),
|
|
53
|
+
display: "flex"
|
|
54
|
+
},
|
|
55
|
+
scopeContainer: {
|
|
56
|
+
width: "100%"
|
|
53
57
|
},
|
|
54
58
|
scopeSelector: {
|
|
55
59
|
display: "flex",
|
|
@@ -108,7 +112,9 @@ var ScopeSelector = function ScopeSelector(_ref) {
|
|
|
108
112
|
onClickAway: function onClickAway(e) {
|
|
109
113
|
return closeSelector(e);
|
|
110
114
|
}
|
|
111
|
-
}, /*#__PURE__*/_react.default.createElement("div",
|
|
115
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
116
|
+
className: classes.scopeContainer
|
|
117
|
+
}, show ? scopeSelectorContent : null)));
|
|
112
118
|
|
|
113
119
|
return scopeSelector;
|
|
114
120
|
};
|
|
@@ -27,6 +27,8 @@ var _I18n = _interopRequireDefault(require("./I18n"));
|
|
|
27
27
|
|
|
28
28
|
var _InternetExplorerWarningMessage = _interopRequireDefault(require("./InternetExplorerWarningMessage"));
|
|
29
29
|
|
|
30
|
+
var _Culture = _interopRequireDefault(require("./Culture"));
|
|
31
|
+
|
|
30
32
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
33
|
|
|
32
34
|
(function () {
|
|
@@ -64,7 +66,7 @@ var Provision = function Provision(_ref) {
|
|
|
64
66
|
theme: theme
|
|
65
67
|
}, /*#__PURE__*/_react.default.createElement(_styles.MuiThemeProvider, {
|
|
66
68
|
theme: muiTheme
|
|
67
|
-
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Head.default, null), /*#__PURE__*/_react.default.createElement(GlobalStyle, null), /*#__PURE__*/_react.default.createElement(_Authenticate.default, null, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Fonts, null), /*#__PURE__*/_react.default.createElement(_DevPages.default, null, /*#__PURE__*/_react.default.createElement(_I18n.default, null, _react.default.Children.only(children), /*#__PURE__*/_react.default.createElement(_InternetExplorerWarningMessage.default, null))))))))));
|
|
69
|
+
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Head.default, null), /*#__PURE__*/_react.default.createElement(_Culture.default, null), /*#__PURE__*/_react.default.createElement(GlobalStyle, null), /*#__PURE__*/_react.default.createElement(_Authenticate.default, null, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Fonts, null), /*#__PURE__*/_react.default.createElement(_DevPages.default, null, /*#__PURE__*/_react.default.createElement(_I18n.default, null, _react.default.Children.only(children), /*#__PURE__*/_react.default.createElement(_InternetExplorerWarningMessage.default, null))))))))));
|
|
68
70
|
};
|
|
69
71
|
|
|
70
72
|
var _default = Provision;
|
|
@@ -35,8 +35,11 @@ var FullPage = function FullPage(_ref) {
|
|
|
35
35
|
location = _ref.location,
|
|
36
36
|
match = _ref.match,
|
|
37
37
|
modulePrependPath = _ref.modulePrependPath,
|
|
38
|
-
isVisible = _ref.isVisible
|
|
38
|
+
_ref$isVisible = _ref.isVisible,
|
|
39
|
+
isVisible = _ref$isVisible === void 0 ? true : _ref$isVisible;
|
|
39
40
|
var component = config.component,
|
|
41
|
+
_config$routerCompone = config.routerComponent,
|
|
42
|
+
routerComponent = _config$routerCompone === void 0 ? null : _config$routerCompone,
|
|
40
43
|
componentProps = config.componentProps,
|
|
41
44
|
_config$pages = config.pages,
|
|
42
45
|
pages = _config$pages === void 0 ? {} : _config$pages,
|
|
@@ -59,12 +62,12 @@ var FullPage = function FullPage(_ref) {
|
|
|
59
62
|
|
|
60
63
|
return /*#__PURE__*/_react.default.createElement(_Page.default, {
|
|
61
64
|
path: path,
|
|
62
|
-
component: component,
|
|
65
|
+
component: component != null ? component : routerComponent,
|
|
63
66
|
pages: pages,
|
|
64
67
|
subpages: subpages,
|
|
65
68
|
location: location,
|
|
66
69
|
match: match,
|
|
67
|
-
isVisible: isVisible,
|
|
70
|
+
isVisible: isVisible === true || routerComponent != null,
|
|
68
71
|
modulePrependPath: modulePrependPath
|
|
69
72
|
});
|
|
70
73
|
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
2
|
+
<path fill="#333" fill-rule="evenodd" d="M23.5,3 C23.7761424,3 24,3.22385763 24,3.5 L24,3.5 L24,8.5 C24,8.77614237 23.7761424,9 23.5,9 L23.5,9 L23,9 L23,21.5 C23,21.7454599 22.8231248,21.9496084 22.5898756,21.9919443 L22.5,22 L1.5,22 C1.22385763,22 1,21.7761424 1,21.5 L1,21.5 L1,9 L0.5,9 C0.254540111,9 0.0503916296,8.82312484 0.00805566941,8.58987563 L0,8.5 L0,3.5 C0,3.22385763 0.223857625,3 0.5,3 L0.5,3 Z M22,9 L2,9 L2,21 L22,21 L22,9 Z M15.5,11 C15.7761424,11 16,11.2238576 16,11.5 L16,11.5 L16,13.5 C16,13.7761424 15.7761424,14 15.5,14 L15.5,14 L8.5,14 C8.22385763,14 8,13.7761424 8,13.5 L8,13.5 L8,11.5 C8,11.2238576 8.22385763,11 8.5,11 L8.5,11 Z M15,12 L9,12 L9,13 L15,13 L15,12 Z M23,4 L1,4 L1,8 L23,8 L23,4 Z"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
2
|
+
<path fill="#333" fill-rule="evenodd" d="M12,0 C15.3141424,0 18,2.68585763 18,6 L18,6 L18,11 L20.5,11 C20.7454599,11 20.9496084,11.1768752 20.9919443,11.4101244 L21,11.5 L21,23.5 C21,23.7761424 20.7761424,24 20.5,24 L20.5,24 L3.5,24 C3.22385763,24 3,23.7761424 3,23.5 L3,23.5 L3,11.5 C3,11.2238576 3.22385763,11 3.5,11 L3.5,11 L6,11 L6,6 C6,2.76117904 8.56516051,0.122408965 11.7750335,0.00413781501 Z M20,12 L4,12 L4,23 L20,23 L20,12 Z M12,15 C12.5523336,15 13,15.4470481 13,16 C13,16.3687862 12.7995319,16.6916367 12.5015919,16.8649998 L12.5,19.5 C12.5,19.7761424 12.2761424,20 12,20 C11.7545401,20 11.5503916,19.8231248 11.5080557,19.5898756 L11.5,19.5 L11.4994027,16.8655778 C11.2009143,16.6923549 11,16.3691964 11,16 C11,15.4470481 11.4476664,15 12,15 Z M12,1 C9.23814237,1 7,3.23814237 7,6 L7,6 L7,11 L17,11 L17,6 C17,3.31082284 14.8781046,1.11815965 12.2169221,1.00461864 L12.2169221,1.00461864 Z"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
2
|
+
<path fill="#333" fill-rule="evenodd" d="M12,0 C15.2381675,0 17.8775613,2.56547691 17.9958612,5.77505506 L18,6 L18,11 L20.5,11 C20.7454599,11 20.9496084,11.1768752 20.9919443,11.4101244 L21,11.5 L21,23.5 C21,23.7761424 20.7761424,24 20.5,24 L20.5,24 L3.5,24 C3.22385763,24 3,23.7761424 3,23.5 L3,23.5 L3,11.5 C3,11.2238576 3.22385763,11 3.5,11 L3.5,11 L17,11 L17,6 C17,3.23850178 14.7612171,1 12,1 C9.23814237,1 7,3.23814237 7,6 C7,6.27614237 6.77614237,6.5 6.5,6.5 C6.22385763,6.5 6,6.27614237 6,6 C6,2.68585763 8.68585763,0 12,0 Z M20,12 L4,12 L4,23 L20,23 L20,12 Z M12,15 C12.5523336,15 13,15.4470481 13,16 C13,16.3687862 12.7995319,16.6916367 12.5015919,16.8649998 L12.5,19.5 C12.5,19.7761424 12.2761424,20 12,20 C11.7545401,20 11.5503916,19.8231248 11.5080557,19.5898756 L11.5,19.5 L11.4994027,16.8655778 C11.2009143,16.6923549 11,16.3691964 11,16 C11,15.4470481 11.4476664,15 12,15 Z"/>
|
|
3
|
+
</svg>
|