@ng-nest/ui 20.0.6 → 20.1.0
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/auto-complete/index.d.ts +72 -9
- package/base-form/index.d.ts +3 -3
- package/calendar/index.d.ts +1 -2
- package/cascade/index.d.ts +48 -8
- package/checkbox/index.d.ts +4 -4
- package/color-picker/index.d.ts +49 -8
- package/core/index.d.ts +68 -6
- package/date-picker/index.d.ts +82 -12
- package/dropdown/index.d.ts +4 -4
- package/fesm2022/ng-nest-ui-affix.mjs +12 -12
- package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-alert.mjs +35 -35
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +31 -31
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +7 -7
- package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +108 -62
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-avatar.mjs +31 -31
- package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +18 -18
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-badge.mjs +23 -23
- package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +45 -45
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-button.mjs +42 -42
- package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +20 -20
- package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-card.mjs +15 -15
- package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +46 -46
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +92 -76
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +39 -39
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +31 -31
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +95 -71
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color.mjs +16 -16
- package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-comment.mjs +21 -21
- package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-container.mjs +37 -37
- package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +38 -22
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-crumb.mjs +13 -13
- package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +284 -254
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-description.mjs +31 -31
- package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +81 -81
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-doc.mjs +7 -7
- package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drag.mjs +10 -10
- package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drawer.mjs +42 -42
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +49 -49
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-empty.mjs +12 -12
- package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-examples.mjs +7 -7
- package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +79 -77
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +33 -33
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +20 -20
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-i18n.mjs +15 -15
- package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +21 -21
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +39 -39
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-inner.mjs +11 -11
- package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +47 -42
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +106 -80
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-keyword.mjs +15 -15
- package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-layout.mjs +31 -31
- package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-link.mjs +18 -18
- package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-list.mjs +80 -80
- package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +22 -22
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-menu.mjs +45 -45
- package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
- package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message.mjs +10 -10
- package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-notification.mjs +10 -10
- package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-outlet.mjs +9 -9
- package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-page-header.mjs +15 -15
- package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pagination.mjs +53 -53
- package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
- package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popconfirm.mjs +27 -27
- package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popover.mjs +38 -38
- package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-portal.mjs +7 -7
- package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-progress.mjs +38 -38
- package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +36 -36
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +30 -30
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +16 -16
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-result.mjs +16 -16
- package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-ripple.mjs +13 -13
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-scrollable.mjs +219 -0
- package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -0
- package/fesm2022/ng-nest-ui-select.mjs +125 -110
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-skeleton.mjs +15 -15
- package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +54 -54
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider.mjs +39 -39
- package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-statistic.mjs +30 -30
- package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-steps.mjs +19 -19
- package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +26 -26
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table-view.mjs +593 -0
- package/fesm2022/ng-nest-ui-table-view.mjs.map +1 -0
- package/fesm2022/ng-nest-ui-table.mjs +222 -222
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tabs.mjs +58 -58
- package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +22 -22
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-text-retract.mjs +15 -15
- package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +45 -40
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-theme.mjs +23 -23
- package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
- package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +113 -92
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
- package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-timeline.mjs +15 -15
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +38 -38
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +40 -40
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +28 -28
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +147 -110
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +107 -107
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-typography.mjs +13 -13
- package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-upload.mjs +37 -37
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2022/ng-nest-ui.mjs +2 -0
- package/fesm2022/ng-nest-ui.mjs.map +1 -1
- package/find/index.d.ts +5 -5
- package/form/index.d.ts +1 -1
- package/index.d.ts +2 -0
- package/input/index.d.ts +47 -5
- package/input-number/index.d.ts +22 -7
- package/list/index.d.ts +2 -2
- package/message-box/index.d.ts +4 -5
- package/package.json +28 -20
- package/radio/index.d.ts +4 -4
- package/rate/index.d.ts +5 -5
- package/scrollable/index.d.ts +49 -0
- package/select/index.d.ts +53 -8
- package/slider-select/index.d.ts +3 -3
- package/steps/index.d.ts +1 -2
- package/switch/index.d.ts +3 -3
- package/table-view/index.d.ts +148 -0
- package/textarea/index.d.ts +20 -5
- package/theme/index.d.ts +1 -1
- package/time-picker/index.d.ts +53 -8
- package/transfer/index.d.ts +1 -1
- package/tree-select/index.d.ts +70 -9
- package/upload/index.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-tree-file.mjs","sources":["../../../../lib/ng-nest/ui/tree-file/tree-file.property.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.html","../../../../lib/ng-nest/ui/tree-file/tree-file.module.ts","../../../../lib/ng-nest/ui/tree-file/ng-nest-ui-tree-file.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToCssPixelValue, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, input, model } from '@angular/core';\r\nimport { XTreeNode } from '@ng-nest/ui/tree';\r\nimport { XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { XHighlightLines } from '@ng-nest/ui/highlight';\r\nimport type { XData, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * TreeFile\r\n * @selector x-tree-file\r\n * @decorator component\r\n */\r\nexport const XTreeFilePrefix = 'x-tree-file';\r\nconst X_TREE_FILE_CONFIG_NAME = 'treeFile';\r\n\r\n/**\r\n * TreeFile Property\r\n */\r\n@Component({ selector: `${XTreeFilePrefix}-property`, template: '' })\r\nexport class XTreeFileProperty extends XPropertyFunction(X_TREE_FILE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeFileNode>>([]);\r\n /**\r\n * @zh_CN 文件绝对路径地址前缀,为空表示取当前运行的地址\r\n * @en_US File absolute path address prefix, empty means to take the address of the current operation\r\n */\r\n readonly domain = input<string>('');\r\n /**\r\n * @zh_CN 切换状态\r\n * @en_US Switch state\r\n */\r\n readonly toggle = model<boolean>(true);\r\n /**\r\n * @zh_CN 显示切换按钮\r\n * @en_US Show toggle button\r\n */\r\n readonly showToggle = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示树,为 true 的时候隐藏切换按钮\r\n * @en_US Show the tree, hide the toggle button when true\r\n */\r\n readonly showTree = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示面包屑\r\n * @en_US Show breadcrumbs\r\n */\r\n readonly showCrumb = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 最大高度\r\n * @en_US Maximum height\r\n */\r\n readonly maxHeight = input<string, XNumber>(this.config?.maxHeight ?? '37.5rem', { transform: XToCssPixelValue });\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 ?? '1rem', { transform: XToCssPixelValue });\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>();\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = input<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\r\n/**\r\n * @zh_CN TreeFile 数据对象\r\n * @en_US TreeFile data object\r\n */\r\nexport interface XTreeFileNode extends XTreeNode {\r\n /**\r\n * @zh_CN 子节点\r\n * @en_US Child node\r\n */\r\n children?: XTreeFileNode[];\r\n /**\r\n * @zh_CN 文件内容\r\n * @en_US Document content\r\n */\r\n content?: string;\r\n /**\r\n * @zh_CN 文件类型\r\n * @en_US File type\r\n */\r\n type?: string;\r\n /**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\n fileType?: XTreeFileType;\r\n /**\r\n * @zh_CN 文件地址,配置了地址将从 url 中加载文件内容\r\n * @en_US File address, the configured address will load the file content from url\r\n */\r\n url?: string;\r\n /**\r\n * @zh_CN 文件的面包屑数据\r\n * @en_US Breadcrumb data\r\n */\r\n crumbData?: XCrumbNode[];\r\n /**\r\n * @zh_CN 文件内容已经加载过\r\n * @en_US File content has been loaded\r\n */\r\n contentLoaded?: boolean;\r\n /**\r\n * @zh_CN 行高亮着色\r\n * @en_US Line highlight coloring\r\n */\r\n highlightLines?: XHighlightLines;\r\n}\r\n\r\n/**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\nexport type XTreeFileType = 'code' | 'img';\r\n\r\n/**\r\n * @zh_CN 支持显示的图片格式\r\n * @en_US Supported picture format\r\n */\r\nexport const XTreeFileImgs = ['webp', 'png', 'jpg', 'gif', 'jpeg', 'ico'];\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, computed, signal } from '@angular/core';\r\nimport { XTreeFilePrefix, XTreeFileProperty, XTreeFileNode, XTreeFileImgs } from './tree-file.property';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { XIsEmpty, XComputedStyle, XToCssPx } from '@ng-nest/ui/core';\r\nimport { XCrumbComponent, XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { delay, finalize } from 'rxjs/operators';\r\nimport { XHighlightComponent, XHighlightLines } from '@ng-nest/ui/highlight';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { XTreeComponent } from '@ng-nest/ui/tree';\r\n\r\n@Component({\r\n selector: `${XTreeFilePrefix}`,\r\n imports: [XTreeComponent, XLinkComponent, XCrumbComponent, XIconComponent, XLoadingComponent, XHighlightComponent],\r\n templateUrl: './tree-file.component.html',\r\n styleUrls: ['./tree-file.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeFileComponent extends XTreeFileProperty {\r\n activatedNode = signal<XTreeFileNode | null>(null);\r\n loading = signal(false);\r\n time!: number;\r\n timeout: number = 200;\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n codeHeight = computed(() => {\r\n return XToCssPx(this.maxHeight(), this.fontSize()) - (this.showCrumb() ? 1.5 : 0) * this.fontSize();\r\n });\r\n\r\n crumbData = computed(() => {\r\n return this.activatedNode()?.crumbData as XCrumbNode[];\r\n });\r\n\r\n highlightLines = computed(() => {\r\n return this.activatedNode()?.highlightLines as XHighlightLines;\r\n });\r\n\r\n private http = inject(HttpClient, { optional: true })!;\r\n\r\n ngOnInit() {\r\n if (!this.http) {\r\n throw new Error(\r\n `${XTreeFilePrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`\r\n );\r\n }\r\n if (!this.showTree() && this.activatedId()) {\r\n this.catalogChange((this.data() as XTreeFileNode[]).find((x) => x.id == this.activatedId()) as XTreeFileNode);\r\n }\r\n }\r\n\r\n catalogChange(node: XTreeFileNode) {\r\n if (!node?.leaf && this.showTree()) return;\r\n if (node.url && !node.contentLoaded) {\r\n this.time = new Date().getTime();\r\n this.loading.set(true);\r\n this.setNode(node);\r\n this.activatedNode.set(node);\r\n node.url = node.url?.indexOf(this.domain()) === 0 ? node.url : `${this.domain()}/${node.url}`;\r\n\r\n switch (node.fileType) {\r\n case 'code':\r\n this.http\r\n .get(node.url, { responseType: 'text' })\r\n .pipe(\r\n delay(\r\n new Date().getTime() - this.time > this.timeout ? 0 : this.timeout - new Date().getTime() + this.time\r\n ),\r\n finalize(() => {\r\n this.loading.set(false);\r\n })\r\n )\r\n .subscribe((x) => {\r\n node.content = x;\r\n node.contentLoaded = true;\r\n this.loading.set(false);\r\n });\r\n break;\r\n case 'img':\r\n break;\r\n }\r\n } else {\r\n this.activatedNode.set(node);\r\n this.setNode(this.activatedNode()!);\r\n }\r\n }\r\n\r\n setNode(node: XTreeFileNode) {\r\n if (!node.type) {\r\n node.type = 'bash';\r\n }\r\n if (!node.fileType) {\r\n node.fileType = XTreeFileImgs.indexOf((node.type as string).toLowerCase()) !== -1 ? 'img' : 'code';\r\n }\r\n if (!node.crumbData) {\r\n node.crumbData = this.setCurmbData(node);\r\n }\r\n }\r\n\r\n imgOnload() {\r\n this.loading.set(false);\r\n }\r\n\r\n setCurmbData(node: XTreeFileNode) {\r\n let crumbData: XCrumbNode[] = [{ id: node.id, label: node.label }];\r\n const getParent = (child: XTreeFileNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = (this.data() as XTreeFileNode[]).find((x) => x.id === child.pid) as XTreeFileNode;\r\n if (!XIsEmpty(parent)) {\r\n crumbData = [{ id: parent.id, label: parent.label }, ...crumbData];\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n\r\n return crumbData;\r\n }\r\n\r\n menuToggle() {\r\n this.toggle.update((x) => !x);\r\n }\r\n}\r\n","<div #treeFile class=\"x-tree-file\" [class.x-tree-file-toggle]=\"toggle()\">\r\n @if (showTree()) {\r\n <div class=\"x-tree-file-catalog\" [style.max-height]=\"maxHeight()\">\r\n <x-tree\r\n [data]=\"data()\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll()\"\r\n [expandedLevel]=\"expandedLevel()\"\r\n [expanded]=\"expanded()\"\r\n [spacing]=\"spacing()\"\r\n [(activatedId)]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n }\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading()\">\r\n @if (showCrumb()) {\r\n <div class=\"x-tree-file-crumb\">\r\n @if (showToggle() && showTree()) {\r\n <x-link class=\"x-tree-file-menu\" icon=\"fto-menu\" (click)=\"menuToggle()\"></x-link>\r\n }\r\n <x-crumb [data]=\"crumbData()\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div class=\"x-tree-file-content\" [style.max-height.px]=\"codeHeight()\">\r\n @switch (activatedNode()?.fileType) {\r\n @case ('img') {\r\n <div class=\"x-tree-file-img\"><img [src]=\"activatedNode()?.url\" (load)=\"imgOnload()\" /></div>\r\n }\r\n @case ('code') {\r\n <x-highlight\r\n [type]=\"activatedNode()?.type\"\r\n [data]=\"activatedNode()?.content\"\r\n [highlightLines]=\"highlightLines()\"\r\n ></x-highlight>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeFileComponent } from './tree-file.component';\r\n\r\n@NgModule({\r\n exports: [XTreeFileComponent],\r\n imports: [XTreeFileComponent]\r\n})\r\nexport class XTreeFileModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-tree-file.mjs","sources":["../../../../lib/ng-nest/ui/tree-file/tree-file.property.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.html","../../../../lib/ng-nest/ui/tree-file/tree-file.module.ts","../../../../lib/ng-nest/ui/tree-file/ng-nest-ui-tree-file.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToCssPixelValue, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, input, model } from '@angular/core';\r\nimport { XTreeNode } from '@ng-nest/ui/tree';\r\nimport { XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { XHighlightLines } from '@ng-nest/ui/highlight';\r\nimport type { XData, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * TreeFile\r\n * @selector x-tree-file\r\n * @decorator component\r\n */\r\nexport const XTreeFilePrefix = 'x-tree-file';\r\nconst X_TREE_FILE_CONFIG_NAME = 'treeFile';\r\n\r\n/**\r\n * TreeFile Property\r\n */\r\n@Component({ selector: `${XTreeFilePrefix}-property`, template: '' })\r\nexport class XTreeFileProperty extends XPropertyFunction(X_TREE_FILE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeFileNode>>([]);\r\n /**\r\n * @zh_CN 文件绝对路径地址前缀,为空表示取当前运行的地址\r\n * @en_US File absolute path address prefix, empty means to take the address of the current operation\r\n */\r\n readonly domain = input<string>('');\r\n /**\r\n * @zh_CN 切换状态\r\n * @en_US Switch state\r\n */\r\n readonly toggle = model<boolean>(true);\r\n /**\r\n * @zh_CN 显示切换按钮\r\n * @en_US Show toggle button\r\n */\r\n readonly showToggle = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示树,为 true 的时候隐藏切换按钮\r\n * @en_US Show the tree, hide the toggle button when true\r\n */\r\n readonly showTree = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示面包屑\r\n * @en_US Show breadcrumbs\r\n */\r\n readonly showCrumb = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 最大高度\r\n * @en_US Maximum height\r\n */\r\n readonly maxHeight = input<string, XNumber>(this.config?.maxHeight ?? '37.5rem', { transform: XToCssPixelValue });\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 ?? '1rem', { transform: XToCssPixelValue });\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>();\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = input<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\r\n/**\r\n * @zh_CN TreeFile 数据对象\r\n * @en_US TreeFile data object\r\n */\r\nexport interface XTreeFileNode extends XTreeNode {\r\n /**\r\n * @zh_CN 子节点\r\n * @en_US Child node\r\n */\r\n children?: XTreeFileNode[];\r\n /**\r\n * @zh_CN 文件内容\r\n * @en_US Document content\r\n */\r\n content?: string;\r\n /**\r\n * @zh_CN 文件类型\r\n * @en_US File type\r\n */\r\n type?: string;\r\n /**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\n fileType?: XTreeFileType;\r\n /**\r\n * @zh_CN 文件地址,配置了地址将从 url 中加载文件内容\r\n * @en_US File address, the configured address will load the file content from url\r\n */\r\n url?: string;\r\n /**\r\n * @zh_CN 文件的面包屑数据\r\n * @en_US Breadcrumb data\r\n */\r\n crumbData?: XCrumbNode[];\r\n /**\r\n * @zh_CN 文件内容已经加载过\r\n * @en_US File content has been loaded\r\n */\r\n contentLoaded?: boolean;\r\n /**\r\n * @zh_CN 行高亮着色\r\n * @en_US Line highlight coloring\r\n */\r\n highlightLines?: XHighlightLines;\r\n}\r\n\r\n/**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\nexport type XTreeFileType = 'code' | 'img';\r\n\r\n/**\r\n * @zh_CN 支持显示的图片格式\r\n * @en_US Supported picture format\r\n */\r\nexport const XTreeFileImgs = ['webp', 'png', 'jpg', 'gif', 'jpeg', 'ico'];\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, computed, signal } from '@angular/core';\r\nimport { XTreeFilePrefix, XTreeFileProperty, XTreeFileNode, XTreeFileImgs } from './tree-file.property';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { XIsEmpty, XComputedStyle, XToCssPx } from '@ng-nest/ui/core';\r\nimport { XCrumbComponent, XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { delay, finalize } from 'rxjs/operators';\r\nimport { XHighlightComponent, XHighlightLines } from '@ng-nest/ui/highlight';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { XTreeComponent } from '@ng-nest/ui/tree';\r\n\r\n@Component({\r\n selector: `${XTreeFilePrefix}`,\r\n imports: [XTreeComponent, XLinkComponent, XCrumbComponent, XIconComponent, XLoadingComponent, XHighlightComponent],\r\n templateUrl: './tree-file.component.html',\r\n styleUrls: ['./tree-file.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeFileComponent extends XTreeFileProperty {\r\n activatedNode = signal<XTreeFileNode | null>(null);\r\n loading = signal(false);\r\n time!: number;\r\n timeout: number = 200;\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n codeHeight = computed(() => {\r\n return XToCssPx(this.maxHeight(), this.fontSize()) - (this.showCrumb() ? 1.5 : 0) * this.fontSize();\r\n });\r\n\r\n crumbData = computed(() => {\r\n return this.activatedNode()?.crumbData as XCrumbNode[];\r\n });\r\n\r\n highlightLines = computed(() => {\r\n return this.activatedNode()?.highlightLines as XHighlightLines;\r\n });\r\n\r\n private http = inject(HttpClient, { optional: true })!;\r\n\r\n ngOnInit() {\r\n if (!this.http) {\r\n throw new Error(\r\n `${XTreeFilePrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`\r\n );\r\n }\r\n if (!this.showTree() && this.activatedId()) {\r\n this.catalogChange((this.data() as XTreeFileNode[]).find((x) => x.id == this.activatedId()) as XTreeFileNode);\r\n }\r\n }\r\n\r\n catalogChange(node: XTreeFileNode) {\r\n if (!node?.leaf && this.showTree()) return;\r\n if (node.url && !node.contentLoaded) {\r\n this.time = new Date().getTime();\r\n this.loading.set(true);\r\n this.setNode(node);\r\n this.activatedNode.set(node);\r\n node.url = node.url?.indexOf(this.domain()) === 0 ? node.url : `${this.domain()}/${node.url}`;\r\n\r\n switch (node.fileType) {\r\n case 'code':\r\n this.http\r\n .get(node.url, { responseType: 'text' })\r\n .pipe(\r\n delay(\r\n new Date().getTime() - this.time > this.timeout ? 0 : this.timeout - new Date().getTime() + this.time\r\n ),\r\n finalize(() => {\r\n this.loading.set(false);\r\n })\r\n )\r\n .subscribe((x) => {\r\n node.content = x;\r\n node.contentLoaded = true;\r\n this.loading.set(false);\r\n });\r\n break;\r\n case 'img':\r\n break;\r\n }\r\n } else {\r\n this.activatedNode.set(node);\r\n this.setNode(this.activatedNode()!);\r\n }\r\n }\r\n\r\n setNode(node: XTreeFileNode) {\r\n if (!node.type) {\r\n node.type = 'bash';\r\n }\r\n if (!node.fileType) {\r\n node.fileType = XTreeFileImgs.indexOf((node.type as string).toLowerCase()) !== -1 ? 'img' : 'code';\r\n }\r\n if (!node.crumbData) {\r\n node.crumbData = this.setCurmbData(node);\r\n }\r\n }\r\n\r\n imgOnload() {\r\n this.loading.set(false);\r\n }\r\n\r\n setCurmbData(node: XTreeFileNode) {\r\n let crumbData: XCrumbNode[] = [{ id: node.id, label: node.label }];\r\n const getParent = (child: XTreeFileNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = (this.data() as XTreeFileNode[]).find((x) => x.id === child.pid) as XTreeFileNode;\r\n if (!XIsEmpty(parent)) {\r\n crumbData = [{ id: parent.id, label: parent.label }, ...crumbData];\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n\r\n return crumbData;\r\n }\r\n\r\n menuToggle() {\r\n this.toggle.update((x) => !x);\r\n }\r\n}\r\n","<div #treeFile class=\"x-tree-file\" [class.x-tree-file-toggle]=\"toggle()\">\r\n @if (showTree()) {\r\n <div class=\"x-tree-file-catalog\" [style.max-height]=\"maxHeight()\">\r\n <x-tree\r\n [data]=\"data()\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll()\"\r\n [expandedLevel]=\"expandedLevel()\"\r\n [expanded]=\"expanded()\"\r\n [spacing]=\"spacing()\"\r\n [(activatedId)]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n }\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading()\">\r\n @if (showCrumb()) {\r\n <div class=\"x-tree-file-crumb\">\r\n @if (showToggle() && showTree()) {\r\n <x-link class=\"x-tree-file-menu\" icon=\"fto-menu\" (click)=\"menuToggle()\"></x-link>\r\n }\r\n <x-crumb [data]=\"crumbData()\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div class=\"x-tree-file-content\" [style.max-height.px]=\"codeHeight()\">\r\n @switch (activatedNode()?.fileType) {\r\n @case ('img') {\r\n <div class=\"x-tree-file-img\"><img [src]=\"activatedNode()?.url\" (load)=\"imgOnload()\" /></div>\r\n }\r\n @case ('code') {\r\n <x-highlight\r\n [type]=\"activatedNode()?.type\"\r\n [data]=\"activatedNode()?.content\"\r\n [highlightLines]=\"highlightLines()\"\r\n ></x-highlight>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeFileComponent } from './tree-file.component';\r\n\r\n@NgModule({\r\n exports: [XTreeFileComponent],\r\n imports: [XTreeFileComponent]\r\n})\r\nexport class XTreeFileModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|