@ng-nest/ui 13.0.4 → 13.0.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.
- package/alert/alert.component.d.ts +2 -1
- package/core/config/config.d.ts +7 -1
- package/core/interfaces/layout.type.d.ts +1 -1
- package/dialog/{dialog-container.component.d.ts → dialog-portal.component.d.ts} +3 -3
- package/dialog/{dialog-container.directives.d.ts → dialog-portal.directives.d.ts} +0 -0
- package/dialog/dialog-ref.d.ts +3 -3
- package/dialog/dialog.module.d.ts +3 -3
- package/dialog/dialog.property.d.ts +3 -3
- package/dialog/public-api.d.ts +2 -2
- package/drawer/drawer-container.component.d.ts +3 -13
- package/drawer/drawer-portal.component.d.ts +18 -0
- package/drawer/{drawer-container.directives.d.ts → drawer-portal.directives.d.ts} +0 -0
- package/drawer/drawer-ref.d.ts +3 -3
- package/drawer/drawer.component.d.ts +10 -3
- package/drawer/drawer.module.d.ts +9 -8
- package/drawer/drawer.property.d.ts +16 -2
- package/drawer/examples/en_US/default/container/README.md +6 -0
- package/drawer/examples/zh_CN/default/container/README.md +6 -0
- package/drawer/public-api.d.ts +3 -2
- package/esm2020/alert/alert.component.mjs +9 -4
- package/esm2020/auto-complete/auto-complete.module.mjs +2 -3
- package/esm2020/cascade/cascade.module.mjs +2 -3
- package/esm2020/color-picker/color-picker.module.mjs +2 -3
- package/esm2020/core/config/config.mjs +1 -1
- package/esm2020/core/interfaces/layout.type.mjs +1 -1
- package/esm2020/date-picker/date-picker.module.mjs +2 -3
- package/esm2020/dialog/dialog-portal.component.mjs +52 -0
- package/esm2020/dialog/{dialog-container.directives.mjs → dialog-portal.directives.mjs} +7 -7
- package/esm2020/dialog/dialog-ref.mjs +1 -1
- package/esm2020/dialog/dialog.component.mjs +5 -5
- package/esm2020/dialog/dialog.module.mjs +7 -7
- package/esm2020/dialog/dialog.property.mjs +2 -2
- package/esm2020/dialog/dialog.service.mjs +3 -3
- package/esm2020/dialog/public-api.mjs +3 -3
- package/esm2020/drawer/drawer-container.component.mjs +16 -39
- package/esm2020/drawer/drawer-portal.component.mjs +52 -0
- package/esm2020/drawer/{drawer-container.directives.mjs → drawer-portal.directives.mjs} +5 -5
- package/esm2020/drawer/drawer-ref.mjs +1 -1
- package/esm2020/drawer/drawer.component.mjs +54 -18
- package/esm2020/drawer/drawer.module.mjs +23 -6
- package/esm2020/drawer/drawer.property.mjs +19 -1
- package/esm2020/drawer/drawer.service.mjs +4 -4
- package/esm2020/drawer/public-api.mjs +4 -3
- package/esm2020/dropdown/dropdown.module.mjs +2 -3
- package/esm2020/find/find.component.mjs +13 -4
- package/esm2020/find/find.property.mjs +18 -2
- package/esm2020/menu/menu.component.mjs +3 -3
- package/esm2020/menu/menu.property.mjs +7 -2
- package/esm2020/message/message-ref.mjs +12 -0
- package/esm2020/message/message.component.mjs +3 -3
- package/esm2020/message/message.property.mjs +1 -1
- package/esm2020/message/message.service.mjs +34 -13
- package/esm2020/message/public-api.mjs +2 -1
- package/esm2020/popconfirm/popconfirm.component.mjs +26 -5
- package/esm2020/popconfirm/popconfirm.property.mjs +10 -3
- package/esm2020/popover/popover.directive.mjs +8 -2
- package/esm2020/popover/popover.module.mjs +2 -3
- package/esm2020/popover/popover.property.mjs +7 -2
- package/esm2020/select/select.module.mjs +2 -3
- package/esm2020/table/table-body.component.mjs +4 -4
- package/esm2020/table/table.component.mjs +3 -3
- package/esm2020/table/table.property.mjs +7 -3
- package/esm2020/time-picker/time-picker.module.mjs +2 -3
- package/esm2020/tooltip/tooltip.directive.mjs +12 -4
- package/esm2020/tooltip/tooltip.module.mjs +2 -3
- package/esm2020/tooltip/tooltip.property.mjs +18 -2
- package/esm2020/tree/tree-node.component.mjs +3 -3
- package/esm2020/tree/tree.property.mjs +8 -2
- package/fesm2015/ng-nest-ui-alert.mjs +8 -3
- package/fesm2015/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-auto-complete.mjs +1 -2
- package/fesm2015/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-cascade.mjs +1 -2
- package/fesm2015/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-color-picker.mjs +1 -2
- package/fesm2015/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-date-picker.mjs +1 -2
- package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-dialog.mjs +22 -22
- package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-drawer.mjs +129 -32
- package/fesm2015/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-dropdown.mjs +1 -2
- package/fesm2015/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-find.mjs +29 -4
- package/fesm2015/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-menu.mjs +8 -3
- package/fesm2015/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-message.mjs +48 -15
- package/fesm2015/ng-nest-ui-message.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-popconfirm.mjs +34 -6
- package/fesm2015/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-popover.mjs +14 -4
- package/fesm2015/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-select.mjs +1 -2
- package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-table.mjs +11 -7
- package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-time-picker.mjs +1 -2
- package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tooltip.mjs +29 -6
- package/fesm2015/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tree.mjs +9 -3
- package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-alert.mjs +8 -3
- package/fesm2020/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-auto-complete.mjs +1 -2
- package/fesm2020/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-cascade.mjs +1 -2
- package/fesm2020/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-color-picker.mjs +1 -2
- package/fesm2020/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-date-picker.mjs +1 -2
- package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-dialog.mjs +22 -22
- package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-drawer.mjs +127 -32
- package/fesm2020/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-dropdown.mjs +1 -2
- package/fesm2020/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-find.mjs +29 -4
- package/fesm2020/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-menu.mjs +8 -3
- package/fesm2020/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-message.mjs +47 -15
- package/fesm2020/ng-nest-ui-message.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-popconfirm.mjs +34 -6
- package/fesm2020/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-popover.mjs +14 -4
- package/fesm2020/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-select.mjs +1 -2
- package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-table.mjs +11 -7
- package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-time-picker.mjs +1 -2
- package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tooltip.mjs +29 -6
- package/fesm2020/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tree.mjs +9 -3
- package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
- package/find/find.property.d.ts +31 -1
- package/menu/menu.property.d.ts +8 -3
- package/message/examples/en_US/default/loading/README.md +6 -0
- package/message/examples/zh_CN/default/loading/README.md +6 -0
- package/message/message-ref.d.ts +8 -0
- package/message/message.component.d.ts +3 -3
- package/message/message.property.d.ts +23 -3
- package/message/message.service.d.ts +4 -1
- package/message/public-api.d.ts +1 -0
- package/package.json +7 -7
- package/popconfirm/examples/en_US/default/async-close/README.md +6 -0
- package/popconfirm/examples/en_US/default/condition/README.md +6 -0
- package/popconfirm/examples/zh_CN/default/async-close/README.md +6 -0
- package/popconfirm/examples/zh_CN/default/condition/README.md +6 -0
- package/popconfirm/popconfirm.component.d.ts +6 -2
- package/popconfirm/popconfirm.property.d.ts +13 -2
- package/popover/popover.property.d.ts +6 -1
- package/steps/examples/zh_CN/default/node-status/README.md +1 -1
- package/table/examples/en_US/default/rowclass/README.md +6 -0
- package/table/examples/zh_CN/default/rowclass/README.md +6 -0
- package/table/table.property.d.ts +23 -2
- package/tooltip/tooltip.directive.d.ts +1 -0
- package/tooltip/tooltip.property.d.ts +11 -1
- package/tree/tree.property.d.ts +6 -1
- package/esm2020/dialog/dialog-container.component.mjs +0 -52
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-alert.mjs","sources":["../../../../lib/ng-nest/ui/alert/alert.property.ts","../../../../lib/ng-nest/ui/alert/alert.component.ts","../../../../lib/ng-nest/ui/alert/alert.component.html","../../../../lib/ng-nest/ui/alert/alert.module.ts","../../../../lib/ng-nest/ui/alert/ng-nest-ui-alert.ts"],"sourcesContent":["import { XStatus, XTemplate, XEffect, XProperty, XInputBoolean, XInputNumber, XBoolean, XNumber, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, EventEmitter, Output, Component, ElementRef } from '@angular/core';\r\n\r\n/**\r\n * Alert\r\n * @selector x-alert\r\n * @decorator component\r\n */\r\nexport const XAlertPrefix = 'x-alert';\r\nconst X_CONFIG_NAME = 'alert';\r\n\r\n/**\r\n * Alert Property\r\n */\r\n@Component({ template: '' })\r\nexport class XAlertProperty extends XProperty {\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hide\r\n */\r\n @Input() @XInputBoolean() hide?: XBoolean;\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n @Input() title?: XTemplate;\r\n /**\r\n * @zh_CN 内容\r\n * @en_US Content\r\n */\r\n @Input() content?: XTemplate;\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Alert type\r\n */\r\n @Input() type?: XAlertType = 'info';\r\n /**\r\n * @zh_CN 主题\r\n * @en_US Theme\r\n */\r\n @Input() @XWithConfig<XEffect>(X_CONFIG_NAME, 'light') effect?: XEffect;\r\n /**\r\n * @zh_CN 隐藏关闭按钮\r\n * @en_US Hide close button\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() hideClose?: XBoolean;\r\n /**\r\n * @zh_CN 使用文本关闭按钮\r\n * @en_US Use the text to close button\r\n */\r\n @Input() closeText?: string;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() showIcon?: XBoolean;\r\n /**\r\n * @zh_CN 禁用动画\r\n * @en_US Disable animation\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() disabledAnimation?: XBoolean;\r\n /**\r\n * @zh_CN 延迟关闭,默认 0 表示不关闭\r\n * @en_US Delay close, the default value of 0 means do not close\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0) @XInputNumber() duration?: XNumber;\r\n /**\r\n * @zh_CN 手动处理关闭事件\r\n * @en_US Manually handle close events\r\n */\r\n @Input() @XInputBoolean() manual?: XBoolean;\r\n /**\r\n * @zh_CN 拖动提示框\r\n * @en_US Drag dialog\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() draggable?: XBoolean;\r\n /**\r\n * @zh_CN 拖动范围限制,父节点选择器或者对象\r\n * @en_US Drag dialog\r\n */\r\n @Input() dragBoundary!: string | ElementRef<HTMLElement> | HTMLElement;\r\n /**\r\n * @zh_CN 关闭的事件\r\n * @en_US Closed events\r\n */\r\n @Output() close = new EventEmitter();\r\n}\r\n\r\n/**\r\n * Alert Option\r\n * @undocument true\r\n */\r\nexport interface XAlertOption {\r\n /**\r\n * 隐藏\r\n */\r\n hide?: boolean;\r\n /**\r\n * 标题\r\n */\r\n title?: XTemplate;\r\n /**\r\n * 内容\r\n */\r\n content?: XTemplate;\r\n /**\r\n * 类型\r\n */\r\n type?: XAlertType;\r\n /**\r\n * 主题\r\n */\r\n effect?: XEffect;\r\n /**\r\n * 隐藏关闭按钮\r\n */\r\n hideClose?: boolean;\r\n /**\r\n * 关闭按钮文字替换\r\n */\r\n closeText?: string;\r\n /**\r\n * 显示图标\r\n */\r\n showIcon?: boolean;\r\n /**\r\n * 禁用动画\r\n */\r\n disabledAnimation?: boolean;\r\n /**\r\n * 延迟关闭,默认 0 表示不关闭\r\n */\r\n duration?: number;\r\n /**\r\n * 手动处理关闭事件\r\n */\r\n manual?: boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 类型\r\n * @en_US Type\r\n * @value \"success\"\r\n * @value \"info\"\r\n * @value \"warning\"\r\n * @value \"error\"\r\n */\r\nexport type XAlertType = XStatus;\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectorRef, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { XAlertPrefix, XAlertProperty } from './alert.property';\r\nimport { XFadeAnimation, XIsEmpty, XConfigService } from '@ng-nest/ui/core';\r\nimport { of, Subject } from 'rxjs';\r\nimport { delay, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XAlertPrefix}`,\r\n templateUrl: './alert.component.html',\r\n styleUrls: ['./alert.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XFadeAnimation]\r\n})\r\nexport class XAlertComponent extends XAlertProperty implements OnInit, OnDestroy {\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public cdr: ChangeDetectorRef, public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n this.setDuration();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap = {\r\n [`${XAlertPrefix}-${this.type}`]: !XIsEmpty(this.type),\r\n [`x-${this.effect}`]: !XIsEmpty(this.effect),\r\n [`${XAlertPrefix}-icon-medium`]: !XIsEmpty(this.title) && !XIsEmpty(this.content) && !XIsEmpty(this.showIcon),\r\n [`${XAlertPrefix}-draggable`]: Boolean(this.draggable)\r\n };\r\n }\r\n\r\n setDuration() {\r\n if (this.duration) {\r\n of(true)\r\n .pipe(delay(Number(this.duration)), takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.onClose();\r\n });\r\n }\r\n }\r\n\r\n onClose() {\r\n if (this.manual) {\r\n this.close?.emit();\r\n } else {\r\n this.hide = true;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n onCloseAnimationDone() {\r\n if (this.hide) {\r\n this.close?.emit();\r\n }\r\n }\r\n}\r\n","<div\r\n #alert\r\n class=\"x-alert\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!draggable\"\r\n [cdkDragBoundary]=\"dragBoundary\"\r\n [ngClass]=\"classMap\"\r\n *ngIf=\"!hide\"\r\n @x-fade-animation\r\n [@.disabled]=\"disabledAnimation\"\r\n (@x-fade-animation.done)=\"onCloseAnimationDone()\"\r\n>\r\n <ng-container *ngIf=\"showIcon\">\r\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\r\n </ng-container>\r\n <ng-template #iconTpl>\r\n <ng-container [ngSwitch]=\"type\">\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'success'\" type=\"adf-check-circle\"></x-icon>\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'info'\" type=\"adf-info-circle\"></x-icon>\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'warning'\" type=\"adf-exclamation-circle\"></x-icon>\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'error'\" type=\"adf-close-circle\"></x-icon>\r\n </ng-container>\r\n </ng-template>\r\n <div class=\"x-alert-inner\">\r\n <span class=\"x-alert-title\" cdkDragHandle [class.x-bold]=\"title && content\">\r\n <ng-container *xOutlet=\"title; context: { $iconTpl: iconTpl }\">{{ title }}</ng-container>\r\n </span>\r\n <div class=\"x-alert-content\" *ngIf=\"content\">\r\n <ng-container *xOutlet=\"content; context: { $iconTpl: iconTpl }\">{{ content }}</ng-container>\r\n </div>\r\n <x-button\r\n *ngIf=\"!hideClose\"\r\n class=\"x-alert-close\"\r\n size=\"small\"\r\n [icon]=\"!closeText ? 'fto-x' : ''\"\r\n [onlyIcon]=\"!closeText\"\r\n [type]=\"closeText ? 'text' : 'initial'\"\r\n (click)=\"onClose()\"\r\n closable\r\n >{{ closeText }}</x-button\r\n >\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XAlertComponent } from './alert.component';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XAlertProperty } from './alert.property';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n@NgModule({\r\n declarations: [XAlertComponent, XAlertProperty],\r\n exports: [XAlertComponent],\r\n imports: [CommonModule, DragDropModule, XIconModule, XButtonModule, XOutletModule]\r\n})\r\nexport class XAlertModule {}\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-alert.mjs","sources":["../../../../lib/ng-nest/ui/alert/alert.property.ts","../../../../lib/ng-nest/ui/alert/alert.component.ts","../../../../lib/ng-nest/ui/alert/alert.component.html","../../../../lib/ng-nest/ui/alert/alert.module.ts","../../../../lib/ng-nest/ui/alert/ng-nest-ui-alert.ts"],"sourcesContent":["import { XStatus, XTemplate, XEffect, XProperty, XInputBoolean, XInputNumber, XBoolean, XNumber, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, EventEmitter, Output, Component, ElementRef } from '@angular/core';\r\n\r\n/**\r\n * Alert\r\n * @selector x-alert\r\n * @decorator component\r\n */\r\nexport const XAlertPrefix = 'x-alert';\r\nconst X_CONFIG_NAME = 'alert';\r\n\r\n/**\r\n * Alert Property\r\n */\r\n@Component({ template: '' })\r\nexport class XAlertProperty extends XProperty {\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hide\r\n */\r\n @Input() @XInputBoolean() hide?: XBoolean;\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n @Input() title?: XTemplate;\r\n /**\r\n * @zh_CN 内容\r\n * @en_US Content\r\n */\r\n @Input() content?: XTemplate;\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Alert type\r\n */\r\n @Input() type?: XAlertType = 'info';\r\n /**\r\n * @zh_CN 主题\r\n * @en_US Theme\r\n */\r\n @Input() @XWithConfig<XEffect>(X_CONFIG_NAME, 'light') effect?: XEffect;\r\n /**\r\n * @zh_CN 隐藏关闭按钮\r\n * @en_US Hide close button\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() hideClose?: XBoolean;\r\n /**\r\n * @zh_CN 使用文本关闭按钮\r\n * @en_US Use the text to close button\r\n */\r\n @Input() closeText?: string;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() showIcon?: XBoolean;\r\n /**\r\n * @zh_CN 禁用动画\r\n * @en_US Disable animation\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() disabledAnimation?: XBoolean;\r\n /**\r\n * @zh_CN 延迟关闭,默认 0 表示不关闭\r\n * @en_US Delay close, the default value of 0 means do not close\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0) @XInputNumber() duration?: XNumber;\r\n /**\r\n * @zh_CN 手动处理关闭事件\r\n * @en_US Manually handle close events\r\n */\r\n @Input() @XInputBoolean() manual?: XBoolean;\r\n /**\r\n * @zh_CN 拖动提示框\r\n * @en_US Drag dialog\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() draggable?: XBoolean;\r\n /**\r\n * @zh_CN 拖动范围限制,父节点选择器或者对象\r\n * @en_US Drag dialog\r\n */\r\n @Input() dragBoundary!: string | ElementRef<HTMLElement> | HTMLElement;\r\n /**\r\n * @zh_CN 关闭的事件\r\n * @en_US Closed events\r\n */\r\n @Output() close = new EventEmitter();\r\n}\r\n\r\n/**\r\n * Alert Option\r\n * @undocument true\r\n */\r\nexport interface XAlertOption {\r\n /**\r\n * 隐藏\r\n */\r\n hide?: boolean;\r\n /**\r\n * 标题\r\n */\r\n title?: XTemplate;\r\n /**\r\n * 内容\r\n */\r\n content?: XTemplate;\r\n /**\r\n * 类型\r\n */\r\n type?: XAlertType;\r\n /**\r\n * 主题\r\n */\r\n effect?: XEffect;\r\n /**\r\n * 隐藏关闭按钮\r\n */\r\n hideClose?: boolean;\r\n /**\r\n * 关闭按钮文字替换\r\n */\r\n closeText?: string;\r\n /**\r\n * 显示图标\r\n */\r\n showIcon?: boolean;\r\n /**\r\n * 禁用动画\r\n */\r\n disabledAnimation?: boolean;\r\n /**\r\n * 延迟关闭,默认 0 表示不关闭\r\n */\r\n duration?: number;\r\n /**\r\n * 手动处理关闭事件\r\n */\r\n manual?: boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 类型\r\n * @en_US Type\r\n * @value \"success\"\r\n * @value \"info\"\r\n * @value \"warning\"\r\n * @value \"error\"\r\n */\r\nexport type XAlertType = XStatus;\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectorRef, ChangeDetectionStrategy, OnDestroy, SimpleChanges } from '@angular/core';\r\nimport { XAlertPrefix, XAlertProperty } from './alert.property';\r\nimport { XFadeAnimation, XIsEmpty, XConfigService, XIsChange, XClearClass } from '@ng-nest/ui/core';\r\nimport { of, Subject } from 'rxjs';\r\nimport { delay, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XAlertPrefix}`,\r\n templateUrl: './alert.component.html',\r\n styleUrls: ['./alert.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XFadeAnimation]\r\n})\r\nexport class XAlertComponent extends XAlertProperty implements OnInit, OnDestroy {\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public cdr: ChangeDetectorRef, public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n this.setDuration();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { type, effect, title, content, showIcon, draggable } = changes;\r\n XIsChange(type, effect, title, content, showIcon, draggable) && this.setClassMap();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.classMap);\r\n this.classMap = {\r\n [`${XAlertPrefix}-${this.type}`]: !XIsEmpty(this.type),\r\n [`x-${this.effect}`]: !XIsEmpty(this.effect),\r\n [`${XAlertPrefix}-icon-medium`]: !XIsEmpty(this.title) && !XIsEmpty(this.content) && !XIsEmpty(this.showIcon),\r\n [`${XAlertPrefix}-draggable`]: Boolean(this.draggable)\r\n };\r\n }\r\n\r\n setDuration() {\r\n if (this.duration) {\r\n of(true)\r\n .pipe(delay(Number(this.duration)), takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.onClose();\r\n });\r\n }\r\n }\r\n\r\n onClose() {\r\n if (this.manual) {\r\n this.close?.emit();\r\n } else {\r\n this.hide = true;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n onCloseAnimationDone() {\r\n if (this.hide) {\r\n this.close?.emit();\r\n }\r\n }\r\n}\r\n","<div\r\n #alert\r\n class=\"x-alert\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!draggable\"\r\n [cdkDragBoundary]=\"dragBoundary\"\r\n [ngClass]=\"classMap\"\r\n *ngIf=\"!hide\"\r\n @x-fade-animation\r\n [@.disabled]=\"disabledAnimation\"\r\n (@x-fade-animation.done)=\"onCloseAnimationDone()\"\r\n>\r\n <ng-container *ngIf=\"showIcon\">\r\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\r\n </ng-container>\r\n <ng-template #iconTpl>\r\n <ng-container [ngSwitch]=\"type\">\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'success'\" type=\"adf-check-circle\"></x-icon>\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'info'\" type=\"adf-info-circle\"></x-icon>\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'warning'\" type=\"adf-exclamation-circle\"></x-icon>\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'error'\" type=\"adf-close-circle\"></x-icon>\r\n <x-icon class=\"x-alert-icon\" *ngSwitchCase=\"'loading'\" type=\"fto-loader\" [spin]=\"true\"></x-icon>\r\n </ng-container>\r\n </ng-template>\r\n <div class=\"x-alert-inner\">\r\n <span class=\"x-alert-title\" cdkDragHandle [class.x-bold]=\"title && content\">\r\n <ng-container *xOutlet=\"title; context: { $iconTpl: iconTpl }\">{{ title }}</ng-container>\r\n </span>\r\n <div class=\"x-alert-content\" *ngIf=\"content\">\r\n <ng-container *xOutlet=\"content; context: { $iconTpl: iconTpl }\">{{ content }}</ng-container>\r\n </div>\r\n <x-button\r\n *ngIf=\"!hideClose\"\r\n class=\"x-alert-close\"\r\n size=\"small\"\r\n [icon]=\"!closeText ? 'fto-x' : ''\"\r\n [onlyIcon]=\"!closeText\"\r\n [type]=\"closeText ? 'text' : 'initial'\"\r\n (click)=\"onClose()\"\r\n closable\r\n >{{ closeText }}</x-button\r\n >\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XAlertComponent } from './alert.component';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XAlertProperty } from './alert.property';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n@NgModule({\r\n declarations: [XAlertComponent, XAlertProperty],\r\n exports: [XAlertComponent],\r\n imports: [CommonModule, DragDropModule, XIconModule, XButtonModule, XOutletModule]\r\n})\r\nexport class XAlertModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -450,8 +450,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
450
450
|
args: [{
|
|
451
451
|
declarations: [XAutoCompleteComponent, XAutoCompletePortalComponent, XAutoCompleteProperty],
|
|
452
452
|
exports: [XAutoCompleteComponent, XAutoCompletePortalComponent],
|
|
453
|
-
imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule]
|
|
454
|
-
entryComponents: [XAutoCompletePortalComponent]
|
|
453
|
+
imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule]
|
|
455
454
|
}]
|
|
456
455
|
}] });
|
|
457
456
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-auto-complete.mjs","sources":["../../../../lib/ng-nest/ui/auto-complete/auto-complete.property.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.module.ts","../../../../lib/ng-nest/ui/auto-complete/ng-nest-ui-auto-complete.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XDataConvert,\r\n XData,\r\n XWithConfig,\r\n XPositionTopBottom,\r\n XSize,\r\n XInputBoolean,\r\n XBoolean\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Component, TemplateRef, EventEmitter, Output } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * AutoComplete\r\n * @selector x-auto-complete\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePrefix = 'x-auto-complete';\r\nconst X_CONFIG_NAME = 'autoComplete';\r\n\r\n/**\r\n * AutoComplete Property\r\n */\r\n@Component({ template: '' })\r\nexport class XAutoCompleteProperty extends XControlValueAccessor<any> {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XAutoCompleteNode> = [];\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 200) debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XPositionTopBottom>(X_CONFIG_NAME, 'bottom') placement?: XPositionTopBottom;\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 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) caseSensitive!: XBoolean;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeEmit = new EventEmitter<XAutoCompleteNode>();\r\n}\r\n\r\n/**\r\n * AutoComplete Option\r\n * @undocument true\r\n */\r\nexport interface XAutoCompleteOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XAutoCompleteNode>;\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XPositionTopBottom;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n nodeClick?: (value: XAutoCompleteNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN AutoComplete 数据对象\r\n * @en_US AutoComplete data object\r\n */\r\nexport interface XAutoCompleteNode extends XParentIdentityProperty<XAutoCompleteNode> {}\r\n\r\n/**\r\n * AutoComplete Portal\r\n * @selector x-auto-complete-portal\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePortalPrefix = 'x-auto-complete-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy,\r\n Renderer2,\r\n HostBinding,\r\n HostListener,\r\n ViewChild,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompletePortalPrefix } from './auto-complete.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XConnectBaseAnimation, XNumber, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePortalPrefix}`,\r\n templateUrl: './auto-complete-portal.component.html',\r\n styleUrls: ['./auto-complete-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XAutoCompletePortalComponent implements OnInit, OnDestroy {\r\n @HostBinding('@x-connect-base-animation') public placement!: XPositionTopBottom;\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done(event: { toState: any }) {\r\n this.animating(false);\r\n event.toState === 'void' && this.destroyPortal();\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n this.animating(true);\r\n }\r\n @ViewChild('list') list!: XListComponent;\r\n\r\n data!: XAutoCompleteNode[];\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n dataChange!: Subject<XAutoCompleteNode[]>;\r\n animating!: Function;\r\n destroyPortal!: Function;\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n nodeEmit!: Function;\r\n multiple: XNumber = 1;\r\n nodeTpl!: TemplateRef<any>;\r\n show: boolean = false;\r\n active: number = -1;\r\n inputCom!: XInputComponent;\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public renderer: Renderer2, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.value = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.dataChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.data = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.list.setUnActive(this.active);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.list.keydown(x);\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 stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n nodeClick(node: XAutoCompleteNode) {\r\n this.nodeEmit(node);\r\n }\r\n\r\n onActive(num: number) {\r\n this.active = num;\r\n }\r\n\r\n onTabOut() {\r\n this.closeSubject.next();\r\n }\r\n}\r\n","<div #autoCompletePortal class=\"x-auto-complete-portal\" tabindex=\"-1\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n ></x-list>\r\n</div>\r\n","import { Subject } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompleteProperty, XAutoCompletePrefix } from './auto-complete.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XClearClass,\r\n XConfigService,\r\n XPositionTopBottom,\r\n XIsFunction\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport { Overlay, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePrefix}`,\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XAutoCompleteComponent)]\r\n})\r\nexport class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n @ViewChild('autoComplete', { static: true }) autoComplete!: ElementRef;\r\n\r\n override writeValue(value: any) {\r\n this.value = value;\r\n this.valueChange.next(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n clearable: boolean = false;\r\n enter: boolean = false;\r\n displayValue: any = '';\r\n nodes: XAutoCompleteNode[] = [];\r\n searchNodes: XAutoCompleteNode[] = [];\r\n cloneNodes!: XAutoCompleteNode[];\r\n portal!: XPortalOverlayRef<XAutoCompletePortalComponent>;\r\n icon: string = '';\r\n iconSpin: boolean = false;\r\n box!: DOMRect;\r\n protalHeight!: number;\r\n maxNodes: number = 6;\r\n protalTobottom: boolean = true;\r\n asyncLoading = false;\r\n animating = false;\r\n\r\n override valueTplContext: { $node: any; $isValue: boolean } = { $node: null, $isValue: true };\r\n valueChange: Subject<any> = new Subject();\r\n positionChange: Subject<any> = new Subject();\r\n dataChange: Subject<XAutoCompleteNode[]> = new Subject();\r\n inputChange: Subject<any> = new Subject();\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n private cdr: ChangeDetectorRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.autoComplete.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setClassMap();\r\n this.setSubject();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setData() {\r\n if (XIsObservable(this.data) || XIsFunction(this.data)) return;\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.setPortal();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n this.inputChange.pipe(debounceTime(this.debounceTime as number), distinctUntilChanged(), takeUntil(this._unSubject)).subscribe((x) => {\r\n this.modelChange(x);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.inputChange.next(this.value);\r\n }\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.active = false;\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portal?.overlayRef?.dispose();\r\n }\r\n\r\n showPortal() {\r\n if (XIsEmpty(this.value) || this.disabled || this.iconSpin || this.animating) return;\r\n this.active = true;\r\n if ((XIsObservable(this.data) && this.nodes.length === 0) || XIsFunction(this.data)) {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject, true, this.value).subscribe((x) => {\r\n this.nodes = x;\r\n this.createPortal();\r\n this.icon = '';\r\n this.iconSpin = false;\r\n this.cdr.detectChanges();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n this.nodes.filter((x) => x.selected).map((x) => (x.selected = false));\r\n if (!XIsEmpty(this.value)) {\r\n this.searchNodes = this.nodes.filter((x) => x.label.indexOf(this.value) >= 0);\r\n }\r\n this.box = this.inputCom.inputRef.nativeElement.getBoundingClientRect();\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n width: this.box.width,\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XAutoCompletePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XPositionTopBottom;\r\n place !== this.placement && this.positionChange.next(place);\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal.componentRef;\r\n if (!componentRef) return;\r\n Object.assign(componentRef.instance, {\r\n data: this.searchNodes,\r\n value: this.value,\r\n placement: this.placement,\r\n nodeTpl: this.nodeTpl,\r\n valueChange: this.valueChange,\r\n dataChange: this.dataChange,\r\n positionChange: this.positionChange,\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject,\r\n inputCom: this.inputCom,\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: XAutoCompleteNode) => this.onNodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode | XAutoCompleteNode[]) {\r\n node = node as XAutoCompleteNode;\r\n this.closeSubject.next();\r\n if (this.value === node.label) {\r\n this.nodeEmit.emit(node);\r\n return;\r\n }\r\n this.value = node.label;\r\n this.valueTplContext.$node = node;\r\n this.inputCom.inputFocus();\r\n if (this.onChange) this.onChange(this.value);\r\n this.nodeEmit.emit(node);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom.inputRef,\r\n placement: [this.placement as XPositionTopBottom, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-auto-complete-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portal?.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n modelChange(value: string | number) {\r\n if (this.onChange) this.onChange(value);\r\n if (XIsFunction(this.data)) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject, true, value as any).subscribe((x) => {\r\n this.nodes = x;\r\n this.icon = '';\r\n this.iconSpin = false;\r\n this.dataChange.next(this.nodes);\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n if (this.nodes) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n if (this.caseSensitive) {\r\n this.searchNodes = this.nodes.filter((x) => x.label.indexOf(value) >= 0);\r\n } else {\r\n this.searchNodes = this.nodes.filter((x) => (x.label as string).toLowerCase().indexOf((value as string).toLowerCase()) >= 0);\r\n }\r\n this.dataChange.next(this.searchNodes);\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearEmit() {\r\n this.value = '';\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n this.valueChange.next(this.value);\r\n this.modelChange(this.value);\r\n }\r\n\r\n formControlChanges() {\r\n this.setData();\r\n this.ngOnInit();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n onFocus(_event: Event) {}\r\n\r\n onInput(_event: Event) {\r\n this.inputChange.next(this.value);\r\n }\r\n\r\n onBlur(_event: Event) {}\r\n}\r\n","<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [icon]=\"icon\"\r\n [iconSpin]=\"iconSpin\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"before\"\r\n [after]=\"after\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n [pointer]=\"pointer\"\r\n [(active)]=\"active\"\r\n (clearEmit)=\"clearEmit()\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xBlur)=\"onBlur($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XAutoCompleteComponent } from './auto-complete.component';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XListModule } from '@ng-nest/ui/list';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport { XAutoCompleteProperty } from './auto-complete.property';\r\n\r\n@NgModule({\r\n declarations: [XAutoCompleteComponent, XAutoCompletePortalComponent, XAutoCompleteProperty],\r\n exports: [XAutoCompleteComponent, XAutoCompletePortalComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule],\r\n entryComponents: [XAutoCompletePortalComponent]\r\n})\r\nexport class XAutoCompleteModule {}\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-auto-complete.mjs","sources":["../../../../lib/ng-nest/ui/auto-complete/auto-complete.property.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.module.ts","../../../../lib/ng-nest/ui/auto-complete/ng-nest-ui-auto-complete.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XDataConvert,\r\n XData,\r\n XWithConfig,\r\n XPositionTopBottom,\r\n XSize,\r\n XInputBoolean,\r\n XBoolean\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Component, TemplateRef, EventEmitter, Output } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * AutoComplete\r\n * @selector x-auto-complete\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePrefix = 'x-auto-complete';\r\nconst X_CONFIG_NAME = 'autoComplete';\r\n\r\n/**\r\n * AutoComplete Property\r\n */\r\n@Component({ template: '' })\r\nexport class XAutoCompleteProperty extends XControlValueAccessor<any> {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XAutoCompleteNode> = [];\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 200) debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XPositionTopBottom>(X_CONFIG_NAME, 'bottom') placement?: XPositionTopBottom;\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 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) caseSensitive!: XBoolean;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeEmit = new EventEmitter<XAutoCompleteNode>();\r\n}\r\n\r\n/**\r\n * AutoComplete Option\r\n * @undocument true\r\n */\r\nexport interface XAutoCompleteOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XAutoCompleteNode>;\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XPositionTopBottom;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n nodeClick?: (value: XAutoCompleteNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN AutoComplete 数据对象\r\n * @en_US AutoComplete data object\r\n */\r\nexport interface XAutoCompleteNode extends XParentIdentityProperty<XAutoCompleteNode> {}\r\n\r\n/**\r\n * AutoComplete Portal\r\n * @selector x-auto-complete-portal\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePortalPrefix = 'x-auto-complete-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy,\r\n Renderer2,\r\n HostBinding,\r\n HostListener,\r\n ViewChild,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompletePortalPrefix } from './auto-complete.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XConnectBaseAnimation, XNumber, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePortalPrefix}`,\r\n templateUrl: './auto-complete-portal.component.html',\r\n styleUrls: ['./auto-complete-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XAutoCompletePortalComponent implements OnInit, OnDestroy {\r\n @HostBinding('@x-connect-base-animation') public placement!: XPositionTopBottom;\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done(event: { toState: any }) {\r\n this.animating(false);\r\n event.toState === 'void' && this.destroyPortal();\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n this.animating(true);\r\n }\r\n @ViewChild('list') list!: XListComponent;\r\n\r\n data!: XAutoCompleteNode[];\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n dataChange!: Subject<XAutoCompleteNode[]>;\r\n animating!: Function;\r\n destroyPortal!: Function;\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n nodeEmit!: Function;\r\n multiple: XNumber = 1;\r\n nodeTpl!: TemplateRef<any>;\r\n show: boolean = false;\r\n active: number = -1;\r\n inputCom!: XInputComponent;\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public renderer: Renderer2, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.value = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.dataChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.data = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.list.setUnActive(this.active);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.list.keydown(x);\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 stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n nodeClick(node: XAutoCompleteNode) {\r\n this.nodeEmit(node);\r\n }\r\n\r\n onActive(num: number) {\r\n this.active = num;\r\n }\r\n\r\n onTabOut() {\r\n this.closeSubject.next();\r\n }\r\n}\r\n","<div #autoCompletePortal class=\"x-auto-complete-portal\" tabindex=\"-1\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n ></x-list>\r\n</div>\r\n","import { Subject } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompleteProperty, XAutoCompletePrefix } from './auto-complete.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XClearClass,\r\n XConfigService,\r\n XPositionTopBottom,\r\n XIsFunction\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport { Overlay, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePrefix}`,\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XAutoCompleteComponent)]\r\n})\r\nexport class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n @ViewChild('autoComplete', { static: true }) autoComplete!: ElementRef;\r\n\r\n override writeValue(value: any) {\r\n this.value = value;\r\n this.valueChange.next(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n clearable: boolean = false;\r\n enter: boolean = false;\r\n displayValue: any = '';\r\n nodes: XAutoCompleteNode[] = [];\r\n searchNodes: XAutoCompleteNode[] = [];\r\n cloneNodes!: XAutoCompleteNode[];\r\n portal!: XPortalOverlayRef<XAutoCompletePortalComponent>;\r\n icon: string = '';\r\n iconSpin: boolean = false;\r\n box!: DOMRect;\r\n protalHeight!: number;\r\n maxNodes: number = 6;\r\n protalTobottom: boolean = true;\r\n asyncLoading = false;\r\n animating = false;\r\n\r\n override valueTplContext: { $node: any; $isValue: boolean } = { $node: null, $isValue: true };\r\n valueChange: Subject<any> = new Subject();\r\n positionChange: Subject<any> = new Subject();\r\n dataChange: Subject<XAutoCompleteNode[]> = new Subject();\r\n inputChange: Subject<any> = new Subject();\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n private cdr: ChangeDetectorRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.autoComplete.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setClassMap();\r\n this.setSubject();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setData() {\r\n if (XIsObservable(this.data) || XIsFunction(this.data)) return;\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.setPortal();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n this.inputChange.pipe(debounceTime(this.debounceTime as number), distinctUntilChanged(), takeUntil(this._unSubject)).subscribe((x) => {\r\n this.modelChange(x);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.inputChange.next(this.value);\r\n }\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.active = false;\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portal?.overlayRef?.dispose();\r\n }\r\n\r\n showPortal() {\r\n if (XIsEmpty(this.value) || this.disabled || this.iconSpin || this.animating) return;\r\n this.active = true;\r\n if ((XIsObservable(this.data) && this.nodes.length === 0) || XIsFunction(this.data)) {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject, true, this.value).subscribe((x) => {\r\n this.nodes = x;\r\n this.createPortal();\r\n this.icon = '';\r\n this.iconSpin = false;\r\n this.cdr.detectChanges();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n this.nodes.filter((x) => x.selected).map((x) => (x.selected = false));\r\n if (!XIsEmpty(this.value)) {\r\n this.searchNodes = this.nodes.filter((x) => x.label.indexOf(this.value) >= 0);\r\n }\r\n this.box = this.inputCom.inputRef.nativeElement.getBoundingClientRect();\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n width: this.box.width,\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XAutoCompletePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XPositionTopBottom;\r\n place !== this.placement && this.positionChange.next(place);\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal.componentRef;\r\n if (!componentRef) return;\r\n Object.assign(componentRef.instance, {\r\n data: this.searchNodes,\r\n value: this.value,\r\n placement: this.placement,\r\n nodeTpl: this.nodeTpl,\r\n valueChange: this.valueChange,\r\n dataChange: this.dataChange,\r\n positionChange: this.positionChange,\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject,\r\n inputCom: this.inputCom,\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: XAutoCompleteNode) => this.onNodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode | XAutoCompleteNode[]) {\r\n node = node as XAutoCompleteNode;\r\n this.closeSubject.next();\r\n if (this.value === node.label) {\r\n this.nodeEmit.emit(node);\r\n return;\r\n }\r\n this.value = node.label;\r\n this.valueTplContext.$node = node;\r\n this.inputCom.inputFocus();\r\n if (this.onChange) this.onChange(this.value);\r\n this.nodeEmit.emit(node);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom.inputRef,\r\n placement: [this.placement as XPositionTopBottom, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-auto-complete-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portal?.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n modelChange(value: string | number) {\r\n if (this.onChange) this.onChange(value);\r\n if (XIsFunction(this.data)) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject, true, value as any).subscribe((x) => {\r\n this.nodes = x;\r\n this.icon = '';\r\n this.iconSpin = false;\r\n this.dataChange.next(this.nodes);\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n if (this.nodes) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n if (this.caseSensitive) {\r\n this.searchNodes = this.nodes.filter((x) => x.label.indexOf(value) >= 0);\r\n } else {\r\n this.searchNodes = this.nodes.filter((x) => (x.label as string).toLowerCase().indexOf((value as string).toLowerCase()) >= 0);\r\n }\r\n this.dataChange.next(this.searchNodes);\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearEmit() {\r\n this.value = '';\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n this.valueChange.next(this.value);\r\n this.modelChange(this.value);\r\n }\r\n\r\n formControlChanges() {\r\n this.setData();\r\n this.ngOnInit();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n onFocus(_event: Event) {}\r\n\r\n onInput(_event: Event) {\r\n this.inputChange.next(this.value);\r\n }\r\n\r\n onBlur(_event: Event) {}\r\n}\r\n","<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [icon]=\"icon\"\r\n [iconSpin]=\"iconSpin\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"before\"\r\n [after]=\"after\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n [pointer]=\"pointer\"\r\n [(active)]=\"active\"\r\n (clearEmit)=\"clearEmit()\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xBlur)=\"onBlur($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XAutoCompleteComponent } from './auto-complete.component';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XListModule } from '@ng-nest/ui/list';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport { XAutoCompleteProperty } from './auto-complete.property';\r\n\r\n@NgModule({\r\n declarations: [XAutoCompleteComponent, XAutoCompletePortalComponent, XAutoCompleteProperty],\r\n exports: [XAutoCompleteComponent, XAutoCompletePortalComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule]\r\n})\r\nexport class XAutoCompleteModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -444,8 +444,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
444
444
|
args: [{
|
|
445
445
|
declarations: [XCascadeComponent, XCascadePortalComponent, XCascadeProperty],
|
|
446
446
|
exports: [XCascadeComponent, XCascadePortalComponent],
|
|
447
|
-
imports: [CommonModule, FormsModule, XPortalModule, ReactiveFormsModule, XInputModule, XListModule, XBaseFormModule]
|
|
448
|
-
entryComponents: [XCascadePortalComponent]
|
|
447
|
+
imports: [CommonModule, FormsModule, XPortalModule, ReactiveFormsModule, XInputModule, XListModule, XBaseFormModule]
|
|
449
448
|
}]
|
|
450
449
|
}] });
|
|
451
450
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-cascade.mjs","sources":["../../../../lib/ng-nest/ui/cascade/cascade-portal.component.ts","../../../../lib/ng-nest/ui/cascade/cascade-portal.component.html","../../../../lib/ng-nest/ui/cascade/cascade.property.ts","../../../../lib/ng-nest/ui/cascade/cascade.component.ts","../../../../lib/ng-nest/ui/cascade/cascade.component.html","../../../../lib/ng-nest/ui/cascade/cascade.module.ts","../../../../lib/ng-nest/ui/cascade/ng-nest-ui-cascade.ts"],"sourcesContent":["import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n NgZone,\r\n OnDestroy,\r\n HostBinding,\r\n HostListener,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { XCascadeNode, XCascadeNodeTrigger } from './cascade.property';\r\nimport { XIsEmpty, XConnectBaseAnimation, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { of, Subject } from 'rxjs';\r\nimport { delay, takeUntil } from 'rxjs/operators';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: 'x-cascade-portal',\r\n templateUrl: './cascade-portal.component.html',\r\n styleUrls: ['./cascade-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XCascadePortalComponent implements OnInit, OnDestroy {\r\n @HostBinding('@x-connect-base-animation') public placement!: XPositionTopBottom;\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done(event: { toState: any }) {\r\n this.animating(false);\r\n event.toState === 'void' && this.destroyPortal();\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n this.animating(true);\r\n }\r\n\r\n nodes: XCascadeNode[][] = [];\r\n datas: XCascadeNode[] = [];\r\n selecteds: XCascadeNode[] = [];\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n closePortal!: Function;\r\n destroyPortal!: Function;\r\n animating!: Function;\r\n nodeEmit!: Function;\r\n values: XCascadeNode[] = [];\r\n nodeTpl!: TemplateRef<any>;\r\n nodeTrigger!: XCascadeNodeTrigger;\r\n nodeHoverDelay!: number;\r\n hoverDelayUnSub = new Subject<void>();\r\n inputCom!: XInputComponent;\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public ngZone: NgZone, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.value = x;\r\n this.init();\r\n this.cdr.detectChanges();\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.cdr.detectChanges();\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 init() {\r\n if (!XIsEmpty(this.value)) {\r\n this.setDefault();\r\n } else {\r\n this.values = [];\r\n }\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n setDefault() {\r\n let node = this.datas.find((x) => x.id === this.value) as XCascadeNode;\r\n this.selecteds = [node];\r\n this.nodes = [this.datas.filter((x) => x.pid === node.pid)];\r\n while (!XIsEmpty(node.pid)) {\r\n node = this.datas.find((x) => x.id === node.pid) as XCascadeNode;\r\n this.selecteds = [node, ...this.selecteds];\r\n this.nodes = [this.datas.filter((x) => x.pid === node.pid), ...this.nodes];\r\n }\r\n this.values = this.selecteds.map((x) => x.id) as XCascadeNode[];\r\n }\r\n\r\n nodeMouseenter(node: XCascadeNode) {\r\n of(true)\r\n .pipe(delay(this.nodeHoverDelay), takeUntil(this.hoverDelayUnSub))\r\n .subscribe(() => this.nodeExpansion(node, false));\r\n }\r\n\r\n nodeMouseleave() {\r\n this.hoverDelayUnSub.next();\r\n }\r\n\r\n nodeClick(node: XCascadeNode) {\r\n this.nodeExpansion(node);\r\n }\r\n\r\n nodeExpansion(node: XCascadeNode, click = true) {\r\n const level = Number(node.level);\r\n this.ngZone.run(() => {\r\n if (node.leaf) {\r\n if (this.nodes.length === level) {\r\n this.nodes = [...this.nodes, node.children] as XCascadeNode[][];\r\n this.selecteds = [...this.selecteds, node];\r\n } else {\r\n if (this.nodes.length > Number(level) + 1) {\r\n this.nodes = this.nodes.splice(0, level + 1);\r\n this.selecteds = this.selecteds.splice(0, level + 1);\r\n }\r\n this.nodes[level + 1] = node.children as XCascadeNode[];\r\n this.selecteds[level] = node;\r\n }\r\n this.values = this.selecteds.map((x) => x.id);\r\n this.cdr.detectChanges();\r\n } else if (click) {\r\n if (this.selecteds.length >= level + 1) {\r\n this.selecteds = this.selecteds.splice(0, level);\r\n }\r\n this.selecteds = [...this.selecteds, node];\r\n this.nodeEmit({\r\n node: node,\r\n nodes: this.selecteds,\r\n label: this.selecteds.map((x) => x.label).join(` / `)\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"x-cascade-portal\" tabindex=\"-1\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <ng-container *ngFor=\"let list of nodes\">\r\n <x-list\r\n [data]=\"list\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"values\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (nodeMouseenter)=\"nodeTrigger === 'hover' && nodeMouseenter($event)\"\r\n (nodeMouseleave)=\"nodeTrigger === 'hover' && nodeMouseleave()\"\r\n checked\r\n ></x-list>\r\n </ng-container>\r\n</div>\r\n","import {\r\n XParentIdentityProperty,\r\n XDataConvert,\r\n XData,\r\n XCorner,\r\n XWithConfig,\r\n XSize,\r\n XInputBoolean,\r\n XBoolean,\r\n XTrigger,\r\n XNumber\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Output, EventEmitter, Component, TemplateRef } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * Cascade\r\n * @selector x-cascade\r\n * @decorator component\r\n */\r\nexport const XCascadePrefix = 'x-cascade';\r\nconst X_CONFIG_NAME = 'cascade';\r\n\r\n/**\r\n * Cascade Property\r\n */\r\n@Component({ template: '' })\r\nexport class XCascadeProperty extends XControlValueAccessor<any> implements XCascadeOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XCascadeNode> = [];\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XCorner>(X_CONFIG_NAME, 'bottom-start') placement?: XCorner;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n /**\r\n * @zh_CN 子节点触发方式\r\n * @en_US Sub node triggering method\r\n */\r\n @Input() @XWithConfig<XCascadeNodeTrigger>(X_CONFIG_NAME, 'click') nodeTrigger?: XCascadeNodeTrigger;\r\n /**\r\n * @zh_CN 子节点触发方式为 hover 时的延迟时间\r\n * @en_US Sub node triggering method\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 200) nodeHoverDelay?: XNumber;\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 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeEmit = new EventEmitter<XCascadeNode>();\r\n}\r\n\r\n/**\r\n * Cascade Option\r\n * @undocument true\r\n */\r\nexport interface XCascadeOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XCascadeNode>;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XCorner;\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n nodeClick?: (node: XCascadeNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN Cascade 数据对象\r\n * @en_US Cascade data object\r\n */\r\nexport interface XCascadeNode extends XParentIdentityProperty<XCascadeNode> {}\r\n\r\n/**\r\n * @zh_CN 子节点触发方式\r\n * @en_US Sub node triggering method\r\n */\r\nexport type XCascadeNodeTrigger = XTrigger;\r\n\r\n/**\r\n * Cascade-Portal\r\n * @selector x-cascade-portal\r\n * @decorator component\r\n */\r\nexport const XCascadePortalPrefix = 'x-cascade-portal';\r\n","import { XCascadePortalComponent } from './cascade-portal.component';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XCascadePrefix, XCascadeNode, XCascadeProperty } from './cascade.property';\r\nimport { XIsEmpty, XIsChange, XSetData, XGetChildren, XCorner, XClearClass } from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { Overlay, OverlayConfig, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: 'x-cascade',\r\n templateUrl: './cascade.component.html',\r\n styleUrls: ['./cascade.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XCascadeComponent)]\r\n})\r\nexport class XCascadeComponent extends XCascadeProperty implements OnInit, OnChanges {\r\n @ViewChild('cascade', { static: true }) cascade!: ElementRef;\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n\r\n override writeValue(value: any) {\r\n this.value = value;\r\n this.setDisplayValue();\r\n this.valueChange.next(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n override readonly: boolean = true;\r\n clearable: boolean = false;\r\n enter: boolean = false;\r\n animating = false;\r\n displayValue: any = '';\r\n datas: XCascadeNode[] = [];\r\n nodes: XCascadeNode[] = [];\r\n portal!: XPortalOverlayRef<XCascadePortalComponent>;\r\n icon: string = 'fto-chevron-down';\r\n box!: DOMRect;\r\n protalHeight!: number;\r\n maxNodes: number = 6;\r\n protalTobottom: boolean = true;\r\n override valueTplContext: { $node: any; $nodes: any; $isValue: boolean } = { $node: null, $nodes: null, $isValue: true };\r\n valueChange: Subject<any> = new Subject();\r\n dataChange: Subject<any> = new Subject();\r\n positionChange: Subject<any> = new Subject();\r\n closeSubject: Subject<void> = new Subject();\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private cdr: ChangeDetectorRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay\r\n ) {\r\n super();\r\n this.renderer.addClass(this.elementRef.nativeElement, XCascadePrefix);\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.cascade.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setClassMap();\r\n this.setSubject();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setData() {\r\n XSetData<XCascadeNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.datas = x;\r\n this.nodes = x.filter((y) => XIsEmpty(y.pid)).map((y) => XGetChildren<XCascadeNode>(x, y, 0));\r\n this.setPortal();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n }\r\n\r\n menter() {\r\n if (this.disabled) return;\r\n this.enter = true;\r\n if (!XIsEmpty(this.value)) {\r\n this.icon = '';\r\n this.clearable = true;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n mleave() {\r\n if (this.disabled) return;\r\n this.enter = false;\r\n if (this.clearable) {\r\n this.icon = 'fto-chevron-down';\r\n this.clearable = false;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n clearEmit() {\r\n this.value = '';\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n this.valueTplContext.$nodes = null;\r\n this.mleave();\r\n this.valueChange.next(this.value);\r\n if (this.onChange) this.onChange(this.value);\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.active = false;\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portal?.overlayRef?.dispose();\r\n }\r\n\r\n showPortal() {\r\n if (this.disabled || this.animating) return;\r\n this.active = true;\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XCascadePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XCorner;\r\n if (place !== this.placement) {\r\n this.positionChange.next(place);\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal.componentRef;\r\n if (!componentRef) return;\r\n Object.assign(componentRef.instance, {\r\n datas: this.datas,\r\n nodes: [this.nodes],\r\n value: this.value,\r\n placement: this.placement,\r\n valueChange: this.valueChange,\r\n positionChange: this.positionChange,\r\n nodeTpl: this.nodeTpl,\r\n nodeTrigger: this.nodeTrigger,\r\n nodeHoverDelay: this.nodeHoverDelay,\r\n inputCom: this.inputCom,\r\n closePortal: () => this.closeSubject.next(),\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: { node: XCascadeNode; nodes: XCascadeNode[]; label: string }) => this.onNodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onNodeClick(selected: { node: XCascadeNode; nodes: XCascadeNode[]; label: string }) {\r\n this.value = selected.node.id;\r\n this.displayValue = selected.label;\r\n this.valueTplContext.$node = selected;\r\n this.valueTplContext.$nodes = selected.nodes;\r\n this.closeSubject.next();\r\n this.inputCom.inputFocus();\r\n if (this.onChange) this.onChange(this.value);\r\n this.nodeEmit.emit(selected);\r\n }\r\n\r\n setDisplayValue() {\r\n let node = this.datas.find((x) => x.id === this.value) as XCascadeNode;\r\n if (typeof node === 'undefined') {\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n this.valueTplContext.$nodes = null;\r\n return;\r\n } else {\r\n let selecteds = [node];\r\n while (!XIsEmpty(node.pid)) {\r\n node = this.datas.find((x) => x.id === node.pid) as XCascadeNode;\r\n selecteds = [node, ...selecteds];\r\n }\r\n this.displayValue = selecteds.map((x) => x.label).join(` / `);\r\n this.valueTplContext.$node = node;\r\n this.valueTplContext.$nodes = selecteds;\r\n }\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom.inputRef,\r\n placement: [this.placement as XCorner, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-cascade-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portal?.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n formControlChanges() {\r\n this.ngOnInit();\r\n this.setData();\r\n this.setDisplayValue();\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div #cascade class=\"x-cascade\">\r\n <div class=\"x-cascade-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [icon]=\"icon\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"displayValue\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"before\"\r\n [after]=\"after\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n [pointer]=\"true\"\r\n [(active)]=\"active\"\r\n (clearEmit)=\"clearEmit()\"\r\n (click)=\"showPortal()\"\r\n (xMouseenter)=\"menter()\"\r\n (xMouseleave)=\"mleave()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XCascadeComponent } from './cascade.component';\r\nimport { XCascadePortalComponent } from './cascade-portal.component';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XListModule } from '@ng-nest/ui/list';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XCascadeProperty } from './cascade.property';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\n\r\n@NgModule({\r\n declarations: [XCascadeComponent, XCascadePortalComponent, XCascadeProperty],\r\n exports: [XCascadeComponent, XCascadePortalComponent],\r\n imports: [CommonModule, FormsModule, XPortalModule, ReactiveFormsModule, XInputModule, XListModule, XBaseFormModule],\r\n entryComponents: [XCascadePortalComponent]\r\n})\r\nexport class XCascadeModule {}\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-cascade.mjs","sources":["../../../../lib/ng-nest/ui/cascade/cascade-portal.component.ts","../../../../lib/ng-nest/ui/cascade/cascade-portal.component.html","../../../../lib/ng-nest/ui/cascade/cascade.property.ts","../../../../lib/ng-nest/ui/cascade/cascade.component.ts","../../../../lib/ng-nest/ui/cascade/cascade.component.html","../../../../lib/ng-nest/ui/cascade/cascade.module.ts","../../../../lib/ng-nest/ui/cascade/ng-nest-ui-cascade.ts"],"sourcesContent":["import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n NgZone,\r\n OnDestroy,\r\n HostBinding,\r\n HostListener,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { XCascadeNode, XCascadeNodeTrigger } from './cascade.property';\r\nimport { XIsEmpty, XConnectBaseAnimation, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { of, Subject } from 'rxjs';\r\nimport { delay, takeUntil } from 'rxjs/operators';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: 'x-cascade-portal',\r\n templateUrl: './cascade-portal.component.html',\r\n styleUrls: ['./cascade-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XCascadePortalComponent implements OnInit, OnDestroy {\r\n @HostBinding('@x-connect-base-animation') public placement!: XPositionTopBottom;\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done(event: { toState: any }) {\r\n this.animating(false);\r\n event.toState === 'void' && this.destroyPortal();\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n this.animating(true);\r\n }\r\n\r\n nodes: XCascadeNode[][] = [];\r\n datas: XCascadeNode[] = [];\r\n selecteds: XCascadeNode[] = [];\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n closePortal!: Function;\r\n destroyPortal!: Function;\r\n animating!: Function;\r\n nodeEmit!: Function;\r\n values: XCascadeNode[] = [];\r\n nodeTpl!: TemplateRef<any>;\r\n nodeTrigger!: XCascadeNodeTrigger;\r\n nodeHoverDelay!: number;\r\n hoverDelayUnSub = new Subject<void>();\r\n inputCom!: XInputComponent;\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public ngZone: NgZone, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.value = x;\r\n this.init();\r\n this.cdr.detectChanges();\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.cdr.detectChanges();\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 init() {\r\n if (!XIsEmpty(this.value)) {\r\n this.setDefault();\r\n } else {\r\n this.values = [];\r\n }\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n setDefault() {\r\n let node = this.datas.find((x) => x.id === this.value) as XCascadeNode;\r\n this.selecteds = [node];\r\n this.nodes = [this.datas.filter((x) => x.pid === node.pid)];\r\n while (!XIsEmpty(node.pid)) {\r\n node = this.datas.find((x) => x.id === node.pid) as XCascadeNode;\r\n this.selecteds = [node, ...this.selecteds];\r\n this.nodes = [this.datas.filter((x) => x.pid === node.pid), ...this.nodes];\r\n }\r\n this.values = this.selecteds.map((x) => x.id) as XCascadeNode[];\r\n }\r\n\r\n nodeMouseenter(node: XCascadeNode) {\r\n of(true)\r\n .pipe(delay(this.nodeHoverDelay), takeUntil(this.hoverDelayUnSub))\r\n .subscribe(() => this.nodeExpansion(node, false));\r\n }\r\n\r\n nodeMouseleave() {\r\n this.hoverDelayUnSub.next();\r\n }\r\n\r\n nodeClick(node: XCascadeNode) {\r\n this.nodeExpansion(node);\r\n }\r\n\r\n nodeExpansion(node: XCascadeNode, click = true) {\r\n const level = Number(node.level);\r\n this.ngZone.run(() => {\r\n if (node.leaf) {\r\n if (this.nodes.length === level) {\r\n this.nodes = [...this.nodes, node.children] as XCascadeNode[][];\r\n this.selecteds = [...this.selecteds, node];\r\n } else {\r\n if (this.nodes.length > Number(level) + 1) {\r\n this.nodes = this.nodes.splice(0, level + 1);\r\n this.selecteds = this.selecteds.splice(0, level + 1);\r\n }\r\n this.nodes[level + 1] = node.children as XCascadeNode[];\r\n this.selecteds[level] = node;\r\n }\r\n this.values = this.selecteds.map((x) => x.id);\r\n this.cdr.detectChanges();\r\n } else if (click) {\r\n if (this.selecteds.length >= level + 1) {\r\n this.selecteds = this.selecteds.splice(0, level);\r\n }\r\n this.selecteds = [...this.selecteds, node];\r\n this.nodeEmit({\r\n node: node,\r\n nodes: this.selecteds,\r\n label: this.selecteds.map((x) => x.label).join(` / `)\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"x-cascade-portal\" tabindex=\"-1\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <ng-container *ngFor=\"let list of nodes\">\r\n <x-list\r\n [data]=\"list\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"values\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (nodeMouseenter)=\"nodeTrigger === 'hover' && nodeMouseenter($event)\"\r\n (nodeMouseleave)=\"nodeTrigger === 'hover' && nodeMouseleave()\"\r\n checked\r\n ></x-list>\r\n </ng-container>\r\n</div>\r\n","import {\r\n XParentIdentityProperty,\r\n XDataConvert,\r\n XData,\r\n XCorner,\r\n XWithConfig,\r\n XSize,\r\n XInputBoolean,\r\n XBoolean,\r\n XTrigger,\r\n XNumber\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Output, EventEmitter, Component, TemplateRef } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * Cascade\r\n * @selector x-cascade\r\n * @decorator component\r\n */\r\nexport const XCascadePrefix = 'x-cascade';\r\nconst X_CONFIG_NAME = 'cascade';\r\n\r\n/**\r\n * Cascade Property\r\n */\r\n@Component({ template: '' })\r\nexport class XCascadeProperty extends XControlValueAccessor<any> implements XCascadeOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XCascadeNode> = [];\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XCorner>(X_CONFIG_NAME, 'bottom-start') placement?: XCorner;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n /**\r\n * @zh_CN 子节点触发方式\r\n * @en_US Sub node triggering method\r\n */\r\n @Input() @XWithConfig<XCascadeNodeTrigger>(X_CONFIG_NAME, 'click') nodeTrigger?: XCascadeNodeTrigger;\r\n /**\r\n * @zh_CN 子节点触发方式为 hover 时的延迟时间\r\n * @en_US Sub node triggering method\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 200) nodeHoverDelay?: XNumber;\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 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeEmit = new EventEmitter<XCascadeNode>();\r\n}\r\n\r\n/**\r\n * Cascade Option\r\n * @undocument true\r\n */\r\nexport interface XCascadeOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XCascadeNode>;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XCorner;\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n nodeClick?: (node: XCascadeNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN Cascade 数据对象\r\n * @en_US Cascade data object\r\n */\r\nexport interface XCascadeNode extends XParentIdentityProperty<XCascadeNode> {}\r\n\r\n/**\r\n * @zh_CN 子节点触发方式\r\n * @en_US Sub node triggering method\r\n */\r\nexport type XCascadeNodeTrigger = XTrigger;\r\n\r\n/**\r\n * Cascade-Portal\r\n * @selector x-cascade-portal\r\n * @decorator component\r\n */\r\nexport const XCascadePortalPrefix = 'x-cascade-portal';\r\n","import { XCascadePortalComponent } from './cascade-portal.component';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XCascadePrefix, XCascadeNode, XCascadeProperty } from './cascade.property';\r\nimport { XIsEmpty, XIsChange, XSetData, XGetChildren, XCorner, XClearClass } from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { Overlay, OverlayConfig, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: 'x-cascade',\r\n templateUrl: './cascade.component.html',\r\n styleUrls: ['./cascade.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XCascadeComponent)]\r\n})\r\nexport class XCascadeComponent extends XCascadeProperty implements OnInit, OnChanges {\r\n @ViewChild('cascade', { static: true }) cascade!: ElementRef;\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n\r\n override writeValue(value: any) {\r\n this.value = value;\r\n this.setDisplayValue();\r\n this.valueChange.next(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n override readonly: boolean = true;\r\n clearable: boolean = false;\r\n enter: boolean = false;\r\n animating = false;\r\n displayValue: any = '';\r\n datas: XCascadeNode[] = [];\r\n nodes: XCascadeNode[] = [];\r\n portal!: XPortalOverlayRef<XCascadePortalComponent>;\r\n icon: string = 'fto-chevron-down';\r\n box!: DOMRect;\r\n protalHeight!: number;\r\n maxNodes: number = 6;\r\n protalTobottom: boolean = true;\r\n override valueTplContext: { $node: any; $nodes: any; $isValue: boolean } = { $node: null, $nodes: null, $isValue: true };\r\n valueChange: Subject<any> = new Subject();\r\n dataChange: Subject<any> = new Subject();\r\n positionChange: Subject<any> = new Subject();\r\n closeSubject: Subject<void> = new Subject();\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private cdr: ChangeDetectorRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay\r\n ) {\r\n super();\r\n this.renderer.addClass(this.elementRef.nativeElement, XCascadePrefix);\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.cascade.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setClassMap();\r\n this.setSubject();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setData() {\r\n XSetData<XCascadeNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.datas = x;\r\n this.nodes = x.filter((y) => XIsEmpty(y.pid)).map((y) => XGetChildren<XCascadeNode>(x, y, 0));\r\n this.setPortal();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n }\r\n\r\n menter() {\r\n if (this.disabled) return;\r\n this.enter = true;\r\n if (!XIsEmpty(this.value)) {\r\n this.icon = '';\r\n this.clearable = true;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n mleave() {\r\n if (this.disabled) return;\r\n this.enter = false;\r\n if (this.clearable) {\r\n this.icon = 'fto-chevron-down';\r\n this.clearable = false;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n clearEmit() {\r\n this.value = '';\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n this.valueTplContext.$nodes = null;\r\n this.mleave();\r\n this.valueChange.next(this.value);\r\n if (this.onChange) this.onChange(this.value);\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.active = false;\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portal?.overlayRef?.dispose();\r\n }\r\n\r\n showPortal() {\r\n if (this.disabled || this.animating) return;\r\n this.active = true;\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XCascadePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XCorner;\r\n if (place !== this.placement) {\r\n this.positionChange.next(place);\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal.componentRef;\r\n if (!componentRef) return;\r\n Object.assign(componentRef.instance, {\r\n datas: this.datas,\r\n nodes: [this.nodes],\r\n value: this.value,\r\n placement: this.placement,\r\n valueChange: this.valueChange,\r\n positionChange: this.positionChange,\r\n nodeTpl: this.nodeTpl,\r\n nodeTrigger: this.nodeTrigger,\r\n nodeHoverDelay: this.nodeHoverDelay,\r\n inputCom: this.inputCom,\r\n closePortal: () => this.closeSubject.next(),\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: { node: XCascadeNode; nodes: XCascadeNode[]; label: string }) => this.onNodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onNodeClick(selected: { node: XCascadeNode; nodes: XCascadeNode[]; label: string }) {\r\n this.value = selected.node.id;\r\n this.displayValue = selected.label;\r\n this.valueTplContext.$node = selected;\r\n this.valueTplContext.$nodes = selected.nodes;\r\n this.closeSubject.next();\r\n this.inputCom.inputFocus();\r\n if (this.onChange) this.onChange(this.value);\r\n this.nodeEmit.emit(selected);\r\n }\r\n\r\n setDisplayValue() {\r\n let node = this.datas.find((x) => x.id === this.value) as XCascadeNode;\r\n if (typeof node === 'undefined') {\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n this.valueTplContext.$nodes = null;\r\n return;\r\n } else {\r\n let selecteds = [node];\r\n while (!XIsEmpty(node.pid)) {\r\n node = this.datas.find((x) => x.id === node.pid) as XCascadeNode;\r\n selecteds = [node, ...selecteds];\r\n }\r\n this.displayValue = selecteds.map((x) => x.label).join(` / `);\r\n this.valueTplContext.$node = node;\r\n this.valueTplContext.$nodes = selecteds;\r\n }\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom.inputRef,\r\n placement: [this.placement as XCorner, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-cascade-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portal?.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n formControlChanges() {\r\n this.ngOnInit();\r\n this.setData();\r\n this.setDisplayValue();\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div #cascade class=\"x-cascade\">\r\n <div class=\"x-cascade-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [icon]=\"icon\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"displayValue\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"before\"\r\n [after]=\"after\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n [pointer]=\"true\"\r\n [(active)]=\"active\"\r\n (clearEmit)=\"clearEmit()\"\r\n (click)=\"showPortal()\"\r\n (xMouseenter)=\"menter()\"\r\n (xMouseleave)=\"mleave()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XCascadeComponent } from './cascade.component';\r\nimport { XCascadePortalComponent } from './cascade-portal.component';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XListModule } from '@ng-nest/ui/list';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XCascadeProperty } from './cascade.property';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\n\r\n@NgModule({\r\n declarations: [XCascadeComponent, XCascadePortalComponent, XCascadeProperty],\r\n exports: [XCascadeComponent, XCascadePortalComponent],\r\n imports: [CommonModule, FormsModule, XPortalModule, ReactiveFormsModule, XInputModule, XListModule, XBaseFormModule]\r\n})\r\nexport class XCascadeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|