tntd 2.8.38 → 2.8.40
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/es/_util/hooks/useScrollLock.js +64 -0
- package/es/_util/hooks/useScrollLock.js.map +1 -0
- package/es/array-input/index.js +17 -4
- package/es/array-input/index.js.map +1 -1
- package/es/array-input/index.less +123 -1
- package/es/array-input/utils.js +71 -0
- package/es/array-input/utils.js.map +1 -0
- package/es/ellipsis/index.js +11 -1
- package/es/ellipsis/index.js.map +1 -1
- package/es/page-loading/index.less +4 -4
- package/es/page-loading/loading.gif +0 -0
- package/es/tntd-rc-select/style/index.less +20 -2
- package/es/tooltip/tooltip.js +19 -5
- package/es/tooltip/tooltip.js.map +1 -1
- package/lib/_util/hooks/useScrollLock.d.ts +9 -0
- package/lib/_util/hooks/useScrollLock.d.ts.map +1 -0
- package/lib/_util/hooks/useScrollLock.js +107 -0
- package/lib/_util/hooks/useScrollLock.js.map +1 -0
- package/lib/array-input/index.d.ts.map +1 -1
- package/lib/array-input/index.js +17 -4
- package/lib/array-input/index.js.map +1 -1
- package/lib/array-input/index.less +123 -1
- package/lib/array-input/utils.d.ts +2 -0
- package/lib/array-input/utils.d.ts.map +1 -0
- package/lib/array-input/utils.js +414 -0
- package/lib/array-input/utils.js.map +1 -0
- package/lib/ellipsis/index.d.ts.map +1 -1
- package/lib/ellipsis/index.js +11 -1
- package/lib/ellipsis/index.js.map +1 -1
- package/lib/page-loading/index.less +4 -4
- package/lib/page-loading/loading.gif +0 -0
- package/lib/tntd-rc-select/style/index.less +20 -2
- package/lib/tooltip/tooltip.d.ts +1 -0
- package/lib/tooltip/tooltip.d.ts.map +1 -1
- package/lib/tooltip/tooltip.js +23 -9
- package/lib/tooltip/tooltip.js.map +1 -1
- package/package.json +2 -2
package/es/tooltip/tooltip.js
CHANGED
|
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
var _exportNames = {};
|
|
8
8
|
exports["default"] = void 0;
|
|
9
|
-
var _react =
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _configProvider = require("../config-provider");
|
|
11
|
+
var _useScrollLock = _interopRequireDefault(require("../_util/hooks/useScrollLock"));
|
|
11
12
|
var _tooltip = _interopRequireWildcard(require("antd/es/tooltip"));
|
|
12
13
|
Object.keys(_tooltip).forEach(function (key) {
|
|
13
14
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -21,9 +22,9 @@ Object.keys(_tooltip).forEach(function (key) {
|
|
|
21
22
|
});
|
|
22
23
|
});
|
|
23
24
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
25
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
24
26
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
25
27
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
26
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
27
28
|
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
28
29
|
var t = {};
|
|
29
30
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
@@ -41,13 +42,26 @@ var Tooltip = function Tooltip(props) {
|
|
|
41
42
|
theme = _props$theme === void 0 ? '' : _props$theme,
|
|
42
43
|
_props$hiddenArrow = props.hiddenArrow,
|
|
43
44
|
hiddenArrow = _props$hiddenArrow === void 0 ? false : _props$hiddenArrow,
|
|
44
|
-
|
|
45
|
+
enableScrollObserver = props.enableScrollObserver,
|
|
46
|
+
restProps = __rest(props, ["overlayClassName", "theme", "hiddenArrow", "enableScrollObserver"]);
|
|
47
|
+
var isScrolling = (0, _useScrollLock["default"])({
|
|
48
|
+
enableScrollObserver: enableScrollObserver
|
|
49
|
+
});
|
|
50
|
+
var MOUSE_ENTER_DELAY_WHILE_SCROLLING = 9999;
|
|
51
|
+
var DEFAULT_MOUSE_ENTER_DELAY = 0.1;
|
|
52
|
+
var visibleInfo = (0, _react.useMemo)(function () {
|
|
53
|
+
return isScrolling ? {
|
|
54
|
+
visible: false
|
|
55
|
+
} : {};
|
|
56
|
+
}, [isScrolling]);
|
|
45
57
|
return _react["default"].createElement(_configProvider.ConfigConsumer, null, function (_ref) {
|
|
46
58
|
var getPrefixCls = _ref.getPrefixCls;
|
|
47
59
|
var prefixCls = getPrefixCls('tooltip');
|
|
48
60
|
return _react["default"].createElement(_tooltip["default"], Object.assign({
|
|
49
|
-
overlayClassName: (0, _classnames["default"])(prefixCls, 'tnt-tooltip', themeMap(prefixCls, theme), hiddenArrow ? prefixCls
|
|
50
|
-
}, restProps
|
|
61
|
+
overlayClassName: (0, _classnames["default"])(prefixCls, 'tnt-tooltip', themeMap(prefixCls, theme), hiddenArrow ? "".concat(prefixCls, "-arrow-hidden") : '', overlayClassName)
|
|
62
|
+
}, restProps, {
|
|
63
|
+
mouseEnterDelay: isScrolling ? MOUSE_ENTER_DELAY_WHILE_SCROLLING : restProps.mouseEnterDelay || DEFAULT_MOUSE_ENTER_DELAY
|
|
64
|
+
}, visibleInfo));
|
|
51
65
|
});
|
|
52
66
|
};
|
|
53
67
|
var _default = exports["default"] = Tooltip;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/tooltip/tooltip.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/tooltip/tooltip.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,aAAa,MAAM,8BAA8B,CAAA;AACxD,OAAO,WAAW,MAAM,iBAAiB,CAAA;AACzC,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,cAAc,iBAAiB,CAAA;AAC/B,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,UAAkB,EAAE,EAAE;IACzD,OAAO,GAAG,SAAS,IAAI,UAAU,EAAE,CAAA;AACrC,CAAC,CAAA;AAED,MAAM,OAAO,GAET,CAAC,KAAK,EAAE,EAAE;IACZ,MAAM,EACJ,gBAAgB,EAChB,KAAK,GAAG,EAAE,EACV,WAAW,GAAG,KAAK,EACnB,oBAAoB,KAElB,KAAK,EADJ,SAAS,UACV,KAAK,EANH,oEAML,CAAQ,CAAA;IAET,MAAM,WAAW,GAAG,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAE3D,MAAM,iCAAiC,GAAG,IAAI,CAAA;IAC9C,MAAM,yBAAyB,GAAG,GAAG,CAAA;IAErC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9C,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,CACL,oBAAC,cAAc,QACZ,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;QACpB,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;QAEzC,OAAO,CACL,oBAAC,WAAW,kBACV,gBAAgB,EAAE,UAAU,CAC1B,SAAS,EACT,aAAa,EACb,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,EAC1B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,EAC9C,gBAAgB,CACjB,IACG,SAAS,IACb,eAAe,EACb,WAAW;gBACT,CAAC,CAAC,iCAAiC;gBACnC,CAAC,CAAC,SAAS,CAAC,eAAe,IAAI,yBAAyB,IAExD,WAAW,EACf,CACH,CAAA;IACH,CAAC,CACc,CAClB,CAAA;AACH,CAAC,CAAA;AAED,eAAe,OAAO,CAAA","sourcesContent":["import React, { useMemo } from 'react'\nimport type { TooltipProps } from 'antd/es/tooltip'\nimport { ConfigConsumer } from '../config-provider'\nimport useScrollLock from '../_util/hooks/useScrollLock'\nimport AntdTooltip from 'antd/es/tooltip'\nimport classNames from 'classnames'\n\nexport * from 'antd/es/tooltip'\nconst themeMap = (prefixCls: string, themeColor: string) => {\n return `${prefixCls}-${themeColor}`\n}\n\nconst Tooltip: React.FC<\n TooltipProps & { theme?: string; hiddenArrow?: boolean; enableScrollObserver?: boolean }\n> = (props) => {\n const {\n overlayClassName,\n theme = '',\n hiddenArrow = false,\n enableScrollObserver,\n ...restProps\n } = props\n\n const isScrolling = useScrollLock({ enableScrollObserver })\n\n const MOUSE_ENTER_DELAY_WHILE_SCROLLING = 9999\n const DEFAULT_MOUSE_ENTER_DELAY = 0.1\n\n const visibleInfo = useMemo(() => {\n return isScrolling ? { visible: false } : {}\n }, [isScrolling])\n\n return (\n <ConfigConsumer>\n {({ getPrefixCls }) => {\n const prefixCls = getPrefixCls('tooltip')\n\n return (\n <AntdTooltip\n overlayClassName={classNames(\n prefixCls,\n 'tnt-tooltip',\n themeMap(prefixCls, theme),\n hiddenArrow ? `${prefixCls}-arrow-hidden` : '',\n overlayClassName\n )}\n {...restProps}\n mouseEnterDelay={\n isScrolling\n ? MOUSE_ENTER_DELAY_WHILE_SCROLLING\n : restProps.mouseEnterDelay || DEFAULT_MOUSE_ENTER_DELAY\n } // 滚动期间延迟触发\n {...visibleInfo} // 滚动时隐藏 tooltip\n />\n )\n }}\n </ConfigConsumer>\n )\n}\n\nexport default Tooltip\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ScrollControlConfig {
|
|
2
|
+
debounceTime?: number;
|
|
3
|
+
throttleTime?: number;
|
|
4
|
+
scrollContainer?: HTMLElement | Window | null;
|
|
5
|
+
enableScrollObserver?: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare const _default: (config?: ScrollControlConfig | undefined) => boolean;
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=useScrollLock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScrollLock.d.ts","sourceRoot":"","sources":["../../../src/_util/hooks/useScrollLock.ts"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;IAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;;AAGD,wBAoDC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
function _slicedToArray(arr, i) {
|
|
9
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
10
|
+
}
|
|
11
|
+
function _nonIterableRest() {
|
|
12
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
13
|
+
}
|
|
14
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
15
|
+
if (!o) return;
|
|
16
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
17
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
18
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
19
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
20
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
21
|
+
}
|
|
22
|
+
function _arrayLikeToArray(arr, len) {
|
|
23
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
24
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
25
|
+
return arr2;
|
|
26
|
+
}
|
|
27
|
+
function _iterableToArrayLimit(r, l) {
|
|
28
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
29
|
+
if (null != t) {
|
|
30
|
+
var e,
|
|
31
|
+
n,
|
|
32
|
+
i,
|
|
33
|
+
u,
|
|
34
|
+
a = [],
|
|
35
|
+
f = !0,
|
|
36
|
+
o = !1;
|
|
37
|
+
try {
|
|
38
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
39
|
+
if (Object(t) !== t) return;
|
|
40
|
+
f = !1;
|
|
41
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
42
|
+
} catch (r) {
|
|
43
|
+
o = !0, n = r;
|
|
44
|
+
} finally {
|
|
45
|
+
try {
|
|
46
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
47
|
+
} finally {
|
|
48
|
+
if (o) throw n;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return a;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function _arrayWithHoles(arr) {
|
|
55
|
+
if (Array.isArray(arr)) return arr;
|
|
56
|
+
}
|
|
57
|
+
// ==================== 优化版 Hook ====================
|
|
58
|
+
var _default = exports["default"] = function _default(config) {
|
|
59
|
+
var _ref = config || {},
|
|
60
|
+
_ref$enableScrollObse = _ref.enableScrollObserver,
|
|
61
|
+
enableScrollObserver = _ref$enableScrollObse === void 0 ? true : _ref$enableScrollObse,
|
|
62
|
+
_ref$debounceTime = _ref.debounceTime,
|
|
63
|
+
debounceTime = _ref$debounceTime === void 0 ? 100 : _ref$debounceTime,
|
|
64
|
+
_ref$throttleTime = _ref.throttleTime,
|
|
65
|
+
throttleTime = _ref$throttleTime === void 0 ? 50 : _ref$throttleTime,
|
|
66
|
+
_ref$scrollContainer = _ref.scrollContainer,
|
|
67
|
+
scrollContainer = _ref$scrollContainer === void 0 ? window : _ref$scrollContainer;
|
|
68
|
+
// 滚动状态追踪
|
|
69
|
+
var _useState = (0, _react.useState)(false),
|
|
70
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
71
|
+
isScrolling = _useState2[0],
|
|
72
|
+
setIsScrolling = _useState2[1];
|
|
73
|
+
// 定时器引用
|
|
74
|
+
var timerRef = (0, _react.useRef)();
|
|
75
|
+
// 最后一次滚动时间戳
|
|
76
|
+
var lastScrollTime = (0, _react.useRef)(0);
|
|
77
|
+
// ==================== 核心逻辑 ====================
|
|
78
|
+
var handleScroll = (0, _react.useCallback)(function () {
|
|
79
|
+
// 节流控制:限制执行频率
|
|
80
|
+
var now = Date.now();
|
|
81
|
+
if (now - lastScrollTime.current < throttleTime) return;
|
|
82
|
+
lastScrollTime.current = now;
|
|
83
|
+
// 标记开始滚动
|
|
84
|
+
setIsScrolling(true);
|
|
85
|
+
// 防抖控制:延迟结束标记
|
|
86
|
+
if (timerRef.current) clearTimeout(timerRef.current);
|
|
87
|
+
timerRef.current = setTimeout(function () {
|
|
88
|
+
setIsScrolling(false);
|
|
89
|
+
}, debounceTime);
|
|
90
|
+
}, [debounceTime, throttleTime]);
|
|
91
|
+
// ==================== 事件监听 ====================
|
|
92
|
+
(0, _react.useEffect)(function () {
|
|
93
|
+
var container = scrollContainer || window;
|
|
94
|
+
if (!container || !enableScrollObserver) return;
|
|
95
|
+
// 高性能事件监听选项
|
|
96
|
+
var options = {
|
|
97
|
+
passive: true,
|
|
98
|
+
capture: true // 捕获阶段触发
|
|
99
|
+
};
|
|
100
|
+
container.addEventListener('scroll', handleScroll, options);
|
|
101
|
+
return function () {
|
|
102
|
+
container.removeEventListener('scroll', handleScroll, options);
|
|
103
|
+
if (timerRef.current) clearTimeout(timerRef.current);
|
|
104
|
+
};
|
|
105
|
+
}, [handleScroll, scrollContainer, enableScrollObserver]);
|
|
106
|
+
return isScrolling;
|
|
107
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScrollLock.js","sourceRoot":"","sources":["../../../src/_util/hooks/useScrollLock.ts"],"names":[],"mappings":";;AAAA,iCAAgE;AAUhE,qDAAqD;AACrD,kBAAe,CAAC,MAA4B,EAAE,EAAE;IAC9C,MAAM,EACJ,oBAAoB,GAAG,IAAI,EAC3B,YAAY,GAAG,GAAG,EAClB,YAAY,GAAG,EAAE,EACjB,eAAe,GAAG,MAAM,GACzB,GAAG,MAAM,IAAI,EAAE,CAAA;IAEhB,SAAS;IACT,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACrD,QAAQ;IACR,MAAM,QAAQ,GAAG,IAAA,cAAM,GAAiC,CAAA;IACxD,YAAY;IACZ,MAAM,cAAc,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAA;IAEhC,iDAAiD;IACjD,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACpC,cAAc;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,GAAG,GAAG,cAAc,CAAC,OAAO,GAAG,YAAY;YAAE,OAAM;QACvD,cAAc,CAAC,OAAO,GAAG,GAAG,CAAA;QAE5B,SAAS;QACT,cAAc,CAAC,IAAI,CAAC,CAAA;QAEpB,cAAc;QACd,IAAI,QAAQ,CAAC,OAAO;YAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACpD,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,cAAc,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC,EAAE,YAAY,CAAC,CAAA;IAClB,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAA;IAEhC,iDAAiD;IACjD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,eAAe,IAAI,MAAM,CAAA;QAC3C,IAAI,CAAC,SAAS,IAAI,CAAC,oBAAoB;YAAE,OAAM;QAE/C,YAAY;QACZ,MAAM,OAAO,GAA4B;YACvC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI,EAAE,SAAS;SACzB,CAAA;QAED,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QAE3D,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;YAC9D,IAAI,QAAQ,CAAC,OAAO;gBAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACtD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAEzD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA","sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react'\n\n// ==================== 类型定义 ====================\ninterface ScrollControlConfig {\n debounceTime?: number // 防抖时间 (默认: 100ms)\n throttleTime?: number // 节流时间 (默认: 50ms)\n scrollContainer?: HTMLElement | Window | null\n enableScrollObserver?: boolean\n}\n\n// ==================== 优化版 Hook ====================\nexport default (config?: ScrollControlConfig) => {\n const {\n enableScrollObserver = true,\n debounceTime = 100,\n throttleTime = 50,\n scrollContainer = window,\n } = config || {}\n\n // 滚动状态追踪\n const [isScrolling, setIsScrolling] = useState(false)\n // 定时器引用\n const timerRef = useRef<ReturnType<typeof setTimeout>>()\n // 最后一次滚动时间戳\n const lastScrollTime = useRef(0)\n\n // ==================== 核心逻辑 ====================\n const handleScroll = useCallback(() => {\n // 节流控制:限制执行频率\n const now = Date.now()\n if (now - lastScrollTime.current < throttleTime) return\n lastScrollTime.current = now\n\n // 标记开始滚动\n setIsScrolling(true)\n\n // 防抖控制:延迟结束标记\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => {\n setIsScrolling(false)\n }, debounceTime)\n }, [debounceTime, throttleTime])\n\n // ==================== 事件监听 ====================\n useEffect(() => {\n const container = scrollContainer || window\n if (!container || !enableScrollObserver) return\n\n // 高性能事件监听选项\n const options: AddEventListenerOptions = {\n passive: true, // 启用被动监听提升性能\n capture: true, // 捕获阶段触发\n }\n\n container.addEventListener('scroll', handleScroll, options)\n\n return () => {\n container.removeEventListener('scroll', handleScroll, options)\n if (timerRef.current) clearTimeout(timerRef.current)\n }\n }, [handleScroll, scrollContainer, enableScrollObserver])\n\n return isScrolling\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array-input/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array-input/index.js"],"names":[],"mappings":"AA+UA,sEAQC"}
|
package/lib/array-input/index.js
CHANGED
|
@@ -221,6 +221,7 @@ function ArrayInput(_ref) {
|
|
|
221
221
|
gutter = _ref$gutter === void 0 ? 10 : _ref$gutter,
|
|
222
222
|
_ref$require = _ref.require,
|
|
223
223
|
require = _ref$require === void 0 ? false : _ref$require,
|
|
224
|
+
errorMap = _ref.errorMap,
|
|
224
225
|
_ref$deleteTip = _ref.deleteTip,
|
|
225
226
|
deleteTip = _ref$deleteTip === void 0 ? '' : _ref$deleteTip,
|
|
226
227
|
_ref$plusTip = _ref.plusTip,
|
|
@@ -332,9 +333,12 @@ function ArrayInput(_ref) {
|
|
|
332
333
|
span = _a$span === void 0 ? 4 : _a$span,
|
|
333
334
|
fieldChange = _a.onChange,
|
|
334
335
|
other = __rest(_a, ["name", "span", "onChange"]);
|
|
336
|
+
var isError = errorMap ? errorMap["".concat(index, "-").concat(name)] : '';
|
|
335
337
|
return _react["default"].createElement(_col["default"], {
|
|
336
338
|
span: span,
|
|
337
339
|
key: i
|
|
340
|
+
}, _react["default"].createElement("div", {
|
|
341
|
+
className: !isError ? 'tntd-array-input-hide-error' : ''
|
|
338
342
|
}, _react["default"].cloneElement(field, Object.assign({
|
|
339
343
|
value: item[name] || undefined,
|
|
340
344
|
onChange: function onChange(e) {
|
|
@@ -342,7 +346,9 @@ function ArrayInput(_ref) {
|
|
|
342
346
|
var newValue = e.target ? e.target.value : e;
|
|
343
347
|
changeValue(index, name, newValue);
|
|
344
348
|
}
|
|
345
|
-
}, other)))
|
|
349
|
+
}, other))), isError && _react["default"].createElement("div", {
|
|
350
|
+
className: "ant-form-item-explain-error"
|
|
351
|
+
}, isError));
|
|
346
352
|
}), _react["default"].createElement(_col["default"], {
|
|
347
353
|
span: actionSpan
|
|
348
354
|
}, _react["default"].createElement("span", {
|
|
@@ -427,15 +433,22 @@ function ArrayInput(_ref) {
|
|
|
427
433
|
if (!(0, _react.isValidElement)(field)) {
|
|
428
434
|
return field;
|
|
429
435
|
}
|
|
430
|
-
var
|
|
431
|
-
|
|
436
|
+
var _field$props = field.props,
|
|
437
|
+
name = _field$props.name,
|
|
438
|
+
fieldChange = _field$props.onChange;
|
|
439
|
+
var isError = errorMap ? errorMap["".concat(index, "-").concat(name)] : '';
|
|
440
|
+
return _react["default"].createElement("div", {
|
|
441
|
+
className: !isError ? 'tntd-array-input-hide-error' : ''
|
|
442
|
+
}, _react["default"].cloneElement(field, {
|
|
432
443
|
value: inValue[index][name] || undefined,
|
|
433
444
|
onChange: function onChange(e) {
|
|
434
445
|
fieldChange && fieldChange(e, index, changeValue);
|
|
435
446
|
var newValue = e.target ? e.target.value : e;
|
|
436
447
|
changeValue(index, name, newValue);
|
|
437
448
|
}
|
|
438
|
-
})
|
|
449
|
+
}), isError && _react["default"].createElement("div", {
|
|
450
|
+
className: "ant-form-item-explain-error"
|
|
451
|
+
}, isError));
|
|
439
452
|
}
|
|
440
453
|
});
|
|
441
454
|
}), _react["default"].createElement(Column, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/array-input/index.js"],"names":[],"mappings":"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","sourcesContent":["import { DndContext } from '@dnd-kit/core'\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport {\n SortableContext,\n arrayMove,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport LocaleReceiver from 'antd/lib/locale-provider/LocaleReceiver'\nimport { get, isArray, isFunction, set, sum, sumBy } from 'lodash'\nimport React, { isValidElement, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport Button from '../button'\nimport Col from '../col'\nimport Icon from '../icon'\nimport Row from '../row'\nimport Table from '../table'\nimport Tooltip from '../tooltip'\nimport './index.less'\n\nconst { Column } = Table\nconst RowContext = React.createContext({})\nconst getWidth = (span) => 1000 / span\nlet key = 1\n\nfunction DragHandle() {\n const { setActivatorNodeRef, listeners } = useContext(RowContext)\n return (\n <Button\n className=\"drag-btn\"\n type=\"tertiary\"\n size=\"small\"\n icon=\"drag\"\n ref={setActivatorNodeRef}\n {...listeners}\n />\n )\n}\nfunction BodyRow(props) {\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({\n id: props['data-row-key'],\n })\n const style = {\n ...props.style,\n transform: CSS.Translate.toString(transform),\n transition,\n ...(isDragging\n ? {\n position: 'relative',\n zIndex: 9999,\n }\n : {}),\n }\n const contextValue = useMemo(\n () => ({\n setActivatorNodeRef,\n listeners,\n }),\n [setActivatorNodeRef, listeners]\n )\n return (\n <RowContext.Provider value={contextValue}>\n <tr {...props} ref={setNodeRef} style={style} {...attributes} />\n </RowContext.Provider>\n )\n}\n\nfunction ArrayInput({\n children,\n defaultValue,\n value,\n onChange,\n mode = 'list',\n drag = false, // 只做了table的拖拽排序\n gutter = 10,\n require = false,\n deleteTip = '',\n plusTip = '',\n addText,\n locale,\n xProps = {},\n renderAction,\n}) {\n if (!isFunction(children)) {\n throw new Error(locale.error)\n }\n if (addText === undefined) {\n addText = locale?.add\n }\n\n const [_value, setValue] = useState(value || defaultValue)\n\n useEffect(() => {\n let newValue = value\n // 如果数组没有key\n if (Array.isArray(value) && value.some((obj) => !obj.key)) {\n newValue = value.map((obj) => ({ ...obj, key: obj.key || key++ }))\n _onChange(newValue)\n } else {\n setValue(newValue)\n }\n }, [value])\n\n const _onChange = useCallback((value) => {\n if (onChange) {\n onChange(value)\n } else {\n setValue(value)\n }\n }, [])\n\n let inValue = _value || []\n if (require && inValue.length === 0) {\n inValue = [{ key: key++ }]\n }\n\n const changeValue = (index, name, value) => {\n inValue[index] = {\n ...inValue[index],\n [name]: value,\n }\n _onChange([...inValue])\n }\n\n const onAdd = (index) => {\n if (index === undefined) {\n _onChange([...inValue, { key: key++ }])\n } else {\n inValue.splice(index + 1, 0, { key: key++ })\n _onChange([...inValue])\n }\n }\n\n const onDelete = (i) => {\n inValue.splice(i, 1)\n _onChange([...inValue])\n }\n\n const onDragEnd = ({ active, over }) => {\n if (active.id !== over?.id) {\n _onChange((prevState) => {\n const activeIndex = prevState.findIndex((record) => record.key === active?.id)\n const overIndex = prevState.findIndex((record) => record.key === over?.id)\n return arrayMove(prevState, activeIndex, overIndex)\n })\n }\n }\n\n if (mode === 'list') {\n return (\n <div className=\"tntd-array-input\">\n {inValue.map((item, index) => {\n let fields = children(item, index)\n if (!isArray(fields)) {\n fields = get(fields, 'props.children', [])\n }\n const actionSpan = 24 - (sum(fields.map((f) => get(f, 'props.span', 4))) % 24)\n return (\n <Row gutter={gutter} key={index} className=\"tntd-array-input-item\">\n {fields.map((field, i) => {\n if (!isValidElement(field)) {\n return field ? (\n <Col span={4} key={i}>\n {field}\n </Col>\n ) : (\n ''\n )\n }\n const { name, span = 4, onChange: fieldChange, ...other } = field?.props\n return (\n <Col span={span} key={i}>\n {React.cloneElement(field, {\n value: item[name] || undefined,\n onChange: (e) => {\n fieldChange && fieldChange(e, index, changeValue)\n const newValue = e.target ? e.target.value : e\n changeValue(index, name, newValue)\n },\n ...other,\n })}\n </Col>\n )\n })}\n <Col span={actionSpan}>\n <span className=\"tntd-array-input-action\">\n {renderAction ? (\n renderAction(item, index, onDelete, onAdd)\n ) : (\n <>\n {deleteTip ? (\n <Tooltip title={deleteTip}>\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n </Tooltip>\n ) : (\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n )}\n </>\n )}\n </span>\n </Col>\n </Row>\n )\n })}\n <Button type=\"link\" onClick={() => onAdd()}>\n <Icon type=\"plus\" />\n {addText}\n </Button>\n </div>\n )\n } else {\n let fields = children({}, 0)\n if (!isArray(fields)) {\n fields = get(fields, 'props.children', [])\n }\n const dataSource = inValue.map((value, index) => {\n const fields = children(value, index)\n const back = { key: value.key }\n fields.forEach((field) => {\n const name = field?.props?.name\n name && set(back, name, field)\n })\n return back\n })\n\n return (\n <div className=\"tntd-array-input\">\n <DndContext modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataSource.map((i) => i.key)}\n strategy={verticalListSortingStrategy}\n >\n <Table\n dataSource={dataSource}\n pagination={false}\n components={{\n body: {\n row: BodyRow,\n },\n }}\n bordered\n {...xProps}\n >\n {drag && (\n <Column\n key=\"dragger\"\n dataIndex=\"dragger\"\n width={60}\n render={() => <DragHandle />}\n ></Column>\n )}\n {fields.map((field) => {\n const { name, span, title } = field?.props || {}\n return (\n <Column\n key={name}\n dataIndex={name}\n title={title}\n width={getWidth(span || 24 / (fields.length + 1))}\n render={(field, row, index) => {\n if (!isValidElement(field)) {\n return field\n }\n const { onChange: fieldChange } = field.props\n return React.cloneElement(field, {\n value: inValue[index][name] || undefined,\n onChange: (e) => {\n fieldChange && fieldChange(e, index, changeValue)\n const newValue = e.target ? e.target.value : e\n changeValue(index, name, newValue)\n },\n })\n }}\n ></Column>\n )\n })}\n <Column\n key=\"action\"\n dataIndex=\"action\"\n title={locale.action}\n width={getWidth(24 - (sumBy(fields, 'props.span') % 24))}\n render={(text, row, index) => {\n if (renderAction) {\n return renderAction(row, index, onDelete, onAdd)\n }\n return (\n <span className=\"tntd-array-input-action\">\n {deleteTip ? (\n <Tooltip title={deleteTip}>\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n </Tooltip>\n ) : (\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n )}\n </span>\n )\n }}\n ></Column>\n </Table>\n </SortableContext>\n </DndContext>\n <Button type=\"dashed\" block className=\"mt10\" onClick={() => onAdd()}>\n <Icon type=\"plus\" />\n {addText}\n </Button>\n </div>\n )\n }\n}\n\nexport default function WarpArrayInput(props) {\n return (\n <LocaleReceiver componentName=\"ArrayInput\">\n {(locale) => {\n return <ArrayInput {...props} locale={locale} />\n }}\n </LocaleReceiver>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/array-input/index.js"],"names":[],"mappings":"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","sourcesContent":["import { DndContext } from '@dnd-kit/core'\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport {\n SortableContext,\n arrayMove,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport LocaleReceiver from 'antd/lib/locale-provider/LocaleReceiver'\nimport { get, isArray, isFunction, set, sum, sumBy } from 'lodash'\nimport React, { isValidElement, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport Button from '../button'\nimport Col from '../col'\nimport Icon from '../icon'\nimport Row from '../row'\nimport Table from '../table'\nimport Tooltip from '../tooltip'\nimport './index.less'\n\nconst { Column } = Table\nconst RowContext = React.createContext({})\nconst getWidth = (span) => 1000 / span\nlet key = 1\n\nfunction DragHandle() {\n const { setActivatorNodeRef, listeners } = useContext(RowContext)\n return (\n <Button\n className=\"drag-btn\"\n type=\"tertiary\"\n size=\"small\"\n icon=\"drag\"\n ref={setActivatorNodeRef}\n {...listeners}\n />\n )\n}\nfunction BodyRow(props) {\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({\n id: props['data-row-key'],\n })\n const style = {\n ...props.style,\n transform: CSS.Translate.toString(transform),\n transition,\n ...(isDragging\n ? {\n position: 'relative',\n zIndex: 9999,\n }\n : {}),\n }\n const contextValue = useMemo(\n () => ({\n setActivatorNodeRef,\n listeners,\n }),\n [setActivatorNodeRef, listeners]\n )\n return (\n <RowContext.Provider value={contextValue}>\n <tr {...props} ref={setNodeRef} style={style} {...attributes} />\n </RowContext.Provider>\n )\n}\n\nfunction ArrayInput({\n children,\n defaultValue,\n value,\n onChange,\n mode = 'list',\n drag = false, // 只做了table的拖拽排序\n gutter = 10,\n require = false,\n errorMap,\n deleteTip = '',\n plusTip = '',\n addText,\n locale,\n xProps = {},\n renderAction,\n}) {\n if (!isFunction(children)) {\n throw new Error(locale.error)\n }\n if (addText === undefined) {\n addText = locale?.add\n }\n\n const [_value, setValue] = useState(value || defaultValue)\n\n useEffect(() => {\n let newValue = value\n // 如果数组没有key\n if (Array.isArray(value) && value.some((obj) => !obj.key)) {\n newValue = value.map((obj) => ({ ...obj, key: obj.key || key++ }))\n _onChange(newValue)\n } else {\n setValue(newValue)\n }\n }, [value])\n\n const _onChange = useCallback((value) => {\n if (onChange) {\n onChange(value)\n } else {\n setValue(value)\n }\n }, [])\n\n let inValue = _value || []\n if (require && inValue.length === 0) {\n inValue = [{ key: key++ }]\n }\n\n const changeValue = (index, name, value) => {\n inValue[index] = {\n ...inValue[index],\n [name]: value,\n }\n _onChange([...inValue])\n }\n\n const onAdd = (index) => {\n if (index === undefined) {\n _onChange([...inValue, { key: key++ }])\n } else {\n inValue.splice(index + 1, 0, { key: key++ })\n _onChange([...inValue])\n }\n }\n\n const onDelete = (i) => {\n inValue.splice(i, 1)\n _onChange([...inValue])\n }\n\n const onDragEnd = ({ active, over }) => {\n if (active.id !== over?.id) {\n _onChange((prevState) => {\n const activeIndex = prevState.findIndex((record) => record.key === active?.id)\n const overIndex = prevState.findIndex((record) => record.key === over?.id)\n return arrayMove(prevState, activeIndex, overIndex)\n })\n }\n }\n\n if (mode === 'list') {\n return (\n <div className=\"tntd-array-input\">\n {inValue.map((item, index) => {\n let fields = children(item, index)\n if (!isArray(fields)) {\n fields = get(fields, 'props.children', [])\n }\n const actionSpan = 24 - (sum(fields.map((f) => get(f, 'props.span', 4))) % 24)\n return (\n <Row gutter={gutter} key={index} className=\"tntd-array-input-item\">\n {fields.map((field, i) => {\n if (!isValidElement(field)) {\n return field ? (\n <Col span={4} key={i}>\n {field}\n </Col>\n ) : (\n ''\n )\n }\n const { name, span = 4, onChange: fieldChange, ...other } = field?.props;\n const isError = errorMap ? errorMap[`${index}-${name}`] : '';\n return (\n <Col span={span} key={i}>\n <div className={!isError ? 'tntd-array-input-hide-error' : ''}>\n {React.cloneElement(field, {\n value: item[name] || undefined,\n onChange: (e) => {\n fieldChange && fieldChange(e, index, changeValue)\n const newValue = e.target ? e.target.value : e\n changeValue(index, name, newValue)\n },\n ...other,\n })}\n </div>\n {isError&&<div className=\"ant-form-item-explain-error\">{isError}</div>}\n </Col>\n )\n })}\n <Col span={actionSpan}>\n <span className=\"tntd-array-input-action\">\n {renderAction ? (\n renderAction(item, index, onDelete, onAdd)\n ) : (\n <>\n {deleteTip ? (\n <Tooltip title={deleteTip}>\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n </Tooltip>\n ) : (\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n )}\n </>\n )}\n </span>\n </Col>\n </Row>\n )\n })}\n <Button type=\"link\" onClick={() => onAdd()}>\n <Icon type=\"plus\" />\n {addText}\n </Button>\n </div>\n )\n } else {\n let fields = children({}, 0)\n if (!isArray(fields)) {\n fields = get(fields, 'props.children', [])\n }\n const dataSource = inValue.map((value, index) => {\n const fields = children(value, index)\n const back = { key: value.key }\n fields.forEach((field) => {\n const name = field?.props?.name\n name && set(back, name, field)\n })\n return back\n })\n\n return (\n <div className=\"tntd-array-input\">\n <DndContext modifiers={[restrictToVerticalAxis]} onDragEnd={onDragEnd}>\n <SortableContext\n items={dataSource.map((i) => i.key)}\n strategy={verticalListSortingStrategy}\n >\n <Table\n dataSource={dataSource}\n pagination={false}\n components={{\n body: {\n row: BodyRow,\n },\n }}\n bordered\n {...xProps}\n >\n {drag && (\n <Column\n key=\"dragger\"\n dataIndex=\"dragger\"\n width={60}\n render={() => <DragHandle />}\n ></Column>\n )}\n {fields.map((field) => {\n const { name, span, title } = field?.props || {}\n return (\n <Column\n key={name}\n dataIndex={name}\n title={title}\n width={getWidth(span || 24 / (fields.length + 1))}\n render={(field, row, index) => {\n if (!isValidElement(field)) {\n return field\n }\n const { name, onChange: fieldChange } = field.props\n const isError = errorMap ? errorMap[`${index}-${name}`] : '';\n return <div className={!isError ? 'tntd-array-input-hide-error' : ''}>\n { React.cloneElement(field, {\n value: inValue[index][name] || undefined,\n onChange: (e) => {\n fieldChange && fieldChange(e, index, changeValue)\n const newValue = e.target ? e.target.value : e\n changeValue(index, name, newValue)\n },\n }) }\n { isError && <div className=\"ant-form-item-explain-error\">{isError}</div> }\n </div>\n }}\n ></Column>\n )\n })}\n <Column\n key=\"action\"\n dataIndex=\"action\"\n title={locale.action}\n width={getWidth(24 - (sumBy(fields, 'props.span') % 24))}\n render={(text, row, index) => {\n if (renderAction) {\n return renderAction(row, index, onDelete, onAdd)\n }\n return (\n <span className=\"tntd-array-input-action\">\n {deleteTip ? (\n <Tooltip title={deleteTip}>\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n </Tooltip>\n ) : (\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n )}\n </span>\n )\n }}\n ></Column>\n </Table>\n </SortableContext>\n </DndContext>\n <Button type=\"dashed\" block className=\"mt10\" onClick={() => onAdd()}>\n <Icon type=\"plus\" />\n {addText}\n </Button>\n </div>\n )\n }\n}\n\nexport default function WarpArrayInput(props) {\n return (\n <LocaleReceiver componentName=\"ArrayInput\">\n {(locale) => {\n return <ArrayInput {...props} locale={locale} />\n }}\n </LocaleReceiver>\n )\n}\n"]}
|
|
@@ -1,28 +1,150 @@
|
|
|
1
|
+
@import '../style/themes/index';
|
|
2
|
+
@import '../style/mixins/index';
|
|
3
|
+
@import '../form/style/mixin.less';
|
|
4
|
+
|
|
5
|
+
@form-prefix-cls: ~'@{ant-prefix}-form';
|
|
6
|
+
|
|
1
7
|
.tntd-array-input {
|
|
8
|
+
line-height: 1.5;
|
|
9
|
+
|
|
2
10
|
&-item {
|
|
3
11
|
margin-bottom: 10px;
|
|
4
12
|
}
|
|
13
|
+
|
|
5
14
|
.ant-col,
|
|
6
15
|
.ant-table-row {
|
|
7
16
|
.ant-select {
|
|
8
17
|
width: 100%;
|
|
9
18
|
}
|
|
10
19
|
}
|
|
20
|
+
|
|
11
21
|
.mr10 {
|
|
12
22
|
margin-right: 10px;
|
|
13
23
|
}
|
|
24
|
+
|
|
14
25
|
.mt10 {
|
|
15
26
|
margin-top: 10px;
|
|
16
27
|
}
|
|
28
|
+
|
|
17
29
|
&-action {
|
|
18
30
|
line-height: @btn-height-base;
|
|
19
|
-
|
|
31
|
+
|
|
32
|
+
>span {
|
|
20
33
|
cursor: pointer;
|
|
21
34
|
}
|
|
22
35
|
}
|
|
36
|
+
|
|
23
37
|
.drag-btn {
|
|
24
38
|
border: none;
|
|
25
39
|
background-color: transparent;
|
|
26
40
|
cursor: move;
|
|
27
41
|
}
|
|
28
42
|
}
|
|
43
|
+
|
|
44
|
+
.has-error {
|
|
45
|
+
.tntd-array-input-hide-error {
|
|
46
|
+
.form-control-validation();
|
|
47
|
+
|
|
48
|
+
&.has-feedback .@{form-prefix-cls}-item-children-icon {
|
|
49
|
+
color: @text-color;
|
|
50
|
+
animation-name: diffZoomIn2 !important;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//select
|
|
54
|
+
.@{ant-prefix}-select {
|
|
55
|
+
&-selection {
|
|
56
|
+
border-color: @input-border-color;
|
|
57
|
+
|
|
58
|
+
&:hover {
|
|
59
|
+
border-color: @primary-color;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&-open .@{ant-prefix}-select-selection,
|
|
64
|
+
&-focused .@{ant-prefix}-select-selection {
|
|
65
|
+
.active();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.@{ant-prefix}-select.@{ant-prefix}-select-auto-complete {
|
|
70
|
+
.@{ant-prefix}-input:focus {
|
|
71
|
+
border-color: @primary-color;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.@{ant-prefix}-input-group-addon .@{ant-prefix}-select {
|
|
76
|
+
&-selection {
|
|
77
|
+
border-color: transparent;
|
|
78
|
+
box-shadow: none;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// arrow and icon
|
|
83
|
+
.@{ant-prefix}-calendar-picker-icon::after,
|
|
84
|
+
.@{ant-prefix}-time-picker-icon::after,
|
|
85
|
+
.@{ant-prefix}-picker-icon::after,
|
|
86
|
+
.@{ant-prefix}-select-arrow,
|
|
87
|
+
.@{ant-prefix}-cascader-picker-arrow {
|
|
88
|
+
color: @disabled-color;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
//input-number, timepicker
|
|
92
|
+
.@{ant-prefix}-input-number,
|
|
93
|
+
.@{ant-prefix}-time-picker-input {
|
|
94
|
+
border-color: @input-border-color;
|
|
95
|
+
|
|
96
|
+
&-focused,
|
|
97
|
+
&:focus {
|
|
98
|
+
.active();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
&:not([disabled]):hover {
|
|
102
|
+
border-color: @primary-color;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.@{ant-prefix}-mention-wrapper {
|
|
107
|
+
.@{ant-prefix}-mention-editor {
|
|
108
|
+
|
|
109
|
+
&,
|
|
110
|
+
&:not([disabled]):hover {
|
|
111
|
+
border-color: @primary-color;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
&.@{ant-prefix}-mention-active:not([disabled]) .@{ant-prefix}-mention-editor,
|
|
116
|
+
.@{ant-prefix}-mention-editor:not([disabled]):focus {
|
|
117
|
+
.active();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.@{ant-prefix}-cascader-picker {
|
|
122
|
+
&:focus .@{ant-prefix}-cascader-input {
|
|
123
|
+
.active();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
&:hover .@{ant-prefix}-cascader-input {
|
|
127
|
+
border-color: @input-border-color;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// transfer
|
|
132
|
+
.@{ant-prefix}-transfer {
|
|
133
|
+
&-list {
|
|
134
|
+
border-color: @input-border-color;
|
|
135
|
+
|
|
136
|
+
&-search:not([disabled]) {
|
|
137
|
+
border-color: @input-border-color;
|
|
138
|
+
|
|
139
|
+
&:hover {
|
|
140
|
+
.hover();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
&:focus {
|
|
144
|
+
.active();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/array-input/utils.js"],"names":[],"mappings":"AAEA,oEAiBC"}
|