@ng-nest/ui 13.1.5 → 13.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/auto-complete/auto-complete.component.d.ts +1 -0
  2. package/auto-complete/auto-complete.property.d.ts +6 -1
  3. package/core/config/config.d.ts +6 -0
  4. package/dropdown/dropdown-portal.component.d.ts +2 -0
  5. package/dropdown/dropdown.component.d.ts +1 -0
  6. package/dropdown/dropdown.module.d.ts +2 -1
  7. package/dropdown/dropdown.property.d.ts +11 -1
  8. package/esm2020/auto-complete/auto-complete.component.mjs +25 -10
  9. package/esm2020/auto-complete/auto-complete.property.mjs +8 -2
  10. package/esm2020/core/config/config.mjs +1 -1
  11. package/esm2020/core/interfaces/identify.type.mjs +1 -1
  12. package/esm2020/description/description.component.mjs +3 -3
  13. package/esm2020/dialog/dialog-portal.component.mjs +6 -1
  14. package/esm2020/dropdown/dropdown-portal.component.mjs +10 -4
  15. package/esm2020/dropdown/dropdown.component.mjs +8 -1
  16. package/esm2020/dropdown/dropdown.module.mjs +5 -4
  17. package/esm2020/dropdown/dropdown.property.mjs +11 -2
  18. package/esm2020/list/list.component.mjs +4 -4
  19. package/esm2020/menu/menu.component.mjs +3 -3
  20. package/esm2020/table/table-body.component.mjs +14 -7
  21. package/esm2020/table/table.component.mjs +65 -17
  22. package/esm2020/table/table.module.mjs +5 -1
  23. package/esm2020/table/table.property.mjs +44 -3
  24. package/esm2020/tree/tree-node.component.mjs +74 -19
  25. package/esm2020/tree/tree.component.mjs +34 -7
  26. package/esm2020/tree/tree.module.mjs +5 -4
  27. package/esm2020/tree/tree.property.mjs +34 -3
  28. package/esm2020/upload/upload.component.mjs +18 -11
  29. package/esm2020/upload/upload.property.mjs +17 -3
  30. package/fesm2015/ng-nest-ui-auto-complete.mjs +31 -10
  31. package/fesm2015/ng-nest-ui-auto-complete.mjs.map +1 -1
  32. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  33. package/fesm2015/ng-nest-ui-description.mjs +2 -2
  34. package/fesm2015/ng-nest-ui-description.mjs.map +1 -1
  35. package/fesm2015/ng-nest-ui-dialog.mjs +5 -0
  36. package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
  37. package/fesm2015/ng-nest-ui-dropdown.mjs +32 -9
  38. package/fesm2015/ng-nest-ui-dropdown.mjs.map +1 -1
  39. package/fesm2015/ng-nest-ui-list.mjs +3 -3
  40. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  41. package/fesm2015/ng-nest-ui-menu.mjs +2 -2
  42. package/fesm2015/ng-nest-ui-menu.mjs.map +1 -1
  43. package/fesm2015/ng-nest-ui-table.mjs +124 -22
  44. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  45. package/fesm2015/ng-nest-ui-tree.mjs +143 -27
  46. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  47. package/fesm2015/ng-nest-ui-upload.mjs +32 -11
  48. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  49. package/fesm2020/ng-nest-ui-auto-complete.mjs +31 -10
  50. package/fesm2020/ng-nest-ui-auto-complete.mjs.map +1 -1
  51. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  52. package/fesm2020/ng-nest-ui-description.mjs +2 -2
  53. package/fesm2020/ng-nest-ui-description.mjs.map +1 -1
  54. package/fesm2020/ng-nest-ui-dialog.mjs +5 -0
  55. package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
  56. package/fesm2020/ng-nest-ui-dropdown.mjs +32 -9
  57. package/fesm2020/ng-nest-ui-dropdown.mjs.map +1 -1
  58. package/fesm2020/ng-nest-ui-list.mjs +3 -3
  59. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  60. package/fesm2020/ng-nest-ui-menu.mjs +2 -2
  61. package/fesm2020/ng-nest-ui-menu.mjs.map +1 -1
  62. package/fesm2020/ng-nest-ui-table.mjs +122 -22
  63. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  64. package/fesm2020/ng-nest-ui-tree.mjs +141 -27
  65. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  66. package/fesm2020/ng-nest-ui-upload.mjs +32 -11
  67. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  68. package/package.json +1 -1
  69. package/table/examples/en_US/default/expand/README.md +8 -0
  70. package/table/examples/zh_CN/default/expand/README.md +8 -0
  71. package/table/table-body.component.d.ts +1 -0
  72. package/table/table.component.d.ts +10 -2
  73. package/table/table.module.d.ts +5 -4
  74. package/table/table.property.d.ts +60 -5
  75. package/tree/examples/en_US/default/virtual-scroll/README.md +7 -0
  76. package/tree/examples/zh_CN/default/virtual-scroll/README.md +7 -0
  77. package/tree/tree-node.component.d.ts +2 -0
  78. package/tree/tree.component.d.ts +2 -0
  79. package/tree/tree.module.d.ts +2 -1
  80. package/tree/tree.property.d.ts +27 -2
  81. package/upload/examples/en_US/default/custom/README.md +6 -0
  82. package/upload/examples/zh_CN/default/custom/README.md +6 -0
  83. package/upload/upload.component.d.ts +3 -1
  84. package/upload/upload.property.d.ts +21 -1
@@ -340,10 +340,10 @@ class XMenuComponent extends XMenuProperty {
340
340
  }
341
341
  }
342
342
  /** @nocollapse */ /** @nocollapse */ XMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XMenuComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
343
- /** @nocollapse */ /** @nocollapse */ XMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XMenuComponent, selector: "x-menu", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #menu class=\"x-menu\" [ngClass]=\"classMap\" [style.width]=\"layout === 'column' ? width : ''\">\r\n <div class=\"x-menu-nodes\" *ngIf=\"layout === 'column'\">\r\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-slider\r\n *ngIf=\"layout === 'row'\"\r\n [data]=\"nodes\"\r\n [size]=\"size\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n</div>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <x-dropdown\r\n *ngIf=\"node.level === 0 && collapsed\"\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n placement=\"right-start\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <x-menu-node [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n </x-dropdown>\r\n <x-menu-node *ngIf=\"!collapsed\" [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap\">\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n <div class=\"x-menu-nodes\" *ngIf=\"node.childrenLoaded || (node.leaf && node.open)\" [hidden]=\"!node.open\">\r\n <ng-container *ngFor=\"let child of node.children; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: ["x-menu{display:block}.x-menu{margin:0;padding:0}.x-menu-icon.x-icon{font-size:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon{transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon.is-open{transform:rotate(180deg)}.x-menu-node.x-size-big{padding:0 calc(var(--x-padding-big) + .25rem);height:calc(var(--x-height-big) + .75rem);line-height:calc(var(--x-height-big) + .75rem)}.x-menu-node.x-size-big.x-menu-category{height:calc(calc(var(--x-height-big) + .75rem) * 1.5)}.x-menu-node.x-size-large{padding:0 calc(var(--x-padding-large) + .25rem);height:calc(var(--x-height-large) + .75rem);line-height:calc(var(--x-height-large) + .75rem)}.x-menu-node.x-size-large.x-menu-category{height:calc(calc(var(--x-height-large) + .75rem) * 1.5)}.x-menu-node.x-size-medium{padding:0 calc(var(--x-padding-medium) + .25rem);height:calc(var(--x-height-medium) + .75rem);line-height:calc(var(--x-height-medium) + .75rem)}.x-menu-node.x-size-medium.x-menu-category{height:calc(calc(var(--x-height-medium) + .75rem) * 1.5)}.x-menu-node.x-size-small{padding:0 var(--x-padding-small);height:calc(var(--x-height-small) + .5rem);line-height:calc(var(--x-height-small) + .5rem)}.x-menu-node.x-size-small.x-menu-category{height:calc(calc(var(--x-height-small) + .5rem) * 1.5)}.x-menu-node.x-size-mini{padding:0 var(--x-padding-mini);height:calc(var(--x-height-mini) + .5rem);line-height:calc(var(--x-height-mini) + .5rem)}.x-menu-node.x-size-mini.x-menu-category{height:calc(calc(var(--x-height-mini) + .5rem) * 1.5)}.x-menu x-slider .x-slider-scroll>ul>li.x-slider-highlight{background-color:inherit;border-radius:0;border:none;border-bottom:.125rem solid var(--x-primary)}.x-menu x-slider .x-slider-scroll>ul>li>x-link{padding:0!important;height:inherit!important;line-height:inherit!important}.x-menu-column{width:16rem;transition:var(--x-animation-duration-base)}.x-menu-row .x-menu-text{margin-left:.25rem}.x-menu-nodes .x-menu-node{cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:width var(--x-animation-duration-base),background-color var(--x-animation-duration-base);border-right:.125rem solid var(--x-border);position:relative;-webkit-user-select:none;user-select:none;padding-right:.875rem}.x-menu-nodes .x-menu-node .x-menu-text{flex:1;margin:0 .25rem;transition:background-color var(--x-animation-duration-base),opacity var(--x-animation-duration-base);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x-menu-nodes .x-menu-node:hover{color:var(--x-primary);background-color:var(--x-background-a100)}.x-menu-nodes .x-menu-node x-menu-node{flex:1;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.x-menu-nodes .x-menu-node x-menu-node>a{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none}.x-menu-nodes .x-menu-node.x-activated{color:var(--x-primary);background-color:var(--x-background-a100)}.x-menu-nodes .x-menu-node.x-activated:after{content:\"\";position:absolute;height:100%;right:-.125rem;top:0;border-right:.125rem solid var(--x-primary)}.x-menu-nodes .x-menu-node.x-menu-category{cursor:inherit;color:var(--x-text-400)}.x-menu-nodes .x-menu-node.x-menu-category:hover{background-color:transparent}.x-menu-nodes .x-menu-node.x-menu-category>x-menu-node{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border-300)}.x-menu-collapsed.x-menu-column{width:3rem}.x-menu-collapsed .x-menu-nodes x-dropdown,.x-menu-collapsed .x-menu-nodes .x-dropdown{display:flex;flex:1}.x-menu-collapsed .x-menu-nodes .x-menu-node{padding-left:0!important;padding-right:0}.x-menu-collapsed .x-menu-nodes .x-menu-node x-menu-node{padding-left:.875rem}.x-menu-collapsed .x-menu-nodes .x-menu-node .x-menu-text{opacity:0;width:0}.x-menu-collapsed .x-menu-nodes .x-menu-nodes{display:none}.x-menu-collapsed .x-menu-arrow.x-icon{opacity:0;width:0}\n"], components: [{ type: i2$1.XSliderComponent, selector: "x-slider" }, { type: i3.XDropdownComponent, selector: "x-dropdown" }, { type: XMenuNodeComponent, selector: "x-menu-node", inputs: ["menu"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
343
+ /** @nocollapse */ /** @nocollapse */ XMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XMenuComponent, selector: "x-menu", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #menu class=\"x-menu\" [ngClass]=\"classMap\" [style.width]=\"layout === 'column' ? width : ''\">\r\n <div class=\"x-menu-nodes\" *ngIf=\"layout === 'column'\">\r\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-slider\r\n *ngIf=\"layout === 'row'\"\r\n [data]=\"nodes\"\r\n [size]=\"size\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n</div>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <x-dropdown\r\n *ngIf=\"node.level === 0 && collapsed\"\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n placement=\"right-start\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <x-menu-node [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n </x-dropdown>\r\n <x-menu-node *ngIf=\"!collapsed\" [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap\">\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n <div class=\"x-menu-nodes\" *ngIf=\"node.childrenLoaded || (node.leaf && node.open)\" [hidden]=\"!node.open\">\r\n <ng-container *ngFor=\"let child of node.children; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: ["x-menu{display:block}.x-menu{margin:0;padding:0}.x-menu-icon.x-icon{font-size:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon{transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon.is-open{transform:rotate(180deg)}.x-menu-node.x-size-big{padding:0 calc(var(--x-padding-big) + .25rem);height:calc(var(--x-height-big) + .75rem);line-height:calc(var(--x-height-big) + .75rem)}.x-menu-node.x-size-big.x-menu-category{height:calc(calc(var(--x-height-big) + .75rem) * 1.5)}.x-menu-node.x-size-large{padding:0 calc(var(--x-padding-large) + .25rem);height:calc(var(--x-height-large) + .75rem);line-height:calc(var(--x-height-large) + .75rem)}.x-menu-node.x-size-large.x-menu-category{height:calc(calc(var(--x-height-large) + .75rem) * 1.5)}.x-menu-node.x-size-medium{padding:0 calc(var(--x-padding-medium) + .25rem);height:calc(var(--x-height-medium) + .75rem);line-height:calc(var(--x-height-medium) + .75rem)}.x-menu-node.x-size-medium.x-menu-category{height:calc(calc(var(--x-height-medium) + .75rem) * 1.5)}.x-menu-node.x-size-small{padding:0 var(--x-padding-small);height:calc(var(--x-height-small) + .5rem);line-height:calc(var(--x-height-small) + .5rem)}.x-menu-node.x-size-small.x-menu-category{height:calc(calc(var(--x-height-small) + .5rem) * 1.5)}.x-menu-node.x-size-mini{padding:0 var(--x-padding-mini);height:calc(var(--x-height-mini) + .5rem);line-height:calc(var(--x-height-mini) + .5rem)}.x-menu-node.x-size-mini.x-menu-category{height:calc(calc(var(--x-height-mini) + .5rem) * 1.5)}.x-menu x-slider .x-slider-scroll>ul>li.x-slider-highlight{background-color:inherit;border-radius:0;border:none;border-bottom:.125rem solid var(--x-primary)}.x-menu x-slider .x-slider-scroll>ul>li>x-link{padding:0!important;height:inherit!important;line-height:inherit!important}.x-menu-column{width:16rem;transition:var(--x-animation-duration-base)}.x-menu-row .x-menu-text{margin-left:.25rem}.x-menu-nodes .x-menu-node{cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:width var(--x-animation-duration-base),background-color var(--x-animation-duration-base);border-right:.125rem solid var(--x-border);position:relative;-webkit-user-select:none;user-select:none;padding-right:.875rem}.x-menu-nodes .x-menu-node .x-menu-text{flex:1;margin:0 .25rem;transition:background-color var(--x-animation-duration-base),opacity var(--x-animation-duration-base);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x-menu-nodes .x-menu-node:hover{color:var(--x-primary);background-color:var(--x-background-a100)}.x-menu-nodes .x-menu-node x-menu-node{flex:1;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.x-menu-nodes .x-menu-node x-menu-node>a{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none}.x-menu-nodes .x-menu-node.x-activated{color:var(--x-primary);background-color:var(--x-background-a100)}.x-menu-nodes .x-menu-node.x-activated:after{content:\"\";position:absolute;height:100%;right:-.125rem;top:0;border-right:.125rem solid var(--x-primary)}.x-menu-nodes .x-menu-node.x-menu-category{cursor:inherit;color:var(--x-text-400)}.x-menu-nodes .x-menu-node.x-menu-category:hover{background-color:transparent}.x-menu-nodes .x-menu-node.x-menu-category>x-menu-node{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border-300)}.x-menu-collapsed.x-menu-column{width:3rem}.x-menu-collapsed .x-menu-nodes x-dropdown,.x-menu-collapsed .x-menu-nodes .x-dropdown{display:flex;flex:1}.x-menu-collapsed .x-menu-nodes .x-menu-node{padding-left:0!important;padding-right:0}.x-menu-collapsed .x-menu-nodes .x-menu-node x-menu-node{padding-left:.875rem}.x-menu-collapsed .x-menu-nodes .x-menu-node .x-menu-text{opacity:0;width:0}.x-menu-collapsed .x-menu-nodes .x-menu-nodes{display:none}.x-menu-collapsed .x-menu-arrow.x-icon{opacity:0;width:0}\n"], components: [{ type: i2$1.XSliderComponent, selector: "x-slider" }, { type: i3.XDropdownComponent, selector: "x-dropdown" }, { type: XMenuNodeComponent, selector: "x-menu-node", inputs: ["menu"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
344
344
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XMenuComponent, decorators: [{
345
345
  type: Component,
346
- args: [{ selector: `${XMenuPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #menu class=\"x-menu\" [ngClass]=\"classMap\" [style.width]=\"layout === 'column' ? width : ''\">\r\n <div class=\"x-menu-nodes\" *ngIf=\"layout === 'column'\">\r\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-slider\r\n *ngIf=\"layout === 'row'\"\r\n [data]=\"nodes\"\r\n [size]=\"size\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n</div>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <x-dropdown\r\n *ngIf=\"node.level === 0 && collapsed\"\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n placement=\"right-start\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <x-menu-node [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n </x-dropdown>\r\n <x-menu-node *ngIf=\"!collapsed\" [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap\">\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n <div class=\"x-menu-nodes\" *ngIf=\"node.childrenLoaded || (node.leaf && node.open)\" [hidden]=\"!node.open\">\r\n <ng-container *ngFor=\"let child of node.children; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: ["x-menu{display:block}.x-menu{margin:0;padding:0}.x-menu-icon.x-icon{font-size:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon{transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon.is-open{transform:rotate(180deg)}.x-menu-node.x-size-big{padding:0 calc(var(--x-padding-big) + .25rem);height:calc(var(--x-height-big) + .75rem);line-height:calc(var(--x-height-big) + .75rem)}.x-menu-node.x-size-big.x-menu-category{height:calc(calc(var(--x-height-big) + .75rem) * 1.5)}.x-menu-node.x-size-large{padding:0 calc(var(--x-padding-large) + .25rem);height:calc(var(--x-height-large) + .75rem);line-height:calc(var(--x-height-large) + .75rem)}.x-menu-node.x-size-large.x-menu-category{height:calc(calc(var(--x-height-large) + .75rem) * 1.5)}.x-menu-node.x-size-medium{padding:0 calc(var(--x-padding-medium) + .25rem);height:calc(var(--x-height-medium) + .75rem);line-height:calc(var(--x-height-medium) + .75rem)}.x-menu-node.x-size-medium.x-menu-category{height:calc(calc(var(--x-height-medium) + .75rem) * 1.5)}.x-menu-node.x-size-small{padding:0 var(--x-padding-small);height:calc(var(--x-height-small) + .5rem);line-height:calc(var(--x-height-small) + .5rem)}.x-menu-node.x-size-small.x-menu-category{height:calc(calc(var(--x-height-small) + .5rem) * 1.5)}.x-menu-node.x-size-mini{padding:0 var(--x-padding-mini);height:calc(var(--x-height-mini) + .5rem);line-height:calc(var(--x-height-mini) + .5rem)}.x-menu-node.x-size-mini.x-menu-category{height:calc(calc(var(--x-height-mini) + .5rem) * 1.5)}.x-menu x-slider .x-slider-scroll>ul>li.x-slider-highlight{background-color:inherit;border-radius:0;border:none;border-bottom:.125rem solid var(--x-primary)}.x-menu x-slider .x-slider-scroll>ul>li>x-link{padding:0!important;height:inherit!important;line-height:inherit!important}.x-menu-column{width:16rem;transition:var(--x-animation-duration-base)}.x-menu-row .x-menu-text{margin-left:.25rem}.x-menu-nodes .x-menu-node{cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:width var(--x-animation-duration-base),background-color var(--x-animation-duration-base);border-right:.125rem solid var(--x-border);position:relative;-webkit-user-select:none;user-select:none;padding-right:.875rem}.x-menu-nodes .x-menu-node .x-menu-text{flex:1;margin:0 .25rem;transition:background-color var(--x-animation-duration-base),opacity var(--x-animation-duration-base);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x-menu-nodes .x-menu-node:hover{color:var(--x-primary);background-color:var(--x-background-a100)}.x-menu-nodes .x-menu-node x-menu-node{flex:1;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.x-menu-nodes .x-menu-node x-menu-node>a{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none}.x-menu-nodes .x-menu-node.x-activated{color:var(--x-primary);background-color:var(--x-background-a100)}.x-menu-nodes .x-menu-node.x-activated:after{content:\"\";position:absolute;height:100%;right:-.125rem;top:0;border-right:.125rem solid var(--x-primary)}.x-menu-nodes .x-menu-node.x-menu-category{cursor:inherit;color:var(--x-text-400)}.x-menu-nodes .x-menu-node.x-menu-category:hover{background-color:transparent}.x-menu-nodes .x-menu-node.x-menu-category>x-menu-node{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border-300)}.x-menu-collapsed.x-menu-column{width:3rem}.x-menu-collapsed .x-menu-nodes x-dropdown,.x-menu-collapsed .x-menu-nodes .x-dropdown{display:flex;flex:1}.x-menu-collapsed .x-menu-nodes .x-menu-node{padding-left:0!important;padding-right:0}.x-menu-collapsed .x-menu-nodes .x-menu-node x-menu-node{padding-left:.875rem}.x-menu-collapsed .x-menu-nodes .x-menu-node .x-menu-text{opacity:0;width:0}.x-menu-collapsed .x-menu-nodes .x-menu-nodes{display:none}.x-menu-collapsed .x-menu-arrow.x-icon{opacity:0;width:0}\n"] }]
346
+ args: [{ selector: `${XMenuPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #menu class=\"x-menu\" [ngClass]=\"classMap\" [style.width]=\"layout === 'column' ? width : ''\">\r\n <div class=\"x-menu-nodes\" *ngIf=\"layout === 'column'\">\r\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-slider\r\n *ngIf=\"layout === 'row'\"\r\n [data]=\"nodes\"\r\n [size]=\"size\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n</div>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <x-dropdown\r\n *ngIf=\"node.level === 0 && collapsed\"\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n placement=\"right-start\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <x-menu-node [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n </x-dropdown>\r\n <x-menu-node *ngIf=\"!collapsed\" [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap\">\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n <div class=\"x-menu-nodes\" *ngIf=\"node.childrenLoaded || (node.leaf && node.open)\" [hidden]=\"!node.open\">\r\n <ng-container *ngFor=\"let child of node.children; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: ["x-menu{display:block}.x-menu{margin:0;padding:0}.x-menu-icon.x-icon{font-size:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon{transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon.is-open{transform:rotate(180deg)}.x-menu-node.x-size-big{padding:0 calc(var(--x-padding-big) + .25rem);height:calc(var(--x-height-big) + .75rem);line-height:calc(var(--x-height-big) + .75rem)}.x-menu-node.x-size-big.x-menu-category{height:calc(calc(var(--x-height-big) + .75rem) * 1.5)}.x-menu-node.x-size-large{padding:0 calc(var(--x-padding-large) + .25rem);height:calc(var(--x-height-large) + .75rem);line-height:calc(var(--x-height-large) + .75rem)}.x-menu-node.x-size-large.x-menu-category{height:calc(calc(var(--x-height-large) + .75rem) * 1.5)}.x-menu-node.x-size-medium{padding:0 calc(var(--x-padding-medium) + .25rem);height:calc(var(--x-height-medium) + .75rem);line-height:calc(var(--x-height-medium) + .75rem)}.x-menu-node.x-size-medium.x-menu-category{height:calc(calc(var(--x-height-medium) + .75rem) * 1.5)}.x-menu-node.x-size-small{padding:0 var(--x-padding-small);height:calc(var(--x-height-small) + .5rem);line-height:calc(var(--x-height-small) + .5rem)}.x-menu-node.x-size-small.x-menu-category{height:calc(calc(var(--x-height-small) + .5rem) * 1.5)}.x-menu-node.x-size-mini{padding:0 var(--x-padding-mini);height:calc(var(--x-height-mini) + .5rem);line-height:calc(var(--x-height-mini) + .5rem)}.x-menu-node.x-size-mini.x-menu-category{height:calc(calc(var(--x-height-mini) + .5rem) * 1.5)}.x-menu x-slider .x-slider-scroll>ul>li.x-slider-highlight{background-color:inherit;border-radius:0;border:none;border-bottom:.125rem solid var(--x-primary)}.x-menu x-slider .x-slider-scroll>ul>li>x-link{padding:0!important;height:inherit!important;line-height:inherit!important}.x-menu-column{width:16rem;transition:var(--x-animation-duration-base)}.x-menu-row .x-menu-text{margin-left:.25rem}.x-menu-nodes .x-menu-node{cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:width var(--x-animation-duration-base),background-color var(--x-animation-duration-base);border-right:.125rem solid var(--x-border);position:relative;-webkit-user-select:none;user-select:none;padding-right:.875rem}.x-menu-nodes .x-menu-node .x-menu-text{flex:1;margin:0 .25rem;transition:background-color var(--x-animation-duration-base),opacity var(--x-animation-duration-base);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x-menu-nodes .x-menu-node:hover{color:var(--x-primary);background-color:var(--x-background-a100)}.x-menu-nodes .x-menu-node x-menu-node{flex:1;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.x-menu-nodes .x-menu-node x-menu-node>a{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none}.x-menu-nodes .x-menu-node.x-activated{color:var(--x-primary);background-color:var(--x-background-a100)}.x-menu-nodes .x-menu-node.x-activated:after{content:\"\";position:absolute;height:100%;right:-.125rem;top:0;border-right:.125rem solid var(--x-primary)}.x-menu-nodes .x-menu-node.x-menu-category{cursor:inherit;color:var(--x-text-400)}.x-menu-nodes .x-menu-node.x-menu-category:hover{background-color:transparent}.x-menu-nodes .x-menu-node.x-menu-category>x-menu-node{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border-300)}.x-menu-collapsed.x-menu-column{width:3rem}.x-menu-collapsed .x-menu-nodes x-dropdown,.x-menu-collapsed .x-menu-nodes .x-dropdown{display:flex;flex:1}.x-menu-collapsed .x-menu-nodes .x-menu-node{padding-left:0!important;padding-right:0}.x-menu-collapsed .x-menu-nodes .x-menu-node x-menu-node{padding-left:.875rem}.x-menu-collapsed .x-menu-nodes .x-menu-node .x-menu-text{opacity:0;width:0}.x-menu-collapsed .x-menu-nodes .x-menu-nodes{display:none}.x-menu-collapsed .x-menu-arrow.x-icon{opacity:0;width:0}\n"] }]
347
347
  }], ctorParameters: function () {
348
348
  return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
349
349
  type: Inject,
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-menu.mjs","sources":["../../../../lib/ng-nest/ui/menu/menu.property.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.html","../../../../lib/ng-nest/ui/menu/menu.component.ts","../../../../lib/ng-nest/ui/menu/menu.component.html","../../../../lib/ng-nest/ui/menu/menu.module.ts","../../../../lib/ng-nest/ui/menu/ng-nest-ui-menu.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XData,\r\n XSize,\r\n XProperty,\r\n XDataConvert,\r\n XInputNumber,\r\n XNumber,\r\n XInputBoolean,\r\n XBoolean,\r\n XWithConfig,\r\n XTrigger\r\n} from '@ng-nest/ui/core';\r\nimport { TemplateRef, Input, Output, EventEmitter, Component } from '@angular/core';\r\n\r\n/**\r\n * Menu\r\n * @selector x-menu\r\n * @decorator component\r\n */\r\nexport const XMenuPrefix = 'x-menu';\r\nconst X_CONFIG_NAME = 'menu';\r\n\r\n/**\r\n * Menu Property\r\n */\r\n@Component({ template: '' })\r\nexport class XMenuProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XMenuNode> = [];\r\n /**\r\n * @zh_CN 布局方向\r\n * @en_US Layout direction\r\n */\r\n @Input() layout: XMenuLayout = 'row';\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') size!: XSize;\r\n /**\r\n * @zh_CN 宽度,只有布局 layout 为 'column' 生效\r\n * @en_US Width, only layout layout is the 'column'\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '12rem') width!: string;\r\n /**\r\n * @zh_CN 缩起菜单\r\n * @en_US Shrink menu\r\n */\r\n @Input() @XInputBoolean() collapsed: XBoolean = false;\r\n /**\r\n * @zh_CN 触发方式,只针对横向布局\r\n * @en_US Trigger mode, only for horizontal layout\r\n */\r\n @Input() @XWithConfig<XMenuTrigger>(X_CONFIG_NAME, 'hover') trigger!: XMenuTrigger;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n @Input() nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 展开的所有层级,只对 layout 布局为 'column' 的生效\r\n * @en_US All expanded levels are only effective for the layout of'column'\r\n */\r\n @Input() @XInputBoolean() expandedAll?: XBoolean;\r\n /**\r\n * @zh_CN 默认展开的层级,只对 layout 布局为 'column' 的生效\r\n * @en_US The level expanded by default is only valid for the layout of'column'\r\n */\r\n @Input() @XInputNumber() expandedLevel: XNumber = -1;\r\n /**\r\n * @zh_CN 当前激活的节点 id\r\n * @en_US Currently active node id\r\n */\r\n @Input() activatedId: any;\r\n /**\r\n * @zh_CN 滚动容器\r\n * @en_US Rolling container\r\n */\r\n @Input() target?: string | HTMLElement;\r\n /**\r\n * @zh_CN 弹框的最小宽度\r\n * @en_US Portal min-width\r\n */\r\n @Input() portalMinWidth?: string | number;\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeClick = new EventEmitter<XMenuNode>();\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n @Output() activatedIdChange = new EventEmitter<any>();\r\n}\r\n\r\n/**\r\n * @zh_CN MenuNode 节点数据\r\n * @en_US MenuNode node data\r\n */\r\nexport interface XMenuNode extends XParentIdentityProperty<XMenuNode> {\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 展开\r\n * @en_US Unfold\r\n */\r\n open?: boolean;\r\n /**\r\n * @zh_CN 子节点已加载过\r\n * @en_US Child node has been loaded\r\n */\r\n childrenLoaded?: boolean;\r\n /**\r\n * @zh_CN 分类显示,设置值后节点显示成分类样式\r\n * @en_US Category display, after setting the value, the node is displayed in a category style\r\n */\r\n category?: string;\r\n /**\r\n * @zh_CN 分类节点,通过内部计算\r\n * @en_US Classification node, through internal calculation\r\n */\r\n categoryNode?: 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 路由\r\n * @en_US Router\r\n */\r\n routerLink?: string | any[];\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XMenuLayout = 'row' | 'column';\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XMenuTrigger = XTrigger;\r\n\r\n/**\r\n * Menu Node\r\n * @selector x-menu-node\r\n * @decorator component\r\n */\r\nexport const XMenuNodePrefix = 'x-menu-node';\r\n\r\n/**\r\n * Menu Node Property\r\n */\r\n@Component({ template: '' })\r\nexport class XMenuNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() node!: XMenuNode;\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, Input } from '@angular/core';\r\nimport { XMenuNodeProperty, XMenuNodePrefix } from './menu.property';\r\nimport { XConfigService } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XMenuNodePrefix}`,\r\n templateUrl: './menu-node.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuNodeComponent extends XMenuNodeProperty {\r\n @Input() menu: any;\r\n constructor(\r\n // @Host() @Optional() public menu: XMenuComponent,\r\n public cdr: ChangeDetectorRef,\r\n public elementRef: ElementRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n ngOnInit() {\r\n if (this.menu?.activatedId == this.node.id) {\r\n this.menu.activatedElementRef = this.elementRef;\r\n }\r\n this.node.change = () => {\r\n this.cdr.detectChanges();\r\n };\r\n }\r\n}\r\n","<a *ngIf=\"node.routerLink && !node.leaf; else menuTpl\" [routerLink]=\"node.routerLink\">\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n</a>\r\n\r\n<ng-template #menuTpl>\r\n <x-icon class=\"x-menu-icon\" *ngIf=\"node.icon\" [type]=\"node.icon\"></x-icon>\r\n <span class=\"x-menu-text\" *ngIf=\"node.label\">{{ node.label }}</span>\r\n <x-icon class=\"x-menu-arrow\" *ngIf=\"node.leaf\" [class.is-open]=\"node.open\" type=\"fto-chevron-down\"></x-icon>\r\n</ng-template>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n OnDestroy,\r\n AfterViewInit,\r\n Inject\r\n} from '@angular/core';\r\nimport { XMenuPrefix, XMenuNode, XMenuProperty } from './menu.property';\r\nimport { XClassMap, XIsChange, XIsEmpty, XSetData, groupBy, XConfigService } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XMenuPrefix}`,\r\n templateUrl: './menu.component.html',\r\n styleUrls: ['./menu.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuComponent extends XMenuProperty implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n showCategory = false;\r\n get scroll(): HTMLElement {\r\n return this._target;\r\n }\r\n nodeClassMap: XClassMap = {};\r\n datas: XMenuNode[] = [];\r\n nodes: XMenuNode[] = [];\r\n rootIndex: number = 0;\r\n activated!: XMenuNode;\r\n activatedElementRef!: ElementRef;\r\n expanded: any[] = [];\r\n private _unSubject = new Subject<void>();\r\n private _target!: HTMLElement;\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n @Inject(DOCUMENT) public doc: any,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { data, activatedId, collapsed, target } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(activatedId) && this.setActivatedNode(this.datas);\r\n XIsChange(collapsed) && this.setClassMap();\r\n if (XIsChange(target)) {\r\n this._target = typeof this.target === 'string' ? this.doc.querySelector(this.target) : this.target;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.activatedElementRef && this.scroll) {\r\n const nodeRect: DOMRect = this.activatedElementRef.nativeElement.getBoundingClientRect();\r\n const scrollRect: DOMRect = this.scroll.getBoundingClientRect();\r\n let scrollTop = nodeRect.top - scrollRect.top - scrollRect.height;\r\n if (scrollTop > 0) {\r\n let offset = 0;\r\n while (offset < scrollRect.height / 2) {\r\n offset = offset + nodeRect.height;\r\n }\r\n this.scroll.scrollTop = scrollTop + offset;\r\n }\r\n }\r\n }\r\n\r\n onNodeClick(node: XMenuNode) {\r\n if (!this.collapsed) {\r\n this.rootIndex = this.nodes.indexOf(this.getRoot(node));\r\n this.activatedId = node.id;\r\n this.activated = node;\r\n this.nodeClick.emit(node);\r\n this.activatedIdChange.emit(node.id);\r\n this.cdr.detectChanges();\r\n } else {\r\n this.onToggle(null, node, true);\r\n }\r\n }\r\n\r\n rootIndexChange(index: number) {\r\n this.rootIndex = index;\r\n let node = this.nodes[index];\r\n this.activatedId = node.id;\r\n this.activated = node;\r\n this.nodeClick.emit(node);\r\n this.activatedIdChange.emit(node.id);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onToggle(event: Event | null, node: XMenuNode, isDropdown = false) {\r\n if ((this.collapsed && !isDropdown) || node.categoryNode) return;\r\n if (!node.leaf) {\r\n this.activated = node;\r\n } else {\r\n event?.stopPropagation();\r\n node.open = !node.open;\r\n if (node.open && !node.childrenLoaded) {\r\n node.childrenLoaded = true;\r\n }\r\n }\r\n this.nodeClick.emit(node);\r\n node.change && node.change();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap[`${XMenuPrefix}-${this.layout}`] = this.layout ? true : false;\r\n this.classMap[`${XMenuPrefix}-collapsed`] = Boolean(this.collapsed);\r\n this.nodeClassMap[`x-size-${this.size}`] = this.size ? true : false;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private setData() {\r\n XSetData<XMenuNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n\r\n private setDataChange(value: XMenuNode[]) {\r\n !XIsEmpty(this.activatedId) && this.setActivatedNode(value);\r\n let handlerDatas: XMenuNode[] = [];\r\n const getChildren = (node: XMenuNode, level: number) => {\r\n node.level = level;\r\n node.children = value.filter((y) => y.pid === node.id);\r\n node.leaf = node.children?.length > 0;\r\n if (node.leaf) {\r\n node.open = Boolean(this.expandedAll) || level <= this.expandedLevel || this.expanded.indexOf(node.id) >= 0;\r\n node.childrenLoaded = node.open;\r\n node.children.map((y) => getChildren(y, level + 1));\r\n node.children = this.setCategory(node.children);\r\n }\r\n handlerDatas = [...handlerDatas, node];\r\n return node;\r\n };\r\n\r\n this.nodes = this.setCategory(value.filter((x) => XIsEmpty(x.pid))).map((x) => getChildren(x, 0));\r\n this.datas = handlerDatas;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private getRoot(value: XMenuNode) {\r\n let root = value;\r\n const getParent = (node: XMenuNode) => {\r\n const parent = this.datas.find((x) => node.pid === x.id) as XMenuNode;\r\n if (XIsEmpty(parent?.pid)) root = parent;\r\n else getParent(parent);\r\n };\r\n if (!XIsEmpty(value.pid)) getParent(value);\r\n return root;\r\n }\r\n\r\n setCategory(nodes: XMenuNode[]) {\r\n const group = groupBy(nodes as XMenuNode[], 'category');\r\n for (let list of group) {\r\n const first = list[0];\r\n if (first.category) {\r\n list.unshift({\r\n id: `${first.pid}__${first.category}`,\r\n pid: first.pid,\r\n label: first.category,\r\n level: first.level,\r\n categoryNode: true\r\n });\r\n }\r\n }\r\n let con: XMenuNode[] = [];\r\n group.map((x) => {\r\n con = con.concat(x);\r\n });\r\n return con;\r\n }\r\n\r\n setActivatedNode(nodes: XMenuNode[]) {\r\n this.activated = nodes.find((x) => x.id == this.activatedId) as XMenuNode;\r\n this.rootIndex = nodes.findIndex((x) => x.id == this.activatedId && !x.pid);\r\n if (this.activated) {\r\n this.setParentOpen(nodes, this.activated);\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XMenuNode[], node: XMenuNode) {\r\n const getParent = (child: XMenuNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XMenuNode;\r\n if (!XIsEmpty(parent)) {\r\n this.expanded = [...this.expanded, parent.id];\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n trackByNode(_index: number, item: XMenuNode) {\r\n return item.id;\r\n }\r\n}\r\n","<div #menu class=\"x-menu\" [ngClass]=\"classMap\" [style.width]=\"layout === 'column' ? width : ''\">\r\n <div class=\"x-menu-nodes\" *ngIf=\"layout === 'column'\">\r\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-slider\r\n *ngIf=\"layout === 'row'\"\r\n [data]=\"nodes\"\r\n [size]=\"size\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n</div>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <x-dropdown\r\n *ngIf=\"node.level === 0 && collapsed\"\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n placement=\"right-start\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <x-menu-node [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n </x-dropdown>\r\n <x-menu-node *ngIf=\"!collapsed\" [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap\">\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n <div class=\"x-menu-nodes\" *ngIf=\"node.childrenLoaded || (node.leaf && node.open)\" [hidden]=\"!node.open\">\r\n <ng-container *ngFor=\"let child of node.children; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XMenuComponent } from './menu.component';\r\nimport { XMenuNodeComponent } from './menu-node.component';\r\nimport { XDropdownModule } from '@ng-nest/ui/dropdown';\r\nimport { XSliderModule } from '@ng-nest/ui/slider';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XMenuProperty, XMenuNodeProperty } from './menu.property';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@NgModule({\r\n declarations: [XMenuComponent, XMenuNodeComponent, XMenuProperty, XMenuNodeProperty],\r\n exports: [XMenuComponent, XMenuNodeComponent],\r\n imports: [CommonModule, RouterModule, XDropdownModule, XSliderModule, XIconModule]\r\n})\r\nexport class XMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i4.XMenuNodeComponent"],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-menu.mjs","sources":["../../../../lib/ng-nest/ui/menu/menu.property.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.html","../../../../lib/ng-nest/ui/menu/menu.component.ts","../../../../lib/ng-nest/ui/menu/menu.component.html","../../../../lib/ng-nest/ui/menu/menu.module.ts","../../../../lib/ng-nest/ui/menu/ng-nest-ui-menu.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XData,\r\n XSize,\r\n XProperty,\r\n XDataConvert,\r\n XInputNumber,\r\n XNumber,\r\n XInputBoolean,\r\n XBoolean,\r\n XWithConfig,\r\n XTrigger\r\n} from '@ng-nest/ui/core';\r\nimport { TemplateRef, Input, Output, EventEmitter, Component } from '@angular/core';\r\n\r\n/**\r\n * Menu\r\n * @selector x-menu\r\n * @decorator component\r\n */\r\nexport const XMenuPrefix = 'x-menu';\r\nconst X_CONFIG_NAME = 'menu';\r\n\r\n/**\r\n * Menu Property\r\n */\r\n@Component({ template: '' })\r\nexport class XMenuProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XMenuNode> = [];\r\n /**\r\n * @zh_CN 布局方向\r\n * @en_US Layout direction\r\n */\r\n @Input() layout: XMenuLayout = 'row';\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') size!: XSize;\r\n /**\r\n * @zh_CN 宽度,只有布局 layout 为 'column' 生效\r\n * @en_US Width, only layout layout is the 'column'\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '12rem') width!: string;\r\n /**\r\n * @zh_CN 缩起菜单\r\n * @en_US Shrink menu\r\n */\r\n @Input() @XInputBoolean() collapsed: XBoolean = false;\r\n /**\r\n * @zh_CN 触发方式,只针对横向布局\r\n * @en_US Trigger mode, only for horizontal layout\r\n */\r\n @Input() @XWithConfig<XMenuTrigger>(X_CONFIG_NAME, 'hover') trigger!: XMenuTrigger;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n @Input() nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 展开的所有层级,只对 layout 布局为 'column' 的生效\r\n * @en_US All expanded levels are only effective for the layout of'column'\r\n */\r\n @Input() @XInputBoolean() expandedAll?: XBoolean;\r\n /**\r\n * @zh_CN 默认展开的层级,只对 layout 布局为 'column' 的生效\r\n * @en_US The level expanded by default is only valid for the layout of'column'\r\n */\r\n @Input() @XInputNumber() expandedLevel: XNumber = -1;\r\n /**\r\n * @zh_CN 当前激活的节点 id\r\n * @en_US Currently active node id\r\n */\r\n @Input() activatedId: any;\r\n /**\r\n * @zh_CN 滚动容器\r\n * @en_US Rolling container\r\n */\r\n @Input() target?: string | HTMLElement;\r\n /**\r\n * @zh_CN 弹框的最小宽度\r\n * @en_US Portal min-width\r\n */\r\n @Input() portalMinWidth?: string | number;\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeClick = new EventEmitter<XMenuNode>();\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n @Output() activatedIdChange = new EventEmitter<any>();\r\n}\r\n\r\n/**\r\n * @zh_CN MenuNode 节点数据\r\n * @en_US MenuNode node data\r\n */\r\nexport interface XMenuNode extends XParentIdentityProperty<XMenuNode> {\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 展开\r\n * @en_US Unfold\r\n */\r\n open?: boolean;\r\n /**\r\n * @zh_CN 子节点已加载过\r\n * @en_US Child node has been loaded\r\n */\r\n childrenLoaded?: boolean;\r\n /**\r\n * @zh_CN 分类显示,设置值后节点显示成分类样式\r\n * @en_US Category display, after setting the value, the node is displayed in a category style\r\n */\r\n category?: string;\r\n /**\r\n * @zh_CN 分类节点,通过内部计算\r\n * @en_US Classification node, through internal calculation\r\n */\r\n categoryNode?: 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 路由\r\n * @en_US Router\r\n */\r\n routerLink?: string | any[];\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XMenuLayout = 'row' | 'column';\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XMenuTrigger = XTrigger;\r\n\r\n/**\r\n * Menu Node\r\n * @selector x-menu-node\r\n * @decorator component\r\n */\r\nexport const XMenuNodePrefix = 'x-menu-node';\r\n\r\n/**\r\n * Menu Node Property\r\n */\r\n@Component({ template: '' })\r\nexport class XMenuNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() node!: XMenuNode;\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, Input } from '@angular/core';\r\nimport { XMenuNodeProperty, XMenuNodePrefix } from './menu.property';\r\nimport { XConfigService } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XMenuNodePrefix}`,\r\n templateUrl: './menu-node.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuNodeComponent extends XMenuNodeProperty {\r\n @Input() menu: any;\r\n constructor(\r\n // @Host() @Optional() public menu: XMenuComponent,\r\n public cdr: ChangeDetectorRef,\r\n public elementRef: ElementRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n ngOnInit() {\r\n if (this.menu?.activatedId == this.node.id) {\r\n this.menu.activatedElementRef = this.elementRef;\r\n }\r\n this.node.change = () => {\r\n this.cdr.detectChanges();\r\n };\r\n }\r\n}\r\n","<a *ngIf=\"node.routerLink && !node.leaf; else menuTpl\" [routerLink]=\"node.routerLink\">\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n</a>\r\n\r\n<ng-template #menuTpl>\r\n <x-icon class=\"x-menu-icon\" *ngIf=\"node.icon\" [type]=\"node.icon\"></x-icon>\r\n <span class=\"x-menu-text\" *ngIf=\"node.label\">{{ node.label }}</span>\r\n <x-icon class=\"x-menu-arrow\" *ngIf=\"node.leaf\" [class.is-open]=\"node.open\" type=\"fto-chevron-down\"></x-icon>\r\n</ng-template>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n OnDestroy,\r\n AfterViewInit,\r\n Inject\r\n} from '@angular/core';\r\nimport { XMenuPrefix, XMenuNode, XMenuProperty } from './menu.property';\r\nimport { XClassMap, XIsChange, XIsEmpty, XSetData, groupBy, XConfigService } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XMenuPrefix}`,\r\n templateUrl: './menu.component.html',\r\n styleUrls: ['./menu.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuComponent extends XMenuProperty implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n showCategory = false;\r\n get scroll(): HTMLElement {\r\n return this._target;\r\n }\r\n nodeClassMap: XClassMap = {};\r\n datas: XMenuNode[] = [];\r\n nodes: XMenuNode[] = [];\r\n rootIndex: number = 0;\r\n activated!: XMenuNode;\r\n activatedElementRef!: ElementRef;\r\n expanded: any[] = [];\r\n private _unSubject = new Subject<void>();\r\n private _target!: HTMLElement;\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n @Inject(DOCUMENT) public doc: any,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { data, activatedId, collapsed, target } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(activatedId) && this.setActivatedNode(this.datas);\r\n XIsChange(collapsed) && this.setClassMap();\r\n if (XIsChange(target)) {\r\n this._target = typeof this.target === 'string' ? this.doc.querySelector(this.target) : this.target;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.activatedElementRef && this.scroll) {\r\n const nodeRect: DOMRect = this.activatedElementRef.nativeElement.getBoundingClientRect();\r\n const scrollRect: DOMRect = this.scroll.getBoundingClientRect();\r\n let scrollTop = nodeRect.top - scrollRect.top - scrollRect.height;\r\n if (scrollTop > 0) {\r\n let offset = 0;\r\n while (offset < scrollRect.height / 2) {\r\n offset = offset + nodeRect.height;\r\n }\r\n this.scroll.scrollTop = scrollTop + offset;\r\n }\r\n }\r\n }\r\n\r\n onNodeClick(node: XMenuNode) {\r\n if (!this.collapsed) {\r\n this.rootIndex = this.nodes.indexOf(this.getRoot(node));\r\n this.activatedId = node.id;\r\n this.activated = node;\r\n this.nodeClick.emit(node);\r\n this.activatedIdChange.emit(node.id);\r\n this.cdr.detectChanges();\r\n } else {\r\n this.onToggle(null, node, true);\r\n }\r\n }\r\n\r\n rootIndexChange(index: number) {\r\n this.rootIndex = index;\r\n let node = this.nodes[index];\r\n this.activatedId = node.id;\r\n this.activated = node;\r\n this.nodeClick.emit(node);\r\n this.activatedIdChange.emit(node.id);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onToggle(event: Event | null, node: XMenuNode, isDropdown = false) {\r\n if ((this.collapsed && !isDropdown) || node.categoryNode) return;\r\n if (!node.leaf) {\r\n this.activated = node;\r\n } else {\r\n event?.stopPropagation();\r\n node.open = !node.open;\r\n if (node.open && !node.childrenLoaded) {\r\n node.childrenLoaded = true;\r\n }\r\n }\r\n this.nodeClick.emit(node);\r\n node.change && node.change();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap[`${XMenuPrefix}-${this.layout}`] = this.layout ? true : false;\r\n this.classMap[`${XMenuPrefix}-collapsed`] = Boolean(this.collapsed);\r\n this.nodeClassMap[`x-size-${this.size}`] = this.size ? true : false;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private setData() {\r\n XSetData<XMenuNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n\r\n private setDataChange(value: XMenuNode[]) {\r\n !XIsEmpty(this.activatedId) && this.setActivatedNode(value);\r\n let handlerDatas: XMenuNode[] = [];\r\n const getChildren = (node: XMenuNode, level: number) => {\r\n node.level = level;\r\n node.children = value.filter((y) => y.pid === node.id);\r\n node.leaf = node.children?.length > 0;\r\n if (node.leaf) {\r\n node.open = Boolean(this.expandedAll) || level <= this.expandedLevel || this.expanded.indexOf(node.id) >= 0;\r\n node.childrenLoaded = node.open;\r\n node.children.map((y) => getChildren(y, level + 1));\r\n node.children = this.setCategory(node.children);\r\n }\r\n handlerDatas = [...handlerDatas, node];\r\n return node;\r\n };\r\n\r\n this.nodes = this.setCategory(value.filter((x) => XIsEmpty(x.pid))).map((x) => getChildren(x, 0));\r\n this.datas = handlerDatas;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private getRoot(value: XMenuNode) {\r\n let root = value;\r\n const getParent = (node: XMenuNode) => {\r\n const parent = this.datas.find((x) => node.pid === x.id) as XMenuNode;\r\n if (XIsEmpty(parent?.pid)) root = parent;\r\n else getParent(parent);\r\n };\r\n if (!XIsEmpty(value.pid)) getParent(value);\r\n return root;\r\n }\r\n\r\n setCategory(nodes: XMenuNode[]) {\r\n const group = groupBy(nodes as XMenuNode[], 'category');\r\n for (let list of group) {\r\n const first = list[0];\r\n if (first.category) {\r\n list.unshift({\r\n id: `${first.pid}__${first.category}`,\r\n pid: first.pid,\r\n label: first.category,\r\n level: first.level,\r\n categoryNode: true\r\n });\r\n }\r\n }\r\n let con: XMenuNode[] = [];\r\n group.map((x) => {\r\n con = con.concat(x);\r\n });\r\n return con;\r\n }\r\n\r\n setActivatedNode(nodes: XMenuNode[]) {\r\n this.activated = nodes.find((x) => x.id == this.activatedId) as XMenuNode;\r\n this.rootIndex = nodes.findIndex((x) => x.id == this.activatedId && !x.pid);\r\n if (this.activated) {\r\n this.setParentOpen(nodes, this.activated);\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XMenuNode[], node: XMenuNode) {\r\n const getParent = (child: XMenuNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XMenuNode;\r\n if (!XIsEmpty(parent)) {\r\n this.expanded = [...this.expanded, parent.id];\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n trackByNode(_index: number, item: XMenuNode) {\r\n return item.id;\r\n }\r\n}\r\n","<div #menu class=\"x-menu\" [ngClass]=\"classMap\" [style.width]=\"layout === 'column' ? width : ''\">\r\n <div class=\"x-menu-nodes\" *ngIf=\"layout === 'column'\">\r\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <x-slider\r\n *ngIf=\"layout === 'row'\"\r\n [data]=\"nodes\"\r\n [size]=\"size\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n</div>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <x-dropdown\r\n *ngIf=\"node.level === 0 && collapsed\"\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n placement=\"right-start\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <x-menu-node [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n </x-dropdown>\r\n <x-menu-node *ngIf=\"!collapsed\" [node]=\"node\" [menu]=\"this\"></x-menu-node>\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap\">\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n </div>\r\n <div class=\"x-menu-nodes\" *ngIf=\"node.childrenLoaded || (node.leaf && node.open)\" [hidden]=\"!node.open\">\r\n <ng-container *ngFor=\"let child of node.children; trackBy: trackByNode\">\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XMenuComponent } from './menu.component';\r\nimport { XMenuNodeComponent } from './menu-node.component';\r\nimport { XDropdownModule } from '@ng-nest/ui/dropdown';\r\nimport { XSliderModule } from '@ng-nest/ui/slider';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XMenuProperty, XMenuNodeProperty } from './menu.property';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@NgModule({\r\n declarations: [XMenuComponent, XMenuNodeComponent, XMenuProperty, XMenuNodeProperty],\r\n exports: [XMenuComponent, XMenuNodeComponent],\r\n imports: [CommonModule, RouterModule, XDropdownModule, XSliderModule, XIconModule]\r\n})\r\nexport class XMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i4.XMenuNodeComponent"],"mappings":"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"}