@nokecy/qc-ui 1.1.73 → 1.1.75
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/cjs/adapters/pagedApiAdapter.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +5 -3
- package/dist/cjs/ag-grid-plus/interface.d.ts +6 -0
- package/dist/cjs/ag-grid-plus/utils/aggregation.js +8 -14
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.d.ts +2 -1
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +5 -2
- package/dist/cjs/ag-grid-plus/utils/valueEnumColor.d.ts +17 -0
- package/dist/cjs/ag-grid-plus/utils/valueEnumColor.js +99 -0
- package/dist/cjs/dialogSelect/index.d.ts +31 -2
- package/dist/cjs/dialogSelect/index.js +209 -105
- package/dist/cjs/dialogSelect/index.less +39 -0
- package/dist/cjs/draggableModal/index.js +12 -8
- package/dist/cjs/entitySelect/index.d.ts +57 -0
- package/dist/cjs/entitySelect/index.js +172 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +143 -1
- package/dist/cjs/readPretty/arrayTable.d.ts +6 -0
- package/dist/cjs/readPretty/arrayTable.js +156 -0
- package/dist/cjs/readPretty/controls.d.ts +11 -0
- package/dist/cjs/readPretty/controls.js +68 -0
- package/dist/cjs/readPretty/decimal.d.ts +4 -0
- package/dist/cjs/readPretty/decimal.js +28 -0
- package/dist/cjs/readPretty/formily.d.ts +2 -0
- package/dist/cjs/readPretty/formily.js +71 -0
- package/dist/cjs/readPretty/hoistStatics.d.ts +1 -0
- package/dist/cjs/readPretty/hoistStatics.js +37 -0
- package/dist/cjs/readPretty/index.d.ts +11 -0
- package/dist/cjs/readPretty/index.js +70 -0
- package/dist/cjs/readPretty/selectValue.d.ts +7 -0
- package/dist/cjs/readPretty/selectValue.js +60 -0
- package/dist/cjs/readPretty/values.d.ts +4 -0
- package/dist/cjs/readPretty/values.js +49 -0
- package/dist/cjs/toolBar/index.d.ts +1 -0
- package/dist/cjs/toolBar/index.js +44 -10
- package/dist/cjs/toolBar/index.less +25 -7
- package/dist/cjs/utils/businessDecimal.d.ts +11 -0
- package/dist/cjs/utils/businessDecimal.js +53 -0
- package/dist/cjs/utils/contrast.d.ts +40 -0
- package/dist/cjs/utils/contrast.js +153 -0
- package/dist/esm/adapters/pagedApiAdapter.d.ts +2 -0
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +5 -3
- package/dist/esm/ag-grid-plus/interface.d.ts +6 -0
- package/dist/esm/ag-grid-plus/utils/aggregation.js +1 -5
- package/dist/esm/ag-grid-plus/utils/columnProcessors.d.ts +2 -1
- package/dist/esm/ag-grid-plus/utils/columnProcessors.js +5 -2
- package/dist/esm/ag-grid-plus/utils/valueEnumColor.d.ts +17 -0
- package/dist/esm/ag-grid-plus/utils/valueEnumColor.js +95 -0
- package/dist/esm/dialogSelect/index.d.ts +31 -2
- package/dist/esm/dialogSelect/index.js +211 -106
- package/dist/esm/dialogSelect/index.less +39 -0
- package/dist/esm/draggableModal/index.js +12 -8
- package/dist/esm/entitySelect/index.d.ts +57 -0
- package/dist/esm/entitySelect/index.js +164 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/readPretty/arrayTable.d.ts +6 -0
- package/dist/esm/readPretty/arrayTable.js +147 -0
- package/dist/esm/readPretty/controls.d.ts +11 -0
- package/dist/esm/readPretty/controls.js +62 -0
- package/dist/esm/readPretty/decimal.d.ts +4 -0
- package/dist/esm/readPretty/decimal.js +22 -0
- package/dist/esm/readPretty/formily.d.ts +2 -0
- package/dist/esm/readPretty/formily.js +63 -0
- package/dist/esm/readPretty/hoistStatics.d.ts +1 -0
- package/dist/esm/readPretty/hoistStatics.js +31 -0
- package/dist/esm/readPretty/index.d.ts +11 -0
- package/dist/esm/readPretty/index.js +12 -0
- package/dist/esm/readPretty/selectValue.d.ts +7 -0
- package/dist/esm/readPretty/selectValue.js +53 -0
- package/dist/esm/readPretty/values.d.ts +4 -0
- package/dist/esm/readPretty/values.js +43 -0
- package/dist/esm/toolBar/index.d.ts +1 -0
- package/dist/esm/toolBar/index.js +43 -10
- package/dist/esm/toolBar/index.less +25 -7
- package/dist/esm/utils/businessDecimal.d.ts +11 -0
- package/dist/esm/utils/businessDecimal.js +47 -0
- package/dist/esm/utils/contrast.d.ts +40 -0
- package/dist/esm/utils/contrast.js +141 -0
- package/dist/umd/qc-ui.min.css +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
var _excluded = ["request", "columnDefs", "value", "labelField", "valueField", "onChangeItem"]
|
|
1
|
+
var _excluded = ["request", "columnDefs", "value", "labelField", "valueField", "onChangeItem", "hideBtn", "useAutoComplete", "queryFun", "pagedApiAdapter", "modalWidth", "dialogZIndex", "dialogMode", "dialogPageSize", "dialogPageSizeOptions", "dialogGridKey", "dialogDataSource", "dialogIsRowSelectable", "dialogRenderer", "gridComponent"],
|
|
2
|
+
_excluded2 = ["request", "columnDefs", "labelField", "valueField", "onChangeItem", "hideBtn", "useAutoComplete", "queryFun", "pagedApiAdapter", "modalWidth", "dialogZIndex", "dialogMode", "dialogPageSize", "dialogPageSizeOptions", "dialogGridKey", "dialogDataSource", "dialogIsRowSelectable", "dialogRenderer", "gridComponent"];
|
|
2
3
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
4
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
5
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
@@ -17,185 +18,289 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
|
17
18
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
19
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
19
20
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
20
|
-
import {
|
|
21
|
+
import { AutoComplete, ConfigProvider, theme } from 'antd';
|
|
22
|
+
import { observer, useField } from '@formily/react';
|
|
21
23
|
import { Select } from '@formily/antd-v5';
|
|
22
|
-
import {
|
|
24
|
+
import { SearchOutlined } from '@ant-design/icons';
|
|
23
25
|
import React, { useState } from 'react';
|
|
24
26
|
import { AgGridPlus } from "../ag-grid-plus";
|
|
25
27
|
import { useBoolean, useControllableValue } from 'ahooks';
|
|
26
28
|
import DraggableModal from "../draggableModal";
|
|
27
29
|
import { abpPagedApiAdapter } from "../adapters";
|
|
28
|
-
|
|
30
|
+
import { Select as ReadingSelect } from "../readPretty/controls";
|
|
31
|
+
import { normalizeSelectValue } from "../readPretty/selectValue";
|
|
32
|
+
import "./index.less";
|
|
33
|
+
|
|
34
|
+
/** 选择窗口的行选择模式。 */
|
|
35
|
+
|
|
36
|
+
var DialogSelectInner = function DialogSelectInner(props) {
|
|
37
|
+
var _selectRows$length;
|
|
38
|
+
// 这些是本组件自己的属性,不能透传给 Select(否则会落到 DOM 上触发未知属性告警)。
|
|
29
39
|
var request = props.request,
|
|
30
40
|
columnDefs = props.columnDefs,
|
|
31
41
|
value = props.value,
|
|
32
42
|
labelField = props.labelField,
|
|
33
43
|
valueField = props.valueField,
|
|
34
44
|
onChangeItem = props.onChangeItem,
|
|
45
|
+
hideBtn = props.hideBtn,
|
|
46
|
+
useAutoComplete = props.useAutoComplete,
|
|
47
|
+
queryFun = props.queryFun,
|
|
48
|
+
pagedApiAdapter = props.pagedApiAdapter,
|
|
49
|
+
_props$modalWidth = props.modalWidth,
|
|
50
|
+
modalWidth = _props$modalWidth === void 0 ? 960 : _props$modalWidth,
|
|
51
|
+
_props$dialogZIndex = props.dialogZIndex,
|
|
52
|
+
dialogZIndex = _props$dialogZIndex === void 0 ? 9999 : _props$dialogZIndex,
|
|
53
|
+
dialogMode = props.dialogMode,
|
|
54
|
+
dialogPageSize = props.dialogPageSize,
|
|
55
|
+
dialogPageSizeOptions = props.dialogPageSizeOptions,
|
|
56
|
+
dialogGridKey = props.dialogGridKey,
|
|
57
|
+
dialogDataSource = props.dialogDataSource,
|
|
58
|
+
dialogIsRowSelectable = props.dialogIsRowSelectable,
|
|
59
|
+
dialogRenderer = props.dialogRenderer,
|
|
60
|
+
gridComponent = props.gridComponent,
|
|
35
61
|
rest = _objectWithoutProperties(props, _excluded);
|
|
62
|
+
var Grid = gridComponent !== null && gridComponent !== void 0 ? gridComponent : AgGridPlus;
|
|
36
63
|
var _useControllableValue = useControllableValue(props),
|
|
37
64
|
_useControllableValue2 = _slicedToArray(_useControllableValue, 2),
|
|
38
65
|
state = _useControllableValue2[0],
|
|
39
66
|
setState = _useControllableValue2[1];
|
|
40
|
-
var _useState = useState(),
|
|
41
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
42
|
-
gridApi = _useState2[0],
|
|
43
|
-
setGridApi = _useState2[1];
|
|
44
67
|
var _useBoolean = useBoolean(false),
|
|
45
68
|
_useBoolean2 = _slicedToArray(_useBoolean, 2),
|
|
46
69
|
visible = _useBoolean2[0],
|
|
47
70
|
_useBoolean2$ = _useBoolean2[1],
|
|
48
71
|
setTrue = _useBoolean2$.setTrue,
|
|
49
72
|
setFalse = _useBoolean2$.setFalse;
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
selectRows =
|
|
53
|
-
setSelectRows =
|
|
54
|
-
var
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
var label = selectRow[labelField !== null && labelField !== void 0 ? labelField : 'name'];
|
|
66
|
-
if (props.mode === 'multiple' || props.mode === 'tags') {
|
|
67
|
-
return labelInValue ? selectRows.map(function (it) {
|
|
73
|
+
var _useState = useState(undefined),
|
|
74
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
75
|
+
selectRows = _useState2[0],
|
|
76
|
+
setSelectRows = _useState2[1];
|
|
77
|
+
var _theme$useToken = theme.useToken(),
|
|
78
|
+
token = _theme$useToken.token;
|
|
79
|
+
var isMultipleValue = props.mode === 'multiple' || props.mode === 'tags';
|
|
80
|
+
var selectionMode = dialogMode !== null && dialogMode !== void 0 ? dialogMode : isMultipleValue ? 'multiple' : 'single';
|
|
81
|
+
var key = valueField !== null && valueField !== void 0 ? valueField : 'id';
|
|
82
|
+
var localData = Array.isArray(dialogDataSource);
|
|
83
|
+
var getValue = function getValue(rows) {
|
|
84
|
+
var row = rows[0];
|
|
85
|
+
var labelKey = labelField !== null && labelField !== void 0 ? labelField : 'name';
|
|
86
|
+
if (isMultipleValue) {
|
|
87
|
+
return props.labelInValue ? rows.map(function (it) {
|
|
68
88
|
return {
|
|
69
|
-
value: it[
|
|
70
|
-
label: it[
|
|
89
|
+
value: it[key],
|
|
90
|
+
label: it[labelKey],
|
|
71
91
|
key: it === null || it === void 0 ? void 0 : it.id
|
|
72
92
|
};
|
|
73
|
-
}) :
|
|
74
|
-
return it[
|
|
93
|
+
}) : rows.map(function (it) {
|
|
94
|
+
return it[key];
|
|
75
95
|
});
|
|
76
|
-
} else {
|
|
77
|
-
return labelInValue ? {
|
|
78
|
-
value: value,
|
|
79
|
-
label: label
|
|
80
|
-
} : value;
|
|
81
96
|
}
|
|
97
|
+
return props.labelInValue ? {
|
|
98
|
+
value: row[key],
|
|
99
|
+
label: row[labelKey]
|
|
100
|
+
} : row[key];
|
|
82
101
|
};
|
|
83
|
-
var
|
|
84
|
-
var selectRow = selectRows[0];
|
|
85
|
-
setState(getValue(selectRows));
|
|
102
|
+
var close = function close() {
|
|
86
103
|
setFalse();
|
|
87
|
-
|
|
104
|
+
setSelectRows(undefined);
|
|
105
|
+
};
|
|
106
|
+
var confirmRows = function confirmRows(rows) {
|
|
107
|
+
if (!(rows !== null && rows !== void 0 && rows.length)) return;
|
|
108
|
+
if (dialogIsRowSelectable && rows.some(function (row) {
|
|
109
|
+
return !dialogIsRowSelectable(row);
|
|
110
|
+
})) return;
|
|
111
|
+
setState(getValue(rows));
|
|
112
|
+
close();
|
|
113
|
+
// 回传完整数据行,供调用方回填关联字段。
|
|
114
|
+
onChangeItem === null || onChangeItem === void 0 || onChangeItem(selectionMode === 'multiple' ? rows : rows[0]);
|
|
88
115
|
};
|
|
89
116
|
var onSelectionChanged = function onSelectionChanged(e) {
|
|
90
|
-
|
|
91
|
-
setSelectRows(selectedRows);
|
|
117
|
+
setSelectRows(e.api.getSelectedRows());
|
|
92
118
|
};
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
119
|
+
|
|
120
|
+
// 入口做成输入框内的后缀图标:不占右侧宽度,禁用/只读时不出现。@author nokecy
|
|
121
|
+
var canOpen = !props.disabled && !hideBtn;
|
|
122
|
+
var trigger = canOpen ? /*#__PURE__*/React.createElement("span", {
|
|
123
|
+
className: "qc-dialog-select-trigger",
|
|
124
|
+
role: "button",
|
|
125
|
+
"aria-label": "\u6253\u5F00\u9009\u62E9\u7A97\u53E3",
|
|
126
|
+
title: "\u9009\u62E9"
|
|
127
|
+
// 阻止冒泡:点图标只开选择窗口,不展开下拉也不抢走输入框焦点。
|
|
128
|
+
,
|
|
129
|
+
onMouseDown: function onMouseDown(e) {
|
|
130
|
+
e.preventDefault();
|
|
131
|
+
e.stopPropagation();
|
|
132
|
+
},
|
|
133
|
+
onClick: function onClick(e) {
|
|
134
|
+
e.stopPropagation();
|
|
135
|
+
setSelectRows(undefined);
|
|
136
|
+
setTrue();
|
|
97
137
|
}
|
|
98
|
-
},
|
|
138
|
+
}, /*#__PURE__*/React.createElement(SearchOutlined, null)) : undefined;
|
|
139
|
+
var mergedClassName = ['qc-dialog-select', rest.className].filter(Boolean).join(' ');
|
|
140
|
+
var triggerStyle = {
|
|
141
|
+
'--qc-dialog-select-trigger-color': token.colorTextTertiary,
|
|
142
|
+
'--qc-dialog-select-trigger-hover': token.colorPrimary
|
|
143
|
+
};
|
|
144
|
+
var commonProps = _objectSpread(_objectSpread({}, rest), {}, {
|
|
145
|
+
className: mergedClassName,
|
|
99
146
|
value: state,
|
|
100
|
-
style: _objectSpread(_objectSpread({},
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
147
|
+
style: _objectSpread(_objectSpread({}, triggerStyle), rest.style || {})
|
|
148
|
+
}, trigger ? {
|
|
149
|
+
suffixIcon: trigger
|
|
150
|
+
} : {});
|
|
151
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, useAutoComplete && !props.labelInValue ? /*#__PURE__*/React.createElement(AutoComplete, commonProps) : /*#__PURE__*/React.createElement(Select, _extends({
|
|
105
152
|
maxTagCount: 'responsive',
|
|
106
153
|
filterOption: false
|
|
107
|
-
},
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
icon: /*#__PURE__*/React.createElement(DashOutlined, null),
|
|
115
|
-
onClick: function onClick() {
|
|
116
|
-
setTrue();
|
|
117
|
-
},
|
|
118
|
-
disabled: rest.disabled
|
|
119
|
-
}) : null), /*#__PURE__*/React.createElement(DraggableModal, {
|
|
120
|
-
width: 960,
|
|
154
|
+
}, commonProps)), dialogRenderer ? dialogRenderer({
|
|
155
|
+
open: visible,
|
|
156
|
+
mode: selectionMode,
|
|
157
|
+
onCancel: close,
|
|
158
|
+
onConfirm: confirmRows
|
|
159
|
+
}) : /*#__PURE__*/React.createElement(DraggableModal, {
|
|
160
|
+
width: modalWidth,
|
|
121
161
|
title: "\u9009\u62E9",
|
|
122
|
-
|
|
123
|
-
zIndex: 9999
|
|
124
|
-
},
|
|
162
|
+
zIndex: dialogZIndex,
|
|
125
163
|
destroyOnClose: true,
|
|
126
164
|
open: visible,
|
|
127
|
-
onOk:
|
|
128
|
-
|
|
129
|
-
|
|
165
|
+
onOk: function onOk() {
|
|
166
|
+
return confirmRows(selectRows || []);
|
|
167
|
+
},
|
|
168
|
+
onCancel: close,
|
|
169
|
+
okButtonProps: {
|
|
170
|
+
disabled: !(selectRows !== null && selectRows !== void 0 && selectRows.length)
|
|
171
|
+
}
|
|
172
|
+
}, selectionMode === 'multiple' && /*#__PURE__*/React.createElement("div", {
|
|
173
|
+
style: {
|
|
174
|
+
marginBottom: 8,
|
|
175
|
+
textAlign: 'right'
|
|
176
|
+
}
|
|
177
|
+
}, "\u5DF2\u9009 ", (_selectRows$length = selectRows === null || selectRows === void 0 ? void 0 : selectRows.length) !== null && _selectRows$length !== void 0 ? _selectRows$length : 0, " \u9879"), /*#__PURE__*/React.createElement(Grid, _extends({}, gridComponent ? {} : {
|
|
178
|
+
valueEnumContrast: true
|
|
179
|
+
}, {
|
|
180
|
+
gridKey: dialogGridKey,
|
|
181
|
+
dataSource: dialogDataSource,
|
|
182
|
+
hidePagination: localData
|
|
183
|
+
}, localData ? {
|
|
184
|
+
getRowId: function getRowId(_ref) {
|
|
185
|
+
var data = _ref.data;
|
|
186
|
+
return String(data[key]);
|
|
187
|
+
}
|
|
188
|
+
} : {}, {
|
|
130
189
|
style: {
|
|
131
190
|
height: 450
|
|
132
191
|
},
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
// 多选时重开弹窗要把已经选中的行勾回来,否则用户会以为之前的选择丢了。
|
|
192
|
+
pageSize: dialogPageSize,
|
|
193
|
+
pageSizeOptions: dialogPageSizeOptions,
|
|
194
|
+
onFirstDataRendered: function onFirstDataRendered(_ref2) {
|
|
195
|
+
var api = _ref2.api;
|
|
196
|
+
// 重开弹窗要把已经选中的行勾回来,否则用户会以为之前的选择丢了。
|
|
139
197
|
// 放在首屏数据渲染完成时做:弹窗是 destroyOnClose,打开的那一刻表格还没有数据。@author nokecy
|
|
140
|
-
|
|
141
|
-
var
|
|
142
|
-
var selected = state.map(function (it) {
|
|
198
|
+
var current = Array.isArray(state) ? state : state == null ? [] : [state];
|
|
199
|
+
var selected = current.map(function (it) {
|
|
143
200
|
return it && _typeof(it) === 'object' ? it.value : it;
|
|
144
201
|
});
|
|
202
|
+
if (!selected.length) return;
|
|
145
203
|
api.forEachNode(function (node) {
|
|
146
|
-
if (node.data && selected.includes(node.data[key]))
|
|
147
|
-
node.setSelected(true);
|
|
148
|
-
}
|
|
204
|
+
if (node.data && selected.includes(node.data[key])) node.setSelected(true);
|
|
149
205
|
});
|
|
150
206
|
},
|
|
151
|
-
search: (columnDefs === null || columnDefs === void 0 ? void 0 : columnDefs.filter(function (i) {
|
|
207
|
+
search: !localData && (columnDefs === null || columnDefs === void 0 ? void 0 : columnDefs.filter(function (i) {
|
|
152
208
|
return !i.hideInSearch;
|
|
153
209
|
}).length) !== 0,
|
|
154
210
|
onSelectionChanged: onSelectionChanged,
|
|
155
|
-
rowSelection:
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
211
|
+
rowSelection: dialogIsRowSelectable ? {
|
|
212
|
+
mode: selectionMode === 'multiple' ? 'multiRow' : 'singleRow',
|
|
213
|
+
isRowSelectable: function isRowSelectable(node) {
|
|
214
|
+
return !!node.data && dialogIsRowSelectable(node.data);
|
|
215
|
+
}
|
|
216
|
+
} : selectionMode === 'multiple' ? 'multiple' : 'single',
|
|
217
|
+
onRowDoubleClicked: function onRowDoubleClicked(_ref3) {
|
|
218
|
+
var data = _ref3.data;
|
|
219
|
+
if (dialogIsRowSelectable && !dialogIsRowSelectable(data)) return;
|
|
220
|
+
confirmRows([data]);
|
|
163
221
|
},
|
|
164
|
-
request: ( /*#__PURE__*/function () {
|
|
165
|
-
var
|
|
166
|
-
var
|
|
167
|
-
var adapter, data, requestData;
|
|
222
|
+
request: localData ? undefined : ( /*#__PURE__*/function () {
|
|
223
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(params, _, record) {
|
|
224
|
+
var adapter, data;
|
|
168
225
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
169
226
|
while (1) switch (_context.prev = _context.next) {
|
|
170
227
|
case 0:
|
|
171
|
-
adapter =
|
|
228
|
+
adapter = pagedApiAdapter !== null && pagedApiAdapter !== void 0 ? pagedApiAdapter : abpPagedApiAdapter;
|
|
172
229
|
_context.next = 3;
|
|
173
230
|
return request(adapter.toRequest({
|
|
174
|
-
filter:
|
|
231
|
+
filter: queryFun ? queryFun(params === null || params === void 0 ? void 0 : params.filter) : params === null || params === void 0 ? void 0 : params.filter,
|
|
175
232
|
sorter: params === null || params === void 0 ? void 0 : params.sorter,
|
|
176
233
|
skipCount: params === null || params === void 0 ? void 0 : params.skipCount,
|
|
177
|
-
maxResultCount: params === null || params === void 0 ? void 0 : params.maxResultCount
|
|
234
|
+
maxResultCount: params === null || params === void 0 ? void 0 : params.maxResultCount,
|
|
235
|
+
record: record
|
|
178
236
|
}), record);
|
|
179
237
|
case 3:
|
|
180
238
|
data = _context.sent;
|
|
181
|
-
|
|
239
|
+
return _context.abrupt("return", {
|
|
182
240
|
success: true,
|
|
183
241
|
data: adapter.getItems(data),
|
|
184
242
|
total: adapter.getTotal(data)
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
return _context.abrupt("return", requestData);
|
|
188
|
-
case 7:
|
|
243
|
+
});
|
|
244
|
+
case 5:
|
|
189
245
|
case "end":
|
|
190
246
|
return _context.stop();
|
|
191
247
|
}
|
|
192
248
|
}, _callee);
|
|
193
249
|
}));
|
|
194
250
|
return function (_x, _x2, _x3) {
|
|
195
|
-
return
|
|
251
|
+
return _ref4.apply(this, arguments);
|
|
196
252
|
};
|
|
197
253
|
}()),
|
|
198
254
|
columnDefs: columnDefs
|
|
199
|
-
})));
|
|
255
|
+
}))));
|
|
200
256
|
};
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* 选择字段。
|
|
260
|
+
*
|
|
261
|
+
* 不可编辑(自身 disabled、外层 ConfigProvider 禁用,或 Formily 字段 disabled / readOnly / readPretty)时
|
|
262
|
+
* 只显示名称,不保留输入框和弹窗入口;`value` / `defaultValue` 统一规范成 Select 能识别的形状
|
|
263
|
+
* (含 `{ value, label }` 嵌套对象),仅在调用方传了对应属性时才下发,以保持受控/非受控语义。
|
|
264
|
+
*
|
|
265
|
+
* @author nokecy
|
|
266
|
+
*/
|
|
267
|
+
var DialogSelect = observer(function (props) {
|
|
268
|
+
var _props$disabled;
|
|
269
|
+
var field = useField();
|
|
270
|
+
var _ConfigProvider$useCo = ConfigProvider.useConfig(),
|
|
271
|
+
componentDisabled = _ConfigProvider$useCo.componentDisabled;
|
|
272
|
+
var reading = (_props$disabled = props.disabled) !== null && _props$disabled !== void 0 ? _props$disabled : componentDisabled;
|
|
273
|
+
var safeProps = _objectSpread(_objectSpread(_objectSpread({}, props), 'value' in props ? {
|
|
274
|
+
value: normalizeSelectValue(props.value, props.labelInValue)
|
|
275
|
+
} : {}), 'defaultValue' in props ? {
|
|
276
|
+
defaultValue: normalizeSelectValue(props.defaultValue, props.labelInValue)
|
|
277
|
+
} : {});
|
|
278
|
+
if (reading || field !== null && field !== void 0 && field.disabled || field !== null && field !== void 0 && field.readOnly || field !== null && field !== void 0 && field.readPretty) {
|
|
279
|
+
// 阅读态只需要选项与值;弹窗、取数等属性不下发。
|
|
280
|
+
var request = safeProps.request,
|
|
281
|
+
columnDefs = safeProps.columnDefs,
|
|
282
|
+
labelField = safeProps.labelField,
|
|
283
|
+
valueField = safeProps.valueField,
|
|
284
|
+
onChangeItem = safeProps.onChangeItem,
|
|
285
|
+
hideBtn = safeProps.hideBtn,
|
|
286
|
+
useAutoComplete = safeProps.useAutoComplete,
|
|
287
|
+
queryFun = safeProps.queryFun,
|
|
288
|
+
pagedApiAdapter = safeProps.pagedApiAdapter,
|
|
289
|
+
modalWidth = safeProps.modalWidth,
|
|
290
|
+
dialogZIndex = safeProps.dialogZIndex,
|
|
291
|
+
dialogMode = safeProps.dialogMode,
|
|
292
|
+
dialogPageSize = safeProps.dialogPageSize,
|
|
293
|
+
dialogPageSizeOptions = safeProps.dialogPageSizeOptions,
|
|
294
|
+
dialogGridKey = safeProps.dialogGridKey,
|
|
295
|
+
dialogDataSource = safeProps.dialogDataSource,
|
|
296
|
+
dialogIsRowSelectable = safeProps.dialogIsRowSelectable,
|
|
297
|
+
dialogRenderer = safeProps.dialogRenderer,
|
|
298
|
+
gridComponent = safeProps.gridComponent,
|
|
299
|
+
selectProps = _objectWithoutProperties(safeProps, _excluded2);
|
|
300
|
+
return /*#__PURE__*/React.createElement(ReadingSelect, _extends({}, selectProps, {
|
|
301
|
+
disabled: true
|
|
302
|
+
}));
|
|
303
|
+
}
|
|
304
|
+
return /*#__PURE__*/React.createElement(DialogSelectInner, safeProps);
|
|
305
|
+
});
|
|
201
306
|
export default DialogSelect;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// 选择窗口入口放在输入框内部(后缀图标),不再在右侧另占一个按钮的宽度。@author nokecy
|
|
2
|
+
.qc-dialog-select {
|
|
3
|
+
width: 100%;
|
|
4
|
+
|
|
5
|
+
// 后缀图标可点;antd 默认给后缀 pointer-events: none。
|
|
6
|
+
.qc-dialog-select-trigger {
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
cursor: pointer;
|
|
13
|
+
pointer-events: auto;
|
|
14
|
+
color: var(--qc-dialog-select-trigger-color, rgba(0, 0, 0, 0.45));
|
|
15
|
+
transition: color 0.2s;
|
|
16
|
+
|
|
17
|
+
&:hover {
|
|
18
|
+
color: var(--qc-dialog-select-trigger-hover, #1677ff);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// 悬停时 antd 会把后缀淡出、换成清除图标;这里让入口始终可见,清除图标左移一格并排。
|
|
23
|
+
&.ant-select.ant-select:hover .ant-select-arrow:not(:last-child) {
|
|
24
|
+
opacity: 1;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&.ant-select-allow-clear .ant-select-clear {
|
|
28
|
+
inset-inline-end: 31px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&.ant-select-allow-clear .ant-select-selection-item,
|
|
32
|
+
&.ant-select-allow-clear .ant-select-selection-placeholder {
|
|
33
|
+
padding-inline-end: 36px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&.ant-select-multiple .ant-select-selector {
|
|
37
|
+
padding-inline-end: 38px;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -67,14 +67,18 @@ var DraggableModal = function DraggableModal(props) {
|
|
|
67
67
|
// 修复 AgGrid 等组件在 Modal 中高度不展开的问题
|
|
68
68
|
// 当 Modal 打开时触发 window resize 事件
|
|
69
69
|
useEffect(function () {
|
|
70
|
-
if (open)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
});
|
|
77
|
-
}
|
|
70
|
+
if (!open) return;
|
|
71
|
+
// 使用 requestAnimationFrame 和 setTimeout 确保 DOM 完全渲染;卸载或关闭时取消,避免对已销毁的环境派发事件
|
|
72
|
+
var timer;
|
|
73
|
+
var frame = requestAnimationFrame(function () {
|
|
74
|
+
timer = setTimeout(function () {
|
|
75
|
+
window.dispatchEvent(new Event('resize'));
|
|
76
|
+
}, 100);
|
|
77
|
+
});
|
|
78
|
+
return function () {
|
|
79
|
+
cancelAnimationFrame(frame);
|
|
80
|
+
if (timer !== undefined) clearTimeout(timer);
|
|
81
|
+
};
|
|
78
82
|
}, [open]);
|
|
79
83
|
var _onStart = function onStart(_event, uiData) {
|
|
80
84
|
var _draggleRef$current;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { SelectProps } from 'antd/lib/select';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* 实体选择器的骨架。
|
|
5
|
+
*
|
|
6
|
+
* 各业务模块的实体选择器(线体、车间、物料、供应商……)此前是逐个复制出来的:
|
|
7
|
+
* 取数、防抖、受控值、下拉即查、labelInValue、弹窗表格列,每份各写一遍,
|
|
8
|
+
* 真正不同的只有请求函数、提示语和表格列。骨架收在这里,各模块只填自己的那几项。
|
|
9
|
+
*
|
|
10
|
+
* 骨架不认识任何业务契约:请求函数由调用方传入,不引用任何生成服务客户端。
|
|
11
|
+
*
|
|
12
|
+
* @author nokecy
|
|
13
|
+
*/
|
|
14
|
+
/** 取数入参:与后端分页查询约定一致。 */
|
|
15
|
+
export interface EntitySelectQuery {
|
|
16
|
+
Filter?: string;
|
|
17
|
+
SkipCount?: number;
|
|
18
|
+
MaxResultCount?: number;
|
|
19
|
+
Sorting?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface EntitySelectConfig {
|
|
22
|
+
/** 取数函数,通常是生成服务客户端里的 XxxGetListAsync。 */
|
|
23
|
+
request: (query: EntitySelectQuery) => Promise<any>;
|
|
24
|
+
/** 未选择时的提示语。 */
|
|
25
|
+
placeholder: string;
|
|
26
|
+
/** 弹窗内表格的列定义。 */
|
|
27
|
+
columnDefs: any[];
|
|
28
|
+
/** 下拉项与回填值取哪个字段。传字符串则固定;不传则由 useCode 在 code 与 id 之间切换。 */
|
|
29
|
+
valueField?: string;
|
|
30
|
+
/** 回填标签取哪个字段。不传则不向 DialogSelect 声明,沿用其自身默认。 */
|
|
31
|
+
labelField?: string;
|
|
32
|
+
/** 弹窗宽度,不传则用 DialogSelect 的默认值。 */
|
|
33
|
+
modalWidth?: number;
|
|
34
|
+
/** 单页取数条数,默认 300。 */
|
|
35
|
+
pageSize?: number;
|
|
36
|
+
/** useCode 的默认值,默认 true(以编码而非主键作为值)。 */
|
|
37
|
+
useCodeByDefault?: boolean;
|
|
38
|
+
/** 搜索关键字如何拼成后端过滤表达式,默认按 name 或 code 模糊匹配。返回 undefined 表示不带过滤条件。 */
|
|
39
|
+
buildFilter?: (keyword: string) => string | undefined;
|
|
40
|
+
/** 下拉项显示文本,默认「编码 - 名称」。 */
|
|
41
|
+
renderOptionLabel?: (item: any) => React.ReactNode;
|
|
42
|
+
/** 下拉项需要额外属性时的逃生舱:整项自渲染,优先于 renderOptionLabel。 */
|
|
43
|
+
renderOption?: (item: any, valueField: string) => React.ReactNode;
|
|
44
|
+
/** 联动回调的 prop 名,如 onWorkLineSelect。声明后组件支持 enableLinkage。 */
|
|
45
|
+
linkagePropName?: string;
|
|
46
|
+
/** 选择窗口里使用的表格组件,不传则用 AgGridPlus;宿主可注入自己封装过的表格基座。 */
|
|
47
|
+
gridComponent?: React.ComponentType<any>;
|
|
48
|
+
}
|
|
49
|
+
export interface EntitySelectProps extends SelectProps<any> {
|
|
50
|
+
/** 以编码而非主键作为选中值。 */
|
|
51
|
+
useCode?: boolean;
|
|
52
|
+
/** 选中后把整条记录回调给使用方,需配置 linkagePropName。 */
|
|
53
|
+
enableLinkage?: boolean;
|
|
54
|
+
}
|
|
55
|
+
declare const createEntitySelect: (config: EntitySelectConfig) => React.ForwardRefExoticComponent<Omit<any, "ref"> & React.RefAttributes<any>>;
|
|
56
|
+
export { createEntitySelect };
|
|
57
|
+
export default createEntitySelect;
|