@ng-nest/ui 20.1.4 → 20.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/attachments/index.d.ts +277 -0
  2. package/auto-complete/index.d.ts +1 -0
  3. package/card/index.d.ts +12 -2
  4. package/checkbox/index.d.ts +1 -1
  5. package/core/index.d.ts +50 -2
  6. package/coversations/index.d.ts +29 -7
  7. package/dropdown/index.d.ts +30 -8
  8. package/fesm2022/ng-nest-ui-attachments.mjs +331 -0
  9. package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -0
  10. package/fesm2022/ng-nest-ui-auto-complete.mjs +3 -0
  11. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  12. package/fesm2022/ng-nest-ui-bubble.mjs +2 -2
  13. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  14. package/fesm2022/ng-nest-ui-card.mjs +11 -5
  15. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  16. package/fesm2022/ng-nest-ui-core.mjs +29 -1
  17. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  18. package/fesm2022/ng-nest-ui-coversations.mjs +26 -3
  19. package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
  20. package/fesm2022/ng-nest-ui-dropdown.mjs +160 -38
  21. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-examples.mjs +2 -2
  23. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-image.mjs +2 -2
  25. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  26. package/fesm2022/ng-nest-ui-list.mjs +48 -14
  27. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  28. package/fesm2022/ng-nest-ui-loading.mjs +13 -3
  29. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  30. package/fesm2022/ng-nest-ui-message.mjs +20 -20
  31. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  32. package/fesm2022/ng-nest-ui-progress.mjs +24 -3
  33. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  34. package/fesm2022/ng-nest-ui-prompts.mjs +103 -0
  35. package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -0
  36. package/fesm2022/ng-nest-ui-select.mjs +3 -0
  37. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  38. package/fesm2022/ng-nest-ui-sender.mjs +6 -5
  39. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  40. package/fesm2022/ng-nest-ui-suggestion.mjs +110 -0
  41. package/fesm2022/ng-nest-ui-suggestion.mjs.map +1 -0
  42. package/fesm2022/ng-nest-ui-table.mjs +2 -2
  43. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  44. package/fesm2022/ng-nest-ui-thought-chain.mjs +121 -0
  45. package/fesm2022/ng-nest-ui-thought-chain.mjs.map +1 -0
  46. package/fesm2022/ng-nest-ui-timeline.mjs +27 -5
  47. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  48. package/fesm2022/ng-nest-ui-upload.mjs +205 -11
  49. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  50. package/fesm2022/ng-nest-ui-welcome.mjs +84 -0
  51. package/fesm2022/ng-nest-ui-welcome.mjs.map +1 -0
  52. package/fesm2022/ng-nest-ui.mjs +5 -0
  53. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  54. package/index.d.ts +5 -0
  55. package/list/index.d.ts +43 -21
  56. package/loading/index.d.ts +17 -1
  57. package/message/index.d.ts +1 -1
  58. package/package.json +89 -69
  59. package/progress/index.d.ts +7 -1
  60. package/prompts/index.d.ts +103 -0
  61. package/radio/index.d.ts +1 -1
  62. package/select/index.d.ts +1 -0
  63. package/sender/index.d.ts +1 -0
  64. package/suggestion/index.d.ts +96 -0
  65. package/thought-chain/index.d.ts +107 -0
  66. package/timeline/index.d.ts +35 -19
  67. package/upload/index.d.ts +39 -2
  68. package/welcome/index.d.ts +65 -0
@@ -1,10 +1,10 @@
1
1
  import * as _angular_cdk_overlay from '@angular/cdk/overlay';
2
2
  import { Overlay, OverlayRef, OverlayConfig } from '@angular/cdk/overlay';
3
3
  import * as _angular_core from '@angular/core';
4
- import { ViewContainerRef, ComponentRef, OnInit, OnDestroy, ElementRef } from '@angular/core';
4
+ import { ViewContainerRef, ComponentRef, OnInit, OnDestroy, ElementRef, SimpleChanges } from '@angular/core';
5
5
  import * as _ng_nest_ui_core from '@ng-nest/ui/core';
6
6
  import { XDataArray, XTrigger, XPlacement, XBoolean, XNumber, XSize, XPositionTopBottom } from '@ng-nest/ui/core';
7
- import { XListNode } from '@ng-nest/ui/list';
7
+ import { XListNode, XListComponent } from '@ng-nest/ui/list';
8
8
  import { Subject } from 'rxjs';
9
9
  import { XPortalOverlayRef, XPortalService } from '@ng-nest/ui/portal';
10
10
 
@@ -71,6 +71,11 @@ declare class XDropdownProperty extends XDropdownProperty_base {
71
71
  * @en_US Hover delay trigger time, only trigger is the 'hover'
72
72
  */
73
73
  readonly hoverDelay: _angular_core.InputSignalWithTransform<number, XNumber>;
74
+ /**
75
+ * @zh_CN visible 参数控制显示/隐藏
76
+ * @en_US visible parameter controls display/hide
77
+ */
78
+ readonly visible: _angular_core.ModelSignal<boolean | null>;
74
79
  /**
75
80
  * @zh_CN 当前激活的菜单
76
81
  * @en_US The currently activated menu
@@ -87,7 +92,7 @@ declare class XDropdownProperty extends XDropdownProperty_base {
87
92
  */
88
93
  readonly nodeClick: _angular_core.OutputEmitterRef<XDropdownNode>;
89
94
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XDropdownProperty, never>;
90
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<XDropdownProperty, "x-dropdown-property", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "children": { "alias": "children"; "required": false; "isSignal": true; }; "portalMinWidth": { "alias": "portalMinWidth"; "required": false; "isSignal": true; }; "portalMaxWidth": { "alias": "portalMaxWidth"; "required": false; "isSignal": true; }; "portalMinHeight": { "alias": "portalMinHeight"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "hoverDelay": { "alias": "hoverDelay"; "required": false; "isSignal": true; }; "activatedId": { "alias": "activatedId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "activatedId": "activatedIdChange"; "nodeClick": "nodeClick"; }, never, never, true, never>;
95
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XDropdownProperty, "x-dropdown-property", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "children": { "alias": "children"; "required": false; "isSignal": true; }; "portalMinWidth": { "alias": "portalMinWidth"; "required": false; "isSignal": true; }; "portalMaxWidth": { "alias": "portalMaxWidth"; "required": false; "isSignal": true; }; "portalMinHeight": { "alias": "portalMinHeight"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "hoverDelay": { "alias": "hoverDelay"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "activatedId": { "alias": "activatedId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; "activatedId": "activatedIdChange"; "nodeClick": "nodeClick"; }, never, never, true, never>;
91
96
  }
92
97
  /**
93
98
  * @zh_CN Dropdown 数据对象
@@ -119,20 +124,27 @@ declare class XDropdownPortalComponent {
119
124
  maxWidth: _angular_core.InputSignal<string | undefined>;
120
125
  minHeight: _angular_core.InputSignal<string | undefined>;
121
126
  maxHeight: _angular_core.InputSignal<string | undefined>;
127
+ level: _angular_core.InputSignal<number>;
128
+ parentPortalComponent: _angular_core.InputSignal<XDropdownPortalComponent | undefined>;
129
+ isKeyboardControlled: _angular_core.ModelSignal<boolean>;
122
130
  closed: _angular_core.OutputEmitterRef<void>;
123
131
  animating: _angular_core.OutputEmitterRef<boolean>;
124
132
  nodeClick: _angular_core.OutputEmitterRef<XDropdownNode>;
125
133
  portalHover: _angular_core.OutputEmitterRef<boolean>;
126
134
  portal: XPortalOverlayRef<XDropdownPortalComponent>;
127
135
  node: _angular_core.WritableSignal<XDropdownNode | null>;
128
- openNode: _angular_core.WritableSignal<XDropdownNode | null>;
129
136
  timeoutHide: any;
137
+ list: _angular_core.Signal<XListComponent>;
130
138
  portalPlacement: _angular_core.WritableSignal<XPositionTopBottom | null>;
131
139
  childAnimating: _angular_core.WritableSignal<boolean>;
132
140
  activatedId: _angular_core.ModelSignal<any>;
133
141
  destroy: _angular_core.WritableSignal<boolean>;
142
+ closeSubject: Subject<void>;
143
+ keydownSubject: Subject<KeyboardEvent>;
144
+ active: _angular_core.WritableSignal<number>;
134
145
  private unSubject;
135
146
  private destroyRef;
147
+ activatedIdComputed: _angular_core.Signal<any>;
136
148
  mouseenter(): void;
137
149
  mouseleave(): void;
138
150
  portalService: XPortalService;
@@ -142,6 +154,7 @@ declare class XDropdownPortalComponent {
142
154
  portalOverlayRef: _angular_core.WritableSignal<OverlayRef | null>;
143
155
  constructor();
144
156
  ngOnInit(): void;
157
+ ngAfterViewInit(): void;
145
158
  onNodeClick(node: XDropdownNode): void;
146
159
  portalAttached(): boolean | undefined;
147
160
  closePortal(): boolean;
@@ -150,11 +163,14 @@ declare class XDropdownPortalComponent {
150
163
  setInstance(): void;
151
164
  hover(hover: boolean): void;
152
165
  setPlacement(): _angular_cdk_overlay.PositionStrategy;
166
+ showPortal(node: XDropdownNode): void;
153
167
  onEnter(node: XDropdownNode): void;
154
168
  onLeave(): void;
155
- changeOpenNode(open: boolean): void;
169
+ onActive(num: number): void;
170
+ onTabOut(): void;
171
+ findPathById(nodes: XDropdownNode[], id: number, currentPath?: XDropdownNode[]): XDropdownNode[] | null;
156
172
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XDropdownPortalComponent, never>;
157
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<XDropdownPortalComponent, "x-dropdown-portal", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "activatedId": { "alias": "activatedId"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "animating": "animating"; "nodeClick": "nodeClick"; "portalHover": "portalHover"; "activatedId": "activatedIdChange"; }, never, never, true, never>;
173
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XDropdownPortalComponent, "x-dropdown-portal", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "parentPortalComponent": { "alias": "parentPortalComponent"; "required": false; "isSignal": true; }; "isKeyboardControlled": { "alias": "isKeyboardControlled"; "required": false; "isSignal": true; }; "activatedId": { "alias": "activatedId"; "required": false; "isSignal": true; }; }, { "isKeyboardControlled": "isKeyboardControlledChange"; "closed": "closed"; "animating": "animating"; "nodeClick": "nodeClick"; "portalHover": "portalHover"; "activatedId": "activatedIdChange"; }, never, never, true, never>;
158
174
  }
159
175
 
160
176
  declare class XDropdownComponent extends XDropdownProperty implements OnInit, OnDestroy {
@@ -166,28 +182,34 @@ declare class XDropdownComponent extends XDropdownProperty implements OnInit, On
166
182
  nodes: _angular_core.Signal<XDropdownNode[]>;
167
183
  portal: XPortalOverlayRef<XDropdownPortalComponent>;
168
184
  timeoutHide: any;
169
- visible: _angular_core.WritableSignal<boolean>;
170
185
  animating: _angular_core.WritableSignal<boolean>;
186
+ visibleClass: _angular_core.WritableSignal<boolean>;
171
187
  outsideClick: _angular_core.WritableSignal<boolean>;
188
+ isClickNodeLeaf: _angular_core.WritableSignal<boolean>;
172
189
  minWidth: _angular_core.WritableSignal<string>;
173
190
  hoverDelayUnsub: Subject<void>;
174
191
  closeSubject: Subject<void>;
192
+ keydownSubject: Subject<KeyboardEvent>;
193
+ isNullVisible: _angular_core.WritableSignal<boolean>;
175
194
  private realPlacement;
176
195
  portalComponent: _angular_core.WritableSignal<ComponentRef<XDropdownPortalComponent> | null>;
177
196
  portalOverlayRef: _angular_core.WritableSignal<OverlayRef | null>;
178
197
  constructor();
179
198
  ngOnInit(): void;
199
+ ngOnChanges(changes: SimpleChanges): void;
180
200
  ngOnDestroy(): void;
201
+ setVisible(): void;
181
202
  setSubject(): void;
182
203
  onEnter(): void;
183
204
  onLeave(): void;
184
- showPortal(): void;
205
+ onClickShow(): void;
185
206
  portalAttached(): boolean | undefined;
186
207
  closePortal(): boolean;
187
208
  createPortal(): void;
188
209
  setPosition(config: OverlayConfig): void;
189
210
  setInstance(): void;
190
211
  portalHover(hover: boolean): void;
212
+ onKeydown($event: KeyboardEvent): void;
191
213
  setPlacement(): _angular_cdk_overlay.PositionStrategy;
192
214
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XDropdownComponent, never>;
193
215
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<XDropdownComponent, "x-dropdown", never, {}, {}, never, ["*"], true, never>;
@@ -0,0 +1,331 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, Component, ChangeDetectionStrategy, ViewEncapsulation, computed, NgModule } from '@angular/core';
3
+ import { XToBoolean, XToNumber, XPropertyFunction, XIsString, XFileSize, XIsEmpty } from '@ng-nest/ui/core';
4
+ import { XFormControlFunction, XValueAccessor } from '@ng-nest/ui/base-form';
5
+ import { XUploadComponent } from '@ng-nest/ui/upload';
6
+ import * as i1 from '@angular/forms';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { XOutletDirective } from '@ng-nest/ui/outlet';
9
+ import { XIconComponent } from '@ng-nest/ui/icon';
10
+ import { NgClass } from '@angular/common';
11
+ import { XImageComponent } from '@ng-nest/ui/image';
12
+
13
+ /**
14
+ * Attachments
15
+ * @selector x-attachments
16
+ * @decorator component
17
+ */
18
+ const XAttachmentsPrefix = 'x-attachments';
19
+ const X_ATTACHMENTS_CONFIG_NAME = 'attachments';
20
+ /**
21
+ * Attachments Property
22
+ */
23
+ class XAttachmentsProperty extends XFormControlFunction(X_ATTACHMENTS_CONFIG_NAME) {
24
+ constructor() {
25
+ super(...arguments);
26
+ /**
27
+ * @zh_CN 请求地址
28
+ * @en_US Request address
29
+ */
30
+ this.action = input(...(ngDevMode ? [undefined, { debugName: "action" }] : []));
31
+ /**
32
+ * @zh_CN 可拖拽上传的区域
33
+ * @en_US Drag and drop upload area
34
+ */
35
+ this.dropContainer = input(...(ngDevMode ? [undefined, { debugName: "dropContainer" }] : []));
36
+ /**
37
+ * @zh_CN 可拖拽上传的区域的图标
38
+ * @en_US Drag and drop upload area icon
39
+ */
40
+ this.dropIcon = input(...(ngDevMode ? [undefined, { debugName: "dropIcon" }] : []));
41
+ /**
42
+ * @zh_CN 可拖拽上传的区域的标题
43
+ * @en_US Drag and drop upload area title
44
+ */
45
+ this.dropTitle = input(...(ngDevMode ? [undefined, { debugName: "dropTitle" }] : []));
46
+ /**
47
+ * @zh_CN 可拖拽上传的区域的描述
48
+ * @en_US Drag and drop upload area description
49
+ */
50
+ this.dropDescription = input(...(ngDevMode ? [undefined, { debugName: "dropDescription" }] : []));
51
+ /**
52
+ * @zh_CN 直接显示可拖拽上传的区域
53
+ * @en_US Show the drag and drop upload area directly
54
+ */
55
+ this.showDrop = input(false, ...(ngDevMode ? [{ debugName: "showDrop", transform: XToBoolean }] : [{ transform: XToBoolean }]));
56
+ /**
57
+ * @zh_CN 上传文件类型,与原生的 input file 组件一致
58
+ * @en_US Upload file type, consistent with native input file component
59
+ */
60
+ this.accept = input(...(ngDevMode ? [undefined, { debugName: "accept" }] : []));
61
+ /**
62
+ * @zh_CN 文件显示类型
63
+ * @en_US File display type
64
+ */
65
+ this.type = input('list', ...(ngDevMode ? [{ debugName: "type" }] : []));
66
+ /**
67
+ * @zh_CN 图片类型下面加载失败显示
68
+ * @en_US Photo type below loading failed display
69
+ */
70
+ this.imgFallback = input(...(ngDevMode ? [undefined, { debugName: "imgFallback" }] : []));
71
+ /**
72
+ * @zh_CN 图片剪裁
73
+ * @en_US Picture cropping
74
+ */
75
+ this.imgCut = input(false, ...(ngDevMode ? [{ debugName: "imgCut", transform: XToBoolean }] : [{ transform: XToBoolean }]));
76
+ /**
77
+ * @zh_CN 多文件上传
78
+ * @en_US Multiple file upload
79
+ */
80
+ this.multiple = input(false, ...(ngDevMode ? [{ debugName: "multiple", transform: XToBoolean }] : [{ transform: XToBoolean }]));
81
+ /**
82
+ * @zh_CN 点击下载
83
+ * @en_US click download
84
+ */
85
+ this.download = input(this.config?.download ?? true, ...(ngDevMode ? [{ debugName: "download", transform: XToBoolean }] : [{ transform: XToBoolean }]));
86
+ /**
87
+ * @zh_CN 多次上传的模式,cover 覆盖现有, add 继续添加
88
+ * @en_US For many upload mode, 'cover' covers the existing, 'add' continue to add
89
+ */
90
+ this.multipleModel = input(this.config?.multipleModel ?? 'cover', ...(ngDevMode ? [{ debugName: "multipleModel" }] : []));
91
+ /**
92
+ * @zh_CN 文件列表自定义显示模板
93
+ * @en_US File list custom display template
94
+ */
95
+ this.filesTpl = input(...(ngDevMode ? [undefined, { debugName: "filesTpl" }] : []));
96
+ /**
97
+ * @zh_CN 限制单次上传文件个数,只有开启多文件上传 multiple 时生效,默认不做限制
98
+ * @en_US Limit the number of files uploaded files. Do not restrict the default
99
+ */
100
+ this.maxLimit = input(-1, ...(ngDevMode ? [{ debugName: "maxLimit", transform: XToNumber }] : [{ transform: XToNumber }]));
101
+ /**
102
+ * @zh_CN 设置上传的请求头部
103
+ * @en_US Set the upload request header
104
+ */
105
+ this.headers = input(...(ngDevMode ? [undefined, { debugName: "headers" }] : []));
106
+ /**
107
+ * @zh_CN 删除按钮的事件
108
+ * @en_US Delete button event
109
+ */
110
+ this.removeClick = output();
111
+ /**
112
+ * @zh_CN 开始上传事件
113
+ * @en_US Start upload event
114
+ */
115
+ this.uploadReady = output();
116
+ /**
117
+ * @zh_CN 正在上传事件
118
+ * @en_US Start upload event
119
+ */
120
+ this.uploading = output();
121
+ /**
122
+ * @zh_CN 上传成功事件
123
+ * @en_US Start upload event
124
+ */
125
+ this.uploadSuccess = output();
126
+ /**
127
+ * @zh_CN 上传失败事件
128
+ * @en_US Start upload event
129
+ */
130
+ this.uploadError = output();
131
+ }
132
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAttachmentsProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
133
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.0", type: XAttachmentsProperty, isStandalone: true, selector: "x-attachments-property", inputs: { action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, dropContainer: { classPropertyName: "dropContainer", publicName: "dropContainer", isSignal: true, isRequired: false, transformFunction: null }, dropIcon: { classPropertyName: "dropIcon", publicName: "dropIcon", isSignal: true, isRequired: false, transformFunction: null }, dropTitle: { classPropertyName: "dropTitle", publicName: "dropTitle", isSignal: true, isRequired: false, transformFunction: null }, dropDescription: { classPropertyName: "dropDescription", publicName: "dropDescription", isSignal: true, isRequired: false, transformFunction: null }, showDrop: { classPropertyName: "showDrop", publicName: "showDrop", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, imgFallback: { classPropertyName: "imgFallback", publicName: "imgFallback", isSignal: true, isRequired: false, transformFunction: null }, imgCut: { classPropertyName: "imgCut", publicName: "imgCut", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, download: { classPropertyName: "download", publicName: "download", isSignal: true, isRequired: false, transformFunction: null }, multipleModel: { classPropertyName: "multipleModel", publicName: "multipleModel", isSignal: true, isRequired: false, transformFunction: null }, filesTpl: { classPropertyName: "filesTpl", publicName: "filesTpl", isSignal: true, isRequired: false, transformFunction: null }, maxLimit: { classPropertyName: "maxLimit", publicName: "maxLimit", isSignal: true, isRequired: false, transformFunction: null }, headers: { classPropertyName: "headers", publicName: "headers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removeClick: "removeClick", uploadReady: "uploadReady", uploading: "uploading", uploadSuccess: "uploadSuccess", uploadError: "uploadError" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
134
+ }
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAttachmentsProperty, decorators: [{
136
+ type: Component,
137
+ args: [{ selector: `${XAttachmentsPrefix}-property`, template: '' }]
138
+ }] });
139
+ /**
140
+ * FileCard
141
+ * @selector x-file-card
142
+ * @decorator component
143
+ */
144
+ const XFileCardPrefix = 'x-file-card';
145
+ const X_FILE_CARD_CONFIG_NAME = 'fileCard';
146
+ /**
147
+ * FileCard Property
148
+ */
149
+ class XFileCardProperty extends XPropertyFunction(X_FILE_CARD_CONFIG_NAME) {
150
+ constructor() {
151
+ super(...arguments);
152
+ /**
153
+ * @zh_CN 图标
154
+ * @en_US Icon
155
+ */
156
+ this.icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
157
+ /**
158
+ * @zh_CN 图标颜色
159
+ * @en_US Icon color
160
+ */
161
+ this.iconColor = input(...(ngDevMode ? [undefined, { debugName: "iconColor" }] : []));
162
+ /**
163
+ * @zh_CN 文件名
164
+ * @en_US File name
165
+ */
166
+ this.name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
167
+ /**
168
+ * @zh_CN 文件大小
169
+ * @en_US File size
170
+ */
171
+ this.size = input(0, ...(ngDevMode ? [{ debugName: "size", transform: XToNumber }] : [{ transform: XToNumber }]));
172
+ /**
173
+ * @zh_CN 文件描述
174
+ * @en_US File description
175
+ */
176
+ this.description = input(...(ngDevMode ? [undefined, { debugName: "description" }] : []));
177
+ /**
178
+ * @zh_CN 文件类型
179
+ * @en_US File type
180
+ */
181
+ this.type = input('file', ...(ngDevMode ? [{ debugName: "type" }] : []));
182
+ /**
183
+ * @zh_CN 文件/图片链接地址
184
+ * @en_US File/image url
185
+ */
186
+ this.url = input(...(ngDevMode ? [undefined, { debugName: "url" }] : []));
187
+ /**
188
+ * @zh_CN 形态变体
189
+ * @en_US Bubble variant
190
+ */
191
+ this.variant = input(this.config?.variant ?? 'outlined', ...(ngDevMode ? [{ debugName: "variant" }] : []));
192
+ }
193
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XFileCardProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
194
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.0", type: XFileCardProperty, isStandalone: true, selector: "x-file-card-property", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
195
+ }
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XFileCardProperty, decorators: [{
197
+ type: Component,
198
+ args: [{ selector: `${XFileCardPrefix}-property`, template: '' }]
199
+ }] });
200
+
201
+ class XAttachmentsComponent extends XAttachmentsProperty {
202
+ valueChange(value) {
203
+ this.onChange && this.onChange(value);
204
+ }
205
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAttachmentsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
206
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: XAttachmentsComponent, isStandalone: true, selector: "x-attachments", providers: [XValueAccessor(XAttachmentsComponent)], usesInheritance: true, ngImport: i0, template: "<div class=\"x-attachments\">\r\n <x-upload\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"valueChange($event)\"\r\n [action]=\"action()\"\r\n [dropContainer]=\"dropContainer()\"\r\n [dropIcon]=\"dropIcon()\"\r\n [dropTitle]=\"dropTitle()\"\r\n [dropDescription]=\"dropDescription()\"\r\n [showDrop]=\"showDrop()\"\r\n [text]=\"textTpl\"\r\n [accept]=\"accept()\"\r\n [type]=\"type()\"\r\n [imgFallback]=\"imgFallback()\"\r\n [imgCut]=\"imgCut()\"\r\n [multiple]=\"multiple()\"\r\n [download]=\"download()\"\r\n [multipleModel]=\"multipleModel()\"\r\n [filesTpl]=\"filesTpl() ?? innerfilesTpl\"\r\n [maxLimit]=\"maxLimit()\"\r\n [headers]=\"headers()\"\r\n (removeClick)=\"removeClick.emit($event)\"\r\n (uploadReady)=\"uploadReady.emit($event)\"\r\n (uploading)=\"uploading.emit($event)\"\r\n (uploadSuccess)=\"uploadSuccess.emit($event)\"\r\n (uploadError)=\"uploadError.emit($event)\"\r\n ></x-upload>\r\n <ng-template #textTpl>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #innerfilesTpl></ng-template>\r\n</div>\r\n", styles: [".x-attachments{margin:0;padding:0}.x-attachments{width:100%;height:100%}.x-attachments-title{color:var(--x-text-400);margin-bottom:.5rem}.x-attachments-list{display:flex;gap:.5rem;overflow-x:auto;scrollbar-width:none;list-style:none;padding-inline-start:0;margin-block:0;align-items:stretch}.x-attachments-vertical .x-attachments-list{flex-direction:column;align-items:flex-start}.x-attachments-wrap .x-attachments-list{flex-wrap:wrap}.x-attachments-item{flex:none;min-width:10rem;display:inline-flex;gap:.5rem;padding:.5rem 1rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);transition:all var(--x-animation-duration-base);cursor:pointer}.x-attachments-item:hover:not(.x-disabled){background-color:var(--x-background-a200)}.x-attachments-item.x-disabled{cursor:default;background-color:var(--x-background-a300)}.x-attachments-item-content{flex:1;display:flex;flex-direction:column;gap:.25rem}.x-attachments-item-label{margin:0;font-weight:600}.x-attachments-item-description{color:var(--x-text-400)}.x-attachments-item-only-label{font-weight:500}.x-attachments-item-only-description{color:currentColor}x-attachments{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: XUploadComponent, selector: "x-upload" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
207
+ }
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAttachmentsComponent, decorators: [{
209
+ type: Component,
210
+ args: [{ selector: 'x-attachments', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, XUploadComponent], providers: [XValueAccessor(XAttachmentsComponent)], template: "<div class=\"x-attachments\">\r\n <x-upload\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"valueChange($event)\"\r\n [action]=\"action()\"\r\n [dropContainer]=\"dropContainer()\"\r\n [dropIcon]=\"dropIcon()\"\r\n [dropTitle]=\"dropTitle()\"\r\n [dropDescription]=\"dropDescription()\"\r\n [showDrop]=\"showDrop()\"\r\n [text]=\"textTpl\"\r\n [accept]=\"accept()\"\r\n [type]=\"type()\"\r\n [imgFallback]=\"imgFallback()\"\r\n [imgCut]=\"imgCut()\"\r\n [multiple]=\"multiple()\"\r\n [download]=\"download()\"\r\n [multipleModel]=\"multipleModel()\"\r\n [filesTpl]=\"filesTpl() ?? innerfilesTpl\"\r\n [maxLimit]=\"maxLimit()\"\r\n [headers]=\"headers()\"\r\n (removeClick)=\"removeClick.emit($event)\"\r\n (uploadReady)=\"uploadReady.emit($event)\"\r\n (uploading)=\"uploading.emit($event)\"\r\n (uploadSuccess)=\"uploadSuccess.emit($event)\"\r\n (uploadError)=\"uploadError.emit($event)\"\r\n ></x-upload>\r\n <ng-template #textTpl>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #innerfilesTpl></ng-template>\r\n</div>\r\n", styles: [".x-attachments{margin:0;padding:0}.x-attachments{width:100%;height:100%}.x-attachments-title{color:var(--x-text-400);margin-bottom:.5rem}.x-attachments-list{display:flex;gap:.5rem;overflow-x:auto;scrollbar-width:none;list-style:none;padding-inline-start:0;margin-block:0;align-items:stretch}.x-attachments-vertical .x-attachments-list{flex-direction:column;align-items:flex-start}.x-attachments-wrap .x-attachments-list{flex-wrap:wrap}.x-attachments-item{flex:none;min-width:10rem;display:inline-flex;gap:.5rem;padding:.5rem 1rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);transition:all var(--x-animation-duration-base);cursor:pointer}.x-attachments-item:hover:not(.x-disabled){background-color:var(--x-background-a200)}.x-attachments-item.x-disabled{cursor:default;background-color:var(--x-background-a300)}.x-attachments-item-content{flex:1;display:flex;flex-direction:column;gap:.25rem}.x-attachments-item-label{margin:0;font-weight:600}.x-attachments-item-description{color:var(--x-text-400)}.x-attachments-item-only-label{font-weight:500}.x-attachments-item-only-description{color:currentColor}x-attachments{display:block;width:100%;height:100%}\n"] }]
211
+ }] });
212
+
213
+ const defaultIcon = {
214
+ xlsx: 'adf-file-excel',
215
+ xls: 'adf-file-excel',
216
+ docx: 'adf-file-word',
217
+ doc: 'adf-file-word',
218
+ ppt: 'adf-file-ppt',
219
+ pptx: 'adf-file-ppt',
220
+ pdf: 'adf-file-pdf',
221
+ zip: 'adf-file-zip',
222
+ rar: 'adf-file-zip',
223
+ '7z': 'adf-file-zip',
224
+ png: 'adf-file-image',
225
+ jpg: 'adf-file-image',
226
+ jpeg: 'adf-file-image',
227
+ gif: 'adf-file-image',
228
+ bmp: 'adf-file-image',
229
+ md: 'adf-file-markdown',
230
+ txt: 'adf-file-text',
231
+ mp4: 'adf-video-camera',
232
+ avi: 'adf-video-camera',
233
+ mkv: 'adf-video-camera',
234
+ mov: 'adf-video-camera',
235
+ mp3: 'adf-audio',
236
+ wav: 'adf-audio',
237
+ flac: 'adf-audio',
238
+ default: 'adf-file'
239
+ };
240
+ const defaultIconColors = {
241
+ 'adf-file-excel': '#217346',
242
+ 'adf-file-word': '#2b579a',
243
+ 'adf-file-ppt': '#d24726',
244
+ 'adf-file-pdf': '#dc3545',
245
+ 'adf-file-zip': '#6c757d',
246
+ 'adf-file-image': '#ffc107',
247
+ 'adf-file-markdown': '#000000',
248
+ 'adf-file-text': '#6c757d',
249
+ 'adf-video-camera': '#ff6b6b',
250
+ 'adf-audio': '#007bff',
251
+ 'adf-file': '#6c757d'
252
+ };
253
+ class XFileCardComponent extends XFileCardProperty {
254
+ constructor() {
255
+ super(...arguments);
256
+ this.iconString = computed(() => {
257
+ if (XIsString(this.icon())) {
258
+ return this.icon();
259
+ }
260
+ else {
261
+ return '';
262
+ }
263
+ }, ...(ngDevMode ? [{ debugName: "iconString" }] : []));
264
+ this.descriptionString = computed(() => {
265
+ if (XIsString(this.description())) {
266
+ return this.description();
267
+ }
268
+ else {
269
+ return '';
270
+ }
271
+ }, ...(ngDevMode ? [{ debugName: "descriptionString" }] : []));
272
+ this.sizeTransform = computed(() => {
273
+ if (this.size() && this.size() !== 0) {
274
+ return XFileSize(this.size(), { precision: 0 });
275
+ }
276
+ else {
277
+ return '';
278
+ }
279
+ }, ...(ngDevMode ? [{ debugName: "sizeTransform" }] : []));
280
+ this.nameSubfix = computed(() => {
281
+ const name = this.name();
282
+ const index = name.lastIndexOf('.');
283
+ return index > -1 ? name.substring(index + 1).toLowerCase() : '';
284
+ }, ...(ngDevMode ? [{ debugName: "nameSubfix" }] : []));
285
+ this.defaultIcon = computed(() => {
286
+ console.log(this.nameSubfix());
287
+ if (Object.keys(defaultIcon).includes(this.nameSubfix())) {
288
+ return defaultIcon[this.nameSubfix()];
289
+ }
290
+ else {
291
+ return defaultIcon['default'];
292
+ }
293
+ }, ...(ngDevMode ? [{ debugName: "defaultIcon" }] : []));
294
+ this.defaultColor = computed(() => {
295
+ return defaultIconColors[this.defaultIcon()];
296
+ }, ...(ngDevMode ? [{ debugName: "defaultColor" }] : []));
297
+ this.classMap = computed(() => ({
298
+ [`${XFileCardPrefix}-${this.variant()}`]: !XIsEmpty(this.variant())
299
+ }), ...(ngDevMode ? [{ debugName: "classMap" }] : []));
300
+ this.isImage = computed(() => {
301
+ const imageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'bmp'];
302
+ return imageExtensions.includes(this.nameSubfix().toLowerCase());
303
+ }, ...(ngDevMode ? [{ debugName: "isImage" }] : []));
304
+ }
305
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XFileCardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
306
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: XFileCardComponent, isStandalone: true, selector: "x-file-card", usesInheritance: true, ngImport: i0, template: "<div class=\"x-file-card\" [ngClass]=\"classMap()\" [class.x-file-card-image]=\"isImage() && !!url()\">\r\n @if (isImage() && !!url()) {\r\n <x-image width=\"100px\" height=\"100px\" [src]=\"url()\" [alt]=\"descriptionString()\"></x-image>\r\n } @else {\r\n @if (icon()) {\r\n <div class=\"x-file-card-icon\">\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"iconString()\" [style.color]=\"iconColor()\"></x-icon>\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <div class=\"x-file-card-icon\">\r\n <x-icon [type]=\"defaultIcon()\" [style.color]=\"iconColor() ?? defaultColor()\"></x-icon>\r\n </div>\r\n }\r\n <div class=\"x-file-card-content\">\r\n @if (name()) {\r\n <div class=\"x-file-card-name\">\r\n <ng-container *xOutlet=\"name()\">{{ name() }}</ng-container>\r\n </div>\r\n }\r\n @if (size()) {\r\n <div class=\"x-file-card-size\">\r\n {{ sizeTransform() }}\r\n </div>\r\n }\r\n @if (description()) {\r\n <div class=\"x-file-card-description\">\r\n <ng-container *xOutlet=\"description()\">{{ description() }}</ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: ["x-file-card{width:100%;height:100%}.x-file-card{margin:0;padding:0}.x-file-card{position:relative;box-sizing:border-box;display:inline-flex;flex-wrap:nowrap;gap:var(--x-padding-small);padding:var(--x-padding-mini) var(--x-padding-medium);align-items:center;border-radius:var(--x-border-radius);word-break:break-word;min-width:14rem}.x-file-card-image{padding:0;min-width:initial}.x-file-card-icon x-icon{font-size:2.5rem}.x-file-card-outlined{border:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-file-card-filled{background-color:var(--x-background-a200)}.x-file-card-shadow{box-shadow:var(--x-box-shadow)}.x-file-card-size,.x-file-card-description{color:var(--x-text-400)}\n"], dependencies: [{ kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XImageComponent, selector: "x-image" }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
307
+ }
308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XFileCardComponent, decorators: [{
309
+ type: Component,
310
+ args: [{ selector: 'x-file-card', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [XOutletDirective, XImageComponent, XIconComponent, NgClass], template: "<div class=\"x-file-card\" [ngClass]=\"classMap()\" [class.x-file-card-image]=\"isImage() && !!url()\">\r\n @if (isImage() && !!url()) {\r\n <x-image width=\"100px\" height=\"100px\" [src]=\"url()\" [alt]=\"descriptionString()\"></x-image>\r\n } @else {\r\n @if (icon()) {\r\n <div class=\"x-file-card-icon\">\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"iconString()\" [style.color]=\"iconColor()\"></x-icon>\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <div class=\"x-file-card-icon\">\r\n <x-icon [type]=\"defaultIcon()\" [style.color]=\"iconColor() ?? defaultColor()\"></x-icon>\r\n </div>\r\n }\r\n <div class=\"x-file-card-content\">\r\n @if (name()) {\r\n <div class=\"x-file-card-name\">\r\n <ng-container *xOutlet=\"name()\">{{ name() }}</ng-container>\r\n </div>\r\n }\r\n @if (size()) {\r\n <div class=\"x-file-card-size\">\r\n {{ sizeTransform() }}\r\n </div>\r\n }\r\n @if (description()) {\r\n <div class=\"x-file-card-description\">\r\n <ng-container *xOutlet=\"description()\">{{ description() }}</ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: ["x-file-card{width:100%;height:100%}.x-file-card{margin:0;padding:0}.x-file-card{position:relative;box-sizing:border-box;display:inline-flex;flex-wrap:nowrap;gap:var(--x-padding-small);padding:var(--x-padding-mini) var(--x-padding-medium);align-items:center;border-radius:var(--x-border-radius);word-break:break-word;min-width:14rem}.x-file-card-image{padding:0;min-width:initial}.x-file-card-icon x-icon{font-size:2.5rem}.x-file-card-outlined{border:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-file-card-filled{background-color:var(--x-background-a200)}.x-file-card-shadow{box-shadow:var(--x-box-shadow)}.x-file-card-size,.x-file-card-description{color:var(--x-text-400)}\n"] }]
311
+ }] });
312
+
313
+ class XAttachmentsModule {
314
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAttachmentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
315
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: XAttachmentsModule, imports: [XAttachmentsComponent, XFileCardComponent], exports: [XAttachmentsComponent, XFileCardComponent] }); }
316
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAttachmentsModule, imports: [XAttachmentsComponent, XFileCardComponent] }); }
317
+ }
318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAttachmentsModule, decorators: [{
319
+ type: NgModule,
320
+ args: [{
321
+ exports: [XAttachmentsComponent, XFileCardComponent],
322
+ imports: [XAttachmentsComponent, XFileCardComponent]
323
+ }]
324
+ }] });
325
+
326
+ /**
327
+ * Generated bundle index. Do not edit.
328
+ */
329
+
330
+ export { XAttachmentsComponent, XAttachmentsModule, XAttachmentsPrefix, XAttachmentsProperty, XFileCardComponent, XFileCardPrefix, XFileCardProperty, X_FILE_CARD_CONFIG_NAME };
331
+ //# sourceMappingURL=ng-nest-ui-attachments.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-nest-ui-attachments.mjs","sources":["../../../../lib/ng-nest/ui/attachments/attachments.property.ts","../../../../lib/ng-nest/ui/attachments/attachments.component.ts","../../../../lib/ng-nest/ui/attachments/attachments.component.html","../../../../lib/ng-nest/ui/attachments/file-card.component.ts","../../../../lib/ng-nest/ui/attachments/file-card.component.html","../../../../lib/ng-nest/ui/attachments/attachments.module.ts","../../../../lib/ng-nest/ui/attachments/ng-nest-ui-attachments.ts"],"sourcesContent":["import { Component, ElementRef, input, output } from '@angular/core';\r\nimport { XBoolean, XNumber, XPropertyFunction, XTemplate, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { XUploadMultipleModel, XUploadNode, XUploadType } from '@ng-nest/ui/upload';\r\nimport { XFormControlFunction } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * Attachments\r\n * @selector x-attachments\r\n * @decorator component\r\n */\r\nexport const XAttachmentsPrefix = 'x-attachments';\r\nconst X_ATTACHMENTS_CONFIG_NAME = 'attachments';\r\n\r\n/**\r\n * Attachments Property\r\n */\r\n@Component({ selector: `${XAttachmentsPrefix}-property`, template: '' })\r\nexport class XAttachmentsProperty extends XFormControlFunction(X_ATTACHMENTS_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 请求地址\r\n * @en_US Request address\r\n */\r\n readonly action = input<string>();\r\n /**\r\n * @zh_CN 可拖拽上传的区域\r\n * @en_US Drag and drop upload area\r\n */\r\n readonly dropContainer = input<ElementRef | HTMLElement>();\r\n /**\r\n * @zh_CN 可拖拽上传的区域的图标\r\n * @en_US Drag and drop upload area icon\r\n */\r\n readonly dropIcon = input<XTemplate>();\r\n /**\r\n * @zh_CN 可拖拽上传的区域的标题\r\n * @en_US Drag and drop upload area title\r\n */\r\n readonly dropTitle = input<XTemplate>();\r\n /**\r\n * @zh_CN 可拖拽上传的区域的描述\r\n * @en_US Drag and drop upload area description\r\n */\r\n readonly dropDescription = input<XTemplate>();\r\n /**\r\n * @zh_CN 直接显示可拖拽上传的区域\r\n * @en_US Show the drag and drop upload area directly\r\n */\r\n readonly showDrop = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 上传文件类型,与原生的 input file 组件一致\r\n * @en_US Upload file type, consistent with native input file component\r\n */\r\n readonly accept = input<string>();\r\n /**\r\n * @zh_CN 文件显示类型\r\n * @en_US File display type\r\n */\r\n readonly type = input<XUploadType>('list');\r\n /**\r\n * @zh_CN 图片类型下面加载失败显示\r\n * @en_US Photo type below loading failed display\r\n */\r\n readonly imgFallback = input<string>();\r\n /**\r\n * @zh_CN 图片剪裁\r\n * @en_US Picture cropping\r\n */\r\n readonly imgCut = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 多文件上传\r\n * @en_US Multiple file upload\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 点击下载\r\n * @en_US click download\r\n */\r\n readonly download = input<boolean, XBoolean>(this.config?.download ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 多次上传的模式,cover 覆盖现有, add 继续添加\r\n * @en_US For many upload mode, 'cover' covers the existing, 'add' continue to add\r\n */\r\n readonly multipleModel = input<XUploadMultipleModel>(this.config?.multipleModel ?? 'cover');\r\n /**\r\n * @zh_CN 文件列表自定义显示模板\r\n * @en_US File list custom display template\r\n */\r\n readonly filesTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 限制单次上传文件个数,只有开启多文件上传 multiple 时生效,默认不做限制\r\n * @en_US Limit the number of files uploaded files. Do not restrict the default\r\n */\r\n readonly maxLimit = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 设置上传的请求头部\r\n * @en_US Set the upload request header\r\n */\r\n readonly headers = input<{ [key: string]: any }>();\r\n /**\r\n * @zh_CN 删除按钮的事件\r\n * @en_US Delete button event\r\n */\r\n readonly removeClick = output<{ file: XUploadNode; index: number }>();\r\n /**\r\n * @zh_CN 开始上传事件\r\n * @en_US Start upload event\r\n */\r\n readonly uploadReady = output<XUploadNode>();\r\n /**\r\n * @zh_CN 正在上传事件\r\n * @en_US Start upload event\r\n */\r\n readonly uploading = output<XUploadNode>();\r\n /**\r\n * @zh_CN 上传成功事件\r\n * @en_US Start upload event\r\n */\r\n readonly uploadSuccess = output<XUploadNode>();\r\n /**\r\n * @zh_CN 上传失败事件\r\n * @en_US Start upload event\r\n */\r\n readonly uploadError = output<XUploadNode>();\r\n}\r\n\r\n/**\r\n * FileCard\r\n * @selector x-file-card\r\n * @decorator component\r\n */\r\nexport const XFileCardPrefix = 'x-file-card';\r\nexport const X_FILE_CARD_CONFIG_NAME = 'fileCard';\r\n\r\n/**\r\n * FileCard Property\r\n */\r\n@Component({ selector: `${XFileCardPrefix}-property`, template: '' })\r\nexport class XFileCardProperty extends XPropertyFunction(X_FILE_CARD_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = input<XTemplate>();\r\n /**\r\n * @zh_CN 图标颜色\r\n * @en_US Icon color\r\n */\r\n readonly iconColor = input<string>();\r\n /**\r\n * @zh_CN 文件名\r\n * @en_US File name\r\n */\r\n readonly name = input<XTemplate>();\r\n /**\r\n * @zh_CN 文件大小\r\n * @en_US File size\r\n */\r\n readonly size = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 文件描述\r\n * @en_US File description\r\n */\r\n readonly description = input<XTemplate>();\r\n /**\r\n * @zh_CN 文件类型\r\n * @en_US File type\r\n */\r\n readonly type = input<XFileCard>('file');\r\n /**\r\n * @zh_CN 文件/图片链接地址\r\n * @en_US File/image url\r\n */\r\n readonly url = input<string>();\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Bubble variant\r\n */\r\n readonly variant = input<XFileCardVariant>(this.config?.variant ?? 'outlined');\r\n}\r\n\r\n/**\r\n * @zh_CN 文件卡片类型\r\n * @en_US File card type\r\n */\r\nexport type XFileCard = 'file' | 'img';\r\n\r\n/**\r\n * @zh_CN 形态变体\r\n * @en_US Bubble variant\r\n */\r\nexport type XFileCardVariant = 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { XAttachmentsProperty } from './attachments.property';\r\nimport { XUploadComponent } from '@ng-nest/ui/upload';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: 'x-attachments',\r\n templateUrl: './attachments.component.html',\r\n styleUrls: ['./attachments.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FormsModule, XUploadComponent],\r\n providers: [XValueAccessor(XAttachmentsComponent)]\r\n})\r\nexport class XAttachmentsComponent extends XAttachmentsProperty {\r\n valueChange(value: any) {\r\n this.onChange && this.onChange(value);\r\n }\r\n}\r\n","<div class=\"x-attachments\">\r\n <x-upload\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"valueChange($event)\"\r\n [action]=\"action()\"\r\n [dropContainer]=\"dropContainer()\"\r\n [dropIcon]=\"dropIcon()\"\r\n [dropTitle]=\"dropTitle()\"\r\n [dropDescription]=\"dropDescription()\"\r\n [showDrop]=\"showDrop()\"\r\n [text]=\"textTpl\"\r\n [accept]=\"accept()\"\r\n [type]=\"type()\"\r\n [imgFallback]=\"imgFallback()\"\r\n [imgCut]=\"imgCut()\"\r\n [multiple]=\"multiple()\"\r\n [download]=\"download()\"\r\n [multipleModel]=\"multipleModel()\"\r\n [filesTpl]=\"filesTpl() ?? innerfilesTpl\"\r\n [maxLimit]=\"maxLimit()\"\r\n [headers]=\"headers()\"\r\n (removeClick)=\"removeClick.emit($event)\"\r\n (uploadReady)=\"uploadReady.emit($event)\"\r\n (uploading)=\"uploading.emit($event)\"\r\n (uploadSuccess)=\"uploadSuccess.emit($event)\"\r\n (uploadError)=\"uploadError.emit($event)\"\r\n ></x-upload>\r\n <ng-template #textTpl>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n <ng-template #innerfilesTpl></ng-template>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed } from '@angular/core';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XFileCardPrefix, XFileCardProperty } from './attachments.property';\r\nimport { XFileSize, XIsEmpty, XIsString } from '@ng-nest/ui/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { XImageComponent } from '@ng-nest/ui/image';\r\n\r\nconst defaultIcon: { [key: string]: string } = {\r\n xlsx: 'adf-file-excel',\r\n xls: 'adf-file-excel',\r\n docx: 'adf-file-word',\r\n doc: 'adf-file-word',\r\n ppt: 'adf-file-ppt',\r\n pptx: 'adf-file-ppt',\r\n pdf: 'adf-file-pdf',\r\n zip: 'adf-file-zip',\r\n rar: 'adf-file-zip',\r\n '7z': 'adf-file-zip',\r\n png: 'adf-file-image',\r\n jpg: 'adf-file-image',\r\n jpeg: 'adf-file-image',\r\n gif: 'adf-file-image',\r\n bmp: 'adf-file-image',\r\n md: 'adf-file-markdown',\r\n txt: 'adf-file-text',\r\n mp4: 'adf-video-camera',\r\n avi: 'adf-video-camera',\r\n mkv: 'adf-video-camera',\r\n mov: 'adf-video-camera',\r\n mp3: 'adf-audio',\r\n wav: 'adf-audio',\r\n flac: 'adf-audio',\r\n default: 'adf-file'\r\n};\r\n\r\nconst defaultIconColors: { [key: string]: string } = {\r\n 'adf-file-excel': '#217346',\r\n 'adf-file-word': '#2b579a',\r\n 'adf-file-ppt': '#d24726',\r\n 'adf-file-pdf': '#dc3545',\r\n 'adf-file-zip': '#6c757d',\r\n 'adf-file-image': '#ffc107',\r\n 'adf-file-markdown': '#000000',\r\n 'adf-file-text': '#6c757d',\r\n 'adf-video-camera': '#ff6b6b',\r\n 'adf-audio': '#007bff',\r\n 'adf-file': '#6c757d'\r\n};\r\n\r\n@Component({\r\n selector: 'x-file-card',\r\n templateUrl: './file-card.component.html',\r\n styleUrl: './file-card.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [XOutletDirective, XImageComponent, XIconComponent, NgClass]\r\n})\r\nexport class XFileCardComponent extends XFileCardProperty {\r\n iconString = computed(() => {\r\n if (XIsString(this.icon())) {\r\n return this.icon() as string;\r\n } else {\r\n return '';\r\n }\r\n });\r\n descriptionString = computed(() => {\r\n if (XIsString(this.description())) {\r\n return this.description() as string;\r\n } else {\r\n return '';\r\n }\r\n });\r\n sizeTransform = computed(() => {\r\n if (this.size() && this.size() !== 0) {\r\n return XFileSize(this.size(), { precision: 0 });\r\n } else {\r\n return '';\r\n }\r\n });\r\n nameSubfix = computed(() => {\r\n const name = this.name() as string;\r\n const index = name.lastIndexOf('.');\r\n return index > -1 ? name.substring(index + 1).toLowerCase() : '';\r\n });\r\n defaultIcon = computed(() => {\r\n console.log(this.nameSubfix());\r\n if (Object.keys(defaultIcon).includes(this.nameSubfix())) {\r\n return defaultIcon[this.nameSubfix()];\r\n } else {\r\n return defaultIcon['default'];\r\n }\r\n });\r\n defaultColor = computed(() => {\r\n return defaultIconColors[this.defaultIcon()];\r\n });\r\n classMap = computed(() => ({\r\n [`${XFileCardPrefix}-${this.variant()}`]: !XIsEmpty(this.variant())\r\n }));\r\n isImage = computed(() => {\r\n const imageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'bmp'];\r\n return imageExtensions.includes(this.nameSubfix().toLowerCase());\r\n });\r\n}\r\n","<div class=\"x-file-card\" [ngClass]=\"classMap()\" [class.x-file-card-image]=\"isImage() && !!url()\">\r\n @if (isImage() && !!url()) {\r\n <x-image width=\"100px\" height=\"100px\" [src]=\"url()\" [alt]=\"descriptionString()\"></x-image>\r\n } @else {\r\n @if (icon()) {\r\n <div class=\"x-file-card-icon\">\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"iconString()\" [style.color]=\"iconColor()\"></x-icon>\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <div class=\"x-file-card-icon\">\r\n <x-icon [type]=\"defaultIcon()\" [style.color]=\"iconColor() ?? defaultColor()\"></x-icon>\r\n </div>\r\n }\r\n <div class=\"x-file-card-content\">\r\n @if (name()) {\r\n <div class=\"x-file-card-name\">\r\n <ng-container *xOutlet=\"name()\">{{ name() }}</ng-container>\r\n </div>\r\n }\r\n @if (size()) {\r\n <div class=\"x-file-card-size\">\r\n {{ sizeTransform() }}\r\n </div>\r\n }\r\n @if (description()) {\r\n <div class=\"x-file-card-description\">\r\n <ng-container *xOutlet=\"description()\">{{ description() }}</ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAttachmentsComponent } from './attachments.component';\r\nimport { XFileCardComponent } from './file-card.component';\r\n\r\n@NgModule({\r\n exports: [XAttachmentsComponent, XFileCardComponent],\r\n imports: [XAttachmentsComponent, XFileCardComponent]\r\n})\r\nexport class XAttachmentsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -266,6 +266,9 @@ class XAutoCompletePortalComponent {
266
266
  this.unSubject.complete();
267
267
  });
268
268
  }
269
+ ngAfterViewInit() {
270
+ this.list().keyManager.setFirstItemActive();
271
+ }
269
272
  stopPropagation(event) {
270
273
  event.stopPropagation();
271
274
  }