@vtx/components 3.1.127 → 3.1.129
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/lib/vtx-search/index.js
CHANGED
|
@@ -132,6 +132,9 @@ function VtxSearch(props) {
|
|
|
132
132
|
return !!item;
|
|
133
133
|
}) : props === null || props === void 0 ? void 0 : props.children;
|
|
134
134
|
var rowHeight = layout === 'horizontal' ? 48 : 68;
|
|
135
|
+
(0, _react.useEffect)(function () {
|
|
136
|
+
onCollapse && onCollapse(rowHeight + 16);
|
|
137
|
+
}, [layout]);
|
|
135
138
|
(0, _react.useLayoutEffect)(function () {
|
|
136
139
|
var weightiness = 0;
|
|
137
140
|
newGridWeight.map(function (item) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["VtxSearch","props","layout","column","lg","md","sm","gridWeight","titles","labelWidth","wrapClassName","isConfirmButton","isClearButton","isMoreButton","confirmText","clearText","onConfirm","onClear","renderButtons","showAll","onToggleShow","customEnumText","vtxSearchRef","useRef","size","useColSize","realColumn","useContext","StoreCtx","onCollapse","initStyle","height","useState","weightiness","setWeightiness","useSetState","style","setStyle","boxStyle","ref","newGridWeight","filter","item","newTitles","newChildren","Array","isArray","children","rowHeight","useLayoutEffect","map","padding","current","clientHeight","isShowMore","analyzeChildren","data","cData","length","render","chData","forEach","ite","push","index","layout_h","d","i","textAlign","width","layout_v","gwt","classnames","paddingTop","collapseText","expandText","propTypes","PropTypes","oneOf","objectOf","number","array","string","node","bool","func","object"],"sources":["vtx-search/index.jsx"],"sourcesContent":["/*\r\n * @Author: chenxinyu\r\n * @Date: 2021-03-24 21:47:52\r\n * @LastEditors: your name\r\n * @LastEditTime: 2022-03-22 16:19:00\r\n * @Description: 查询布局组件\r\n * @FilePath: \\react-components\\components\\vtx-search\\index.jsx\r\n */\r\nimport React, { useState, useLayoutEffect, useRef, useContext } from 'react';\r\nimport useSetState from 'ahooks/es/useSetState';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport Button from 'antd/lib/button';\r\nimport Tooltip from 'antd/lib/tooltip';\r\nimport UpOutlined from '@ant-design/icons/UpOutlined';\r\nimport DownOutlined from '@ant-design/icons/DownOutlined';\r\nimport VtxRow from './VtxRow';\r\nimport VtxCol from './VtxCol';\r\nimport { StoreCtx } from '../vtx-page-layout/TableLayout';\r\nimport useColSize from '../_util/useColSize';\r\n\r\nfunction VtxSearch(props) {\r\n //参数列表\r\n const {\r\n layout = 'horizontal',\r\n column = { lg: 4, md: 3, sm: 2 },\r\n gridWeight = [],\r\n titles = [],\r\n labelWidth = 84, //搜索条件名宽度\r\n wrapClassName,\r\n isConfirmButton = true, //是否显示确认按钮\r\n isClearButton = true, //是否显示清空按钮\r\n isMoreButton = true, //是否显示更多按钮\r\n confirmText = '查询', //确认按钮文本\r\n clearText = '重置', //情况按钮文本\r\n onConfirm, //确认按钮回调\r\n onClear, //清空按钮回调\r\n renderButtons, //自定义按钮块\r\n showAll = false, //是否展示所有查询条件\r\n onToggleShow,\r\n customEnumText = {}\r\n } = props;\r\n\r\n const vtxSearchRef = useRef();\r\n const size = useColSize(vtxSearchRef);\r\n const realColumn = column[size];\r\n\r\n const { onCollapse } = useContext(StoreCtx);\r\n\r\n const initStyle = {\r\n height: layout === 'horizontal' ? 48 : 68,\r\n };\r\n //初始化\r\n const [weightiness, setWeightiness] = useState(0);\r\n const [style, setStyle] = useSetState(initStyle);\r\n const { height, boxStyle } = style;\r\n const ref = useRef();\r\n\r\n const newGridWeight = gridWeight.filter(item => !!item);\r\n const newTitles = titles.filter(item => !!item);\r\n const newChildren = Array.isArray(props?.children)\r\n ? props?.children.filter(item => !!item)\r\n : props?.children;\r\n\r\n const rowHeight = layout === 'horizontal' ? 48 : 68;\r\n\r\n useLayoutEffect(() => {\r\n let weightiness = 0;\r\n newGridWeight.map(item => {\r\n weightiness += item;\r\n });\r\n const padding = 16;\r\n setWeightiness(weightiness);\r\n\r\n if (showAll) {\r\n setStyle(\r\n weightiness > realColumn\r\n ? {\r\n height: ref.current.clientHeight,\r\n }\r\n : initStyle,\r\n );\r\n onCollapse && onCollapse(ref.current.clientHeight + padding);\r\n }\r\n }, [gridWeight, realColumn]);\r\n\r\n const isShowMore = () => {\r\n const padding = 16;\r\n if (height > rowHeight) {\r\n setStyle(initStyle);\r\n if (onToggleShow && typeof onToggleShow === 'function') {\r\n onToggleShow(rowHeight + padding);\r\n }\r\n onCollapse && onCollapse(rowHeight + padding);\r\n } else {\r\n setStyle({\r\n height: ref.current.clientHeight,\r\n });\r\n if (onToggleShow && typeof onToggleShow === 'function') {\r\n onToggleShow(ref.current.clientHeight + padding);\r\n }\r\n onCollapse && onCollapse(ref.current.clientHeight + padding);\r\n }\r\n };\r\n\r\n const analyzeChildren = data => {\r\n let cData = data;\r\n if (!cData) return null;\r\n if (typeof data == 'function') {\r\n cData = data();\r\n }\r\n if (!cData.length) {\r\n return render(cData, 0);\r\n } else {\r\n let chData = [];\r\n cData.forEach(item => {\r\n if (typeof item == 'function') {\r\n let ite = item();\r\n if (Array.isArray(ite)) {\r\n chData.push(...ite);\r\n }\r\n chData.push(ite);\r\n return;\r\n }\r\n if (Array.isArray(item)) {\r\n chData.push(...item);\r\n return;\r\n }\r\n chData.push(item);\r\n });\r\n return chData.map((item, index) => {\r\n return render(item, index);\r\n });\r\n }\r\n };\r\n\r\n const layout_h = (d, i) => (\r\n <VtxRow gutter={2} attr=\"row\">\r\n <div className=\"vtx-search-label_h\" style={{ textAlign: 'right', width: labelWidth }}>\r\n <Tooltip title={newTitles[i]} placement=\"topRight\">\r\n {newTitles[i]}\r\n </Tooltip>\r\n </div>\r\n <div className=\"vtx-search-lists_h\" style={{ width: `calc(100% - ${labelWidth}px)` }}>\r\n <span className=\"vtx-search-list\">{d}</span>\r\n </div>\r\n </VtxRow>\r\n );\r\n\r\n const layout_v = (d, i) => (\r\n <VtxRow gutter={2} attr=\"row\" className=\"vtx-search-item__v\">\r\n <div className=\"vtx-search-label_v\">\r\n <Tooltip title={newTitles[i]} placement=\"topLeft\">\r\n {newTitles[i]}\r\n </Tooltip>\r\n </div>\r\n <div className=\"vtx-search-lists_v\">\r\n <span className=\"vtx-search-list\">{d}</span>\r\n </div>\r\n </VtxRow>\r\n );\r\n\r\n let render = (d, i) => {\r\n let gwt = newGridWeight[i];\r\n return (\r\n <VtxCol key={i} span={(24 / realColumn) * gwt} className=\"a\">\r\n {layout === 'horizontal' && layout_h(d, i)}\r\n {layout === 'vertical' && layout_v(d, i)}\r\n </VtxCol>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n className={classnames('vtx-search', wrapClassName)}\r\n style={{ height: `${height + 16}px`, ...boxStyle }}\r\n ref={vtxSearchRef}\r\n >\r\n <div className=\"vtx-search-element\" ref={ref}>\r\n <VtxRow gutter={24} attr=\"row\">\r\n {analyzeChildren(newChildren)}\r\n </VtxRow>\r\n </div>\r\n\r\n <div\r\n className=\"vtx-search-buttons\"\r\n style={{ paddingTop: layout === 'vertical' ? 28 : 0 }}\r\n >\r\n {renderButtons ? (\r\n <VtxRow gutter={8} attr=\"row\">\r\n {renderButtons}\r\n </VtxRow>\r\n ) : (\r\n <VtxRow gutter={8} attr=\"row\">\r\n {isConfirmButton && (\r\n <VtxCol span={9} offset={!(weightiness > realColumn && isMoreButton) ? 6 : 0}>\r\n <span data-type={'bt'}>\r\n <Button\r\n style={{ width: '100%' }}\r\n type=\"primary\"\r\n onClick={onConfirm}\r\n >\r\n {confirmText}\r\n </Button>\r\n </span>\r\n </VtxCol>\r\n )}\r\n {isClearButton && (\r\n <VtxCol span={9}>\r\n <span data-type={'bt'} className=\"vtx-search-buttons-default\">\r\n <Button style={{ width: '100%' }} onClick={onClear}>\r\n {clearText}\r\n </Button>\r\n </span>\r\n </VtxCol>\r\n )}\r\n {weightiness > realColumn && isMoreButton && (\r\n <VtxCol span={6}>\r\n <div\r\n data-type={'bt'}\r\n onClick={() => isShowMore()}\r\n className=\"vtx-search-more\"\r\n >\r\n {height > rowHeight ? (\r\n <>\r\n {customEnumText?.collapseText || \"收起\"}\r\n <UpOutlined />\r\n </>\r\n ) : (\r\n <>\r\n {customEnumText?.expandText || \"展开\"}\r\n <DownOutlined />\r\n </>\r\n )}\r\n </div>\r\n </VtxCol>\r\n )}\r\n </VtxRow>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nVtxSearch.propTypes = {\r\n layout: PropTypes.oneOf(['vertical', 'horizontal']),\r\n column: PropTypes.objectOf(PropTypes.number),\r\n gridWeight: PropTypes.array,\r\n titles: PropTypes.array,\r\n labelWidth: PropTypes.number,\r\n wrapClassName: PropTypes.string,\r\n children: PropTypes.node,\r\n isConfirmButton: PropTypes.bool,\r\n isClearButton: PropTypes.bool,\r\n isMoreButton: PropTypes.bool,\r\n onConfirm: PropTypes.func,\r\n confirmText: PropTypes.string,\r\n onClear: PropTypes.func,\r\n clearText: PropTypes.string,\r\n renderButtons: PropTypes.node,\r\n showAll: PropTypes.bool,\r\n onToggleShow: PropTypes.func,\r\n customEnumText: PropTypes.object\r\n};\r\nexport default VtxSearch;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["VtxSearch","props","layout","column","lg","md","sm","gridWeight","titles","labelWidth","wrapClassName","isConfirmButton","isClearButton","isMoreButton","confirmText","clearText","onConfirm","onClear","renderButtons","showAll","onToggleShow","customEnumText","vtxSearchRef","useRef","size","useColSize","realColumn","useContext","StoreCtx","onCollapse","initStyle","height","useState","weightiness","setWeightiness","useSetState","style","setStyle","boxStyle","ref","newGridWeight","filter","item","newTitles","newChildren","Array","isArray","children","rowHeight","useEffect","useLayoutEffect","map","padding","current","clientHeight","isShowMore","analyzeChildren","data","cData","length","render","chData","forEach","ite","push","index","layout_h","d","i","textAlign","width","layout_v","gwt","classnames","paddingTop","collapseText","expandText","propTypes","PropTypes","oneOf","objectOf","number","array","string","node","bool","func","object"],"sources":["vtx-search/index.jsx"],"sourcesContent":["/*\r\n * @Author: chenxinyu\r\n * @Date: 2021-03-24 21:47:52\r\n * @LastEditors: your name\r\n * @LastEditTime: 2022-03-22 16:19:00\r\n * @Description: 查询布局组件\r\n * @FilePath: \\react-components\\components\\vtx-search\\index.jsx\r\n */\r\nimport React, { useState, useLayoutEffect, useRef, useContext, useEffect } from 'react';\r\nimport useSetState from 'ahooks/es/useSetState';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport Button from 'antd/lib/button';\r\nimport Tooltip from 'antd/lib/tooltip';\r\nimport UpOutlined from '@ant-design/icons/UpOutlined';\r\nimport DownOutlined from '@ant-design/icons/DownOutlined';\r\nimport VtxRow from './VtxRow';\r\nimport VtxCol from './VtxCol';\r\nimport { StoreCtx } from '../vtx-page-layout/TableLayout';\r\nimport useColSize from '../_util/useColSize';\r\n\r\nfunction VtxSearch(props) {\r\n //参数列表\r\n const {\r\n layout = 'horizontal',\r\n column = { lg: 4, md: 3, sm: 2 },\r\n gridWeight = [],\r\n titles = [],\r\n labelWidth = 84, //搜索条件名宽度\r\n wrapClassName,\r\n isConfirmButton = true, //是否显示确认按钮\r\n isClearButton = true, //是否显示清空按钮\r\n isMoreButton = true, //是否显示更多按钮\r\n confirmText = '查询', //确认按钮文本\r\n clearText = '重置', //情况按钮文本\r\n onConfirm, //确认按钮回调\r\n onClear, //清空按钮回调\r\n renderButtons, //自定义按钮块\r\n showAll = false, //是否展示所有查询条件\r\n onToggleShow,\r\n customEnumText = {}\r\n } = props;\r\n\r\n const vtxSearchRef = useRef();\r\n const size = useColSize(vtxSearchRef);\r\n const realColumn = column[size];\r\n\r\n const { onCollapse } = useContext(StoreCtx);\r\n\r\n const initStyle = {\r\n height: layout === 'horizontal' ? 48 : 68,\r\n };\r\n //初始化\r\n const [weightiness, setWeightiness] = useState(0);\r\n const [style, setStyle] = useSetState(initStyle);\r\n const { height, boxStyle } = style;\r\n const ref = useRef();\r\n\r\n const newGridWeight = gridWeight.filter(item => !!item);\r\n const newTitles = titles.filter(item => !!item);\r\n const newChildren = Array.isArray(props?.children)\r\n ? props?.children.filter(item => !!item)\r\n : props?.children;\r\n\r\n const rowHeight = layout === 'horizontal' ? 48 : 68;\r\n\r\n useEffect(()=>{\r\n onCollapse && onCollapse(rowHeight+16)\r\n },[layout])\r\n\r\n useLayoutEffect(() => {\r\n let weightiness = 0;\r\n newGridWeight.map(item => {\r\n weightiness += item;\r\n });\r\n const padding = 16;\r\n setWeightiness(weightiness);\r\n\r\n if (showAll) {\r\n setStyle(\r\n weightiness > realColumn\r\n ? {\r\n height: ref.current.clientHeight,\r\n }\r\n : initStyle,\r\n );\r\n onCollapse && onCollapse(ref.current.clientHeight + padding);\r\n }\r\n }, [gridWeight, realColumn]);\r\n\r\n const isShowMore = () => {\r\n const padding = 16;\r\n if (height > rowHeight) {\r\n setStyle(initStyle);\r\n if (onToggleShow && typeof onToggleShow === 'function') {\r\n onToggleShow(rowHeight + padding);\r\n }\r\n onCollapse && onCollapse(rowHeight + padding);\r\n } else {\r\n setStyle({\r\n height: ref.current.clientHeight,\r\n });\r\n if (onToggleShow && typeof onToggleShow === 'function') {\r\n onToggleShow(ref.current.clientHeight + padding);\r\n }\r\n onCollapse && onCollapse(ref.current.clientHeight + padding);\r\n }\r\n };\r\n\r\n const analyzeChildren = data => {\r\n let cData = data;\r\n if (!cData) return null;\r\n if (typeof data == 'function') {\r\n cData = data();\r\n }\r\n if (!cData.length) {\r\n return render(cData, 0);\r\n } else {\r\n let chData = [];\r\n cData.forEach(item => {\r\n if (typeof item == 'function') {\r\n let ite = item();\r\n if (Array.isArray(ite)) {\r\n chData.push(...ite);\r\n }\r\n chData.push(ite);\r\n return;\r\n }\r\n if (Array.isArray(item)) {\r\n chData.push(...item);\r\n return;\r\n }\r\n chData.push(item);\r\n });\r\n return chData.map((item, index) => {\r\n return render(item, index);\r\n });\r\n }\r\n };\r\n\r\n const layout_h = (d, i) => (\r\n <VtxRow gutter={2} attr=\"row\">\r\n <div className=\"vtx-search-label_h\" style={{ textAlign: 'right', width: labelWidth }}>\r\n <Tooltip title={newTitles[i]} placement=\"topRight\">\r\n {newTitles[i]}\r\n </Tooltip>\r\n </div>\r\n <div className=\"vtx-search-lists_h\" style={{ width: `calc(100% - ${labelWidth}px)` }}>\r\n <span className=\"vtx-search-list\">{d}</span>\r\n </div>\r\n </VtxRow>\r\n );\r\n\r\n const layout_v = (d, i) => (\r\n <VtxRow gutter={2} attr=\"row\" className=\"vtx-search-item__v\">\r\n <div className=\"vtx-search-label_v\">\r\n <Tooltip title={newTitles[i]} placement=\"topLeft\">\r\n {newTitles[i]}\r\n </Tooltip>\r\n </div>\r\n <div className=\"vtx-search-lists_v\">\r\n <span className=\"vtx-search-list\">{d}</span>\r\n </div>\r\n </VtxRow>\r\n );\r\n\r\n let render = (d, i) => {\r\n let gwt = newGridWeight[i];\r\n return (\r\n <VtxCol key={i} span={(24 / realColumn) * gwt} className=\"a\">\r\n {layout === 'horizontal' && layout_h(d, i)}\r\n {layout === 'vertical' && layout_v(d, i)}\r\n </VtxCol>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n className={classnames('vtx-search', wrapClassName)}\r\n style={{ height: `${height + 16}px`, ...boxStyle }}\r\n ref={vtxSearchRef}\r\n >\r\n <div className=\"vtx-search-element\" ref={ref}>\r\n <VtxRow gutter={24} attr=\"row\">\r\n {analyzeChildren(newChildren)}\r\n </VtxRow>\r\n </div>\r\n\r\n <div\r\n className=\"vtx-search-buttons\"\r\n style={{ paddingTop: layout === 'vertical' ? 28 : 0 }}\r\n >\r\n {renderButtons ? (\r\n <VtxRow gutter={8} attr=\"row\">\r\n {renderButtons}\r\n </VtxRow>\r\n ) : (\r\n <VtxRow gutter={8} attr=\"row\">\r\n {isConfirmButton && (\r\n <VtxCol span={9} offset={!(weightiness > realColumn && isMoreButton) ? 6 : 0}>\r\n <span data-type={'bt'}>\r\n <Button\r\n style={{ width: '100%' }}\r\n type=\"primary\"\r\n onClick={onConfirm}\r\n >\r\n {confirmText}\r\n </Button>\r\n </span>\r\n </VtxCol>\r\n )}\r\n {isClearButton && (\r\n <VtxCol span={9}>\r\n <span data-type={'bt'} className=\"vtx-search-buttons-default\">\r\n <Button style={{ width: '100%' }} onClick={onClear}>\r\n {clearText}\r\n </Button>\r\n </span>\r\n </VtxCol>\r\n )}\r\n {weightiness > realColumn && isMoreButton && (\r\n <VtxCol span={6}>\r\n <div\r\n data-type={'bt'}\r\n onClick={() => isShowMore()}\r\n className=\"vtx-search-more\"\r\n >\r\n {height > rowHeight ? (\r\n <>\r\n {customEnumText?.collapseText || \"收起\"}\r\n <UpOutlined />\r\n </>\r\n ) : (\r\n <>\r\n {customEnumText?.expandText || \"展开\"}\r\n <DownOutlined />\r\n </>\r\n )}\r\n </div>\r\n </VtxCol>\r\n )}\r\n </VtxRow>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nVtxSearch.propTypes = {\r\n layout: PropTypes.oneOf(['vertical', 'horizontal']),\r\n column: PropTypes.objectOf(PropTypes.number),\r\n gridWeight: PropTypes.array,\r\n titles: PropTypes.array,\r\n labelWidth: PropTypes.number,\r\n wrapClassName: PropTypes.string,\r\n children: PropTypes.node,\r\n isConfirmButton: PropTypes.bool,\r\n isClearButton: PropTypes.bool,\r\n isMoreButton: PropTypes.bool,\r\n onConfirm: PropTypes.func,\r\n confirmText: PropTypes.string,\r\n onClear: PropTypes.func,\r\n clearText: PropTypes.string,\r\n renderButtons: PropTypes.node,\r\n showAll: PropTypes.bool,\r\n onToggleShow: PropTypes.func,\r\n customEnumText: PropTypes.object\r\n};\r\nexport default VtxSearch;\r\n"],"mappings":"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"}
|
package/lib/vtx-tree/index.js
CHANGED
|
@@ -19,7 +19,9 @@ var _utils = require("./utils");
|
|
|
19
19
|
|
|
20
20
|
var _ahooks = require("ahooks");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _utils2 = require("@vtx/utils");
|
|
23
|
+
|
|
24
|
+
var _excluded = ["prefixCls", "showSearch", "treeData", "searchPlaceholder", "renderMenuList", "fieldNames", "titleClassName"];
|
|
23
25
|
|
|
24
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
25
27
|
|
|
@@ -47,10 +49,6 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
47
49
|
|
|
48
50
|
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."); }
|
|
49
51
|
|
|
50
|
-
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); }
|
|
51
|
-
|
|
52
|
-
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; }
|
|
53
|
-
|
|
54
52
|
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
55
53
|
|
|
56
54
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
@@ -59,24 +57,35 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
59
57
|
|
|
60
58
|
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; }
|
|
61
59
|
|
|
60
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
61
|
+
|
|
62
|
+
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); }
|
|
63
|
+
|
|
64
|
+
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; }
|
|
65
|
+
|
|
62
66
|
var getParentKey = function getParentKey(key, tree) {
|
|
63
|
-
var parentKey;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
var parentKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
68
|
+
|
|
69
|
+
var _iterator = _createForOfIteratorHelper(tree),
|
|
70
|
+
_step;
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
74
|
+
var node = _step.value;
|
|
75
|
+
if (node.key === key) return parentKey;
|
|
76
|
+
|
|
77
|
+
if (node.children) {
|
|
78
|
+
var found = getParentKey(key, node.children, node.key);
|
|
79
|
+
if (found !== undefined) return found;
|
|
75
80
|
}
|
|
76
81
|
}
|
|
82
|
+
} catch (err) {
|
|
83
|
+
_iterator.e(err);
|
|
84
|
+
} finally {
|
|
85
|
+
_iterator.f();
|
|
77
86
|
}
|
|
78
87
|
|
|
79
|
-
return
|
|
88
|
+
return undefined;
|
|
80
89
|
};
|
|
81
90
|
|
|
82
91
|
var VtxTree = function VtxTree(_ref, ref) {
|
|
@@ -90,6 +99,7 @@ var VtxTree = function VtxTree(_ref, ref) {
|
|
|
90
99
|
searchPlaceholder = _ref$searchPlaceholde === void 0 ? '请输入要查询的关键字' : _ref$searchPlaceholde,
|
|
91
100
|
renderMenuList = _ref.renderMenuList,
|
|
92
101
|
fieldNames = _ref.fieldNames,
|
|
102
|
+
titleClassName = _ref.titleClassName,
|
|
93
103
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
94
104
|
|
|
95
105
|
var treeRef = (0, _react.useRef)();
|
|
@@ -99,25 +109,22 @@ var VtxTree = function VtxTree(_ref, ref) {
|
|
|
99
109
|
height = _useState2[0],
|
|
100
110
|
setHeight = _useState2[1];
|
|
101
111
|
|
|
102
|
-
var _useState3 = (0, _react.useState)(
|
|
112
|
+
var _useState3 = (0, _react.useState)([]),
|
|
103
113
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
expandedKeys = _useState4[0],
|
|
115
|
+
setExpandedKeys = _useState4[1];
|
|
106
116
|
|
|
107
|
-
var _useState5 = (0, _react.useState)(
|
|
117
|
+
var _useState5 = (0, _react.useState)(props.autoExpandParent || false),
|
|
108
118
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
109
|
-
|
|
110
|
-
|
|
119
|
+
autoExpandParent = _useState6[0],
|
|
120
|
+
setAutoExpandParent = _useState6[1];
|
|
111
121
|
|
|
112
|
-
var _useState7 = (0, _react.useState)(props.
|
|
122
|
+
var _useState7 = (0, _react.useState)(props.selectedKeys || props.defaultSelectedKeys || []),
|
|
113
123
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
114
|
-
|
|
115
|
-
|
|
124
|
+
selectedKeys = _useState8[0],
|
|
125
|
+
setSelectedKeys = _useState8[1];
|
|
116
126
|
|
|
117
|
-
var
|
|
118
|
-
_useState10 = _slicedToArray(_useState9, 2),
|
|
119
|
-
selectedKeys = _useState10[0],
|
|
120
|
-
setSelectedKeys = _useState10[1];
|
|
127
|
+
var inputRef = (0, _react.useRef)();
|
|
121
128
|
|
|
122
129
|
var lastSelectedKey = _react["default"].useRef();
|
|
123
130
|
|
|
@@ -167,7 +174,45 @@ var VtxTree = function VtxTree(_ref, ref) {
|
|
|
167
174
|
}
|
|
168
175
|
};
|
|
169
176
|
|
|
170
|
-
var
|
|
177
|
+
var _useState9 = (0, _react.useState)(treeData),
|
|
178
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
179
|
+
newTreeData = _useState10[0],
|
|
180
|
+
setNewTreeData = _useState10[1];
|
|
181
|
+
|
|
182
|
+
(0, _react.useEffect)(function () {
|
|
183
|
+
if (treeData !== null && treeData !== void 0 && treeData.length && inputRef.current) {
|
|
184
|
+
filterTreeData(inputRef.current.input.value);
|
|
185
|
+
}
|
|
186
|
+
}, [treeData]);
|
|
187
|
+
var filterTreeData = (0, _ahooks.useMemoizedFn)(function () {
|
|
188
|
+
var searchValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
189
|
+
var newTreeData = (0, _utils2.parseTreeData)(treeData, {
|
|
190
|
+
renderNode: function renderNode(item) {
|
|
191
|
+
var _objectSpread2;
|
|
192
|
+
|
|
193
|
+
var titleKey = (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.title) || 'title';
|
|
194
|
+
var strTitle = item[titleKey] || '';
|
|
195
|
+
var index = strTitle.indexOf(searchValue);
|
|
196
|
+
var beforeStr = strTitle.substring(0, index);
|
|
197
|
+
var afterStr = strTitle.slice(index + searchValue.length);
|
|
198
|
+
var className = titleClassName ? titleClassName(item) : '';
|
|
199
|
+
var title = index > -1 ? /*#__PURE__*/_react["default"].createElement("span", {
|
|
200
|
+
className: className
|
|
201
|
+
}, beforeStr, /*#__PURE__*/_react["default"].createElement("span", {
|
|
202
|
+
className: "".concat(prefixCls, "-search-value")
|
|
203
|
+
}, searchValue), afterStr) : /*#__PURE__*/_react["default"].createElement("span", {
|
|
204
|
+
className: className
|
|
205
|
+
}, strTitle);
|
|
206
|
+
return _objectSpread(_objectSpread({}, item), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, titleKey, title), _defineProperty(_objectSpread2, "key", item.key), _defineProperty(_objectSpread2, "strTitle", strTitle), _objectSpread2));
|
|
207
|
+
},
|
|
208
|
+
filterNode: function filterNode(item) {
|
|
209
|
+
return item.strTitle.indexOf(searchValue) > -1;
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
return setNewTreeData(newTreeData);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
var _useDebounceFn = (0, _ahooks.useDebounceFn)(function (value) {
|
|
171
216
|
var _props$onExpand2;
|
|
172
217
|
|
|
173
218
|
var newExpandedKeys = dataList.map(function (item) {
|
|
@@ -179,14 +224,18 @@ var VtxTree = function VtxTree(_ref, ref) {
|
|
|
179
224
|
}).filter(function (item, i, self) {
|
|
180
225
|
return item && self.indexOf(item) === i;
|
|
181
226
|
});
|
|
182
|
-
setSearchValue(value);
|
|
183
227
|
setAutoExpandParent(true);
|
|
228
|
+
filterTreeData(value);
|
|
184
229
|
(_props$onExpand2 = props.onExpand) === null || _props$onExpand2 === void 0 ? void 0 : _props$onExpand2.call(props, newExpandedKeys);
|
|
185
230
|
|
|
186
231
|
if (!('expandedKeys' in props)) {
|
|
187
232
|
setExpandedKeys(newExpandedKeys);
|
|
188
233
|
}
|
|
189
|
-
}
|
|
234
|
+
}, {
|
|
235
|
+
wait: 300
|
|
236
|
+
}),
|
|
237
|
+
onSearch = _useDebounceFn.run;
|
|
238
|
+
|
|
190
239
|
(0, _react.useImperativeHandle)(ref, function () {
|
|
191
240
|
return {
|
|
192
241
|
onSearch: onSearch
|
|
@@ -260,32 +309,6 @@ var VtxTree = function VtxTree(_ref, ref) {
|
|
|
260
309
|
}
|
|
261
310
|
};
|
|
262
311
|
|
|
263
|
-
var newTreeData = (0, _react.useMemo)(function () {
|
|
264
|
-
var loop = function loop(data) {
|
|
265
|
-
return data.map(function (item) {
|
|
266
|
-
var _objectSpread3;
|
|
267
|
-
|
|
268
|
-
var titleKey = (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.title) || 'title';
|
|
269
|
-
var strTitle = item[titleKey];
|
|
270
|
-
var index = strTitle.indexOf(searchValue);
|
|
271
|
-
var beforeStr = strTitle.substring(0, index);
|
|
272
|
-
var afterStr = strTitle.slice(index + searchValue.length);
|
|
273
|
-
var title = index > -1 ? /*#__PURE__*/_react["default"].createElement("span", null, beforeStr, /*#__PURE__*/_react["default"].createElement("span", {
|
|
274
|
-
className: "".concat(prefixCls, "-search-value")
|
|
275
|
-
}, searchValue), afterStr) : /*#__PURE__*/_react["default"].createElement("span", null, strTitle);
|
|
276
|
-
|
|
277
|
-
if (item.children) {
|
|
278
|
-
var _objectSpread2;
|
|
279
|
-
|
|
280
|
-
return _objectSpread(_objectSpread({}, item), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, titleKey, title), _defineProperty(_objectSpread2, "key", item.key), _defineProperty(_objectSpread2, "children", loop(item.children)), _objectSpread2));
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
return _objectSpread(_objectSpread({}, item), {}, (_objectSpread3 = {}, _defineProperty(_objectSpread3, titleKey, title), _defineProperty(_objectSpread3, "key", item.key), _objectSpread3));
|
|
284
|
-
});
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
return loop(treeData);
|
|
288
|
-
}, [treeData, searchValue]);
|
|
289
312
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
290
313
|
className: "".concat(prefixCls, "-wraaper")
|
|
291
314
|
}, showSearch && /*#__PURE__*/_react["default"].createElement(_antd.Input, {
|
|
@@ -295,7 +318,8 @@ var VtxTree = function VtxTree(_ref, ref) {
|
|
|
295
318
|
placeholder: searchPlaceholder,
|
|
296
319
|
onChange: function onChange(e) {
|
|
297
320
|
return onSearch(e.target.value);
|
|
298
|
-
}
|
|
321
|
+
},
|
|
322
|
+
ref: inputRef
|
|
299
323
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
300
324
|
className: prefixCls,
|
|
301
325
|
ref: treeRef
|
|
@@ -307,11 +331,14 @@ var VtxTree = function VtxTree(_ref, ref) {
|
|
|
307
331
|
},
|
|
308
332
|
blockNode: true,
|
|
309
333
|
treeData: newTreeData,
|
|
310
|
-
onExpand: onExpand
|
|
311
|
-
|
|
334
|
+
onExpand: onExpand
|
|
335
|
+
}, expandedKeys.length === 0 && props.defaultExpandAll ? {} : {
|
|
336
|
+
expandedKeys: expandedKeys
|
|
337
|
+
}, {
|
|
312
338
|
autoExpandParent: autoExpandParent,
|
|
313
339
|
selectedKeys: selectedKeys,
|
|
314
340
|
onSelect: onSelect,
|
|
341
|
+
fieldNames: fieldNames,
|
|
315
342
|
expandAction: "click",
|
|
316
343
|
titleRender: function titleRender(nodeData) {
|
|
317
344
|
var titleKey = (fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.title) || 'title';
|
|
@@ -357,7 +384,9 @@ VtxTree.propTypes = {
|
|
|
357
384
|
onSelect: _propTypes["default"].func,
|
|
358
385
|
searchPlaceholder: _propTypes["default"].string,
|
|
359
386
|
renderMenuList: _propTypes["default"].func,
|
|
360
|
-
|
|
387
|
+
titleClassName: _propTypes["default"].func,
|
|
388
|
+
fieldNames: _propTypes["default"].array,
|
|
389
|
+
defaultExpandAll: _propTypes["default"].bool
|
|
361
390
|
};
|
|
362
391
|
|
|
363
392
|
var _default = /*#__PURE__*/(0, _react.forwardRef)(VtxTree);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getParentKey","key","tree","parentKey","i","length","node","children","some","item","VtxTree","ref","prefixCls","showSearch","treeData","searchPlaceholder","renderMenuList","fieldNames","props","treeRef","useRef","useState","height","setHeight","searchValue","setSearchValue","expandedKeys","setExpandedKeys","autoExpandParent","setAutoExpandParent","selectedKeys","defaultSelectedKeys","setSelectedKeys","lastSelectedKey","React","cachedSelectedKeys","dataList","useMemo","titleKey","title","generateList","data","push","useEffect","onExpand","newExpandedKeys","info","onSearch","useMemoizedFn","value","map","indexOf","filter","self","useImperativeHandle","resizeObserver","ResizeObserver","current","offsetHeight","observe","box","disconnect","onSelect","keys","event","multiple","nativeEvent","newEvent","selected","ctrlPick","ctrlKey","metaKey","shiftPick","shiftKey","newSelectedKeys","selectedNodes","convertDirectoryKeysToNodes","Array","from","Set","calcRangeKeys","startKey","endKey","newTreeData","loop","strTitle","index","beforeStr","substring","afterStr","slice","marginBottom","e","target","showLeafIcon","nodeData","menuList","visible","label","stopPropagation","onClick","icon","propTypes","PropTypes","bool","string","array","func","forwardRef"],"sources":["vtx-tree/index.jsx"],"sourcesContent":["import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Input, Tooltip, Tree } from 'antd';\r\nimport { DownOutlined } from '@ant-design/icons';\r\nimport { calcRangeKeys, convertDirectoryKeysToNodes } from './utils';\r\nimport { useMemoizedFn } from 'ahooks';\r\n\r\nconst getParentKey = (key, tree) => {\r\n let parentKey;\r\n for (let i = 0; i < tree.length; i++) {\r\n const node = tree[i];\r\n if (node.children) {\r\n if (node.children.some(item => item.key === key)) {\r\n parentKey = node.key;\r\n } else if (getParentKey(key, node.children)) {\r\n parentKey = getParentKey(key, node.children);\r\n }\r\n }\r\n }\r\n return parentKey;\r\n};\r\n\r\nconst VtxTree = ({\r\n prefixCls = 'vtx-tree',\r\n showSearch = true,\r\n treeData = [],\r\n searchPlaceholder = '请输入要查询的关键字',\r\n renderMenuList,\r\n fieldNames,\r\n ...props\r\n}, ref) => {\r\n const treeRef = useRef();\r\n const [height, setHeight] = useState(0);\r\n const [searchValue, setSearchValue] = useState('');\r\n const [expandedKeys, setExpandedKeys] = useState([]);\r\n const [autoExpandParent, setAutoExpandParent] = useState(props.autoExpandParent || false);\r\n const [selectedKeys, setSelectedKeys] = useState(\r\n props.selectedKeys || props.defaultSelectedKeys || [],\r\n );\r\n\r\n const lastSelectedKey = React.useRef();\r\n\r\n const cachedSelectedKeys = React.useRef();\r\n\r\n const dataList = useMemo(() => {\r\n let dataList = [];\r\n const titleKey = fieldNames?.title || 'title';\r\n const generateList = data => {\r\n for (let i = 0; i < data.length; i++) {\r\n const node = data[i];\r\n const { key } = node;\r\n dataList.push({ key, title: node[titleKey] });\r\n if (node.children) {\r\n generateList(node.children);\r\n }\r\n }\r\n };\r\n generateList(treeData);\r\n return dataList;\r\n }, [treeData]);\r\n\r\n useEffect(() => {\r\n if ('selectedKeys' in props) {\r\n setSelectedKeys(props.selectedKeys);\r\n }\r\n }, [props.selectedKeys]);\r\n\r\n useEffect(() => {\r\n if ('expandedKeys' in props) {\r\n setExpandedKeys(props.expandedKeys);\r\n }\r\n }, [props.expandedKeys]);\r\n\r\n const onExpand = (newExpandedKeys, info) => {\r\n setAutoExpandParent(false);\r\n props.onExpand?.(newExpandedKeys, info);\r\n if (!('expandedKeys' in props)) {\r\n setExpandedKeys(newExpandedKeys);\r\n }\r\n };\r\n\r\n const onSearch = useMemoizedFn(value => {\r\n const newExpandedKeys = dataList\r\n .map(item => {\r\n if (item.title.indexOf(value) > -1) {\r\n return getParentKey(item.key, treeData);\r\n }\r\n return null;\r\n })\r\n .filter((item, i, self) => item && self.indexOf(item) === i);\r\n setSearchValue(value);\r\n setAutoExpandParent(true);\r\n props.onExpand?.(newExpandedKeys);\r\n if (!('expandedKeys' in props)) {\r\n setExpandedKeys(newExpandedKeys);\r\n }\r\n });\r\n\r\n useImperativeHandle(ref, () => ({\r\n onSearch,\r\n }));\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(() => {\r\n setHeight(treeRef.current.offsetHeight);\r\n });\r\n if (treeRef.current) {\r\n resizeObserver.observe(treeRef.current, {\r\n box: 'border-box',\r\n });\r\n }\r\n setHeight(treeRef.current.offsetHeight);\r\n return () => {\r\n resizeObserver.disconnect();\r\n }\r\n }, []);\r\n\r\n const onSelect = (keys, event) => {\r\n const { multiple } = props;\r\n const { node, nativeEvent } = event;\r\n const { key = '' } = node;\r\n // const newState: DirectoryTreeState = {};\r\n\r\n // We need wrap this event since some value is not same\r\n const newEvent = {\r\n ...event,\r\n selected: true, // Directory selected always true\r\n };\r\n\r\n // Windows / Mac single pick\r\n const ctrlPick = nativeEvent?.ctrlKey || nativeEvent?.metaKey;\r\n const shiftPick = nativeEvent?.shiftKey;\r\n\r\n // Generate new selected keys\r\n let newSelectedKeys;\r\n if (multiple && ctrlPick) {\r\n // Control click\r\n newSelectedKeys = keys;\r\n lastSelectedKey.current = key;\r\n cachedSelectedKeys.current = newSelectedKeys;\r\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\r\n } else if (multiple && shiftPick) {\r\n // Shift click\r\n newSelectedKeys = Array.from(\r\n new Set([\r\n ...(cachedSelectedKeys.current || []),\r\n ...calcRangeKeys({\r\n treeData,\r\n expandedKeys,\r\n startKey: key,\r\n endKey: lastSelectedKey.current,\r\n }),\r\n ]),\r\n );\r\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\r\n } else {\r\n // Single click\r\n newSelectedKeys = [key];\r\n lastSelectedKey.current = key;\r\n cachedSelectedKeys.current = newSelectedKeys;\r\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\r\n }\r\n\r\n props.onSelect?.(newSelectedKeys, newEvent);\r\n if (!('selectedKeys' in props)) {\r\n setSelectedKeys(newSelectedKeys);\r\n }\r\n };\r\n\r\n const newTreeData = useMemo(() => {\r\n const loop = data =>\r\n data.map(item => {\r\n const titleKey = fieldNames?.title || 'title';\r\n const strTitle = item[titleKey];\r\n const index = strTitle.indexOf(searchValue);\r\n const beforeStr = strTitle.substring(0, index);\r\n const afterStr = strTitle.slice(index + searchValue.length);\r\n const title =\r\n index > -1 ? (\r\n <span>\r\n {beforeStr}\r\n <span className={`${prefixCls}-search-value`}>{searchValue}</span>\r\n {afterStr}\r\n </span>\r\n ) : (\r\n <span>{strTitle}</span>\r\n );\r\n if (item.children) {\r\n return {\r\n ...item,\r\n [titleKey]: title,\r\n key: item.key,\r\n children: loop(item.children),\r\n };\r\n }\r\n\r\n return {\r\n ...item,\r\n [titleKey]: title,\r\n key: item.key,\r\n };\r\n });\r\n return loop(treeData);\r\n }, [treeData, searchValue]);\r\n return (\r\n <div className={`${prefixCls}-wraaper`}>\r\n {showSearch && (\r\n <Input\r\n style={{ marginBottom: 8 }}\r\n placeholder={searchPlaceholder}\r\n onChange={(e) => onSearch(e.target.value)}\r\n />\r\n )}\r\n <div className={prefixCls} ref={treeRef}>\r\n <Tree\r\n {...props}\r\n height={height}\r\n switcherIcon={<DownOutlined />}\r\n showLine={{ showLeafIcon: false }}\r\n blockNode\r\n treeData={newTreeData}\r\n onExpand={onExpand}\r\n expandedKeys={expandedKeys}\r\n autoExpandParent={autoExpandParent}\r\n selectedKeys={selectedKeys}\r\n onSelect={onSelect}\r\n expandAction=\"click\"\r\n titleRender={nodeData => {\r\n const titleKey = fieldNames?.title || 'title';\r\n const title = nodeData[titleKey];\r\n\r\n if (renderMenuList) {\r\n const menuList = renderMenuList(nodeData);\r\n return (\r\n <div className={`${prefixCls}-menu-wrap`}>\r\n <span>{title}</span>\r\n <div className={`${prefixCls}-menu-list`}>\r\n {menuList\r\n .filter(item => item.visible)\r\n .map(item => (\r\n <Tooltip key={item.label} title={item.label}>\r\n <span\r\n className={`${prefixCls}-menu-item-icon`}\r\n onClick={e => {\r\n e.stopPropagation();\r\n item.onClick && item.onClick(nodeData);\r\n }}\r\n >\r\n {item.icon}\r\n </span>\r\n </Tooltip>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n }\r\n return title;\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nVtxTree.propTypes = {\r\n showSearch: PropTypes.bool,\r\n prefixCls: PropTypes.string,\r\n treeData: PropTypes.array,\r\n selectedKeys: PropTypes.array,\r\n defaultSelectedKeys: PropTypes.array,\r\n expandedKeys: PropTypes.bool,\r\n onExpand: PropTypes.func,\r\n multiple: PropTypes.bool,\r\n autoExpandParent: PropTypes.bool,\r\n onSelect: PropTypes.func,\r\n searchPlaceholder: PropTypes.string,\r\n renderMenuList: PropTypes.func,\r\n fieldNames: PropTypes.array,\r\n};\r\n\r\nexport default forwardRef(VtxTree);\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getParentKey","key","tree","parentKey","node","children","found","undefined","VtxTree","ref","prefixCls","showSearch","treeData","searchPlaceholder","renderMenuList","fieldNames","titleClassName","props","treeRef","useRef","useState","height","setHeight","expandedKeys","setExpandedKeys","autoExpandParent","setAutoExpandParent","selectedKeys","defaultSelectedKeys","setSelectedKeys","inputRef","lastSelectedKey","React","cachedSelectedKeys","dataList","useMemo","titleKey","title","generateList","data","i","length","push","useEffect","onExpand","newExpandedKeys","info","newTreeData","setNewTreeData","current","filterTreeData","input","value","useMemoizedFn","searchValue","parseTreeData","renderNode","item","strTitle","index","indexOf","beforeStr","substring","afterStr","slice","className","filterNode","useDebounceFn","map","filter","self","wait","onSearch","run","useImperativeHandle","resizeObserver","ResizeObserver","offsetHeight","observe","box","disconnect","onSelect","keys","event","multiple","nativeEvent","newEvent","selected","ctrlPick","ctrlKey","metaKey","shiftPick","shiftKey","newSelectedKeys","selectedNodes","convertDirectoryKeysToNodes","Array","from","Set","calcRangeKeys","startKey","endKey","marginBottom","e","target","showLeafIcon","defaultExpandAll","nodeData","menuList","visible","label","stopPropagation","onClick","icon","propTypes","PropTypes","bool","string","array","func","forwardRef"],"sources":["vtx-tree/index.jsx"],"sourcesContent":["import React, {\r\n forwardRef,\r\n useEffect,\r\n useImperativeHandle,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Input, Tooltip, Tree } from 'antd';\r\nimport { DownOutlined } from '@ant-design/icons';\r\nimport { calcRangeKeys, convertDirectoryKeysToNodes } from './utils';\r\nimport { useDebounceFn, useMemoizedFn } from 'ahooks';\r\nimport { parseTreeData } from '@vtx/utils';\r\n\r\nconst getParentKey = (key, tree, parentKey = null) => {\r\n for (const node of tree) {\r\n if (node.key === key) return parentKey;\r\n if (node.children) {\r\n const found = getParentKey(key, node.children, node.key);\r\n if (found !== undefined) return found;\r\n }\r\n }\r\n return undefined;\r\n};\r\nconst VtxTree = (\r\n {\r\n prefixCls = 'vtx-tree',\r\n showSearch = true,\r\n treeData = [],\r\n searchPlaceholder = '请输入要查询的关键字',\r\n renderMenuList,\r\n fieldNames,\r\n titleClassName,\r\n ...props\r\n },\r\n ref,\r\n) => {\r\n const treeRef = useRef();\r\n const [height, setHeight] = useState(0);\r\n const [expandedKeys, setExpandedKeys] = useState([]);\r\n const [autoExpandParent, setAutoExpandParent] = useState(props.autoExpandParent || false);\r\n const [selectedKeys, setSelectedKeys] = useState(\r\n props.selectedKeys || props.defaultSelectedKeys || [],\r\n );\r\n const inputRef = useRef();\r\n const lastSelectedKey = React.useRef();\r\n\r\n const cachedSelectedKeys = React.useRef();\r\n\r\n const dataList = useMemo(() => {\r\n let dataList = [];\r\n const titleKey = fieldNames?.title || 'title';\r\n const generateList = data => {\r\n for (let i = 0; i < data.length; i++) {\r\n const node = data[i];\r\n const { key } = node;\r\n dataList.push({ key, title: node[titleKey] });\r\n if (node.children) {\r\n generateList(node.children);\r\n }\r\n }\r\n };\r\n generateList(treeData);\r\n return dataList;\r\n }, [treeData]);\r\n\r\n useEffect(() => {\r\n if ('selectedKeys' in props) {\r\n setSelectedKeys(props.selectedKeys);\r\n }\r\n }, [props.selectedKeys]);\r\n\r\n useEffect(() => {\r\n if ('expandedKeys' in props) {\r\n setExpandedKeys(props.expandedKeys);\r\n }\r\n }, [props.expandedKeys]);\r\n\r\n const onExpand = (newExpandedKeys, info) => {\r\n setAutoExpandParent(false);\r\n props.onExpand?.(newExpandedKeys, info);\r\n if (!('expandedKeys' in props)) {\r\n setExpandedKeys(newExpandedKeys);\r\n }\r\n };\r\n\r\n const [newTreeData, setNewTreeData] = useState(treeData);\r\n useEffect(() => {\r\n if (treeData?.length && inputRef.current) {\r\n filterTreeData(inputRef.current.input.value);\r\n }\r\n }, [treeData]);\r\n const filterTreeData = useMemoizedFn((searchValue = '') => {\r\n const newTreeData = parseTreeData(treeData, {\r\n renderNode(item) {\r\n const titleKey = fieldNames?.title || 'title';\r\n const strTitle = item[titleKey] || '';\r\n const index = strTitle.indexOf(searchValue);\r\n const beforeStr = strTitle.substring(0, index);\r\n const afterStr = strTitle.slice(index + searchValue.length);\r\n const className = titleClassName ? titleClassName(item) : '';\r\n const title =\r\n index > -1 ? (\r\n <span className={className}>\r\n {beforeStr}\r\n <span className={`${prefixCls}-search-value`}>{searchValue}</span>\r\n {afterStr}\r\n </span>\r\n ) : (\r\n <span className={className}>{strTitle}</span>\r\n );\r\n\r\n return {\r\n ...item,\r\n [titleKey]: title,\r\n key: item.key,\r\n strTitle,\r\n };\r\n },\r\n filterNode(item) {\r\n return item.strTitle.indexOf(searchValue) > -1;\r\n },\r\n });\r\n return setNewTreeData(newTreeData);\r\n });\r\n const { run: onSearch } = useDebounceFn(\r\n value => {\r\n const newExpandedKeys = dataList\r\n .map(item => {\r\n if (item.title.indexOf(value) > -1) {\r\n return getParentKey(item.key, treeData);\r\n }\r\n return null;\r\n })\r\n .filter((item, i, self) => item && self.indexOf(item) === i);\r\n setAutoExpandParent(true);\r\n filterTreeData(value);\r\n props.onExpand?.(newExpandedKeys);\r\n if (!('expandedKeys' in props)) {\r\n setExpandedKeys(newExpandedKeys);\r\n }\r\n },\r\n {\r\n wait: 300,\r\n },\r\n );\r\n\r\n useImperativeHandle(ref, () => ({\r\n onSearch,\r\n }));\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(() => {\r\n setHeight(treeRef.current.offsetHeight);\r\n });\r\n if (treeRef.current) {\r\n resizeObserver.observe(treeRef.current, {\r\n box: 'border-box',\r\n });\r\n }\r\n setHeight(treeRef.current.offsetHeight);\r\n return () => {\r\n resizeObserver.disconnect();\r\n };\r\n }, []);\r\n\r\n const onSelect = (keys, event) => {\r\n const { multiple } = props;\r\n const { node, nativeEvent } = event;\r\n const { key = '' } = node;\r\n // const newState: DirectoryTreeState = {};\r\n\r\n // We need wrap this event since some value is not same\r\n const newEvent = {\r\n ...event,\r\n selected: true, // Directory selected always true\r\n };\r\n\r\n // Windows / Mac single pick\r\n const ctrlPick = nativeEvent?.ctrlKey || nativeEvent?.metaKey;\r\n const shiftPick = nativeEvent?.shiftKey;\r\n\r\n // Generate new selected keys\r\n let newSelectedKeys;\r\n if (multiple && ctrlPick) {\r\n // Control click\r\n newSelectedKeys = keys;\r\n lastSelectedKey.current = key;\r\n cachedSelectedKeys.current = newSelectedKeys;\r\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\r\n } else if (multiple && shiftPick) {\r\n // Shift click\r\n newSelectedKeys = Array.from(\r\n new Set([\r\n ...(cachedSelectedKeys.current || []),\r\n ...calcRangeKeys({\r\n treeData,\r\n expandedKeys,\r\n startKey: key,\r\n endKey: lastSelectedKey.current,\r\n }),\r\n ]),\r\n );\r\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\r\n } else {\r\n // Single click\r\n newSelectedKeys = [key];\r\n lastSelectedKey.current = key;\r\n cachedSelectedKeys.current = newSelectedKeys;\r\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\r\n }\r\n\r\n props.onSelect?.(newSelectedKeys, newEvent);\r\n if (!('selectedKeys' in props)) {\r\n setSelectedKeys(newSelectedKeys);\r\n }\r\n };\r\n return (\r\n <div className={`${prefixCls}-wraaper`}>\r\n {showSearch && (\r\n <Input\r\n style={{ marginBottom: 8 }}\r\n placeholder={searchPlaceholder}\r\n onChange={e => onSearch(e.target.value)}\r\n ref={inputRef}\r\n />\r\n )}\r\n <div className={prefixCls} ref={treeRef}>\r\n <Tree\r\n {...props}\r\n height={height}\r\n switcherIcon={<DownOutlined />}\r\n showLine={{ showLeafIcon: false }}\r\n blockNode\r\n treeData={newTreeData}\r\n onExpand={onExpand}\r\n {...(expandedKeys.length === 0 && props.defaultExpandAll\r\n ? {}\r\n : { expandedKeys })}\r\n autoExpandParent={autoExpandParent}\r\n selectedKeys={selectedKeys}\r\n onSelect={onSelect}\r\n fieldNames={fieldNames}\r\n expandAction=\"click\"\r\n titleRender={nodeData => {\r\n const titleKey = fieldNames?.title || 'title';\r\n const title = nodeData[titleKey];\r\n\r\n if (renderMenuList) {\r\n const menuList = renderMenuList(nodeData);\r\n return (\r\n <div className={`${prefixCls}-menu-wrap`}>\r\n <span>{title}</span>\r\n <div className={`${prefixCls}-menu-list`}>\r\n {menuList\r\n .filter(item => item.visible)\r\n .map(item => (\r\n <Tooltip key={item.label} title={item.label}>\r\n <span\r\n className={`${prefixCls}-menu-item-icon`}\r\n onClick={e => {\r\n e.stopPropagation();\r\n item.onClick && item.onClick(nodeData);\r\n }}\r\n >\r\n {item.icon}\r\n </span>\r\n </Tooltip>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n }\r\n return title;\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nVtxTree.propTypes = {\r\n showSearch: PropTypes.bool,\r\n prefixCls: PropTypes.string,\r\n treeData: PropTypes.array,\r\n selectedKeys: PropTypes.array,\r\n defaultSelectedKeys: PropTypes.array,\r\n expandedKeys: PropTypes.bool,\r\n onExpand: PropTypes.func,\r\n multiple: PropTypes.bool,\r\n autoExpandParent: PropTypes.bool,\r\n onSelect: PropTypes.func,\r\n searchPlaceholder: PropTypes.string,\r\n renderMenuList: PropTypes.func,\r\n titleClassName: PropTypes.func,\r\n fieldNames: PropTypes.array,\r\n defaultExpandAll: PropTypes.bool,\r\n};\r\n\r\nexport default forwardRef(VtxTree);\r\n"],"mappings":"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"}
|