amis 1.9.1-beta.1 → 1.9.1-beta.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (248) hide show
  1. package/lib/RootRenderer.js +10 -2
  2. package/lib/RootRenderer.js.map +2 -2
  3. package/lib/Schema.d.ts +3 -2
  4. package/lib/Schema.js.map +1 -1
  5. package/lib/components/Alert2.d.ts +10 -10
  6. package/lib/components/Button.d.ts +11 -10
  7. package/lib/components/Button.js +2 -2
  8. package/lib/components/Button.js.map +2 -2
  9. package/lib/components/CalendarMobile.d.ts +40 -40
  10. package/lib/components/Checkbox.js +1 -1
  11. package/lib/components/Checkbox.js.map +2 -2
  12. package/lib/components/ContextMenu.d.ts +4 -0
  13. package/lib/components/ContextMenu.js +23 -7
  14. package/lib/components/ContextMenu.js.map +2 -2
  15. package/lib/components/DatePicker.d.ts +40 -40
  16. package/lib/components/DateRangePicker.d.ts +40 -40
  17. package/lib/components/Form.d.ts +22 -0
  18. package/lib/components/Form.js +44 -0
  19. package/lib/components/Form.js.map +13 -0
  20. package/lib/components/FormField.d.ts +65 -0
  21. package/lib/components/FormField.js +48 -0
  22. package/lib/components/FormField.js.map +13 -0
  23. package/lib/components/InputBox.d.ts +10 -10
  24. package/lib/components/InputBox.js +4 -3
  25. package/lib/components/InputBox.js.map +2 -2
  26. package/lib/components/InputBoxWithSuggestion.d.ts +280 -0
  27. package/lib/components/InputBoxWithSuggestion.js +65 -0
  28. package/lib/components/InputBoxWithSuggestion.js.map +13 -0
  29. package/lib/components/ListGroup.d.ts +10 -10
  30. package/lib/components/PickerContainer.d.ts +4 -2
  31. package/lib/components/PickerContainer.js +28 -5
  32. package/lib/components/PickerContainer.js.map +2 -2
  33. package/lib/components/Radios.d.ts +10 -10
  34. package/lib/components/ResultBox.d.ts +40 -40
  35. package/lib/components/SearchBox.d.ts +40 -40
  36. package/lib/components/Select.d.ts +195 -202
  37. package/lib/components/Select.js +7 -3
  38. package/lib/components/Select.js.map +2 -2
  39. package/lib/components/Textarea.d.ts +568 -2
  40. package/lib/components/Textarea.js +129 -1
  41. package/lib/components/Textarea.js.map +2 -2
  42. package/lib/components/Toast.js +11 -9
  43. package/lib/components/Toast.js.map +2 -2
  44. package/lib/components/UserSelect.d.ts +500 -0
  45. package/lib/components/UserSelect.js +559 -0
  46. package/lib/components/UserSelect.js.map +13 -0
  47. package/lib/components/UserTabSelect.d.ts +320 -0
  48. package/lib/components/UserTabSelect.js +163 -0
  49. package/lib/components/UserTabSelect.js.map +13 -0
  50. package/lib/components/WithRemoteConfig.d.ts +7 -0
  51. package/lib/components/WithRemoteConfig.js +17 -11
  52. package/lib/components/WithRemoteConfig.js.map +2 -2
  53. package/lib/components/calendar/DaysView.d.ts +26 -1
  54. package/lib/components/calendar/DaysView.js +48 -14
  55. package/lib/components/calendar/DaysView.js.map +2 -2
  56. package/lib/components/calendar/TimeView.d.ts +1 -1
  57. package/lib/components/calendar/TimeView.js +8 -2
  58. package/lib/components/calendar/TimeView.js.map +2 -2
  59. package/lib/components/icons.d.ts +7 -1
  60. package/lib/components/icons.js +17 -1
  61. package/lib/components/icons.js.map +2 -2
  62. package/lib/components/index.d.ts +2 -1
  63. package/lib/components/index.js +3 -1
  64. package/lib/components/index.js.map +2 -2
  65. package/lib/components/json-schema/Array.d.ts +3 -0
  66. package/lib/components/json-schema/Array.js +125 -0
  67. package/lib/components/json-schema/Array.js.map +13 -0
  68. package/lib/components/json-schema/Item.d.ts +3 -0
  69. package/lib/components/json-schema/Item.js +34 -0
  70. package/lib/components/json-schema/Item.js.map +13 -0
  71. package/lib/components/json-schema/Object.d.ts +3 -0
  72. package/lib/components/json-schema/Object.js +178 -0
  73. package/lib/components/json-schema/Object.js.map +13 -0
  74. package/lib/components/json-schema/index.d.ts +279 -0
  75. package/lib/components/json-schema/index.js +16 -0
  76. package/lib/components/json-schema/index.js.map +13 -0
  77. package/lib/components/schema-editor/Array.js +2 -2
  78. package/lib/components/schema-editor/Array.js.map +2 -2
  79. package/lib/components/schema-editor/Common.d.ts +2 -0
  80. package/lib/components/schema-editor/Common.js +39 -3
  81. package/lib/components/schema-editor/Common.js.map +2 -2
  82. package/lib/components/schema-editor/Object.js +2 -2
  83. package/lib/components/schema-editor/Object.js.map +2 -2
  84. package/lib/components/schema-editor/index.d.ts +45 -41
  85. package/lib/components/schema-editor/index.js +5 -5
  86. package/lib/components/schema-editor/index.js.map +2 -2
  87. package/lib/hooks/use-validation-resolver.d.ts +1 -0
  88. package/lib/hooks/use-validation-resolver.js +49 -0
  89. package/lib/hooks/use-validation-resolver.js.map +13 -0
  90. package/lib/icons/department.js +17 -0
  91. package/lib/icons/menu.js +9 -0
  92. package/lib/icons/post.js +15 -0
  93. package/lib/icons/role.js +14 -0
  94. package/lib/icons/user-remove.js +12 -0
  95. package/lib/index.d.ts +2 -0
  96. package/lib/index.js +3 -1
  97. package/lib/index.js.map +2 -2
  98. package/lib/locale/de-DE.js +11 -1
  99. package/lib/locale/de-DE.js.map +2 -2
  100. package/lib/locale/en-US.js +12 -1
  101. package/lib/locale/en-US.js.map +2 -2
  102. package/lib/locale/zh-CN.js +14 -3
  103. package/lib/locale/zh-CN.js.map +2 -2
  104. package/lib/renderers/Action.js +25 -11
  105. package/lib/renderers/Action.js.map +2 -2
  106. package/lib/renderers/CRUD.js +5 -1
  107. package/lib/renderers/CRUD.js.map +2 -2
  108. package/lib/renderers/Dialog.js +9 -3
  109. package/lib/renderers/Dialog.js.map +2 -2
  110. package/lib/renderers/Drawer.js +5 -1
  111. package/lib/renderers/Drawer.js.map +2 -2
  112. package/lib/renderers/Form/InputDate.d.ts +2 -2
  113. package/lib/renderers/Form/InputDate.js.map +2 -2
  114. package/lib/renderers/Form/JSONSchema.d.ts +23 -0
  115. package/lib/renderers/Form/JSONSchema.js +44 -0
  116. package/lib/renderers/Form/JSONSchema.js.map +13 -0
  117. package/lib/renderers/Form/JSONSchemaEditor.d.ts +2 -3
  118. package/lib/renderers/Form/JSONSchemaEditor.js +9 -24
  119. package/lib/renderers/Form/JSONSchemaEditor.js.map +2 -2
  120. package/lib/renderers/Form/Textarea.d.ts +1 -8
  121. package/lib/renderers/Form/Textarea.js +11 -75
  122. package/lib/renderers/Form/Textarea.js.map +2 -2
  123. package/lib/renderers/Form/UserSelect.d.ts +54 -0
  124. package/lib/renderers/Form/UserSelect.js +197 -0
  125. package/lib/renderers/Form/UserSelect.js.map +13 -0
  126. package/lib/renderers/Form/index.d.ts +1 -1
  127. package/lib/renderers/Form/index.js +88 -42
  128. package/lib/renderers/Form/index.js.map +2 -2
  129. package/lib/renderers/Log.d.ts +13 -1
  130. package/lib/renderers/Log.js +82 -16
  131. package/lib/renderers/Log.js.map +2 -2
  132. package/lib/renderers/Page.js +5 -1
  133. package/lib/renderers/Page.js.map +2 -2
  134. package/lib/renderers/Service.js +5 -1
  135. package/lib/renderers/Service.js.map +2 -2
  136. package/lib/renderers/Wizard.js +37 -14
  137. package/lib/renderers/Wizard.js.map +2 -2
  138. package/lib/store/form.js +65 -45
  139. package/lib/store/form.js.map +2 -2
  140. package/lib/themes/ang-ie11.css +561 -21
  141. package/lib/themes/ang.css +538 -9
  142. package/lib/themes/ang.css.map +1 -1
  143. package/lib/themes/antd-ie11.css +561 -21
  144. package/lib/themes/antd.css +538 -9
  145. package/lib/themes/antd.css.map +1 -1
  146. package/lib/themes/cxd-ie11.css +561 -21
  147. package/lib/themes/cxd.css +538 -9
  148. package/lib/themes/cxd.css.map +1 -1
  149. package/lib/themes/dark-ie11.css +561 -21
  150. package/lib/themes/dark.css +538 -9
  151. package/lib/themes/dark.css.map +1 -1
  152. package/lib/themes/default-ie11.css +561 -21
  153. package/lib/themes/default.css +538 -9
  154. package/lib/themes/default.css.map +1 -1
  155. package/lib/utils/api.js +1 -1
  156. package/lib/utils/api.js.map +2 -2
  157. package/lib/utils/renderer-event.js.map +2 -2
  158. package/package.json +2 -1
  159. package/schema.json +539 -3
  160. package/scss/_properties.scss +20 -8
  161. package/scss/components/_input-box.scss +22 -1
  162. package/scss/components/_json-schema.scss +124 -0
  163. package/scss/components/_log.scss +37 -5
  164. package/scss/components/form/_date-range.scss +1 -0
  165. package/scss/components/form/_select.scss +9 -0
  166. package/scss/components/form/_user-select.scss +422 -0
  167. package/scss/themes/_common.scss +2 -0
  168. package/sdk/ang-ie11.css +651 -21
  169. package/sdk/ang.css +628 -9
  170. package/sdk/antd-ie11.css +651 -21
  171. package/sdk/antd.css +628 -9
  172. package/sdk/barcode.js +51 -51
  173. package/sdk/charts.js +14 -14
  174. package/sdk/codemirror.js +7 -7
  175. package/sdk/color-picker.js +65 -65
  176. package/sdk/cropperjs.js +2 -2
  177. package/sdk/cxd-ie11.css +651 -21
  178. package/sdk/cxd.css +628 -9
  179. package/sdk/dark-ie11.css +651 -21
  180. package/sdk/dark.css +628 -9
  181. package/sdk/exceljs.js +1 -1
  182. package/sdk/locale/de-DE.js +11 -1
  183. package/sdk/markdown.js +69 -69
  184. package/sdk/papaparse.js +1 -1
  185. package/sdk/renderers/Form/CityDB.js +1 -1
  186. package/sdk/rest.js +16 -16
  187. package/sdk/rich-text.js +62 -62
  188. package/sdk/sdk-ie11.css +651 -21
  189. package/sdk/sdk.css +628 -9
  190. package/sdk/sdk.js +1655 -1643
  191. package/sdk/thirds/hls.js/hls.js +1 -1
  192. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  193. package/sdk/tinymce.js +57 -57
  194. package/src/RootRenderer.tsx +27 -15
  195. package/src/Schema.ts +5 -1
  196. package/src/components/Button.tsx +3 -0
  197. package/src/components/Checkbox.tsx +2 -1
  198. package/src/components/ContextMenu.tsx +25 -7
  199. package/src/components/Form.tsx +70 -0
  200. package/src/components/FormField.tsx +127 -0
  201. package/src/components/InputBox.tsx +4 -1
  202. package/src/components/InputBoxWithSuggestion.tsx +113 -0
  203. package/src/components/PickerContainer.tsx +20 -5
  204. package/src/components/Select.tsx +18 -10
  205. package/src/components/Textarea.tsx +234 -2
  206. package/src/components/Toast.tsx +19 -18
  207. package/src/components/UserSelect.tsx +850 -0
  208. package/src/components/UserTabSelect.tsx +261 -0
  209. package/src/components/WithRemoteConfig.tsx +22 -7
  210. package/src/components/calendar/DaysView.tsx +53 -16
  211. package/src/components/calendar/TimeView.tsx +10 -5
  212. package/src/components/icons.tsx +17 -1
  213. package/src/components/index.tsx +3 -1
  214. package/src/components/json-schema/Array.tsx +216 -0
  215. package/src/components/json-schema/Item.tsx +47 -0
  216. package/src/components/json-schema/Object.tsx +339 -0
  217. package/src/components/json-schema/index.tsx +44 -0
  218. package/src/components/schema-editor/Array.tsx +3 -1
  219. package/src/components/schema-editor/Common.tsx +61 -4
  220. package/src/components/schema-editor/Object.tsx +3 -1
  221. package/src/components/schema-editor/index.tsx +12 -5
  222. package/src/hooks/use-validation-resolver.ts +45 -0
  223. package/src/icons/department.svg +17 -0
  224. package/src/icons/menu.svg +2 -0
  225. package/src/icons/post.svg +15 -0
  226. package/src/icons/role.svg +14 -0
  227. package/src/icons/user-remove.svg +12 -0
  228. package/src/index.tsx +2 -0
  229. package/src/locale/de-DE.ts +11 -1
  230. package/src/locale/en-US.ts +12 -1
  231. package/src/locale/zh-CN.ts +14 -3
  232. package/src/renderers/Action.tsx +10 -9
  233. package/src/renderers/CRUD.tsx +5 -1
  234. package/src/renderers/Dialog.tsx +9 -3
  235. package/src/renderers/Drawer.tsx +5 -1
  236. package/src/renderers/Form/InputDate.tsx +9 -4
  237. package/src/renderers/Form/JSONSchema.tsx +56 -0
  238. package/src/renderers/Form/JSONSchemaEditor.tsx +8 -27
  239. package/src/renderers/Form/Textarea.tsx +7 -117
  240. package/src/renderers/Form/UserSelect.tsx +263 -0
  241. package/src/renderers/Form/index.tsx +28 -18
  242. package/src/renderers/Log.tsx +148 -13
  243. package/src/renderers/Page.tsx +6 -1
  244. package/src/renderers/Service.tsx +5 -1
  245. package/src/renderers/Wizard.tsx +24 -10
  246. package/src/store/form.ts +24 -17
  247. package/src/utils/api.ts +1 -1
  248. package/src/utils/renderer-event.ts +0 -2
@@ -0,0 +1,559 @@
1
+ "use strict";
2
+ /**
3
+ * @file 移动端人员、部门、角色、岗位选择
4
+ * @author fex
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.UserSelect = void 0;
8
+ var tslib_1 = require("tslib");
9
+ var react_1 = (0, tslib_1.__importDefault)(require("react"));
10
+ var theme_1 = require("../theme");
11
+ var locale_1 = require("../locale");
12
+ var components_1 = require("../components");
13
+ var Options_1 = require("../renderers/Form/Options");
14
+ var sortablejs_1 = (0, tslib_1.__importDefault)(require("sortablejs"));
15
+ var PopUp_1 = (0, tslib_1.__importDefault)(require("../components/PopUp"));
16
+ var InputBox_1 = (0, tslib_1.__importDefault)(require("../components/InputBox"));
17
+ var icons_1 = require("../components/icons");
18
+ var debounce_1 = (0, tslib_1.__importDefault)(require("lodash/debounce"));
19
+ var helper_1 = require("../utils/helper");
20
+ var Checkbox_1 = (0, tslib_1.__importDefault)(require("../components/Checkbox"));
21
+ var Select_1 = require("./Select");
22
+ var Spinner_1 = (0, tslib_1.__importDefault)(require("../components/Spinner"));
23
+ var flatten_1 = (0, tslib_1.__importDefault)(require("lodash/flatten"));
24
+ var UserSelect = /** @class */ (function (_super) {
25
+ (0, tslib_1.__extends)(UserSelect, _super);
26
+ function UserSelect(props) {
27
+ var _this = _super.call(this, props) || this;
28
+ _this.unmounted = false;
29
+ _this.lazySearch = (0, debounce_1.default)(function (text) {
30
+ (function (text) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
31
+ var onSearch, result;
32
+ var _this = this;
33
+ return (0, tslib_1.__generator)(this, function (_a) {
34
+ switch (_a.label) {
35
+ case 0:
36
+ onSearch = this.props.onSearch;
37
+ return [4 /*yield*/, onSearch(text, function (cancelExecutor) { return (_this.cancelSearch = cancelExecutor); })];
38
+ case 1:
39
+ result = _a.sent();
40
+ if (this.unmounted) {
41
+ return [2 /*return*/];
42
+ }
43
+ if (!Array.isArray(result)) {
44
+ throw new Error('onSearch 需要返回数组');
45
+ }
46
+ this.setState({
47
+ searchList: result,
48
+ searchLoading: false
49
+ });
50
+ return [2 /*return*/];
51
+ }
52
+ });
53
+ }); })(text).catch(function (e) {
54
+ _this.setState({ searchLoading: false });
55
+ console.error(e);
56
+ });
57
+ }, 250, {
58
+ trailing: true,
59
+ leading: false
60
+ });
61
+ _this.state = {
62
+ isOpened: false,
63
+ isSelectOpened: false,
64
+ inputValue: '',
65
+ options: _this.props.options || [],
66
+ breadList: [],
67
+ searchList: [],
68
+ tempSelection: [],
69
+ selection: props.selection || [],
70
+ isSearch: false,
71
+ searchLoading: false,
72
+ isEdit: false
73
+ };
74
+ return _this;
75
+ }
76
+ UserSelect.prototype.componentDidMount = function () { };
77
+ UserSelect.prototype.componentDidUpdate = function (prevProps) {
78
+ var _a = this.props, options = _a.options, value = _a.value;
79
+ if (prevProps.options !== options) {
80
+ if (options &&
81
+ options.length === 1 &&
82
+ options[0].leftOptions &&
83
+ Array.isArray(options[0].children)) {
84
+ var leftOptions = options[0].leftOptions;
85
+ this.setState({
86
+ options: leftOptions
87
+ });
88
+ }
89
+ else {
90
+ // 部门选择
91
+ this.setState({
92
+ options: options
93
+ });
94
+ }
95
+ }
96
+ if (JSON.stringify(value) !== JSON.stringify(prevProps.value) ||
97
+ JSON.stringify(options) !== JSON.stringify(prevProps.options)) {
98
+ var selection = (0, Select_1.value2array)(value, this.props);
99
+ this.setState({
100
+ selection: selection
101
+ });
102
+ }
103
+ };
104
+ UserSelect.prototype.componentWillUnmount = function () {
105
+ this.unmounted = true;
106
+ };
107
+ UserSelect.prototype.onClose = function () {
108
+ this.setState({
109
+ isOpened: false,
110
+ isSearch: false,
111
+ inputValue: '',
112
+ searchList: [],
113
+ searchLoading: false
114
+ });
115
+ };
116
+ UserSelect.prototype.handleSearch = function (text) {
117
+ var _this = this;
118
+ if (text) {
119
+ this.setState({
120
+ isSearch: true,
121
+ searchLoading: true,
122
+ inputValue: text
123
+ }, function () {
124
+ // 如果有取消搜索,先取消掉。
125
+ _this.cancelSearch && _this.cancelSearch();
126
+ _this.lazySearch(text);
127
+ });
128
+ }
129
+ else {
130
+ this.handleSeachCancel();
131
+ }
132
+ };
133
+ UserSelect.prototype.handleSeachCancel = function () {
134
+ this.setState({
135
+ isSearch: false,
136
+ searchLoading: false,
137
+ inputValue: ''
138
+ });
139
+ };
140
+ UserSelect.prototype.swapSelectPosition = function (oldIndex, newIndex) {
141
+ var tempSelection = this.state.tempSelection;
142
+ tempSelection.splice(newIndex, 0, tempSelection.splice(oldIndex, 1)[0]);
143
+ this.setState({ tempSelection: tempSelection });
144
+ };
145
+ UserSelect.prototype.dragRef = function (ref) {
146
+ if (ref) {
147
+ this.initDragging();
148
+ }
149
+ };
150
+ UserSelect.prototype.initDragging = function () {
151
+ var _this = this;
152
+ var ns = this.props.classPrefix;
153
+ this.sortable = new sortablejs_1.default(document.querySelector(".".concat(ns, "UserSelect-checkContent")), {
154
+ group: "UserSelect-checkContent",
155
+ animation: 150,
156
+ handle: ".".concat(ns, "UserSelect-dragBar"),
157
+ ghostClass: "".concat(ns, "UserSelect--dragging"),
158
+ onEnd: function (e) {
159
+ if (!_this.state.isEdit || e.newIndex === e.oldIndex) {
160
+ return;
161
+ }
162
+ var parent = e.to;
163
+ if (e.oldIndex < parent.childNodes.length - 1) {
164
+ parent.insertBefore(e.item, parent.childNodes[e.oldIndex]);
165
+ }
166
+ else {
167
+ parent.appendChild(e.item);
168
+ }
169
+ _this.swapSelectPosition(e.oldIndex, e.newIndex);
170
+ }
171
+ });
172
+ };
173
+ UserSelect.prototype.destroyDragging = function () {
174
+ this.sortable && this.sortable.destroy();
175
+ };
176
+ UserSelect.prototype.onOpen = function () {
177
+ var selection = this.state.selection;
178
+ this.setState({
179
+ isOpened: true,
180
+ tempSelection: selection.slice()
181
+ });
182
+ };
183
+ UserSelect.prototype.handleBack = function () {
184
+ this.setState({
185
+ isOpened: false,
186
+ inputValue: '',
187
+ isSearch: false,
188
+ searchList: [],
189
+ breadList: []
190
+ });
191
+ };
192
+ UserSelect.prototype.handleExpand = function (option) {
193
+ var _a;
194
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
195
+ var _b, deferLoad, isRef, isDep, deferParam, res, res, breadList;
196
+ return (0, tslib_1.__generator)(this, function (_c) {
197
+ switch (_c.label) {
198
+ case 0:
199
+ _b = this.props, deferLoad = _b.deferLoad, isRef = _b.isRef, isDep = _b.isDep;
200
+ if (!(!option.isLoaded || (!isRef && isDep && !((_a = option.children) === null || _a === void 0 ? void 0 : _a.length)))) return [3 /*break*/, 4];
201
+ option.isLoaded = true;
202
+ deferParam = option.deferApi ? { deferApi: option.deferApi } : {};
203
+ if (!isRef) return [3 /*break*/, 2];
204
+ return [4 /*yield*/, Promise.all([
205
+ deferLoad(option, false, deferParam),
206
+ deferLoad((0, tslib_1.__assign)((0, tslib_1.__assign)({}, option), { ref: option.value }), true, deferParam)
207
+ ])];
208
+ case 1:
209
+ res = _c.sent();
210
+ option.children = (0, flatten_1.default)(res);
211
+ return [3 /*break*/, 4];
212
+ case 2: return [4 /*yield*/, deferLoad(option, false, deferParam)];
213
+ case 3:
214
+ res = _c.sent();
215
+ option.children = res || [];
216
+ _c.label = 4;
217
+ case 4:
218
+ breadList = this.state.breadList;
219
+ breadList.push(option);
220
+ this.setState({
221
+ breadList: breadList
222
+ });
223
+ return [2 /*return*/];
224
+ }
225
+ });
226
+ });
227
+ };
228
+ UserSelect.prototype.handleSelectChange = function (option, isReplace) {
229
+ var _a = this.props, multiple = _a.multiple, onChange = _a.onChange, _b = _a.valueField, valueField = _b === void 0 ? 'value' : _b, controlled = _a.controlled;
230
+ if (controlled) {
231
+ onChange(option);
232
+ return;
233
+ }
234
+ var selection = this.state.selection.slice();
235
+ // 直接替换的option 肯定是数组
236
+ if (isReplace) {
237
+ selection = option;
238
+ }
239
+ else {
240
+ var selectionVals = selection.map(function (option) { return option[valueField]; });
241
+ var pos = selectionVals.indexOf(option[valueField]);
242
+ if (pos !== -1) {
243
+ selection.splice(selection.indexOf(option), 1);
244
+ }
245
+ else {
246
+ if (multiple) {
247
+ selection.push(option);
248
+ }
249
+ else {
250
+ selection = [option];
251
+ }
252
+ }
253
+ }
254
+ onChange(multiple ? selection : selection === null || selection === void 0 ? void 0 : selection[0]);
255
+ this.setState({
256
+ selection: selection
257
+ });
258
+ return false;
259
+ };
260
+ UserSelect.prototype.onDelete = function (option, isTemp) {
261
+ if (isTemp === void 0) { isTemp = false; }
262
+ var _a = this.props.valueField, valueField = _a === void 0 ? 'value' : _a;
263
+ var _b = this.state, tempSelection = _b.tempSelection, selection = _b.selection;
264
+ var _selection = isTemp ? tempSelection : selection;
265
+ _selection = _selection.filter(function (item) { return item[valueField] !== option[valueField]; });
266
+ if (isTemp) {
267
+ this.setState({ tempSelection: _selection });
268
+ }
269
+ else {
270
+ this.setState({ selection: _selection });
271
+ }
272
+ };
273
+ UserSelect.prototype.handleBreadChange = function (option, index) {
274
+ var breadList = this.state.breadList.slice(0, index);
275
+ this.setState({
276
+ breadList: breadList
277
+ });
278
+ };
279
+ UserSelect.prototype.handleEdit = function () {
280
+ var _a = this.props, multiple = _a.multiple, onChange = _a.onChange, controlled = _a.controlled;
281
+ var _b = this.state, isEdit = _b.isEdit, tempSelection = _b.tempSelection;
282
+ if (isEdit) {
283
+ if (controlled) {
284
+ onChange(multiple ? tempSelection : tempSelection === null || tempSelection === void 0 ? void 0 : tempSelection[0], true);
285
+ this.setState({
286
+ isSelectOpened: false,
287
+ isEdit: false
288
+ });
289
+ return;
290
+ }
291
+ else {
292
+ this.setState({
293
+ isSelectOpened: false,
294
+ isEdit: false,
295
+ selection: tempSelection
296
+ });
297
+ }
298
+ }
299
+ else {
300
+ this.setState({
301
+ isEdit: true
302
+ });
303
+ }
304
+ };
305
+ UserSelect.prototype.renderIcon = function (option, isSelect) {
306
+ var _a = this.props, _b = _a.labelField, labelField = _b === void 0 ? 'label' : _b, cx = _a.classnames, isRef = _a.isRef;
307
+ var isSearch = this.state.isSearch;
308
+ if (!option.icon) {
309
+ if (option.isRef || ((isSearch || isSelect) && isRef)) {
310
+ return (react_1.default.createElement("span", { className: cx('UserSelect-text-userPic') }, option[labelField].slice(0, 1)));
311
+ }
312
+ else {
313
+ // 没有icon默认返回部门图标
314
+ return (react_1.default.createElement("span", { className: cx('icon', 'UserSelect-icon-box', 'department') },
315
+ react_1.default.createElement(icons_1.Icon, { icon: "department", className: "icon" })));
316
+ }
317
+ }
318
+ // 支持角色、岗位等图标配置
319
+ var IconHtml;
320
+ switch (option.icon) {
321
+ case 'user-default-department':
322
+ IconHtml = (react_1.default.createElement("span", { className: cx('icon', 'UserSelect-icon-box', 'department') },
323
+ react_1.default.createElement(icons_1.Icon, { icon: "department", className: "icon" })));
324
+ break;
325
+ case 'user-default-role':
326
+ IconHtml = (react_1.default.createElement("span", { className: cx('icon', 'UserSelect-icon-box', 'role') },
327
+ react_1.default.createElement(icons_1.Icon, { icon: "role", className: "icon" })));
328
+ break;
329
+ case 'user-default-post':
330
+ IconHtml = (react_1.default.createElement("span", { className: cx('icon', 'UserSelect-icon-box', 'post') },
331
+ react_1.default.createElement(icons_1.Icon, { icon: "post", className: "icon" })));
332
+ break;
333
+ case '':
334
+ IconHtml = (react_1.default.createElement("span", { className: cx('UserSelect-text-userPic') }, option[labelField].slice(0, 1)));
335
+ break;
336
+ default:
337
+ IconHtml = (react_1.default.createElement("img", { src: option.icon, className: cx('UserSelect-userPic') }));
338
+ }
339
+ return IconHtml;
340
+ };
341
+ UserSelect.prototype.renderList = function (options, key, isSearch) {
342
+ var _this = this;
343
+ if (options === void 0) { options = []; }
344
+ var _a = this.props, cx = _a.classnames, _b = _a.valueField, valueField = _b === void 0 ? 'value' : _b, _c = _a.labelField, labelField = _c === void 0 ? 'label' : _c, isDep = _a.isDep, isRef = _a.isRef, __ = _a.translate, controlled = _a.controlled;
345
+ var selection = controlled
346
+ ? this.props.selection || []
347
+ : this.state.selection;
348
+ var checkValues = selection.map(function (item) { return item[valueField]; });
349
+ return options.length ? (react_1.default.createElement("div", { className: cx('UserSelect-memberList-box'), key: key },
350
+ react_1.default.createElement("ul", { className: cx("UserSelect-memberList"), key: key }, options.map(function (option, index) {
351
+ var _a;
352
+ var hasChildren = (isRef && !option.isRef) ||
353
+ (isDep && (option.defer || ((_a = option.children) === null || _a === void 0 ? void 0 : _a.length)));
354
+ var checkVisible = (isDep && isRef) ||
355
+ (isRef && option.isRef) ||
356
+ (isDep && !isRef) ||
357
+ isSearch;
358
+ var userIcon = _this.renderIcon(option);
359
+ return (react_1.default.createElement("li", { key: index },
360
+ checkVisible ? (react_1.default.createElement(Checkbox_1.default, { size: "sm", checked: checkValues.includes(option[valueField]), label: '', onChange: function () { return _this.handleSelectChange(option); } })) : null,
361
+ react_1.default.createElement("span", { className: cx('UserSelect-memberName'), onClick: function () {
362
+ return checkVisible
363
+ ? _this.handleSelectChange(option)
364
+ : hasChildren && _this.handleExpand(option);
365
+ } },
366
+ userIcon ? (react_1.default.createElement("span", { className: cx('UserSelect-userPic-box') }, userIcon)) : null,
367
+ react_1.default.createElement("span", { className: cx('UserSelect-label') }, option[labelField])),
368
+ !isSearch && hasChildren ? (react_1.default.createElement("span", { className: cx("UserSelect-more"), onClick: function () { return _this.handleExpand(option); } },
369
+ react_1.default.createElement(icons_1.Icon, { icon: "caret", className: "icon" }))) : null));
370
+ })))) : (react_1.default.createElement("div", { className: cx("UserSelect-noRecord") },
371
+ __('placeholder.noOption'),
372
+ "~"));
373
+ };
374
+ UserSelect.prototype.renderselectList = function (options) {
375
+ var _this = this;
376
+ if (options === void 0) { options = []; }
377
+ var _a = this.props, cx = _a.classnames, _b = _a.labelField, labelField = _b === void 0 ? 'label' : _b, _c = _a.valueField, valueField = _c === void 0 ? 'value' : _c, __ = _a.translate;
378
+ var isEdit = this.state.isEdit;
379
+ return options.length ? (react_1.default.createElement("div", { className: cx('UserSelect-selection-wrap') },
380
+ react_1.default.createElement("ul", { className: cx("UserSelect-selection", "UserSelect-checkContent"), ref: this.dragRef }, options.map(function (option, index) {
381
+ var userIcon = _this.renderIcon(option, true);
382
+ var options = _this.state.options;
383
+ var originOption = (0, helper_1.findTree)(options, function (item) { return item[valueField] === option[valueField]; });
384
+ return (react_1.default.createElement("li", { key: index },
385
+ isEdit ? (react_1.default.createElement("span", { className: cx("UserSelect-del"), onClick: function () { return _this.onDelete(option, true); } },
386
+ react_1.default.createElement(icons_1.Icon, { icon: "user-remove", className: "icon" }))) : null,
387
+ react_1.default.createElement("span", { className: cx("UserSelect-memberName") },
388
+ userIcon ? (react_1.default.createElement("span", { className: cx('UserSelect-userPic-box') }, userIcon)) : null,
389
+ react_1.default.createElement("span", { className: cx('UserSelect-label') }, originOption
390
+ ? originOption[labelField]
391
+ : option[labelField])),
392
+ isEdit ? (react_1.default.createElement("a", { className: cx('UserSelect-dragBar') },
393
+ react_1.default.createElement(icons_1.Icon, { icon: "drag-bar", className: cx('icon') }))) : null));
394
+ })))) : (react_1.default.createElement("div", { className: cx("UserSelect-noRecord") },
395
+ __('placeholder.noOption'),
396
+ "~"));
397
+ };
398
+ UserSelect.prototype.renderContent = function () {
399
+ var _this = this;
400
+ var _a = this.props, navTitle = _a.navTitle, showNav = _a.showNav, searchable = _a.searchable, searchPlaceholder = _a.searchPlaceholder, controlled = _a.controlled, _b = _a.labelField, labelField = _b === void 0 ? 'label' : _b, _c = _a.valueField, valueField = _c === void 0 ? 'value' : _c, cx = _a.classnames, __ = _a.translate;
401
+ var _d = this.state, breadList = _d.breadList, options = _d.options, isSearch = _d.isSearch, searchList = _d.searchList, searchLoading = _d.searchLoading;
402
+ var selection = controlled
403
+ ? this.props.selection || []
404
+ : this.state.selection;
405
+ return (react_1.default.createElement("div", { className: cx("UserSelect-wrap") },
406
+ showNav ? (react_1.default.createElement("div", { className: cx('UserSelect-navbar') },
407
+ react_1.default.createElement("span", { className: "left-arrow-box", onClick: this.handleBack },
408
+ react_1.default.createElement(icons_1.Icon, { icon: "left-arrow", className: "icon" })),
409
+ react_1.default.createElement("div", { className: cx('UserSelect-navbar-title') }, navTitle))) : null,
410
+ searchable ? (react_1.default.createElement("div", { className: cx('UserSelect-searchBox') },
411
+ react_1.default.createElement(InputBox_1.default, { className: cx("UserSelect-search"), value: this.state.inputValue, onChange: this.handleSearch, placeholder: searchPlaceholder, clearable: false }, this.state.isSearch ? (react_1.default.createElement("a", { onClick: this.handleSeachCancel },
412
+ react_1.default.createElement(icons_1.Icon, { icon: "close", className: "icon" }))) : (react_1.default.createElement(icons_1.Icon, { icon: "search", className: "icon" }))))) : null,
413
+ breadList.length ? (react_1.default.createElement("div", { className: cx('UserSelect-breadcrumb') }, breadList
414
+ .map(function (item, index) { return (react_1.default.createElement("span", { className: cx('UserSelect-breadcrumb-item'), key: index, onClick: function () { return _this.handleBreadChange(item, index); } }, item[labelField])); })
415
+ .reduce(function (prev, curr, index) { return [
416
+ prev,
417
+ react_1.default.createElement(icons_1.Icon, { icon: "caret", className: cx('UserSelect-breadcrumb-separator', 'icon'), key: "separator-".concat(index) }),
418
+ curr
419
+ ]; }))) : null,
420
+ (selection === null || selection === void 0 ? void 0 : selection.length) ? (react_1.default.createElement("div", { className: cx("UserSelect-resultBox") },
421
+ react_1.default.createElement("ul", { className: cx("UserSelect-selectList") }, selection.map(function (item, index) {
422
+ var originOption = (0, helper_1.findTree)(options, function (op) { return op[valueField] === item[valueField]; });
423
+ return (react_1.default.createElement("li", { key: index, className: cx('UserSelect-selectList-item') },
424
+ react_1.default.createElement("span", null, originOption
425
+ ? originOption[labelField]
426
+ : item[labelField]),
427
+ react_1.default.createElement("span", { className: cx('UserSelect-selectList-item-closeBox'), onClick: function () { return _this.onDelete(item); } },
428
+ react_1.default.createElement(icons_1.Icon, { icon: "close", className: "icon" }))));
429
+ })),
430
+ react_1.default.createElement("span", { className: cx('UserSelect-selectSort-box'), onClick: function () {
431
+ return _this.setState({
432
+ isSelectOpened: true,
433
+ tempSelection: selection.slice()
434
+ });
435
+ } },
436
+ react_1.default.createElement(icons_1.Icon, { icon: "menu", className: cx('UserSelect-selectSort', 'icon') })))) : null,
437
+ isSearch ? (searchLoading ? (react_1.default.createElement("div", { className: cx("UserSelect-searchLoadingBox") },
438
+ react_1.default.createElement(Spinner_1.default, null))) : (react_1.default.createElement("div", { className: cx('UserSelect-searchResult') }, this.renderList(searchList, -1, true)))) : (react_1.default.createElement("div", { className: cx("UserSelect-contentBox") },
439
+ react_1.default.createElement("div", { className: cx("UserSelect-scroll"), style: {
440
+ width: 100 * (breadList.length + 1) + 'vw',
441
+ left: -breadList.length * 100 + 'vw'
442
+ } },
443
+ this.renderList(options),
444
+ breadList.map(function (option, index) {
445
+ var treeOption = (0, helper_1.findTree)(options, (0, Select_1.optionValueCompare)(option[valueField], valueField || 'value'));
446
+ var children = treeOption.children;
447
+ var hasChildren = Array.isArray(children) && children;
448
+ return hasChildren ? (_this.renderList(children, option[valueField])) : (react_1.default.createElement("div", { className: cx("UserSelect-spinnerBox"), key: index },
449
+ react_1.default.createElement(Spinner_1.default, null)));
450
+ }))))));
451
+ };
452
+ UserSelect.prototype.render = function () {
453
+ var _this = this;
454
+ var _a = this.props, cx = _a.classnames, __ = _a.translate, _b = _a.placeholder, placeholder = _b === void 0 ? '请选择' : _b, showResultBox = _a.showResultBox, controlled = _a.controlled, onChange = _a.onChange;
455
+ var _c = this.state, isOpened = _c.isOpened, tempSelection = _c.tempSelection, isSelectOpened = _c.isSelectOpened, isEdit = _c.isEdit;
456
+ var selection = controlled ? this.props.selection : this.state.selection;
457
+ return (react_1.default.createElement("div", { className: cx('UserSelect') },
458
+ showResultBox ? (react_1.default.createElement(components_1.ResultBox, { className: cx('UserSelect-input', isOpened ? 'is-active' : ''), allowInput: false, result: selection, onResultChange: function (value) { return _this.handleSelectChange(value, true); }, onResultClick: this.onOpen, placeholder: placeholder, useMobileUI: true })) : null,
459
+ showResultBox ? (react_1.default.createElement(PopUp_1.default, { isShow: isOpened, className: cx("UserSelect-popup"), onHide: this.onClose, showClose: false }, this.renderContent())) : (this.renderContent()),
460
+ react_1.default.createElement(PopUp_1.default, { isShow: isSelectOpened, className: cx("UserSelect-selectPopup"), onHide: function () {
461
+ return _this.setState({
462
+ isSelectOpened: false,
463
+ isEdit: false
464
+ });
465
+ }, showClose: false },
466
+ react_1.default.createElement("div", { className: cx('UserSelect-selectBody') },
467
+ react_1.default.createElement("div", { className: cx('UserSelect-navbar') },
468
+ react_1.default.createElement("span", { className: "left-arrow-box", onClick: function () {
469
+ return _this.setState({
470
+ isSelectOpened: false,
471
+ isEdit: false
472
+ });
473
+ } },
474
+ react_1.default.createElement(icons_1.Icon, { icon: "left-arrow", className: "icon" })),
475
+ react_1.default.createElement("div", { className: cx('UserSelect-navbar-title') }, __('UserSelect.resultSort')),
476
+ react_1.default.createElement("span", { className: cx('UserSelect-navbar-btnEdit'), onClick: this.handleEdit }, isEdit ? __('UserSelect.save') : __('UserSelect.edit'))),
477
+ react_1.default.createElement("div", { className: cx('UserSelect-selectList-box') },
478
+ react_1.default.createElement("div", { className: cx('UserSelect-select-head') },
479
+ react_1.default.createElement("span", { className: cx('UserSelect-select-head-text') }, __('UserSelect.selected')),
480
+ isEdit ? (react_1.default.createElement("span", { className: cx('UserSelect-select-head-btnClear'), onClick: function () { return _this.setState({ tempSelection: [] }); } }, __('UserSelect.clear'))) : null),
481
+ this.renderselectList(tempSelection))))));
482
+ };
483
+ var _a, _b, _c, _d;
484
+ UserSelect.defaultProps = {
485
+ showResultBox: true,
486
+ labelField: 'label',
487
+ valueField: 'value'
488
+ };
489
+ (0, tslib_1.__decorate)([
490
+ helper_1.autobind,
491
+ (0, tslib_1.__metadata)("design:type", Function),
492
+ (0, tslib_1.__metadata)("design:paramtypes", []),
493
+ (0, tslib_1.__metadata)("design:returntype", void 0)
494
+ ], UserSelect.prototype, "onClose", null);
495
+ (0, tslib_1.__decorate)([
496
+ helper_1.autobind,
497
+ (0, tslib_1.__metadata)("design:type", Function),
498
+ (0, tslib_1.__metadata)("design:paramtypes", [String]),
499
+ (0, tslib_1.__metadata)("design:returntype", void 0)
500
+ ], UserSelect.prototype, "handleSearch", null);
501
+ (0, tslib_1.__decorate)([
502
+ helper_1.autobind,
503
+ (0, tslib_1.__metadata)("design:type", Function),
504
+ (0, tslib_1.__metadata)("design:paramtypes", []),
505
+ (0, tslib_1.__metadata)("design:returntype", void 0)
506
+ ], UserSelect.prototype, "handleSeachCancel", null);
507
+ (0, tslib_1.__decorate)([
508
+ helper_1.autobind,
509
+ (0, tslib_1.__metadata)("design:type", Function),
510
+ (0, tslib_1.__metadata)("design:paramtypes", [Object]),
511
+ (0, tslib_1.__metadata)("design:returntype", void 0)
512
+ ], UserSelect.prototype, "dragRef", null);
513
+ (0, tslib_1.__decorate)([
514
+ helper_1.autobind,
515
+ (0, tslib_1.__metadata)("design:type", Function),
516
+ (0, tslib_1.__metadata)("design:paramtypes", []),
517
+ (0, tslib_1.__metadata)("design:returntype", void 0)
518
+ ], UserSelect.prototype, "onOpen", null);
519
+ (0, tslib_1.__decorate)([
520
+ helper_1.autobind,
521
+ (0, tslib_1.__metadata)("design:type", Function),
522
+ (0, tslib_1.__metadata)("design:paramtypes", []),
523
+ (0, tslib_1.__metadata)("design:returntype", void 0)
524
+ ], UserSelect.prototype, "handleBack", null);
525
+ (0, tslib_1.__decorate)([
526
+ helper_1.autobind,
527
+ (0, tslib_1.__metadata)("design:type", Function),
528
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_a = typeof Options_1.Option !== "undefined" && Options_1.Option) === "function" ? _a : Object]),
529
+ (0, tslib_1.__metadata)("design:returntype", Promise)
530
+ ], UserSelect.prototype, "handleExpand", null);
531
+ (0, tslib_1.__decorate)([
532
+ helper_1.autobind,
533
+ (0, tslib_1.__metadata)("design:type", Function),
534
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_b = typeof Options_1.Option !== "undefined" && Options_1.Option) === "function" ? _b : Object, Boolean]),
535
+ (0, tslib_1.__metadata)("design:returntype", void 0)
536
+ ], UserSelect.prototype, "handleSelectChange", null);
537
+ (0, tslib_1.__decorate)([
538
+ helper_1.autobind,
539
+ (0, tslib_1.__metadata)("design:type", Function),
540
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_c = typeof Options_1.Option !== "undefined" && Options_1.Option) === "function" ? _c : Object, Boolean]),
541
+ (0, tslib_1.__metadata)("design:returntype", void 0)
542
+ ], UserSelect.prototype, "onDelete", null);
543
+ (0, tslib_1.__decorate)([
544
+ helper_1.autobind,
545
+ (0, tslib_1.__metadata)("design:type", Function),
546
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_d = typeof Options_1.Option !== "undefined" && Options_1.Option) === "function" ? _d : Object, Number]),
547
+ (0, tslib_1.__metadata)("design:returntype", void 0)
548
+ ], UserSelect.prototype, "handleBreadChange", null);
549
+ (0, tslib_1.__decorate)([
550
+ helper_1.autobind,
551
+ (0, tslib_1.__metadata)("design:type", Function),
552
+ (0, tslib_1.__metadata)("design:paramtypes", []),
553
+ (0, tslib_1.__metadata)("design:returntype", void 0)
554
+ ], UserSelect.prototype, "handleEdit", null);
555
+ return UserSelect;
556
+ }(react_1.default.Component));
557
+ exports.UserSelect = UserSelect;
558
+ exports.default = (0, theme_1.themeable)((0, locale_1.localeable)(UserSelect));
559
+ //# sourceMappingURL=./components/UserSelect.js.map