tntd 2.8.41 → 2.8.43

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.
Files changed (65) hide show
  1. package/es/exception/exception.less +1 -0
  2. package/es/handle-icon/index.js +129 -115
  3. package/es/handle-icon/index.js.map +1 -1
  4. package/es/index.js +7 -0
  5. package/es/index.js.map +1 -1
  6. package/es/index.less +1 -0
  7. package/es/scroll-bar/Bar.js +91 -0
  8. package/es/scroll-bar/Bar.js.map +1 -0
  9. package/es/scroll-bar/Context.js +13 -0
  10. package/es/scroll-bar/Context.js.map +1 -0
  11. package/es/scroll-bar/ScrollBar.js +94 -0
  12. package/es/scroll-bar/ScrollBar.js.map +1 -0
  13. package/es/scroll-bar/Thumb.js +125 -0
  14. package/es/scroll-bar/Thumb.js.map +1 -0
  15. package/es/scroll-bar/index.js +10 -0
  16. package/es/scroll-bar/index.js.map +1 -0
  17. package/es/scroll-bar/scrollBar.less +59 -0
  18. package/es/scroll-bar/util.js +39 -0
  19. package/es/scroll-bar/util.js.map +1 -0
  20. package/es/style/core/base.less +2 -0
  21. package/es/style/mixins/index.less +1 -0
  22. package/es/style/mixins/scrollbar.less +54 -0
  23. package/es/tntd-virtual-tree/utils.js +2 -1
  24. package/es/tntd-virtual-tree/utils.js.map +1 -1
  25. package/lib/exception/exception.less +1 -0
  26. package/lib/handle-icon/index.d.ts.map +1 -1
  27. package/lib/handle-icon/index.js +160 -115
  28. package/lib/handle-icon/index.js.map +1 -1
  29. package/lib/index.d.ts +1 -0
  30. package/lib/index.d.ts.map +1 -1
  31. package/lib/index.js +7 -0
  32. package/lib/index.js.map +1 -1
  33. package/lib/index.less +1 -0
  34. package/lib/scroll-bar/Bar.d.ts +4 -0
  35. package/lib/scroll-bar/Bar.d.ts.map +1 -0
  36. package/lib/scroll-bar/Bar.js +169 -0
  37. package/lib/scroll-bar/Bar.js.map +1 -0
  38. package/lib/scroll-bar/Context.d.ts +7 -0
  39. package/lib/scroll-bar/Context.d.ts.map +1 -0
  40. package/lib/scroll-bar/Context.js +17 -0
  41. package/lib/scroll-bar/Context.js.map +1 -0
  42. package/lib/scroll-bar/ScrollBar.d.ts +4 -0
  43. package/lib/scroll-bar/ScrollBar.d.ts.map +1 -0
  44. package/lib/scroll-bar/ScrollBar.js +129 -0
  45. package/lib/scroll-bar/ScrollBar.js.map +1 -0
  46. package/lib/scroll-bar/Thumb.d.ts +3 -0
  47. package/lib/scroll-bar/Thumb.d.ts.map +1 -0
  48. package/lib/scroll-bar/Thumb.js +203 -0
  49. package/lib/scroll-bar/Thumb.js.map +1 -0
  50. package/lib/scroll-bar/index.d.ts +3 -0
  51. package/lib/scroll-bar/index.d.ts.map +1 -0
  52. package/lib/scroll-bar/index.js +14 -0
  53. package/lib/scroll-bar/index.js.map +1 -0
  54. package/lib/scroll-bar/scrollBar.less +59 -0
  55. package/lib/scroll-bar/util.d.ts +40 -0
  56. package/lib/scroll-bar/util.d.ts.map +1 -0
  57. package/lib/scroll-bar/util.js +72 -0
  58. package/lib/scroll-bar/util.js.map +1 -0
  59. package/lib/style/core/base.less +2 -0
  60. package/lib/style/mixins/index.less +1 -0
  61. package/lib/style/mixins/scrollbar.less +54 -0
  62. package/lib/tntd-virtual-tree/utils.d.ts.map +1 -1
  63. package/lib/tntd-virtual-tree/utils.js +2 -1
  64. package/lib/tntd-virtual-tree/utils.js.map +1 -1
  65. package/package.json +2 -2
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _classnames = _interopRequireDefault(require("classnames"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _Bar = _interopRequireDefault(require("./Bar"));
11
+ var _Context = _interopRequireDefault(require("./Context"));
12
+ 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); }
13
+ 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; }
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
16
+ var t = {};
17
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
18
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ var _default = exports["default"] = (0, _react.forwardRef)(function (_a, ref) {
24
+ var children = _a.children,
25
+ _a$minSize = _a.minSize,
26
+ minSize = _a$minSize === void 0 ? 20 : _a$minSize,
27
+ props = __rest(_a, ["children", "minSize"]);
28
+ var scrollbarElement = (0, _react.useRef)();
29
+ var wrapElement = (0, _react.useRef)();
30
+ wrapElement = ref || wrapElement;
31
+ var resizeRef = (0, _react.useRef)();
32
+ var barRef = (0, _react.useRef)();
33
+ (0, _react.useEffect)(function () {
34
+ var wrapDom = wrapElement.current;
35
+ var resizeDom = resizeRef.current;
36
+ // 监听容器尺寸变化,因为尺寸可以设置类似height:100vh之类样式,高度并不是固定的
37
+ var observer = new ResizeObserver(function () {
38
+ var _a;
39
+ update();
40
+ (_a = barRef.current) === null || _a === void 0 ? void 0 : _a.handleScroll();
41
+ });
42
+ observer.observe(wrapDom);
43
+ observer.observe(resizeDom);
44
+ return function () {
45
+ observer.unobserve(wrapDom);
46
+ observer.unobserve(resizeDom);
47
+ };
48
+ }, []);
49
+ (0, _react.useEffect)(function () {
50
+ var _a;
51
+ if (!props["native"]) {
52
+ update();
53
+ (_a = barRef.current) === null || _a === void 0 ? void 0 : _a.handleScroll();
54
+ }
55
+ }, [props["native"]]);
56
+ function update() {
57
+ var _a;
58
+ (_a = barRef.current) === null || _a === void 0 ? void 0 : _a.update();
59
+ }
60
+ function handleScroll(e) {
61
+ var _a, _b;
62
+ (_a = barRef.current) === null || _a === void 0 ? void 0 : _a.handleScroll();
63
+ (_b = props.onScroll) === null || _b === void 0 ? void 0 : _b.call(props, e);
64
+ }
65
+ var wrapStyle = {
66
+ height: props.height,
67
+ maxHeight: props.maxHeight
68
+ };
69
+ var wrapClassName = (0, _classnames["default"])('tntd-scroll-bar-wrap', {
70
+ 'tntd-scroll-bar-wrap-hidden-default': !props["native"]
71
+ });
72
+ return _react["default"].createElement(_Context["default"].Provider, {
73
+ value: {
74
+ scrollbarElement: scrollbarElement,
75
+ wrapElement: wrapElement
76
+ }
77
+ }, _react["default"].createElement("div", {
78
+ style: props.style,
79
+ className: (0, _classnames["default"])('tntd-scroll-bar', props.className),
80
+ ref: scrollbarElement
81
+ }, _react["default"].createElement("div", {
82
+ style: wrapStyle,
83
+ className: wrapClassName,
84
+ ref: wrapElement,
85
+ onScroll: handleScroll
86
+ }, _react["default"].createElement("div", {
87
+ className: "tntd-scroll-bar-view",
88
+ ref: resizeRef
89
+ }, children)), !props["native"] && _react["default"].createElement(_Bar["default"], {
90
+ ref: barRef,
91
+ always: props.always,
92
+ minSize: minSize
93
+ })));
94
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollBar.js","sourceRoot":"","sources":["../../src/scroll-bar/ScrollBar.js"],"names":[],"mappings":"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","sourcesContent":["import clsx from 'classnames'\nimport React, { forwardRef, useEffect, useRef } from 'react'\nimport Bar from './Bar'\nimport Context from './Context'\n\nexport default forwardRef(({ children, minSize = 20, ...props }, ref) => {\n const scrollbarElement = useRef()\n let wrapElement = useRef()\n wrapElement = ref || wrapElement\n const resizeRef = useRef()\n const barRef = useRef()\n\n useEffect(() => {\n const wrapDom = wrapElement.current\n const resizeDom = resizeRef.current\n // 监听容器尺寸变化,因为尺寸可以设置类似height:100vh之类样式,高度并不是固定的\n const observer = new ResizeObserver(() => {\n update()\n barRef.current?.handleScroll()\n })\n observer.observe(wrapDom)\n observer.observe(resizeDom)\n return () => {\n observer.unobserve(wrapDom)\n observer.unobserve(resizeDom)\n }\n }, [])\n useEffect(() => {\n if (!props.native) {\n update()\n barRef.current?.handleScroll()\n }\n }, [props.native])\n\n function update() {\n barRef.current?.update()\n }\n\n function handleScroll(e) {\n barRef.current?.handleScroll()\n props.onScroll?.(e)\n }\n\n const wrapStyle = { height: props.height, maxHeight: props.maxHeight }\n const wrapClassName = clsx('tntd-scroll-bar-wrap', {\n 'tntd-scroll-bar-wrap-hidden-default': !props.native,\n })\n\n return (\n <Context.Provider value={{ scrollbarElement, wrapElement }}>\n <div\n style={props.style}\n className={clsx('tntd-scroll-bar', props.className)}\n ref={scrollbarElement}\n >\n <div style={wrapStyle} className={wrapClassName} ref={wrapElement} onScroll={handleScroll}>\n <div className=\"tntd-scroll-bar-view\" ref={resizeRef}>\n {children}\n </div>\n </div>\n {!props.native && <Bar ref={barRef} always={props.always} minSize={minSize} />}\n </div>\n </Context.Provider>\n )\n})\n"]}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = Thumb;
8
+ var _classnames = _interopRequireDefault(require("classnames"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _Context = _interopRequireDefault(require("./Context"));
11
+ var _util = require("./util");
12
+ 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); }
13
+ 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; }
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
18
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
19
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
20
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
+ function Thumb(props) {
22
+ var _useContext = (0, _react.useContext)(_Context["default"]),
23
+ scrollbarElement = _useContext.scrollbarElement,
24
+ wrapElement = _useContext.wrapElement;
25
+ var instance = (0, _react.useRef)();
26
+ var thumb = (0, _react.useRef)();
27
+ var _useState = (0, _react.useState)(false),
28
+ _useState2 = _slicedToArray(_useState, 2),
29
+ visible = _useState2[0],
30
+ setVisible = _useState2[1];
31
+ // 当作非响应式变量使用
32
+ var thumbState = (0, _react.useRef)({});
33
+ var cursorDown = (0, _react.useRef)(false);
34
+ var cursorLeave = (0, _react.useRef)(false);
35
+ var originalOnSelectStart = (0, _react.useRef)(document.onselectstart);
36
+ var bar = _util.BAR_MAP[props.vertical ? 'vertical' : 'horizontal'];
37
+ (0, _react.useEffect)(function () {
38
+ var element = scrollbarElement.current;
39
+ element.addEventListener('mousemove', mouseMoveScrollbarHandler);
40
+ element.addEventListener('mouseleave', mouseLeaveScrollbarHandler);
41
+ return function () {
42
+ restoreOnselectstart();
43
+ document.removeEventListener('mouseup', mouseUpDocumentHandler);
44
+ element.removeEventListener('mousemove', mouseMoveScrollbarHandler);
45
+ element.removeEventListener('mouseleave', mouseLeaveScrollbarHandler);
46
+ };
47
+ }, []);
48
+ function mouseMoveScrollbarHandler() {
49
+ cursorLeave.current = false;
50
+ setVisible(true);
51
+ }
52
+ function mouseLeaveScrollbarHandler() {
53
+ cursorLeave.current = true;
54
+ setVisible(cursorDown.current);
55
+ }
56
+ function getOffsetRatio() {
57
+ return Math.pow(instance.current[bar.offset], 2) / wrapElement.current[bar.scrollSize] / props.ratio / thumb.current[bar.offset];
58
+ }
59
+ function clickTrackHandler(e) {
60
+ if (!thumb.current || !instance.current || !wrapElement.current) return;
61
+ // 鼠标点击的坐标距离顶端的距离
62
+ var offset = Math.abs(e.target.getBoundingClientRect()[bar.direction] - e[bar.client]);
63
+ var thumbHalf = thumb.current[bar.offset] / 2;
64
+ var thumbPositionPercentage = (offset - thumbHalf) * 100 * getOffsetRatio() / instance.current[bar.offset];
65
+ // 直接给scrollTop赋值,就会调用bar组件的handleScroll函数
66
+ wrapElement.current[bar.scroll] = thumbPositionPercentage * wrapElement.current[bar.scrollSize] / 100;
67
+ }
68
+ function clickThumbHandler(e) {
69
+ var _a;
70
+ e.stopPropagation();
71
+ if (e.ctrlKey || [1, 2].includes(e.button)) return;
72
+ (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();
73
+ startDrag(e);
74
+ var el = e.currentTarget;
75
+ if (!el) return;
76
+ thumbState.current[bar.axis] = el[bar.offset] - (e[bar.client] - el.getBoundingClientRect()[bar.direction]);
77
+ }
78
+ function startDrag(e) {
79
+ e.persist();
80
+ cursorDown.current = true;
81
+ document.addEventListener('mousemove', mouseMoveDocumentHandler);
82
+ document.addEventListener('mouseup', mouseUpDocumentHandler);
83
+ originalOnSelectStart.current = document.onselectstart;
84
+ document.onselectstart = function () {
85
+ return false;
86
+ };
87
+ }
88
+ function mouseMoveDocumentHandler(e) {
89
+ if (!instance.current || !thumb.current) return;
90
+ if (cursorDown.current === false) return;
91
+ var prevPage = thumbState.current[bar.axis];
92
+ if (!prevPage) return;
93
+ var offset = (instance.current.getBoundingClientRect()[bar.direction] - e[bar.client]) * -1;
94
+ var thumbClickPosition = thumb.current[bar.offset] - prevPage;
95
+ var thumbPositionPercentage = (offset - thumbClickPosition) * 100 * getOffsetRatio() / instance.current[bar.offset];
96
+ wrapElement.current[bar.scroll] = thumbPositionPercentage * wrapElement.current[bar.scrollSize] / 100;
97
+ }
98
+ function mouseUpDocumentHandler() {
99
+ cursorDown.current = false;
100
+ thumbState.current[bar.axis] = 0;
101
+ document.removeEventListener('mousemove', mouseMoveDocumentHandler);
102
+ document.removeEventListener('mouseup', mouseUpDocumentHandler);
103
+ restoreOnselectstart();
104
+ if (cursorLeave.current) setVisible(false);
105
+ }
106
+ function restoreOnselectstart() {
107
+ if (document.onselectstart !== originalOnSelectStart.current) document.onselectstart = originalOnSelectStart.current;
108
+ }
109
+ var thumbStyle = (0, _util.renderThumbStyle)({
110
+ size: props.size,
111
+ move: props.move,
112
+ bar: bar
113
+ });
114
+ return _react["default"].createElement("div", {
115
+ hidden: !(props.always || visible),
116
+ className: (0, _classnames["default"])('tntd-scroll-bar-bar', bar.key),
117
+ ref: instance,
118
+ onMouseDown: clickTrackHandler
119
+ }, _react["default"].createElement("div", {
120
+ className: "tntd-scroll-bar-thumb",
121
+ style: thumbStyle,
122
+ ref: thumb,
123
+ onMouseDown: clickThumbHandler
124
+ }));
125
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thumb.js","sourceRoot":"","sources":["../../src/scroll-bar/Thumb.js"],"names":[],"mappings":"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","sourcesContent":["import clsx from 'classnames'\nimport React, { useContext, useEffect, useRef, useState } from 'react'\nimport Context from './Context'\nimport { BAR_MAP, renderThumbStyle } from './util'\n\nexport default function Thumb(props) {\n const { scrollbarElement, wrapElement } = useContext(Context)\n const instance = useRef()\n const thumb = useRef()\n const [visible, setVisible] = useState(false)\n // 当作非响应式变量使用\n const thumbState = useRef({})\n const cursorDown = useRef(false)\n const cursorLeave = useRef(false)\n const originalOnSelectStart = useRef(document.onselectstart)\n const bar = BAR_MAP[props.vertical ? 'vertical' : 'horizontal']\n\n useEffect(() => {\n const element = scrollbarElement.current\n element.addEventListener('mousemove', mouseMoveScrollbarHandler)\n element.addEventListener('mouseleave', mouseLeaveScrollbarHandler)\n return () => {\n restoreOnselectstart()\n document.removeEventListener('mouseup', mouseUpDocumentHandler)\n element.removeEventListener('mousemove', mouseMoveScrollbarHandler)\n element.removeEventListener('mouseleave', mouseLeaveScrollbarHandler)\n }\n }, [])\n\n function mouseMoveScrollbarHandler() {\n cursorLeave.current = false\n setVisible(true)\n }\n\n function mouseLeaveScrollbarHandler() {\n cursorLeave.current = true\n setVisible(cursorDown.current)\n }\n\n function getOffsetRatio() {\n return (\n instance.current[bar.offset] ** 2 /\n wrapElement.current[bar.scrollSize] /\n props.ratio /\n thumb.current[bar.offset]\n )\n }\n\n function clickTrackHandler(e) {\n if (!thumb.current || !instance.current || !wrapElement.current) return\n // 鼠标点击的坐标距离顶端的距离\n const offset = Math.abs(e.target.getBoundingClientRect()[bar.direction] - e[bar.client])\n const thumbHalf = thumb.current[bar.offset] / 2\n const thumbPositionPercentage =\n ((offset - thumbHalf) * 100 * getOffsetRatio()) / instance.current[bar.offset]\n // 直接给scrollTop赋值,就会调用bar组件的handleScroll函数\n wrapElement.current[bar.scroll] =\n (thumbPositionPercentage * wrapElement.current[bar.scrollSize]) / 100\n }\n\n function clickThumbHandler(e) {\n e.stopPropagation()\n if (e.ctrlKey || [1, 2].includes(e.button)) return\n window.getSelection()?.removeAllRanges()\n startDrag(e)\n\n const el = e.currentTarget\n if (!el) return\n thumbState.current[bar.axis] =\n el[bar.offset] - (e[bar.client] - el.getBoundingClientRect()[bar.direction])\n }\n\n function startDrag(e) {\n e.persist()\n cursorDown.current = true\n document.addEventListener('mousemove', mouseMoveDocumentHandler)\n document.addEventListener('mouseup', mouseUpDocumentHandler)\n originalOnSelectStart.current = document.onselectstart\n document.onselectstart = () => false\n }\n\n function mouseMoveDocumentHandler(e) {\n if (!instance.current || !thumb.current) return\n if (cursorDown.current === false) return\n const prevPage = thumbState.current[bar.axis]\n if (!prevPage) return\n\n const offset = (instance.current.getBoundingClientRect()[bar.direction] - e[bar.client]) * -1\n const thumbClickPosition = thumb.current[bar.offset] - prevPage\n const thumbPositionPercentage =\n ((offset - thumbClickPosition) * 100 * getOffsetRatio()) / instance.current[bar.offset]\n wrapElement.current[bar.scroll] =\n (thumbPositionPercentage * wrapElement.current[bar.scrollSize]) / 100\n }\n\n function mouseUpDocumentHandler() {\n cursorDown.current = false\n thumbState.current[bar.axis] = 0\n document.removeEventListener('mousemove', mouseMoveDocumentHandler)\n document.removeEventListener('mouseup', mouseUpDocumentHandler)\n restoreOnselectstart()\n if (cursorLeave.current) setVisible(false)\n }\n\n function restoreOnselectstart() {\n if (document.onselectstart !== originalOnSelectStart.current)\n document.onselectstart = originalOnSelectStart.current\n }\n\n const thumbStyle = renderThumbStyle({\n size: props.size,\n move: props.move,\n bar: bar,\n })\n\n return (\n <div\n hidden={!(props.always || visible)}\n className={clsx('tntd-scroll-bar-bar', bar.key)}\n ref={instance}\n onMouseDown={clickTrackHandler}\n >\n <div\n className=\"tntd-scroll-bar-thumb\"\n style={thumbStyle}\n ref={thumb}\n onMouseDown={clickThumbHandler}\n />\n </div>\n )\n}\n"]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _ScrollBar = _interopRequireDefault(require("./ScrollBar"));
8
+ require("./scrollBar.less");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
+ var _default = exports["default"] = _ScrollBar["default"];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scroll-bar/index.js"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,kBAAkB,CAAA;AAEzB,eAAe,SAAS,CAAA","sourcesContent":["import ScrollBar from './ScrollBar'\nimport './scrollBar.less'\n\nexport default ScrollBar\n"]}
@@ -0,0 +1,59 @@
1
+ .tntd-scroll-bar {
2
+ position: relative;
3
+ height: 100%;
4
+ overflow: hidden;
5
+ }
6
+ .tntd-scroll-bar-wrap {
7
+ height: 100%;
8
+ overflow: auto;
9
+ }
10
+ .tntd-scroll-bar-wrap-hidden-default {
11
+ scrollbar-width: none;
12
+ &::-webkit-scrollbar {
13
+ display: none;
14
+ }
15
+ }
16
+ .tntd-scroll-bar-view {
17
+ width: fit-content;
18
+ min-width: 100%;
19
+ }
20
+ .tntd-scroll-bar-bar {
21
+ position: absolute;
22
+ right: 2px;
23
+ bottom: 2px;
24
+ z-index: 1;
25
+ border-radius: 4px;
26
+
27
+ &.vertical {
28
+ top: 2px;
29
+ width: 6px;
30
+
31
+ > div {
32
+ width: 100%;
33
+ }
34
+ }
35
+
36
+ &.horizontal {
37
+ left: 2px;
38
+ height: 6px;
39
+
40
+ > div {
41
+ height: 100%;
42
+ }
43
+ }
44
+ }
45
+ .tntd-scroll-bar-thumb {
46
+ position: relative;
47
+ display: block;
48
+ width: 0;
49
+ height: 0;
50
+ cursor: pointer;
51
+ background-color: #909399;
52
+ border-radius: inherit;
53
+ opacity: 0.3;
54
+ transition: 0.3s background-color;
55
+
56
+ &:hover {
57
+ opacity: 0.5;
58
+ }
59
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.renderThumbStyle = exports.GAP = exports.BAR_MAP = void 0;
7
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
10
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
11
+ var GAP = exports.GAP = 4; // top 2 + bottom 2 of bar instance
12
+ var BAR_MAP = exports.BAR_MAP = {
13
+ vertical: {
14
+ offset: 'offsetHeight',
15
+ scroll: 'scrollTop',
16
+ scrollSize: 'scrollHeight',
17
+ size: 'height',
18
+ key: 'vertical',
19
+ axis: 'Y',
20
+ client: 'clientY',
21
+ direction: 'top'
22
+ },
23
+ horizontal: {
24
+ offset: 'offsetWidth',
25
+ scroll: 'scrollLeft',
26
+ scrollSize: 'scrollWidth',
27
+ size: 'width',
28
+ key: 'horizontal',
29
+ axis: 'X',
30
+ client: 'clientX',
31
+ direction: 'left'
32
+ }
33
+ };
34
+ var renderThumbStyle = exports.renderThumbStyle = function renderThumbStyle(_ref) {
35
+ var move = _ref.move,
36
+ size = _ref.size,
37
+ bar = _ref.bar;
38
+ return _defineProperty(_defineProperty({}, bar.size, size), "transform", "translate".concat(bar.axis, "(").concat(move, "%)"));
39
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/scroll-bar/util.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA,CAAC,mCAAmC;AAExD,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,QAAQ,EAAE;QACR,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,cAAc;QAC1B,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,KAAK;KACjB;IACD,UAAU,EAAE;QACV,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;KAClB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI;IAChB,SAAS,EAAE,YAAY,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI;CAC5C,CAAC,CAAA","sourcesContent":["export const GAP = 4 // top 2 + bottom 2 of bar instance\n\nexport const BAR_MAP = {\n vertical: {\n offset: 'offsetHeight',\n scroll: 'scrollTop',\n scrollSize: 'scrollHeight',\n size: 'height',\n key: 'vertical',\n axis: 'Y',\n client: 'clientY',\n direction: 'top',\n },\n horizontal: {\n offset: 'offsetWidth',\n scroll: 'scrollLeft',\n scrollSize: 'scrollWidth',\n size: 'width',\n key: 'horizontal',\n axis: 'X',\n client: 'clientX',\n direction: 'left',\n },\n}\n\nexport const renderThumbStyle = ({ move, size, bar }) => ({\n [bar.size]: size,\n transform: `translate${bar.axis}(${move}%)`,\n})\n"]}
@@ -508,3 +508,5 @@ mark {
508
508
  .clearfix {
509
509
  .clearfix();
510
510
  }
511
+
512
+ .scrollbar-base();
@@ -8,3 +8,4 @@
8
8
  @import 'reset';
9
9
  @import 'operation-unit';
10
10
  @import 'typography';
11
+ @import 'scrollbar';
@@ -0,0 +1,54 @@
1
+ @scrollbar-width: 8px; // 滚动条基础宽度(Webkit有效,Firefox仅支持thin/none/auto)
2
+ @scrollbar-radius: 3px; // 滚动条圆角
3
+ @track-color: transparent; // 默认轨道颜色(透明更适配不同背景)
4
+ @thumb-color: #C9D2DD; // 默认滑块颜色(浅灰)
5
+ @thumb-hover: #8B919E; // 悬停滑块颜色(深灰)
6
+
7
+ /* 深色主题变量(通过覆盖变量实现主题切换) */
8
+ // @dark-track: rgba(255, 255, 255, 0.05); // 深色轨道
9
+ // @dark-thumb: rgba(255, 255, 255, 0.2); // 深色滑块
10
+ // @dark-thumb-hover: rgba(255, 255, 255, 0.3); // 深色悬停
11
+
12
+ /* 核心滚动条混合(建议添加到需要滚动的容器类) */
13
+ .scrollbar-base() {
14
+ /* Firefox兼容 */
15
+ // scrollbar-width: none; // 仅支持thin/none/auto,thin对应约6px宽度
16
+ /* 关键:防止滚动条占用容器内空间 */
17
+ // box-sizing: border-box;
18
+
19
+ /* Webkit内核(Chrome/Safari等) */
20
+ &::-webkit-scrollbar {
21
+ width: @scrollbar-width; // 垂直滚动条宽度
22
+ height: @scrollbar-width; // 水平滚动条高度
23
+ }
24
+
25
+ &::-webkit-scrollbar-track {
26
+ background: @track-color;
27
+ border-radius: @scrollbar-radius;
28
+ margin: 2px 0; // 上下留空避免贴边(垂直滚动条) // 若需要水平滚动条留空可添加 margin: 0 2px;
29
+ }
30
+ &::-webkit-scrollbar-track-piece {
31
+ -webkit-border-radius: 0;
32
+ }
33
+
34
+ &::-webkit-scrollbar-thumb {
35
+ height: @scrollbar-width;
36
+ background: @thumb-color;
37
+ border-radius: @scrollbar-radius;
38
+ transition: background 0.2s ease; // 颜色过渡动画
39
+ cursor: pointer;
40
+ }
41
+
42
+ &::-webkit-scrollbar-thumb:hover{
43
+ background: @thumb-hover; // 直接修改背景色更自然
44
+ opacity: 0.8;
45
+ }
46
+
47
+ /* 可选:隐藏滚动条但保留滚动功能(需配合overflow: auto) */
48
+ &.scrollbar-hidden {
49
+ &::-webkit-scrollbar {
50
+ width: 0;
51
+ height: 0;
52
+ }
53
+ }
54
+ }
@@ -146,7 +146,8 @@ var flatTreeData = exports.flatTreeData = function flatTreeData(treeData) {
146
146
  }, i));
147
147
  }
148
148
  var selfIn = Array.isArray(expandedKeys) ? expandedKeys.includes(value) : false;
149
- if ((treeDefaultExpandAll || selfIn || transFilterKey && bingo) && Array.isArray(children) && !!children.length) {
149
+ // 如果有过滤字段,需要保证当前结点以及其子结点都在expandedKeys中
150
+ if ((treeDefaultExpandAll || selfIn || transFilterKey && bingo && selfIn) && Array.isArray(children) && !!children.length) {
150
151
  result = [].concat(_toConsumableArray(result), _toConsumableArray(flatTreeData(children, filterKey, expandedKeys, treeDefaultExpandAll, indexLevel + 1)));
151
152
  }
152
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tntd-virtual-tree/utils.js"],"names":[],"mappings":"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","sourcesContent":["/**\n * 初始化给树的每个节点增加以下属性字段\n * childrenValues: 当前节点下的所有子节点的value和(包含了disabled节点)用户展开/收起\n * titleTotal: 当前节点下的所有子节点的title和 (包含了disabled节点)用于搜索\n * needCheckedChildrenValues: 当前节点下的节点(即无children)的value和(不包含了disabled节点),用于选中/取消选中\n * needCheckedLastestChildrenValues: 当前节点下的最底层节点(即无children)的value和(不包含了disabled节点),用于选中/取消选中\n * needCheckedSiblingsValue: 当前节点所有上级节点的兄弟节点, [{ key: '上级节点value', list: [xx] }] list包含非disabled节点 用于选中/取消选中\n * 用于判断后续展开/收起\n * @param {*} treeData\n */\nexport const addTreeNodeAttrs = (\n treeData,\n fieldNames = { title: 'title', value: 'value', children: 'children', disabled: 'disabled' },\n needCheckedSiblingsValue = []\n) => {\n if (Array.isArray(treeData) && !!treeData.length) {\n return treeData.map((item) => {\n item.children = item[fieldNames['children']];\n item.title = item[fieldNames['title']];\n item.value = item[fieldNames['value']];\n const { children, ...query } = item;\n if (Array.isArray(children) && !!children.length) {\n let siblingsSum = needCheckedSiblingsValue;\n if (!item[fieldNames['disabled']]) {\n // 这里注意要逆序,要不然校验的时候会出问题\n siblingsSum = [\n {\n key: item[fieldNames['value']],\n list: children.reduce((total, item) => {\n if (!item[fieldNames['disabled']]) {\n total.push(item[fieldNames['value']]);\n }\n return total;\n }, [])\n },\n ...siblingsSum\n ];\n } else {\n siblingsSum = [];\n }\n query.children = addTreeNodeAttrs(children, fieldNames, siblingsSum);\n }\n return {\n ...query,\n title: query[fieldNames['title']],\n value: query[fieldNames['value']],\n disabled: query[fieldNames['disabled']],\n childrenValues: getNodeValuess(query, false),\n titleTotal: getNodeStr(query, fieldNames['title']),\n needCheckedLastestChildrenValues: !item[fieldNames['disabled']] ? getNodeNoDisabledLastestChildrenValues(item, fieldNames) : [],\n needCheckedChildrenValues: !item[fieldNames['disabled']] ? getNodeNoDisabledChildrenValues(item, fieldNames) : [],\n needCheckedSiblingsValue: !item[fieldNames['disabled']] ? needCheckedSiblingsValue : []\n };\n });\n }\n\n return [];\n};\n\nexport const getNodeStr = (node, key, result = []) => {\n result.push(node[key]);\n\n if (Array.isArray(node.children) && !!node.children.length) {\n node.children.forEach((element) => {\n result = [...result, ...getNodeStr(element, key)];\n });\n }\n\n return result;\n};\n\n/**\n * 获取每个节点下面所有子节点的value值\n * @param {*} node\n * @param {*} widthSelf 是否包含自己\n * @param {*} result\n * @returns []\n */\nexport const getNodeValuess = (node, widthSelf = true, result = []) => {\n if (widthSelf) {\n result.push(node.value);\n }\n\n if (Array.isArray(node.children) && !!node.children.length) {\n node.children.forEach((element) => {\n result = [...result, ...getNodeValuess(element)];\n });\n }\n\n return result;\n};\n\n/**\n * 扁平树\n * @param {*} treeData\n * @param {*} expandedKeys 展开的节点\n * @param {*} treeDefaultExpandAll\n * @param {*} indexLevel\n * @param {*} result\n * @returns\n */\nexport const flatTreeData = (treeData, filterKey = '', expandedKeys = [], treeDefaultExpandAll = false, indexLevel = 0, result = []) => {\n if (Array.isArray(treeData)) {\n for (const i of treeData) {\n const { value, children, titleTotal, title, ...rest } = i;\n\n // 判断是否命中过滤\n let bingo = true;\n const transFilterKey = !['', null, undefined].includes(filterKey);\n if (transFilterKey) {\n bingo = Array.isArray(titleTotal) ? titleTotal.some((i) => i.includes(filterKey)) : false;\n }\n\n if (bingo) {\n result.push({ indexLevel, ...i });\n }\n\n const selfIn = Array.isArray(expandedKeys) ? expandedKeys.includes(value) : false;\n if ((treeDefaultExpandAll || selfIn || (transFilterKey && bingo)) && Array.isArray(children) && !!children.length) {\n result = [...result, ...flatTreeData(children, filterKey, expandedKeys, treeDefaultExpandAll, indexLevel + 1)];\n }\n }\n }\n return result;\n};\n\n/**\n * 获取所有展开的节点 (组件传入最后一层,需要将其上层全部加入到expandedKeys)\n * @param {*} treeDataWithKeys\n * @param {*} treeExpandedKeys\n * @param {*} result\n * @returns\n */\nexport const getFullExpandedKeys = (treeDataWithKeys, treeExpandedKeys = [], treeDefaultExpandAll, result = []) => {\n if (\n !treeDefaultExpandAll &&\n (!Array.isArray(treeDataWithKeys) || !treeDataWithKeys.length || !Array.isArray(treeExpandedKeys) || !treeExpandedKeys.length)\n ) {\n return [];\n }\n\n treeDataWithKeys.forEach((i) => {\n const { childrenValues, value, children } = i;\n\n if (treeDefaultExpandAll || (Array.isArray(childrenValues) && [...childrenValues, value].some((el) => treeExpandedKeys.includes(el)))) {\n result.push(value);\n\n if (Array.isArray(children) && !!children.length) {\n result = [...result, ...getFullExpandedKeys(children, treeExpandedKeys, treeDefaultExpandAll)];\n }\n }\n });\n\n return result;\n};\n\n/**\n * 初始化根据用户传入的值获取其关联节点是否要在checkList\n * @param {*} treeDataWithKeys\n * @param {*} transCheckedKeys\n * @param {*} result\n * @returns\n */\nexport const getFullCheckedKeys = (treeDataWithKeys, transCheckedKeys, result = []) => {\n if (!Array.isArray(treeDataWithKeys) || !treeDataWithKeys.length || !Array.isArray(transCheckedKeys) || !transCheckedKeys.length) {\n return [];\n }\n\n treeDataWithKeys.forEach((i) => {\n const { value, children, disabled } = i;\n const bingo = transCheckedKeys.includes(value);\n if (bingo) {\n result.push(value);\n }\n\n if (Array.isArray(children) && !!children.length) {\n const lastestUnDisabledChildrenValues = i.needCheckedLastestChildrenValues;\n // 如果当前节点是被命中,就将其下面所有子节点都选中\n if (\n Array.isArray(lastestUnDisabledChildrenValues) &&\n !!lastestUnDisabledChildrenValues.length &&\n lastestUnDisabledChildrenValues.every((el) => transCheckedKeys.includes(el))\n ) {\n result.push(value);\n }\n result = [...result, ...getFullCheckedKeys(children, transCheckedKeys)];\n }\n });\n\n return result;\n};\n\n/**\n * 递归获取某个节点所有最下层(没有children)的values集合,递归遇到disable的节点就不继续往下递归了\n * @param {*} node\n * @param {*} node\n * @returns\n */\nexport const getNodeNoDisabledLastestChildrenValues = (node, fieldNames, result = []) => {\n if (Array.isArray(node.children) && !!node.children.length) {\n node.children.forEach((element) => {\n if (!element[fieldNames['disabled']]) {\n result = [...result, ...getNodeNoDisabledLastestChildrenValues(element, fieldNames)];\n }\n });\n } else {\n if (!node[fieldNames['disabled']]) {\n result.push(node[fieldNames['value']]);\n }\n }\n return result;\n};\n\n/**\n * 递归获取某个节点所有下层(没有children)的values集合,递归遇到disable的节点就不继续往下递归了\n * @param {*} node\n * @param {*} node\n * @returns\n */\nexport const getNodeNoDisabledChildrenValues = (node, fieldNames, result = []) => {\n if (Array.isArray(node.children) && !!node.children.length) {\n node.children.forEach((element) => {\n if (!element[fieldNames['disabled']]) {\n result.push(element[fieldNames['value']]);\n result = [...result, ...getNodeNoDisabledChildrenValues(element, fieldNames)];\n }\n });\n } else {\n if (!node[fieldNames['disabled']]) {\n result.push(node[fieldNames['value']]);\n }\n }\n return result;\n}\n\n/**\n * 判断当前节点是否半选\n * @param {*} item\n * @param {*} checkedList\n */\nexport const getIndeterminate = (item, checkedList, disabledList) => {\n // 如果没有子节点,就没有半选情况\n if (!Array.isArray(item.children) || !item.children.length) {\n return false;\n }\n\n if (!Array.isArray(checkedList) || !checkedList.length) {\n return false;\n }\n\n // 当前节点下的去掉disabled的所有末级节点\n const list = Array.isArray(item.needCheckedLastestChildrenValues) ? item.needCheckedLastestChildrenValues : [];\n const childrenCheckedList = list.filter((i) => checkedList?.includes(i));\n\n return childrenCheckedList.length > 0 && childrenCheckedList.length < list.length;\n};\n\n/**\n * 获取当前节点的父亲节点是否需要被选中\n * @param {*} needCheckedSiblingsValue\n * @param {*} checkedList\n * @returns\n */\nexport const getNodeParentChoosed = (needCheckedSiblingsValue, checkedList) => {\n if (!Array.isArray(checkedList) || !checkedList.length) {\n return [];\n }\n let result = [];\n for (let item of needCheckedSiblingsValue) {\n const { key, list } = item || {};\n // 过滤掉子节点为disabled的\n const bool = Array.isArray(list) ? list.every((it) => checkedList.includes(it)) : false;\n if (bool) {\n checkedList.push(key);\n result.push(key);\n }\n }\n\n return result;\n};\n\n/**\n * 获取节点的信息\n * @param {*} tree \n * @param {*} key \n * @param {*} result \n * @returns \n */\nexport const findNodeDetail = (tree, key, result) => {\n if (Array.isArray(tree) && !!key) {\n for (let i of tree) {\n if (i.value === key) {\n result = i;\n break;\n }\n if (Array.isArray(i.children) && !!i.children.length) {\n result = findNodeDetail(i.children, key);\n if (result) {\n break;\n }\n }\n }\n }\n\n return result;\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tntd-virtual-tree/utils.js"],"names":[],"mappings":"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","sourcesContent":["/**\n * 初始化给树的每个节点增加以下属性字段\n * childrenValues: 当前节点下的所有子节点的value和(包含了disabled节点)用户展开/收起\n * titleTotal: 当前节点下的所有子节点的title和 (包含了disabled节点)用于搜索\n * needCheckedChildrenValues: 当前节点下的节点(即无children)的value和(不包含了disabled节点),用于选中/取消选中\n * needCheckedLastestChildrenValues: 当前节点下的最底层节点(即无children)的value和(不包含了disabled节点),用于选中/取消选中\n * needCheckedSiblingsValue: 当前节点所有上级节点的兄弟节点, [{ key: '上级节点value', list: [xx] }] list包含非disabled节点 用于选中/取消选中\n * 用于判断后续展开/收起\n * @param {*} treeData\n */\nexport const addTreeNodeAttrs = (\n treeData,\n fieldNames = { title: 'title', value: 'value', children: 'children', disabled: 'disabled' },\n needCheckedSiblingsValue = []\n) => {\n if (Array.isArray(treeData) && !!treeData.length) {\n return treeData.map((item) => {\n item.children = item[fieldNames['children']];\n item.title = item[fieldNames['title']];\n item.value = item[fieldNames['value']];\n const { children, ...query } = item;\n if (Array.isArray(children) && !!children.length) {\n let siblingsSum = needCheckedSiblingsValue;\n if (!item[fieldNames['disabled']]) {\n // 这里注意要逆序,要不然校验的时候会出问题\n siblingsSum = [\n {\n key: item[fieldNames['value']],\n list: children.reduce((total, item) => {\n if (!item[fieldNames['disabled']]) {\n total.push(item[fieldNames['value']]);\n }\n return total;\n }, [])\n },\n ...siblingsSum\n ];\n } else {\n siblingsSum = [];\n }\n query.children = addTreeNodeAttrs(children, fieldNames, siblingsSum);\n }\n return {\n ...query,\n title: query[fieldNames['title']],\n value: query[fieldNames['value']],\n disabled: query[fieldNames['disabled']],\n childrenValues: getNodeValuess(query, false),\n titleTotal: getNodeStr(query, fieldNames['title']),\n needCheckedLastestChildrenValues: !item[fieldNames['disabled']] ? getNodeNoDisabledLastestChildrenValues(item, fieldNames) : [],\n needCheckedChildrenValues: !item[fieldNames['disabled']] ? getNodeNoDisabledChildrenValues(item, fieldNames) : [],\n needCheckedSiblingsValue: !item[fieldNames['disabled']] ? needCheckedSiblingsValue : []\n };\n });\n }\n\n return [];\n};\n\nexport const getNodeStr = (node, key, result = []) => {\n result.push(node[key]);\n\n if (Array.isArray(node.children) && !!node.children.length) {\n node.children.forEach((element) => {\n result = [...result, ...getNodeStr(element, key)];\n });\n }\n\n return result;\n};\n\n/**\n * 获取每个节点下面所有子节点的value值\n * @param {*} node\n * @param {*} widthSelf 是否包含自己\n * @param {*} result\n * @returns []\n */\nexport const getNodeValuess = (node, widthSelf = true, result = []) => {\n if (widthSelf) {\n result.push(node.value);\n }\n\n if (Array.isArray(node.children) && !!node.children.length) {\n node.children.forEach((element) => {\n result = [...result, ...getNodeValuess(element)];\n });\n }\n\n return result;\n};\n\n/**\n * 扁平树\n * @param {*} treeData\n * @param {*} expandedKeys 展开的节点\n * @param {*} treeDefaultExpandAll\n * @param {*} indexLevel\n * @param {*} result\n * @returns\n */\nexport const flatTreeData = (treeData, filterKey = '', expandedKeys = [], treeDefaultExpandAll = false, indexLevel = 0, result = []) => {\n if (Array.isArray(treeData)) {\n for (const i of treeData) {\n const { value, children, titleTotal, title, ...rest } = i;\n\n // 判断是否命中过滤\n let bingo = true;\n const transFilterKey = !['', null, undefined].includes(filterKey);\n if (transFilterKey) {\n bingo = Array.isArray(titleTotal) ? titleTotal.some((i) => i.includes(filterKey)) : false;\n }\n\n if (bingo) {\n result.push({ indexLevel, ...i });\n }\n\n const selfIn = Array.isArray(expandedKeys) ? expandedKeys.includes(value) : false;\n // 如果有过滤字段,需要保证当前结点以及其子结点都在expandedKeys中\n if ((treeDefaultExpandAll || selfIn || (transFilterKey && bingo && selfIn)) && Array.isArray(children) && !!children.length) {\n result = [...result, ...flatTreeData(children, filterKey, expandedKeys, treeDefaultExpandAll, indexLevel + 1)];\n }\n }\n }\n return result;\n};\n\n/**\n * 获取所有展开的节点 (组件传入最后一层,需要将其上层全部加入到expandedKeys)\n * @param {*} treeDataWithKeys\n * @param {*} treeExpandedKeys\n * @param {*} result\n * @returns\n */\nexport const getFullExpandedKeys = (treeDataWithKeys, treeExpandedKeys = [], treeDefaultExpandAll, result = []) => {\n if (\n !treeDefaultExpandAll &&\n (!Array.isArray(treeDataWithKeys) || !treeDataWithKeys.length || !Array.isArray(treeExpandedKeys) || !treeExpandedKeys.length)\n ) {\n return [];\n }\n\n treeDataWithKeys.forEach((i) => {\n const { childrenValues, value, children } = i;\n\n if (treeDefaultExpandAll || (Array.isArray(childrenValues) && [...childrenValues, value].some((el) => treeExpandedKeys.includes(el)))) {\n result.push(value);\n\n if (Array.isArray(children) && !!children.length) {\n result = [...result, ...getFullExpandedKeys(children, treeExpandedKeys, treeDefaultExpandAll)];\n }\n }\n });\n\n return result;\n};\n\n/**\n * 初始化根据用户传入的值获取其关联节点是否要在checkList\n * @param {*} treeDataWithKeys\n * @param {*} transCheckedKeys\n * @param {*} result\n * @returns\n */\nexport const getFullCheckedKeys = (treeDataWithKeys, transCheckedKeys, result = []) => {\n if (!Array.isArray(treeDataWithKeys) || !treeDataWithKeys.length || !Array.isArray(transCheckedKeys) || !transCheckedKeys.length) {\n return [];\n }\n\n treeDataWithKeys.forEach((i) => {\n const { value, children, disabled } = i;\n const bingo = transCheckedKeys.includes(value);\n if (bingo) {\n result.push(value);\n }\n\n if (Array.isArray(children) && !!children.length) {\n const lastestUnDisabledChildrenValues = i.needCheckedLastestChildrenValues;\n // 如果当前节点是被命中,就将其下面所有子节点都选中\n if (\n Array.isArray(lastestUnDisabledChildrenValues) &&\n !!lastestUnDisabledChildrenValues.length &&\n lastestUnDisabledChildrenValues.every((el) => transCheckedKeys.includes(el))\n ) {\n result.push(value);\n }\n result = [...result, ...getFullCheckedKeys(children, transCheckedKeys)];\n }\n });\n\n return result;\n};\n\n/**\n * 递归获取某个节点所有最下层(没有children)的values集合,递归遇到disable的节点就不继续往下递归了\n * @param {*} node\n * @param {*} node\n * @returns\n */\nexport const getNodeNoDisabledLastestChildrenValues = (node, fieldNames, result = []) => {\n if (Array.isArray(node.children) && !!node.children.length) {\n node.children.forEach((element) => {\n if (!element[fieldNames['disabled']]) {\n result = [...result, ...getNodeNoDisabledLastestChildrenValues(element, fieldNames)];\n }\n });\n } else {\n if (!node[fieldNames['disabled']]) {\n result.push(node[fieldNames['value']]);\n }\n }\n return result;\n};\n\n/**\n * 递归获取某个节点所有下层(没有children)的values集合,递归遇到disable的节点就不继续往下递归了\n * @param {*} node\n * @param {*} node\n * @returns\n */\nexport const getNodeNoDisabledChildrenValues = (node, fieldNames, result = []) => {\n if (Array.isArray(node.children) && !!node.children.length) {\n node.children.forEach((element) => {\n if (!element[fieldNames['disabled']]) {\n result.push(element[fieldNames['value']]);\n result = [...result, ...getNodeNoDisabledChildrenValues(element, fieldNames)];\n }\n });\n } else {\n if (!node[fieldNames['disabled']]) {\n result.push(node[fieldNames['value']]);\n }\n }\n return result;\n}\n\n/**\n * 判断当前节点是否半选\n * @param {*} item\n * @param {*} checkedList\n */\nexport const getIndeterminate = (item, checkedList, disabledList) => {\n // 如果没有子节点,就没有半选情况\n if (!Array.isArray(item.children) || !item.children.length) {\n return false;\n }\n\n if (!Array.isArray(checkedList) || !checkedList.length) {\n return false;\n }\n\n // 当前节点下的去掉disabled的所有末级节点\n const list = Array.isArray(item.needCheckedLastestChildrenValues) ? item.needCheckedLastestChildrenValues : [];\n const childrenCheckedList = list.filter((i) => checkedList?.includes(i));\n\n return childrenCheckedList.length > 0 && childrenCheckedList.length < list.length;\n};\n\n/**\n * 获取当前节点的父亲节点是否需要被选中\n * @param {*} needCheckedSiblingsValue\n * @param {*} checkedList\n * @returns\n */\nexport const getNodeParentChoosed = (needCheckedSiblingsValue, checkedList) => {\n if (!Array.isArray(checkedList) || !checkedList.length) {\n return [];\n }\n let result = [];\n for (let item of needCheckedSiblingsValue) {\n const { key, list } = item || {};\n // 过滤掉子节点为disabled的\n const bool = Array.isArray(list) ? list.every((it) => checkedList.includes(it)) : false;\n if (bool) {\n checkedList.push(key);\n result.push(key);\n }\n }\n\n return result;\n};\n\n/**\n * 获取节点的信息\n * @param {*} tree \n * @param {*} key \n * @param {*} result \n * @returns \n */\nexport const findNodeDetail = (tree, key, result) => {\n if (Array.isArray(tree) && !!key) {\n for (let i of tree) {\n if (i.value === key) {\n result = i;\n break;\n }\n if (Array.isArray(i.children) && !!i.children.length) {\n result = findNodeDetail(i.children, key);\n if (result) {\n break;\n }\n }\n }\n }\n\n return result;\n};\n"]}
@@ -6,6 +6,7 @@
6
6
  height:100%;
7
7
  padding-top: 110px;
8
8
  background-color: #fff;
9
+ border-radius: @border-radius-base;
9
10
  }
10
11
  &-desc{
11
12
  text-align: center;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handle-icon/index.js"],"names":[],"mappings":";AAYA,2DAoJC;;IAED,+BAiEC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handle-icon/index.js"],"names":[],"mappings":";AA6BA,2DAgJC;;IAED,+BAiEC"}