@ng-nest/ui 20.2.3 → 20.2.5
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/bubble/index.d.ts +27 -7
- package/checkbox/index.d.ts +1 -1
- package/core/index.d.ts +3 -0
- package/fesm2022/ng-nest-ui-attachments.mjs +0 -1
- package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +3 -3
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-bubble.mjs +126 -31
- package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +3 -3
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +5 -5
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +2 -1
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +6 -6
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +4 -4
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drawer.mjs +2 -2
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +5 -7
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +2 -2
- package/fesm2022/ng-nest-ui-message-box.mjs +0 -1
- package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-ripple.mjs +8 -4
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +11 -13
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-sender.mjs +2 -2
- package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +3 -3
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +29 -8
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +3 -3
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +3 -3
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +2 -2
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/package.json +56 -56
- package/radio/index.d.ts +1 -1
- package/textarea/index.d.ts +34 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-tree.mjs","sources":["../../../../lib/ng-nest/ui/tree/tree.property.ts","../../../../lib/ng-nest/ui/tree/tree.service.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.html","../../../../lib/ng-nest/ui/tree/tree.component.ts","../../../../lib/ng-nest/ui/tree/tree.component.html","../../../../lib/ng-nest/ui/tree/tree.module.ts","../../../../lib/ng-nest/ui/tree/ng-nest-ui-tree.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, output, model } from '@angular/core';\r\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\r\nimport type { XData, XParentIdentityProperty, XNumber, XBoolean, XIdentityProperty, XAlign } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Tree\r\n * @selector x-tree\r\n * @decorator component\r\n */\r\nexport const XTreePrefix = 'x-tree';\r\nconst X_TREE_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * @zh_CN Tree 节点排序默认值\r\n * @en_US Tree node order default value\r\n */\r\nexport const X_TREE_ORDER_DEFAULT: XTreeOrder[] = [\r\n { property: 'sort', order: 'asc' },\r\n { property: 'label', order: 'asc' }\r\n];\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ selector: `${XTreePrefix}-property`, template: '' })\r\nexport class XTreeProperty extends XPropertyFunction(X_TREE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeNode>>([]);\r\n /**\r\n * @zh_CN 显示多选框\r\n * @en_US Show checkbox\r\n */\r\n readonly checkbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 开启懒加载节点,data 必须设置成函数类型\r\n * @en_US Open lazy loading node, data must be set to function type\r\n */\r\n readonly lazy = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)\r\n * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n */\r\n readonly activatedId = model<any>(null);\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = model<any[]>([]);\r\n /**\r\n * @zh_CN checkbox 选中的节点\r\n * @en_US Checkbox selected node\r\n */\r\n readonly checked = model<any[]>([]);\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 点击节点就触发展开/收起的操作,请确保节点上没有其它操作(checkbox、自定义的操作按钮)\r\n * @en_US Click the node to trigger the expand/collapse operation, please make sure that there are no other operations on the node (checkbox, custom operation button)\r\n */\r\n readonly nodeOpen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n */\r\n readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签自定义模板\r\n * @en_US Label custom template\r\n */\r\n readonly labelTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 节点的高度, 默认是自适应高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = input<string, XNumber>(this.config?.nodeHeight ?? '', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 是否允许多次点击一个节点触发多次事件\r\n * @en_US Whether to allow multiple clicks on a node to trigger multiple events\r\n */\r\n readonly allowManyActivated = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 拖动节点\r\n * @en_US Drag node\r\n */\r\n readonly drag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前点击选中的节点变化的事件\r\n * @en_US The event of the currently clicked node change\r\n */\r\n readonly activatedChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 使用 checkedbox 选中变化的事件\r\n * @en_US Use checkedbox to select changed events\r\n */\r\n readonly checkboxChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 如果 data 是函数类型,可以通过此参数控制请求,用于弹框中的表格,弹出后再请求\r\n * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n */\r\n readonly manual = model<boolean>(true);\r\n /**\r\n * @zh_CN checkbox 状态改变触发层级检查\r\n * @en_US Checkbox status changes trigger level checks\r\n */\r\n readonly levelCheck = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = input<XAlign>(this.config?.nodeAlignItems ?? 'center');\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n /**\r\n * @zh_CN 滚动区域元素\r\n * @en_US Rolling area element\r\n */\r\n readonly scrollElement = input<HTMLElement>();\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 滚动区域高度,开启虚拟滚动的时候生效\r\n * @en_US Rolling area height\r\n */\r\n readonly virtualScrollHeight = input<string, XNumber>(this.config?.virtualScrollHeight ?? '400px', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 虚拟滚动高度自适应指定元素\r\n * @en_US virtual rolling height follows the specified object\r\n */\r\n readonly heightAdaption = input<HTMLElement>();\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 34, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 多选功能,当前激活的节点可以是多个\r\n * @en_US Multiple choice\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,activatedId 的值为对象数组\r\n * @en_US When multiple selection is enabled, the value of activatedId is an array of objects\r\n */\r\n readonly objectArray = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,点击父节点,包含子节点\r\n * @en_US When selecting multiple options, click on the parent node to include the child nodes\r\n */\r\n readonly includeChildren = input<boolean, XBoolean>(this.config?.includeChildren ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 关键字高亮,针对下拉树搜索\r\n * @en_US Keyword highlighting\r\n */\r\n readonly keywordText = input<string | string[]>();\r\n /**\r\n * @zh_CN 匹配关键字区分大小写,针对下拉树搜索\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能选择叶子节点\r\n * @en_US Only leaf nodes can be selected\r\n */\r\n readonly onlyLeaf = input<boolean, XBoolean>(this.config?.onlyLeaf ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 展开收起的图标自定义模版\r\n * @en_US Expand the folded icon custom template\r\n */\r\n readonly expandedIcon = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 显示连接线\r\n * @en_US Show line\r\n */\r\n readonly showLine = input<boolean, XBoolean>(this.config?.showLine ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 排序属性\r\n * @en_US Order property\r\n */\r\n readonly order = input<XTreeOrder[]>(this.config?.order ?? X_TREE_ORDER_DEFAULT);\r\n /**\r\n * @zh_CN 节点点击事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeClick = output<XTreeNode>();\r\n /**\r\n * @zh_CN 节点开始拖动事件\r\n * @en_US Node drag started\r\n */\r\n readonly nodeDragStarted = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点结束拖动事件\r\n * @en_US Node drag ended\r\n */\r\n readonly nodeDragEnded = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点正在拖动事件\r\n * @en_US Node drag moved\r\n */\r\n readonly nodeDragMoved = output<XTreeNodeDragEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 数据对象\r\n * @en_US Tree data object\r\n */\r\nexport interface XTreeNode extends XParentIdentityProperty<XTreeNode> {\r\n /**\r\n * @zh_CN 激活的\r\n * @en_US active\r\n */\r\n activated?: boolean;\r\n /**\r\n * @zh_CN 检查更新\r\n * @en_US Check for updates\r\n */\r\n change?: Function;\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n checked?: boolean;\r\n /**\r\n * @zh_CN 禁用checkbox\r\n * @en_US Disable checkbox\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n indeterminate?: boolean;\r\n /**\r\n * @zh_CN 节点高度,优先级高于 tree 参数\r\n * @en_US Node height, highest priority\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n nowrap?: boolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n alignItems?: XAlign;\r\n /**\r\n * @zh_CN 节点懒加载中\r\n * @en_US Node lazy loading\r\n */\r\n loading?: boolean;\r\n /**\r\n * @zh_CN 显示拖动指示器\r\n * @en_US Show drag indicator\r\n */\r\n showDragIndicator?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n /**\r\n * @zh_CN 操作\r\n * @en_US Operating\r\n */\r\n handler?: Function;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点拖动事件\r\n * @en_US Tree node drag event\r\n */\r\nexport interface XTreeNodeDragEvent {\r\n /**\r\n * @zh_CN 对应 cdk 中的事件\r\n * @en_US drag cdk event\r\n */\r\n event?: CdkDragStart | CdkDragEnd | CdkDragMove<XTreeNode>;\r\n /**\r\n * @zh_CN 拖动的节点\r\n * @en_US drag node\r\n */\r\n from?: XTreeNode;\r\n /**\r\n * @zh_CN 要拖动到的位置对应的节点\r\n * @en_US Node corresponding to the position to drag\r\n */\r\n to?: XTreeNode;\r\n /**\r\n * @zh_CN 对应节点的前面还是后面\r\n * @en_US The front or back of the corresponding node\r\n */\r\n position?: -1 | 0 | 1;\r\n}\r\n\r\n/**\r\n * TreeNode\r\n * @selector x-tree-node\r\n * @decorator directive\r\n */\r\nexport const XTreeNodePrefix = 'x-tree-node';\r\n\r\n/**\r\n * TreeNode Property\r\n */\r\n@Component({ selector: `${XTreeNodePrefix}-property`, template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly node = input<XTreeNode>({});\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n readonly level = model<number | undefined>(0);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = model<string>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = model<boolean>(false);\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = model<XAlign>('center');\r\n /**\r\n * @zh_CN 标记为虚拟滚动的节点\r\n * @en_US Mark as a node of virtual rolling\r\n */\r\n readonly virtualScroll = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN id\r\n * @en_US Id\r\n */\r\n readonly id = model<any>();\r\n /**\r\n * @zh_CN pid\r\n * @en_US pId\r\n */\r\n readonly pid = model<any>();\r\n /**\r\n * @zh_CN 叶子节点\r\n * @en_US A leaf node\r\n */\r\n readonly leaf = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly height = model<string>('');\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly alignItems = model<XAlign>();\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly loading = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 展开\r\n * @en_US open\r\n */\r\n readonly open = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n readonly checked = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n readonly indeterminate = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点名称\r\n * @en_US The name of the node\r\n */\r\n readonly label = model<string | undefined>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n readonly nowrap = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点展开收起事件\r\n * @en_US Node expansion pack up\r\n */\r\n readonly toggle = output<XTreeNode>();\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点排序属性\r\n * @en_US Tree node order property\r\n */\r\nexport interface XTreeOrder {\r\n /**\r\n * @zh_CN treenode 排序属性\r\n * @en_US treenode order property\r\n */\r\n property: string;\r\n /**\r\n * @zh_CN 排序方式\r\n * @en_US order type\r\n */\r\n order: XTreeOrderType;\r\n}\r\n\r\nexport type XTreeOrderType = 'asc' | 'desc';\r\n","import { Injectable } from '@angular/core';\r\nimport { XIsEmpty, XRemove } from '@ng-nest/ui/core';\r\nimport { XTreeNode } from './tree.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XTreeService {\r\n getChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n getParents(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gParent = (nd: XTreeNode) => {\r\n if (!nd.pid) return;\r\n const parent = data.find((x) => x.id === nd.pid);\r\n if (!parent) return;\r\n res.push(parent);\r\n gParent(parent);\r\n };\r\n gParent(node);\r\n\r\n return res;\r\n }\r\n\r\n getOpenChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n if (!nd.open) return;\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n moveNode(data: XTreeNode[], from: XTreeNode, to: XTreeNode, pos: -1 | 0 | 1) {\r\n if (XIsEmpty(data)) return;\r\n const isAddChildNode = pos === 0;\r\n const formIndex = data.findIndex((x) => x.id === from.id);\r\n const toIndex = data.findIndex((x) => x.id === to.id);\r\n XRemove(data, (x) => x.id === from.id);\r\n if (from.pid === to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n diffLevel = to.level! - from.level!;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n } else if (from.pid !== to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n from.pid = to.pid;\r\n diffLevel = to.level! - from.level!;\r\n from.level = to.level;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n computed,\r\n signal,\r\n output\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XBoolean, XComputedStyle, XToCssPx, XIsObjectArray, XIsArray } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XTreeService } from './tree.service';\r\nimport { DOCUMENT, NgStyle } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XTreeComponent } from './tree.component';\r\n\r\n@Component({\r\n selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n imports: [\r\n NgStyle,\r\n FormsModule,\r\n XIconComponent,\r\n XCheckboxComponent,\r\n XOutletDirective,\r\n XLinkComponent,\r\n XKeywordDirective\r\n ],\r\n templateUrl: './tree-node.component.html',\r\n styleUrls: ['./tree-node.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeNodeComponent extends XTreeNodeProperty {\r\n tree = inject(XTreeComponent, { optional: true, host: true })!;\r\n nodeMouseenter = output<{ event: MouseEvent; node: XTreeNode; ele: ElementRef }>();\r\n @HostBinding('class.x-tree-node') rootClass = true;\r\n private document = inject(DOCUMENT);\r\n fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private unSubject = new Subject<void>();\r\n\r\n @HostListener('mouseenter', ['$event']) onMouseenter(event: MouseEvent) {\r\n this.nodeMouseenter.emit({ event: event, node: this.node(), ele: this.elementRef });\r\n }\r\n\r\n @HostListener('mouseleave') onMouseleave(_event: MouseEvent) {\r\n if (!this.tree.dragging()) return;\r\n const hoverTreeNode = this.tree.hoverTreeNode();\r\n hoverTreeNode && hoverTreeNode.change && hoverTreeNode.change();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n showDragIndicator = computed(() => {\r\n return this.tree.dragging() && this.tree.hoverTreeNode()?.id === this.id();\r\n });\r\n\r\n isChildrenLast = computed(() => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === this.pid());\r\n if (!parent || !parent.children) return false;\r\n const index = parent.children.indexOf(this.node());\r\n return index + 1 === parent.children.length;\r\n });\r\n\r\n isParentLast = computed(() => {\r\n let parents = this.treeService.getParents(this.tree.nodes(), this.node());\r\n if (parents.length <= 1) return [];\r\n const res: boolean[] = [];\r\n parents.reduce((pre: XTreeNode, curr: XTreeNode) => {\r\n if (pre === null) return curr;\r\n const index = curr.children?.indexOf(pre)!;\r\n res.push(index + 1 === curr.children?.length!);\r\n return curr;\r\n });\r\n\r\n return res.reverse();\r\n });\r\n\r\n verticalLevel = computed(() => {\r\n if (this.level()! > 0) {\r\n return Array.from({ length: this.level()! }).map((_x, index) => index + 1);\r\n } else {\r\n return [];\r\n }\r\n });\r\n\r\n verticalWidth = computed(() => {\r\n return XToCssPx(this.tree.spacing(), this.fontSize()) / 2;\r\n });\r\n\r\n paddingLeft = computed(() => (this.level()! ? this.level()! : 0) * XToCssPx(this.tree.spacing(), this.fontSize()));\r\n\r\n indicatorWidth = computed(() => {\r\n if (this.tree.dragPosition() === 0) {\r\n return `calc(100% - ${this.paddingLeft() + XToCssPx(this.tree.spacing(), this.fontSize()) + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n }\r\n return `calc(100% - ${this.paddingLeft() + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n });\r\n\r\n indicatorStyle = computed(() => {\r\n if (this.tree.dragPosition() === 1) {\r\n return { bottom: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === -1) {\r\n return { top: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === 0) {\r\n return {\r\n bottom: `-${0.0625 * this.fontSize()}px`\r\n };\r\n }\r\n return {};\r\n });\r\n\r\n changed = signal(false);\r\n\r\n activated = computed(() => {\r\n this.changed();\r\n const activatedId = this.tree.activatedId();\r\n if (this.tree.multiple()) {\r\n if (this.tree.objectArray()) {\r\n return XIsObjectArray<XTreeNode[]>(activatedId) && activatedId.map((x: XTreeNode) => x.id).includes(this.id());\r\n } else {\r\n return XIsArray<any[]>(activatedId) && activatedId.includes(this.id());\r\n }\r\n } else {\r\n return activatedId === this.id();\r\n }\r\n });\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n private treeService = inject(XTreeService);\r\n elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n const node = this.node();\r\n node.change = (check: boolean) => {\r\n if (check) this.setCheckbox();\r\n this.cdr.detectChanges();\r\n };\r\n if (!this.tree.levelCheck()) return;\r\n if (this.checked()) this.setCheckbox();\r\n this.setIndeterminate(this.node());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n onActivate(event: Event, node: XTreeNode) {\r\n const change: Function = this.tree.activatedNode()?.change as Function;\r\n this.tree.nodeOpen() && !this.leaf() && this.onToggle(event, node);\r\n const onChange = () => {\r\n change && change();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n };\r\n if (this.tree.onlyLeaf() && !this.leaf()) {\r\n onChange();\r\n return;\r\n }\r\n if (this.tree.multiple()) {\r\n if (!this.tree.activatedId()) this.tree.activatedId.set([]);\r\n const nodes = [node];\r\n if (this.tree.includeChildren()) {\r\n nodes.push(...this.getChildren());\r\n }\r\n if (this.tree.objectArray()) {\r\n const ids = this.tree.activatedId().map((x: XTreeNode) => x.id);\r\n if (ids.includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(ids.indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it)) {\r\n x.push(it);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.tree.activatedId().includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(this.tree.activatedId().indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it.id)) {\r\n x.push(it.id);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n }\r\n } else {\r\n this.tree.activatedId.set(node.id);\r\n }\r\n if (this.tree.activatedNode()) {\r\n if (this.tree.activatedNode()?.id === node.id && !this.tree.allowManyActivated()) return;\r\n }\r\n this.tree.activatedNode.set(node);\r\n this.changed.update((x) => !x);\r\n this.tree.activatedChange.emit(node);\r\n this.tree.nodeClick.emit(node);\r\n onChange();\r\n }\r\n\r\n onCheckboxChange() {\r\n this.setCheckbox();\r\n this.tree.checkboxChange?.emit(this.node());\r\n }\r\n\r\n getVerticalLeft(i: number) {\r\n const spacing = XToCssPx(this.tree.spacing(), this.fontSize());\r\n return (i - 1) * spacing + spacing / 2;\r\n }\r\n\r\n setCheckbox() {\r\n if (!this.tree.levelCheck()) return;\r\n this.node().indeterminate = this.checked();\r\n this.node().children && this.setChildrenCheckbox(this.checked()!);\r\n const setParent = (node: XTreeNode) => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === node.pid);\r\n if (!parent || XIsEmpty(parent.children)) return;\r\n let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n parent.checked = checkedList?.length === parent.children?.length;\r\n parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n parent.change && parent.change();\r\n setParent(parent);\r\n };\r\n setParent(this.node());\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getChildren() {\r\n const res: XTreeNode[] = [];\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n res.push(x);\r\n getChildren(x.children as XTreeNode[]);\r\n }\r\n };\r\n getChildren(this.node().children as XTreeNode[]);\r\n\r\n return res;\r\n }\r\n\r\n setChildrenCheckbox(checked: boolean) {\r\n const setChildren = (children: XTreeNode[], isChecked: boolean) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n x.checked = isChecked;\r\n x.indeterminate = isChecked;\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[], isChecked);\r\n }\r\n };\r\n setChildren(this.node().children as XTreeNode[], checked);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setParentCheckbox() {\r\n if (XIsEmpty(this.node().children)) return;\r\n let checkedList = this.node().children?.filter((x) => x.checked);\r\n let indeterminateList = this.node().children?.filter((x) => x.indeterminate);\r\n this.node().checked = checkedList?.length === this.node().children?.length;\r\n this.node().indeterminate =\r\n (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setIndeterminate(node: XTreeNode) {\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n children.forEach((x) => {\r\n if (x.indeterminate || x.checked) {\r\n node.indeterminate = true;\r\n return;\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(node.children as XTreeNode[]);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getNodeDisabled(disabled?: boolean) {\r\n return disabled as XBoolean;\r\n }\r\n\r\n onAction(event: Event, action: XTreeAction, node: XTreeNode) {\r\n action.handler && action.handler(node);\r\n event.stopPropagation();\r\n }\r\n\r\n onToggle(event: Event, node: XTreeNode) {\r\n this.toggle.emit(node);\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return `${item.id}-${item.level}`;\r\n }\r\n\r\n trackByAction(_index: number, item: XTreeAction) {\r\n return item.id;\r\n }\r\n}\r\n","<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (!leaf()) {\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon class=\"x-tree-node-icon\" type=\"fto-chevron-right\"></x-icon>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n class=\"x-tree-node-checkbox\"\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\">{{\r\n action.label\r\n }}</x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n viewChild,\r\n viewChildren,\r\n signal,\r\n computed,\r\n inject,\r\n effect\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport {\r\n XIsEmpty,\r\n XIsFunction,\r\n XIsUndefined,\r\n XIsChange,\r\n XSetData,\r\n XResize,\r\n XRemove,\r\n XResizeObserver,\r\n XComputedStyle,\r\n XToCssPx,\r\n XOrderBy\r\n} from '@ng-nest/ui/core';\r\nimport { debounceTime, map, Observable, Subject } from 'rxjs';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XTreeService } from './tree.service';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XTreePrefix}`,\r\n imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent],\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges {\r\n tree = viewChild('tree', { read: ElementRef<HTMLElement> });\r\n virtualBody = viewChild('virtualBody', { read: CdkVirtualScrollViewport });\r\n dropList = viewChild('dropList', { read: CdkDropList<HTMLElement> });\r\n nodeComponents = viewChildren(XTreeNodeComponent);\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n nodes = signal<XTreeNode[]>([]);\r\n\r\n virtualNodes = signal<XTreeNode[]>([]);\r\n activatedNode = signal<XTreeNode | null>(null);\r\n dataIsFunc = signal(false);\r\n getting = signal(false);\r\n treeData = signal<XTreeNode[]>([]);\r\n\r\n dragging = signal(false);\r\n dragPosition = signal<-1 | 0 | 1>(-1);\r\n hoverTreeNode = signal<XTreeNode | null>(null);\r\n hoverTreeEle!: ElementRef;\r\n draggingTreeNode = signal<XTreeNode | null>(null);\r\n\r\n isEmpty = computed(() => XIsEmpty(this.nodes()));\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public treeService: XTreeService\r\n ) {\r\n super();\r\n\r\n effect(() => {\r\n const virtualBody = this.virtualBody();\r\n if (virtualBody) {\r\n virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n }\r\n });\r\n }\r\n\r\n heightAdaptionSignal = signal<number>(0);\r\n\r\n isVirtualScrollAdaption = computed(() => {\r\n return !!(this.virtualScroll() && this.heightAdaption());\r\n });\r\n\r\n virtualScrollHeightSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.heightAdaptionSignal();\r\n } else {\r\n return XToCssPx(this.virtualScrollHeight(), this.fontSize());\r\n }\r\n });\r\n\r\n minBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal();\r\n } else {\r\n return this.minBufferPx();\r\n }\r\n });\r\n\r\n maxBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal() * 1.2;\r\n } else {\r\n return this.maxBufferPx();\r\n }\r\n });\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { expandedAll, data, checked, manual, expanded } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(expanded) && this.setChangeExpanded();\r\n XIsChange(checked) && this.setCheckedKeys(this.checked());\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isVirtualScrollAdaption()) {\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n XResize(this.heightAdaption()!)\r\n .pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n this.setActivatedNode(this.treeData());\r\n this.setScrollTop();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setData() {\r\n if (typeof this.data() === 'undefined') return;\r\n this.dataIsFunc.set(false);\r\n if (XIsFunction(this.data())) {\r\n this.dataIsFunc.set(true);\r\n this.getDataByFunc();\r\n } else {\r\n XSetData<XTreeNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n }\r\n\r\n cdkDragStarted(event: CdkDragStart) {\r\n this.dragging.set(true);\r\n this.draggingTreeNode.set(event.source.data);\r\n if (event.source.data.open) {\r\n this.onToggle(event.event, event.source.data);\r\n }\r\n this.nodeDragStarted.emit({ event, from: this.draggingTreeNode()! });\r\n }\r\n\r\n cdkDragEnded(event: CdkDragEnd) {\r\n this.dragging.set(false);\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n if (hoverTreeNode.id !== event.source.data.id) {\r\n this.insertNode(event.source.data, hoverTreeNode, this.dragPosition());\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragEnded.emit({\r\n event,\r\n from: event.source.data,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n }\r\n\r\n insertNode(dragNode: XTreeNode, hoverNode: XTreeNode, dragPosition: -1 | 0 | 1) {\r\n let parent = this.nodes().find((x) => x.id === dragNode.pid);\r\n this.treeService.moveNode(this.treeData(), dragNode, hoverNode, dragPosition);\r\n this.setDataChange(this.treeData(), true, false, true, parent);\r\n }\r\n\r\n cdkDragMoved(event: CdkDragMove<XTreeNode>) {\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (!this.dragging() || !hoverTreeNode) return;\r\n const y = event.pointerPosition.y;\r\n if (event.source.data.id === hoverTreeNode.id) return;\r\n const target = this.hoverTreeEle.nativeElement as HTMLElement;\r\n const { top, height } = target.getBoundingClientRect();\r\n const des = Math.max(height * 0.5, 2);\r\n if (y > top && y < top + des - 2) {\r\n this.dragPosition.set(-1);\r\n } else if (y > top + des + 2 && y < top + height) {\r\n this.dragPosition.set(1);\r\n } else if (y >= top + des - 2 && y <= top + des + 2) {\r\n this.dragPosition.set(0);\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragMoved.emit({\r\n event,\r\n from: this.draggingTreeNode()!,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n\r\n predicate(_drag: CdkDrag<XTreeNode>, _drop: CdkDropList<XTreeNode>) {\r\n return true;\r\n }\r\n\r\n private setManual() {\r\n if (this.dataIsFunc()) this.getDataByFunc();\r\n }\r\n\r\n private getDataByFunc() {\r\n if (!this.manual()) return;\r\n XSetData<XTreeNode>((this.data() as Function)(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n\r\n private setDataChange(\r\n value: XTreeNode[],\r\n regetChildren = false,\r\n init = true,\r\n parentOpen = true,\r\n lazyParant?: XTreeNode,\r\n out = false\r\n ) {\r\n if (XIsEmpty(this.checked())) this.checked.set([]);\r\n const getChildren = (node: XTreeNode, level: number) => {\r\n if (init) {\r\n const open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n node.level = level;\r\n node.open = out ? open : open || node.open;\r\n node.checked = this.checked().includes(node.id) || node.checked;\r\n node.childrenLoaded = node.open;\r\n }\r\n if (XIsUndefined(node.children) || regetChildren) {\r\n node.children = XOrderBy(\r\n value.filter((y) => y.pid === node.id),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n if (this.levelCheck() && node.children && node.checked) {\r\n for (let nd of node.children) {\r\n nd.checked = true;\r\n this.checked.update((x) => {\r\n x.push(nd.id);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n if ((!this.lazy() && (XIsUndefined(node.leaf) || regetChildren)) || node.id === lazyParant?.id) {\r\n node.leaf = (node.children?.length as number) === 0;\r\n }\r\n if (!node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeData.set(value);\r\n this.nodes.set(\r\n XOrderBy(\r\n value.filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n ).map((x) => getChildren(x, 0))\r\n );\r\n if (parentOpen) {\r\n for (let item of value) {\r\n if (!item.leaf && item.open) {\r\n this.setParentOpen(value, item);\r\n }\r\n }\r\n }\r\n this.setExpanded();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n nodeMouseenter($event: { event: MouseEvent; node: XTreeNode; ele: ElementRef }) {\r\n const { node, ele } = $event;\r\n if (!this.dragging()) return;\r\n let before = this.hoverTreeNode();\r\n this.hoverTreeNode.set(node);\r\n this.hoverTreeEle = ele;\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n\r\n if (!node.leaf && !node.open) {\r\n let from = this.nodes().indexOf(this.draggingTreeNode()!);\r\n let to = this.nodes().indexOf(node);\r\n if (to - from !== -1) {\r\n this.onToggle(null!, node);\r\n }\r\n }\r\n }\r\n\r\n setScrollTop() {\r\n const scrollElement = this.scrollElement();\r\n if (!scrollElement || !this.activatedNode()) return;\r\n const inx = this.nodes().indexOf(this.activatedNode()!);\r\n let com = this.nodeComponents().find((_, index) => index === inx);\r\n if (!com) return;\r\n let ele = com.elementRef.nativeElement as HTMLElement;\r\n let scrollEle = scrollElement;\r\n let min = scrollEle.scrollTop;\r\n let max = scrollEle.scrollTop + scrollEle.clientHeight;\r\n if (ele.offsetTop + ele.clientHeight > max) {\r\n let scrollTop = ele.offsetTop + ele.clientHeight - scrollEle.clientHeight;\r\n scrollEle.scrollTop = scrollTop;\r\n }\r\n if (ele.offsetTop < min) {\r\n scrollEle.scrollTop = ele.offsetTop;\r\n }\r\n }\r\n\r\n getCheckedNodes(): XTreeNode[] {\r\n let result: XTreeNode[] = [];\r\n const getChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n if (x.checked && !result.includes(x)) {\r\n result = [...result, x];\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(this.nodes());\r\n return result;\r\n }\r\n\r\n getCheckedKeys() {\r\n return this.getCheckedNodes().map((x) => x.id);\r\n }\r\n\r\n setCheckedKeys(keys: any[] = []) {\r\n // if (!XIsEmpty(keys)) this.hasChecked.set(true);\r\n const setChildren = (nodes: XTreeNode[], clear = false) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.checked = !clear && keys.includes(x.id);\r\n x.change && x.change(true);\r\n setChildren(x.children as XTreeNode[], clear);\r\n });\r\n };\r\n setChildren(this.nodes(), XIsEmpty(keys));\r\n this.cdr.markForCheck();\r\n }\r\n\r\n setExpandedAll() {\r\n if (this.expandedAll() && this.treeData().length === this.nodes().length) return;\r\n const setChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.open = this.expandedAll();\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n setChildren(this.nodes());\r\n\r\n if (this.expandedAll() === false) {\r\n this.nodes.set(\r\n XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n )\r\n );\r\n } else {\r\n if (this.virtualNodes().length === 0) {\r\n this.virtualNodes.set([...this.nodes()]);\r\n }\r\n this.nodes.set(this.virtualNodes());\r\n for (let item of this.virtualNodes()) {\r\n this.setVirtualExpandedAll(item, this.expandedAll());\r\n }\r\n }\r\n this.virtualBody()?.checkViewportSize();\r\n }\r\n\r\n setExpanded() {\r\n for (let i = 0; i < this.nodes().length; i++) {\r\n let item = this.nodes()[i];\r\n if (item.open && item.children && item.children.length > 0) {\r\n let index = this.nodes().indexOf(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...(item.children as XTreeNode[]));\r\n return [...x];\r\n });\r\n }\r\n item.change && item.change();\r\n }\r\n }\r\n\r\n setChangeExpanded() {\r\n this.setDataChange(this.treeData(), true, true, false, undefined, true);\r\n }\r\n\r\n setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n let index = this.nodes().indexOf(item);\r\n if (expandedAll) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n getNodes(child);\r\n }\r\n };\r\n getNodes(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n virtualToggle(node: XTreeNode) {\r\n let index = this.nodes().indexOf(node);\r\n if (node.open) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n child.open && getNodes(child);\r\n }\r\n };\r\n getNodes(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n } else {\r\n let delCount = 0;\r\n const getCount = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n delCount += nd.children!.length;\r\n for (let child of nd.children!) {\r\n child.open && getCount(child);\r\n }\r\n };\r\n getCount(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, delCount);\r\n return [...x];\r\n });\r\n }\r\n\r\n this.addOrRemoveExpanded(node);\r\n this.virtualBody()?.checkViewportSize();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n addOrRemoveExpanded(node: XTreeNode) {\r\n if (node.open) {\r\n if (!this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.push(node.id);\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.splice(x.indexOf(node.id), 1);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n\r\n setActivatedNode(nodes: XTreeNode[], parentOpen = true, dataChange = true) {\r\n if (XIsEmpty(this.activatedId()) && this.multiple()) {\r\n this.activatedId.set([]);\r\n }\r\n let before = this.activatedNode();\r\n if (this.multiple()) {\r\n if (this.activatedId().length > 0) {\r\n let ids = this.objectArray() ? this.activatedId().map((x: XTreeNode) => x.id) : this.activatedId();\r\n for (let i = 0; i < ids.length; i++) {\r\n let node = nodes.find((x) => x.id === ids[i]) as XTreeNode;\r\n if (node) {\r\n parentOpen && this.setParentOpen(nodes, node);\r\n if (i === ids.length - 1) {\r\n this.activatedNode.set(node);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n let activatedId = this.activatedId();\r\n this.activatedNode.set(nodes.find((x) => x.id === activatedId) as XTreeNode);\r\n if (this.activatedNode()) {\r\n parentOpen && this.setParentOpen(nodes, this.activatedNode()!);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n if (!XIsEmpty(nodes) && dataChange) {\r\n this.setDataChange(nodes, false, true, parentOpen);\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XTreeNode[], node: XTreeNode) {\r\n const getParent = (child: XTreeNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XTreeNode;\r\n if (!XIsEmpty(parent)) {\r\n if (!this.expanded().includes(parent.id)) {\r\n this.expanded.update((x) => [...x, parent.id]);\r\n }\r\n parent.open = true;\r\n parent.change && parent.change();\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n onToggle(event: Event | null, node: XTreeNode) {\r\n node.open = !node.open;\r\n if (this.lazy() && !node.childrenLoaded) {\r\n this.getLazyData(node, () => this.virtualToggle(node));\r\n } else {\r\n this.virtualToggle(node);\r\n }\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n getLazyData(node: XTreeNode, callBack?: () => void) {\r\n node.loading = true;\r\n node.change && node.change();\r\n (this.data() as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n .pipe(\r\n map((x) =>\r\n x.map((y) => {\r\n y.level = (node.level as number) + 1;\r\n y.checked = node.checked;\r\n return y;\r\n })\r\n )\r\n )\r\n .subscribe((x) => {\r\n node.children = x;\r\n node.childrenLoaded = true;\r\n node.loading = false;\r\n this.treeData.set([...this.treeData(), ...x]);\r\n if (callBack) callBack();\r\n node.change && node.change();\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n addNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const _addNode = () => {\r\n if (parent) {\r\n node.level = parent.level! + 1;\r\n node.pid = parent.id;\r\n node.leaf = true;\r\n parent.leaf = false;\r\n parent.open = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n } else if (XIsEmpty(node.pid)) {\r\n node.level = 0;\r\n node.leaf = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n }\r\n };\r\n if (this.lazy() && parent && !parent.childrenLoaded) {\r\n this.getLazyData(parent, () => {\r\n _addNode();\r\n });\r\n } else {\r\n _addNode();\r\n }\r\n }\r\n\r\n setActivatedId(node: XTreeNode) {\r\n if (this.multiple()) {\r\n if (this.objectArray()) {\r\n this.activatedId.set([node]);\r\n } else {\r\n this.activatedId.set([node.id]);\r\n }\r\n } else {\r\n this.activatedId.set(node.id);\r\n }\r\n }\r\n\r\n removeNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const removeChildren = (nd: XTreeNode) => {\r\n XRemove(this.treeData(), (x) => x.id === nd.id);\r\n if (nd.children) {\r\n for (let item of nd.children) {\r\n removeChildren(item);\r\n }\r\n }\r\n };\r\n removeChildren(node);\r\n\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n const childIndex = parent.children.findIndex((x) => x.id === node.id);\r\n if (childIndex > -1) {\r\n parent.children.splice(childIndex, 1);\r\n }\r\n parent.leaf = parent.children.length === 0;\r\n }\r\n this.setDataChange(this.treeData(), true, false, false);\r\n }\r\n\r\n updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n Object.assign(node, nowNode);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n\r\n node.change && node.change();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return item;\r\n }\r\n}\r\n","<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- 提前加载loading的图标-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\n\r\n@NgModule({\r\n exports: [XTreeComponent, XTreeNodeComponent],\r\n imports: [XTreeComponent, XTreeNodeComponent]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XTreeService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-tree.mjs","sources":["../../../../lib/ng-nest/ui/tree/tree.property.ts","../../../../lib/ng-nest/ui/tree/tree.service.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.html","../../../../lib/ng-nest/ui/tree/tree.component.ts","../../../../lib/ng-nest/ui/tree/tree.component.html","../../../../lib/ng-nest/ui/tree/tree.module.ts","../../../../lib/ng-nest/ui/tree/ng-nest-ui-tree.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, output, model } from '@angular/core';\r\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\r\nimport type { XData, XParentIdentityProperty, XNumber, XBoolean, XIdentityProperty, XAlign } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Tree\r\n * @selector x-tree\r\n * @decorator component\r\n */\r\nexport const XTreePrefix = 'x-tree';\r\nconst X_TREE_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * @zh_CN Tree 节点排序默认值\r\n * @en_US Tree node order default value\r\n */\r\nexport const X_TREE_ORDER_DEFAULT: XTreeOrder[] = [\r\n { property: 'sort', order: 'asc' },\r\n { property: 'label', order: 'asc' }\r\n];\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ selector: `${XTreePrefix}-property`, template: '' })\r\nexport class XTreeProperty extends XPropertyFunction(X_TREE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeNode>>([]);\r\n /**\r\n * @zh_CN 显示多选框\r\n * @en_US Show checkbox\r\n */\r\n readonly checkbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 开启懒加载节点,data 必须设置成函数类型\r\n * @en_US Open lazy loading node, data must be set to function type\r\n */\r\n readonly lazy = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)\r\n * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n */\r\n readonly activatedId = model<any>(null);\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = model<any[]>([]);\r\n /**\r\n * @zh_CN checkbox 选中的节点\r\n * @en_US Checkbox selected node\r\n */\r\n readonly checked = model<any[]>([]);\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 点击节点就触发展开/收起的操作,请确保节点上没有其它操作(checkbox、自定义的操作按钮)\r\n * @en_US Click the node to trigger the expand/collapse operation, please make sure that there are no other operations on the node (checkbox, custom operation button)\r\n */\r\n readonly nodeOpen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n */\r\n readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签自定义模板\r\n * @en_US Label custom template\r\n */\r\n readonly labelTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 节点的高度, 默认是自适应高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = input<string, XNumber>(this.config?.nodeHeight ?? '', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 是否允许多次点击一个节点触发多次事件\r\n * @en_US Whether to allow multiple clicks on a node to trigger multiple events\r\n */\r\n readonly allowManyActivated = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 拖动节点\r\n * @en_US Drag node\r\n */\r\n readonly drag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前点击选中的节点变化的事件\r\n * @en_US The event of the currently clicked node change\r\n */\r\n readonly activatedChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 使用 checkedbox 选中变化的事件\r\n * @en_US Use checkedbox to select changed events\r\n */\r\n readonly checkboxChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 如果 data 是函数类型,可以通过此参数控制请求,用于弹框中的表格,弹出后再请求\r\n * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n */\r\n readonly manual = model<boolean>(true);\r\n /**\r\n * @zh_CN checkbox 状态改变触发层级检查\r\n * @en_US Checkbox status changes trigger level checks\r\n */\r\n readonly levelCheck = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = input<XAlign>(this.config?.nodeAlignItems ?? 'center');\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n /**\r\n * @zh_CN 滚动区域元素\r\n * @en_US Rolling area element\r\n */\r\n readonly scrollElement = input<HTMLElement>();\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 滚动区域高度,开启虚拟滚动的时候生效\r\n * @en_US Rolling area height\r\n */\r\n readonly virtualScrollHeight = input<string, XNumber>(this.config?.virtualScrollHeight ?? '400px', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 虚拟滚动高度自适应指定元素\r\n * @en_US virtual rolling height follows the specified object\r\n */\r\n readonly heightAdaption = input<HTMLElement>();\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 34, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 多选功能,当前激活的节点可以是多个\r\n * @en_US Multiple choice\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,activatedId 的值为对象数组\r\n * @en_US When multiple selection is enabled, the value of activatedId is an array of objects\r\n */\r\n readonly objectArray = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,点击父节点,包含子节点\r\n * @en_US When selecting multiple options, click on the parent node to include the child nodes\r\n */\r\n readonly includeChildren = input<boolean, XBoolean>(this.config?.includeChildren ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 关键字高亮,针对下拉树搜索\r\n * @en_US Keyword highlighting\r\n */\r\n readonly keywordText = input<string | string[]>();\r\n /**\r\n * @zh_CN 匹配关键字区分大小写,针对下拉树搜索\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能选择叶子节点\r\n * @en_US Only leaf nodes can be selected\r\n */\r\n readonly onlyLeaf = input<boolean, XBoolean>(this.config?.onlyLeaf ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 展开收起的图标自定义模版\r\n * @en_US Expand the folded icon custom template\r\n */\r\n readonly expandedIcon = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 显示连接线\r\n * @en_US Show line\r\n */\r\n readonly showLine = input<boolean, XBoolean>(this.config?.showLine ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 排序属性\r\n * @en_US Order property\r\n */\r\n readonly order = input<XTreeOrder[]>(this.config?.order ?? X_TREE_ORDER_DEFAULT);\r\n /**\r\n * @zh_CN 节点点击事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeClick = output<XTreeNode>();\r\n /**\r\n * @zh_CN 节点开始拖动事件\r\n * @en_US Node drag started\r\n */\r\n readonly nodeDragStarted = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点结束拖动事件\r\n * @en_US Node drag ended\r\n */\r\n readonly nodeDragEnded = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点正在拖动事件\r\n * @en_US Node drag moved\r\n */\r\n readonly nodeDragMoved = output<XTreeNodeDragEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 数据对象\r\n * @en_US Tree data object\r\n */\r\nexport interface XTreeNode extends XParentIdentityProperty<XTreeNode> {\r\n /**\r\n * @zh_CN 激活的\r\n * @en_US active\r\n */\r\n activated?: boolean;\r\n /**\r\n * @zh_CN 检查更新\r\n * @en_US Check for updates\r\n */\r\n change?: Function;\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n checked?: boolean;\r\n /**\r\n * @zh_CN 禁用checkbox\r\n * @en_US Disable checkbox\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n indeterminate?: boolean;\r\n /**\r\n * @zh_CN 节点高度,优先级高于 tree 参数\r\n * @en_US Node height, highest priority\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n nowrap?: boolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n alignItems?: XAlign;\r\n /**\r\n * @zh_CN 节点懒加载中\r\n * @en_US Node lazy loading\r\n */\r\n loading?: boolean;\r\n /**\r\n * @zh_CN 显示拖动指示器\r\n * @en_US Show drag indicator\r\n */\r\n showDragIndicator?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n /**\r\n * @zh_CN 操作\r\n * @en_US Operating\r\n */\r\n handler?: Function;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点拖动事件\r\n * @en_US Tree node drag event\r\n */\r\nexport interface XTreeNodeDragEvent {\r\n /**\r\n * @zh_CN 对应 cdk 中的事件\r\n * @en_US drag cdk event\r\n */\r\n event?: CdkDragStart | CdkDragEnd | CdkDragMove<XTreeNode>;\r\n /**\r\n * @zh_CN 拖动的节点\r\n * @en_US drag node\r\n */\r\n from?: XTreeNode;\r\n /**\r\n * @zh_CN 要拖动到的位置对应的节点\r\n * @en_US Node corresponding to the position to drag\r\n */\r\n to?: XTreeNode;\r\n /**\r\n * @zh_CN 对应节点的前面还是后面\r\n * @en_US The front or back of the corresponding node\r\n */\r\n position?: -1 | 0 | 1;\r\n}\r\n\r\n/**\r\n * TreeNode\r\n * @selector x-tree-node\r\n * @decorator directive\r\n */\r\nexport const XTreeNodePrefix = 'x-tree-node';\r\n\r\n/**\r\n * TreeNode Property\r\n */\r\n@Component({ selector: `${XTreeNodePrefix}-property`, template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly node = input<XTreeNode>({});\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n readonly level = model<number | undefined>(0);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = model<string>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = model<boolean>(false);\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = model<XAlign>('center');\r\n /**\r\n * @zh_CN 标记为虚拟滚动的节点\r\n * @en_US Mark as a node of virtual rolling\r\n */\r\n readonly virtualScroll = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN id\r\n * @en_US Id\r\n */\r\n readonly id = model<any>();\r\n /**\r\n * @zh_CN pid\r\n * @en_US pId\r\n */\r\n readonly pid = model<any>();\r\n /**\r\n * @zh_CN 叶子节点\r\n * @en_US A leaf node\r\n */\r\n readonly leaf = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly height = model<string>('');\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly alignItems = model<XAlign>();\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly loading = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 展开\r\n * @en_US open\r\n */\r\n readonly open = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n readonly checked = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n readonly indeterminate = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点名称\r\n * @en_US The name of the node\r\n */\r\n readonly label = model<string | undefined>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n readonly nowrap = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点展开收起事件\r\n * @en_US Node expansion pack up\r\n */\r\n readonly toggle = output<XTreeNode>();\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点排序属性\r\n * @en_US Tree node order property\r\n */\r\nexport interface XTreeOrder {\r\n /**\r\n * @zh_CN treenode 排序属性\r\n * @en_US treenode order property\r\n */\r\n property: string;\r\n /**\r\n * @zh_CN 排序方式\r\n * @en_US order type\r\n */\r\n order: XTreeOrderType;\r\n}\r\n\r\nexport type XTreeOrderType = 'asc' | 'desc';\r\n","import { Injectable } from '@angular/core';\r\nimport { XIsEmpty, XRemove } from '@ng-nest/ui/core';\r\nimport { XTreeNode } from './tree.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XTreeService {\r\n getChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n getParents(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gParent = (nd: XTreeNode) => {\r\n if (!nd.pid) return;\r\n const parent = data.find((x) => x.id === nd.pid);\r\n if (!parent) return;\r\n res.push(parent);\r\n gParent(parent);\r\n };\r\n gParent(node);\r\n\r\n return res;\r\n }\r\n\r\n getOpenChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n if (!nd.open) return;\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n moveNode(data: XTreeNode[], from: XTreeNode, to: XTreeNode, pos: -1 | 0 | 1) {\r\n if (XIsEmpty(data)) return;\r\n const isAddChildNode = pos === 0;\r\n const formIndex = data.findIndex((x) => x.id === from.id);\r\n const toIndex = data.findIndex((x) => x.id === to.id);\r\n XRemove(data, (x) => x.id === from.id);\r\n if (from.pid === to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n diffLevel = to.level! - from.level!;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n } else if (from.pid !== to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n from.pid = to.pid;\r\n diffLevel = to.level! - from.level!;\r\n from.level = to.level;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n computed,\r\n signal,\r\n output\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XBoolean, XComputedStyle, XToCssPx, XIsObjectArray, XIsArray } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XTreeService } from './tree.service';\r\nimport { DOCUMENT, NgStyle } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XTreeComponent } from './tree.component';\r\n\r\n@Component({\r\n selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n imports: [\r\n NgStyle,\r\n FormsModule,\r\n XIconComponent,\r\n XCheckboxComponent,\r\n XOutletDirective,\r\n XLinkComponent,\r\n XKeywordDirective\r\n ],\r\n templateUrl: './tree-node.component.html',\r\n styleUrls: ['./tree-node.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeNodeComponent extends XTreeNodeProperty {\r\n tree = inject(XTreeComponent, { optional: true, host: true })!;\r\n nodeMouseenter = output<{ event: MouseEvent; node: XTreeNode; ele: ElementRef }>();\r\n @HostBinding('class.x-tree-node') rootClass = true;\r\n private document = inject(DOCUMENT);\r\n fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private unSubject = new Subject<void>();\r\n\r\n @HostListener('mouseenter', ['$event']) onMouseenter(event: MouseEvent) {\r\n this.nodeMouseenter.emit({ event: event, node: this.node(), ele: this.elementRef });\r\n }\r\n\r\n @HostListener('mouseleave', ['$event']) onMouseleave(_event: MouseEvent) {\r\n if (!this.tree.dragging()) return;\r\n const hoverTreeNode = this.tree.hoverTreeNode();\r\n hoverTreeNode && hoverTreeNode.change && hoverTreeNode.change();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n showDragIndicator = computed(() => {\r\n return this.tree.dragging() && this.tree.hoverTreeNode()?.id === this.id();\r\n });\r\n\r\n isChildrenLast = computed(() => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === this.pid());\r\n if (!parent || !parent.children) return false;\r\n const index = parent.children.indexOf(this.node());\r\n return index + 1 === parent.children.length;\r\n });\r\n\r\n isParentLast = computed(() => {\r\n let parents = this.treeService.getParents(this.tree.nodes(), this.node());\r\n if (parents.length <= 1) return [];\r\n const res: boolean[] = [];\r\n parents.reduce((pre: XTreeNode, curr: XTreeNode) => {\r\n if (pre === null) return curr;\r\n const index = curr.children?.indexOf(pre)!;\r\n res.push(index + 1 === curr.children?.length!);\r\n return curr;\r\n });\r\n\r\n return res.reverse();\r\n });\r\n\r\n verticalLevel = computed(() => {\r\n if (this.level()! > 0) {\r\n return Array.from({ length: this.level()! }).map((_x, index) => index + 1);\r\n } else {\r\n return [];\r\n }\r\n });\r\n\r\n verticalWidth = computed(() => {\r\n return XToCssPx(this.tree.spacing(), this.fontSize()) / 2;\r\n });\r\n\r\n paddingLeft = computed(() => (this.level()! ? this.level()! : 0) * XToCssPx(this.tree.spacing(), this.fontSize()));\r\n\r\n indicatorWidth = computed(() => {\r\n if (this.tree.dragPosition() === 0) {\r\n return `calc(100% - ${this.paddingLeft() + XToCssPx(this.tree.spacing(), this.fontSize()) + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n }\r\n return `calc(100% - ${this.paddingLeft() + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n });\r\n\r\n indicatorStyle = computed(() => {\r\n if (this.tree.dragPosition() === 1) {\r\n return { bottom: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === -1) {\r\n return { top: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === 0) {\r\n return {\r\n bottom: `-${0.0625 * this.fontSize()}px`\r\n };\r\n }\r\n return {};\r\n });\r\n\r\n changed = signal(false);\r\n\r\n activated = computed(() => {\r\n this.changed();\r\n const activatedId = this.tree.activatedId();\r\n if (this.tree.multiple()) {\r\n if (this.tree.objectArray()) {\r\n return XIsObjectArray<XTreeNode[]>(activatedId) && activatedId.map((x: XTreeNode) => x.id).includes(this.id());\r\n } else {\r\n return XIsArray<any[]>(activatedId) && activatedId.includes(this.id());\r\n }\r\n } else {\r\n return activatedId === this.id();\r\n }\r\n });\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n private treeService = inject(XTreeService);\r\n elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n const node = this.node();\r\n node.change = (check: boolean) => {\r\n if (check) this.setCheckbox();\r\n this.cdr.detectChanges();\r\n };\r\n if (!this.tree.levelCheck()) return;\r\n if (this.checked()) this.setCheckbox();\r\n this.setIndeterminate(this.node());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n onActivate(event: Event, node: XTreeNode) {\r\n const change: Function = this.tree.activatedNode()?.change as Function;\r\n this.tree.nodeOpen() && !this.leaf() && this.onToggle(event, node);\r\n const onChange = () => {\r\n change && change();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n };\r\n if (this.tree.onlyLeaf() && !this.leaf()) {\r\n onChange();\r\n return;\r\n }\r\n if (this.tree.multiple()) {\r\n if (!this.tree.activatedId()) this.tree.activatedId.set([]);\r\n const nodes = [node];\r\n if (this.tree.includeChildren()) {\r\n nodes.push(...this.getChildren());\r\n }\r\n if (this.tree.objectArray()) {\r\n const ids = this.tree.activatedId().map((x: XTreeNode) => x.id);\r\n if (ids.includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(ids.indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it)) {\r\n x.push(it);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.tree.activatedId().includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(this.tree.activatedId().indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it.id)) {\r\n x.push(it.id);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n }\r\n } else {\r\n this.tree.activatedId.set(node.id);\r\n }\r\n if (this.tree.activatedNode()) {\r\n if (this.tree.activatedNode()?.id === node.id && !this.tree.allowManyActivated()) return;\r\n }\r\n this.tree.activatedNode.set(node);\r\n this.changed.update((x) => !x);\r\n this.tree.activatedChange.emit(node);\r\n this.tree.nodeClick.emit(node);\r\n onChange();\r\n }\r\n\r\n onCheckboxChange() {\r\n this.setCheckbox();\r\n this.tree.checkboxChange?.emit(this.node());\r\n }\r\n\r\n getVerticalLeft(i: number) {\r\n const spacing = XToCssPx(this.tree.spacing(), this.fontSize());\r\n return (i - 1) * spacing + spacing / 2;\r\n }\r\n\r\n setCheckbox() {\r\n if (!this.tree.levelCheck()) return;\r\n this.node().indeterminate = this.checked();\r\n this.node().children && this.setChildrenCheckbox(this.checked()!);\r\n const setParent = (node: XTreeNode) => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === node.pid);\r\n if (!parent || XIsEmpty(parent.children)) return;\r\n let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n parent.checked = checkedList?.length === parent.children?.length;\r\n parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n parent.change && parent.change();\r\n setParent(parent);\r\n };\r\n setParent(this.node());\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getChildren() {\r\n const res: XTreeNode[] = [];\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n res.push(x);\r\n getChildren(x.children as XTreeNode[]);\r\n }\r\n };\r\n getChildren(this.node().children as XTreeNode[]);\r\n\r\n return res;\r\n }\r\n\r\n setChildrenCheckbox(checked: boolean) {\r\n const setChildren = (children: XTreeNode[], isChecked: boolean) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n x.checked = isChecked;\r\n x.indeterminate = isChecked;\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[], isChecked);\r\n }\r\n };\r\n setChildren(this.node().children as XTreeNode[], checked);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setParentCheckbox() {\r\n if (XIsEmpty(this.node().children)) return;\r\n let checkedList = this.node().children?.filter((x) => x.checked);\r\n let indeterminateList = this.node().children?.filter((x) => x.indeterminate);\r\n this.node().checked = checkedList?.length === this.node().children?.length;\r\n this.node().indeterminate =\r\n (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setIndeterminate(node: XTreeNode) {\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n children.forEach((x) => {\r\n if (x.indeterminate || x.checked) {\r\n node.indeterminate = true;\r\n return;\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(node.children as XTreeNode[]);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getNodeDisabled(disabled?: boolean) {\r\n return disabled as XBoolean;\r\n }\r\n\r\n onAction(event: Event, action: XTreeAction, node: XTreeNode) {\r\n action.handler && action.handler(node);\r\n event.stopPropagation();\r\n }\r\n\r\n onToggle(event: Event, node: XTreeNode) {\r\n this.toggle.emit(node);\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return `${item.id}-${item.level}`;\r\n }\r\n\r\n trackByAction(_index: number, item: XTreeAction) {\r\n return item.id;\r\n }\r\n}\r\n","<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (!leaf()) {\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon class=\"x-tree-node-icon\" type=\"fto-chevron-right\"></x-icon>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n class=\"x-tree-node-checkbox\"\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\">{{\r\n action.label\r\n }}</x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n viewChild,\r\n viewChildren,\r\n signal,\r\n computed,\r\n inject,\r\n effect\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport {\r\n XIsEmpty,\r\n XIsFunction,\r\n XIsUndefined,\r\n XIsChange,\r\n XSetData,\r\n XResize,\r\n XRemove,\r\n XResizeObserver,\r\n XComputedStyle,\r\n XToCssPx,\r\n XOrderBy\r\n} from '@ng-nest/ui/core';\r\nimport { debounceTime, map, Observable, Subject } from 'rxjs';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XTreeService } from './tree.service';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XTreePrefix}`,\r\n imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent],\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges {\r\n tree = viewChild('tree', { read: ElementRef<HTMLElement> });\r\n virtualBody = viewChild('virtualBody', { read: CdkVirtualScrollViewport });\r\n dropList = viewChild('dropList', { read: CdkDropList<HTMLElement> });\r\n nodeComponents = viewChildren(XTreeNodeComponent);\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n nodes = signal<XTreeNode[]>([]);\r\n\r\n virtualNodes = signal<XTreeNode[]>([]);\r\n activatedNode = signal<XTreeNode | null>(null);\r\n dataIsFunc = signal(false);\r\n getting = signal(false);\r\n treeData = signal<XTreeNode[]>([]);\r\n\r\n dragging = signal(false);\r\n dragPosition = signal<-1 | 0 | 1>(-1);\r\n hoverTreeNode = signal<XTreeNode | null>(null);\r\n hoverTreeEle!: ElementRef;\r\n draggingTreeNode = signal<XTreeNode | null>(null);\r\n\r\n isEmpty = computed(() => XIsEmpty(this.nodes()));\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public treeService: XTreeService\r\n ) {\r\n super();\r\n\r\n effect(() => {\r\n const virtualBody = this.virtualBody();\r\n if (virtualBody) {\r\n virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n }\r\n });\r\n }\r\n\r\n heightAdaptionSignal = signal<number>(0);\r\n\r\n isVirtualScrollAdaption = computed(() => {\r\n return !!(this.virtualScroll() && this.heightAdaption());\r\n });\r\n\r\n virtualScrollHeightSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.heightAdaptionSignal();\r\n } else {\r\n return XToCssPx(this.virtualScrollHeight(), this.fontSize());\r\n }\r\n });\r\n\r\n minBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal();\r\n } else {\r\n return this.minBufferPx();\r\n }\r\n });\r\n\r\n maxBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal() * 1.2;\r\n } else {\r\n return this.maxBufferPx();\r\n }\r\n });\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { expandedAll, data, checked, manual, expanded } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(expanded) && this.setChangeExpanded();\r\n XIsChange(checked) && this.setCheckedKeys(this.checked());\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isVirtualScrollAdaption()) {\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n XResize(this.heightAdaption()!)\r\n .pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n this.setActivatedNode(this.treeData());\r\n this.setScrollTop();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setData() {\r\n if (typeof this.data() === 'undefined') return;\r\n this.dataIsFunc.set(false);\r\n if (XIsFunction(this.data())) {\r\n this.dataIsFunc.set(true);\r\n this.getDataByFunc();\r\n } else {\r\n XSetData<XTreeNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n }\r\n\r\n cdkDragStarted(event: CdkDragStart) {\r\n this.dragging.set(true);\r\n this.draggingTreeNode.set(event.source.data);\r\n if (event.source.data.open) {\r\n this.onToggle(event.event, event.source.data);\r\n }\r\n this.nodeDragStarted.emit({ event, from: this.draggingTreeNode()! });\r\n }\r\n\r\n cdkDragEnded(event: CdkDragEnd) {\r\n this.dragging.set(false);\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n if (hoverTreeNode.id !== event.source.data.id) {\r\n this.insertNode(event.source.data, hoverTreeNode, this.dragPosition());\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragEnded.emit({\r\n event,\r\n from: event.source.data,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n }\r\n\r\n insertNode(dragNode: XTreeNode, hoverNode: XTreeNode, dragPosition: -1 | 0 | 1) {\r\n let parent = this.nodes().find((x) => x.id === dragNode.pid);\r\n this.treeService.moveNode(this.treeData(), dragNode, hoverNode, dragPosition);\r\n this.setDataChange(this.treeData(), true, false, true, parent);\r\n }\r\n\r\n cdkDragMoved(event: CdkDragMove<XTreeNode>) {\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (!this.dragging() || !hoverTreeNode) return;\r\n const y = event.pointerPosition.y;\r\n if (event.source.data.id === hoverTreeNode.id) return;\r\n const target = this.hoverTreeEle.nativeElement as HTMLElement;\r\n const { top, height } = target.getBoundingClientRect();\r\n const des = Math.max(height * 0.5, 2);\r\n if (y > top && y < top + des - 2) {\r\n this.dragPosition.set(-1);\r\n } else if (y > top + des + 2 && y < top + height) {\r\n this.dragPosition.set(1);\r\n } else if (y >= top + des - 2 && y <= top + des + 2) {\r\n this.dragPosition.set(0);\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragMoved.emit({\r\n event,\r\n from: this.draggingTreeNode()!,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n\r\n predicate(_drag: CdkDrag<XTreeNode>, _drop: CdkDropList<XTreeNode>) {\r\n return true;\r\n }\r\n\r\n private setManual() {\r\n if (this.dataIsFunc()) this.getDataByFunc();\r\n }\r\n\r\n private getDataByFunc() {\r\n if (!this.manual()) return;\r\n XSetData<XTreeNode>((this.data() as Function)(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n\r\n private setDataChange(\r\n value: XTreeNode[],\r\n regetChildren = false,\r\n init = true,\r\n parentOpen = true,\r\n lazyParant?: XTreeNode,\r\n out = false\r\n ) {\r\n if (XIsEmpty(this.checked())) this.checked.set([]);\r\n const getChildren = (node: XTreeNode, level: number) => {\r\n if (init) {\r\n const open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n node.level = level;\r\n node.open = out ? open : open || node.open;\r\n node.checked = this.checked().includes(node.id) || node.checked;\r\n node.childrenLoaded = node.open;\r\n }\r\n if (XIsUndefined(node.children) || regetChildren) {\r\n node.children = XOrderBy(\r\n value.filter((y) => y.pid === node.id),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n if (this.levelCheck() && node.children && node.checked) {\r\n for (let nd of node.children) {\r\n nd.checked = true;\r\n this.checked.update((x) => {\r\n x.push(nd.id);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n if ((!this.lazy() && (XIsUndefined(node.leaf) || regetChildren)) || node.id === lazyParant?.id) {\r\n node.leaf = (node.children?.length as number) === 0;\r\n }\r\n if (!node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeData.set(value);\r\n this.nodes.set(\r\n XOrderBy(\r\n value.filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n ).map((x) => getChildren(x, 0))\r\n );\r\n if (parentOpen) {\r\n for (let item of value) {\r\n if (!item.leaf && item.open) {\r\n this.setParentOpen(value, item);\r\n }\r\n }\r\n }\r\n this.setExpanded();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n nodeMouseenter($event: { event: MouseEvent; node: XTreeNode; ele: ElementRef }) {\r\n const { node, ele } = $event;\r\n if (!this.dragging()) return;\r\n let before = this.hoverTreeNode();\r\n this.hoverTreeNode.set(node);\r\n this.hoverTreeEle = ele;\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n\r\n if (!node.leaf && !node.open) {\r\n let from = this.nodes().indexOf(this.draggingTreeNode()!);\r\n let to = this.nodes().indexOf(node);\r\n if (to - from !== -1) {\r\n this.onToggle(null!, node);\r\n }\r\n }\r\n }\r\n\r\n setScrollTop() {\r\n const scrollElement = this.scrollElement();\r\n if (!scrollElement || !this.activatedNode()) return;\r\n const inx = this.nodes().indexOf(this.activatedNode()!);\r\n let com = this.nodeComponents().find((_, index) => index === inx);\r\n if (!com) return;\r\n let ele = com.elementRef.nativeElement as HTMLElement;\r\n let scrollEle = scrollElement;\r\n let min = scrollEle.scrollTop;\r\n let max = scrollEle.scrollTop + scrollEle.clientHeight;\r\n if (ele.offsetTop + ele.clientHeight > max) {\r\n let scrollTop = ele.offsetTop + ele.clientHeight - scrollEle.clientHeight;\r\n scrollEle.scrollTop = scrollTop;\r\n }\r\n if (ele.offsetTop < min) {\r\n scrollEle.scrollTop = ele.offsetTop;\r\n }\r\n }\r\n\r\n getCheckedNodes(): XTreeNode[] {\r\n let result: XTreeNode[] = [];\r\n const getChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n if (x.checked && !result.includes(x)) {\r\n result = [...result, x];\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(this.nodes());\r\n return result;\r\n }\r\n\r\n getCheckedKeys() {\r\n return this.getCheckedNodes().map((x) => x.id);\r\n }\r\n\r\n setCheckedKeys(keys: any[] = []) {\r\n // if (!XIsEmpty(keys)) this.hasChecked.set(true);\r\n const setChildren = (nodes: XTreeNode[], clear = false) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.checked = !clear && keys.includes(x.id);\r\n x.change && x.change(true);\r\n setChildren(x.children as XTreeNode[], clear);\r\n });\r\n };\r\n setChildren(this.nodes(), XIsEmpty(keys));\r\n this.cdr.markForCheck();\r\n }\r\n\r\n setExpandedAll() {\r\n if (this.expandedAll() && this.treeData().length === this.nodes().length) return;\r\n const setChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.open = this.expandedAll();\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n setChildren(this.nodes());\r\n\r\n if (this.expandedAll() === false) {\r\n this.nodes.set(\r\n XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n )\r\n );\r\n } else {\r\n if (this.virtualNodes().length === 0) {\r\n this.virtualNodes.set([...this.nodes()]);\r\n }\r\n this.nodes.set(this.virtualNodes());\r\n for (let item of this.virtualNodes()) {\r\n this.setVirtualExpandedAll(item, this.expandedAll());\r\n }\r\n }\r\n this.virtualBody()?.checkViewportSize();\r\n }\r\n\r\n setExpanded() {\r\n for (let i = 0; i < this.nodes().length; i++) {\r\n let item = this.nodes()[i];\r\n if (item.open && item.children && item.children.length > 0) {\r\n let index = this.nodes().indexOf(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...(item.children as XTreeNode[]));\r\n return [...x];\r\n });\r\n }\r\n item.change && item.change();\r\n }\r\n }\r\n\r\n setChangeExpanded() {\r\n this.setDataChange(this.treeData(), true, true, false, undefined, true);\r\n }\r\n\r\n setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n let index = this.nodes().indexOf(item);\r\n if (expandedAll) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n getNodes(child);\r\n }\r\n };\r\n getNodes(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n virtualToggle(node: XTreeNode) {\r\n let index = this.nodes().indexOf(node);\r\n if (node.open) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n child.open && getNodes(child);\r\n }\r\n };\r\n getNodes(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n } else {\r\n let delCount = 0;\r\n const getCount = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n delCount += nd.children!.length;\r\n for (let child of nd.children!) {\r\n child.open && getCount(child);\r\n }\r\n };\r\n getCount(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, delCount);\r\n return [...x];\r\n });\r\n }\r\n\r\n this.addOrRemoveExpanded(node);\r\n this.virtualBody()?.checkViewportSize();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n addOrRemoveExpanded(node: XTreeNode) {\r\n if (node.open) {\r\n if (!this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.push(node.id);\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.splice(x.indexOf(node.id), 1);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n\r\n setActivatedNode(nodes: XTreeNode[], parentOpen = true, dataChange = true) {\r\n if (XIsEmpty(this.activatedId()) && this.multiple()) {\r\n this.activatedId.set([]);\r\n }\r\n let before = this.activatedNode();\r\n if (this.multiple()) {\r\n if (this.activatedId().length > 0) {\r\n let ids = this.objectArray() ? this.activatedId().map((x: XTreeNode) => x.id) : this.activatedId();\r\n for (let i = 0; i < ids.length; i++) {\r\n let node = nodes.find((x) => x.id === ids[i]) as XTreeNode;\r\n if (node) {\r\n parentOpen && this.setParentOpen(nodes, node);\r\n if (i === ids.length - 1) {\r\n this.activatedNode.set(node);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n let activatedId = this.activatedId();\r\n this.activatedNode.set(nodes.find((x) => x.id === activatedId) as XTreeNode);\r\n if (this.activatedNode()) {\r\n parentOpen && this.setParentOpen(nodes, this.activatedNode()!);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n if (!XIsEmpty(nodes) && dataChange) {\r\n this.setDataChange(nodes, false, true, parentOpen);\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XTreeNode[], node: XTreeNode) {\r\n const getParent = (child: XTreeNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XTreeNode;\r\n if (!XIsEmpty(parent)) {\r\n if (!this.expanded().includes(parent.id)) {\r\n this.expanded.update((x) => [...x, parent.id]);\r\n }\r\n parent.open = true;\r\n parent.change && parent.change();\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n onToggle(event: Event | null, node: XTreeNode) {\r\n node.open = !node.open;\r\n if (this.lazy() && !node.childrenLoaded) {\r\n this.getLazyData(node, () => this.virtualToggle(node));\r\n } else {\r\n this.virtualToggle(node);\r\n }\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n getLazyData(node: XTreeNode, callBack?: () => void) {\r\n node.loading = true;\r\n node.change && node.change();\r\n (this.data() as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n .pipe(\r\n map((x) =>\r\n x.map((y) => {\r\n y.level = (node.level as number) + 1;\r\n y.checked = node.checked;\r\n return y;\r\n })\r\n )\r\n )\r\n .subscribe((x) => {\r\n node.children = x;\r\n node.childrenLoaded = true;\r\n node.loading = false;\r\n this.treeData.set([...this.treeData(), ...x]);\r\n if (callBack) callBack();\r\n node.change && node.change();\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n addNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const _addNode = () => {\r\n if (parent) {\r\n node.level = parent.level! + 1;\r\n node.pid = parent.id;\r\n node.leaf = true;\r\n parent.leaf = false;\r\n parent.open = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n } else if (XIsEmpty(node.pid)) {\r\n node.level = 0;\r\n node.leaf = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n }\r\n };\r\n if (this.lazy() && parent && !parent.childrenLoaded) {\r\n this.getLazyData(parent, () => {\r\n _addNode();\r\n });\r\n } else {\r\n _addNode();\r\n }\r\n }\r\n\r\n setActivatedId(node: XTreeNode) {\r\n if (this.multiple()) {\r\n if (this.objectArray()) {\r\n this.activatedId.set([node]);\r\n } else {\r\n this.activatedId.set([node.id]);\r\n }\r\n } else {\r\n this.activatedId.set(node.id);\r\n }\r\n }\r\n\r\n removeNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const removeChildren = (nd: XTreeNode) => {\r\n XRemove(this.treeData(), (x) => x.id === nd.id);\r\n if (nd.children) {\r\n for (let item of nd.children) {\r\n removeChildren(item);\r\n }\r\n }\r\n };\r\n removeChildren(node);\r\n\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n const childIndex = parent.children.findIndex((x) => x.id === node.id);\r\n if (childIndex > -1) {\r\n parent.children.splice(childIndex, 1);\r\n }\r\n parent.leaf = parent.children.length === 0;\r\n }\r\n this.setDataChange(this.treeData(), true, false, false);\r\n }\r\n\r\n updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n Object.assign(node, nowNode);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n\r\n node.change && node.change();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return item;\r\n }\r\n}\r\n","<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- 提前加载loading的图标-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\n\r\n@NgModule({\r\n exports: [XTreeComponent, XTreeNodeComponent],\r\n imports: [XTreeComponent, XTreeNodeComponent]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XTreeService"],"mappings":"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"}
|