@ng-nest/ui 13.1.2 → 13.1.3

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 (194) hide show
  1. package/core/config/config.d.ts +5 -0
  2. package/date-picker/picker-date.component.d.ts +1 -1
  3. package/empty/empty.component.d.ts +1 -1
  4. package/esm2020/core/config/config.mjs +1 -1
  5. package/esm2020/date-picker/picker-date.component.mjs +2 -2
  6. package/esm2020/dialog/dialog.component.mjs +6 -4
  7. package/esm2020/empty/empty.component.mjs +2 -2
  8. package/esm2020/i18n/i18n.property.mjs +1 -1
  9. package/esm2020/i18n/languages/ar_EG.mjs +7 -1
  10. package/esm2020/i18n/languages/bg_BG.mjs +7 -1
  11. package/esm2020/i18n/languages/ca_ES.mjs +7 -1
  12. package/esm2020/i18n/languages/cs_CZ.mjs +7 -1
  13. package/esm2020/i18n/languages/da_DK.mjs +7 -1
  14. package/esm2020/i18n/languages/de_DE.mjs +7 -1
  15. package/esm2020/i18n/languages/el_GR.mjs +7 -1
  16. package/esm2020/i18n/languages/en_GB.mjs +7 -1
  17. package/esm2020/i18n/languages/en_US.mjs +7 -1
  18. package/esm2020/i18n/languages/es_ES.mjs +7 -1
  19. package/esm2020/i18n/languages/et_EE.mjs +7 -1
  20. package/esm2020/i18n/languages/fa_IR.mjs +7 -1
  21. package/esm2020/i18n/languages/fi_FI.mjs +7 -1
  22. package/esm2020/i18n/languages/fr_BE.mjs +7 -1
  23. package/esm2020/i18n/languages/fr_FR.mjs +7 -1
  24. package/esm2020/i18n/languages/he_IL.mjs +7 -1
  25. package/esm2020/i18n/languages/hi_IN.mjs +7 -1
  26. package/esm2020/i18n/languages/hr_HR.mjs +7 -1
  27. package/esm2020/i18n/languages/hu_HU.mjs +7 -1
  28. package/esm2020/i18n/languages/hy_AM.mjs +7 -1
  29. package/esm2020/i18n/languages/id_ID.mjs +7 -1
  30. package/esm2020/i18n/languages/is_IS.mjs +7 -1
  31. package/esm2020/i18n/languages/it_IT.mjs +7 -1
  32. package/esm2020/i18n/languages/ja_JP.mjs +7 -1
  33. package/esm2020/i18n/languages/ka_GE.mjs +7 -1
  34. package/esm2020/i18n/languages/kn_IN.mjs +7 -1
  35. package/esm2020/i18n/languages/ko_KR.mjs +7 -1
  36. package/esm2020/i18n/languages/ku_IQ.mjs +7 -1
  37. package/esm2020/i18n/languages/lv_LV.mjs +7 -1
  38. package/esm2020/i18n/languages/mn_MN.mjs +7 -1
  39. package/esm2020/i18n/languages/ms_MY.mjs +7 -1
  40. package/esm2020/i18n/languages/nb_NO.mjs +7 -1
  41. package/esm2020/i18n/languages/ne_NP.mjs +7 -1
  42. package/esm2020/i18n/languages/nl_BE.mjs +7 -1
  43. package/esm2020/i18n/languages/nl_NL.mjs +7 -1
  44. package/esm2020/i18n/languages/pl_PL.mjs +7 -1
  45. package/esm2020/i18n/languages/pt_BR.mjs +7 -1
  46. package/esm2020/i18n/languages/pt_PT.mjs +7 -1
  47. package/esm2020/i18n/languages/ro_RO.mjs +7 -1
  48. package/esm2020/i18n/languages/ru_RU.mjs +7 -1
  49. package/esm2020/i18n/languages/sk_SK.mjs +7 -1
  50. package/esm2020/i18n/languages/sl_SI.mjs +7 -1
  51. package/esm2020/i18n/languages/sr_RS.mjs +7 -1
  52. package/esm2020/i18n/languages/sv_SE.mjs +7 -1
  53. package/esm2020/i18n/languages/ta_IN.mjs +7 -1
  54. package/esm2020/i18n/languages/th_TH.mjs +7 -1
  55. package/esm2020/i18n/languages/tr_TR.mjs +7 -1
  56. package/esm2020/i18n/languages/uk_UA.mjs +7 -1
  57. package/esm2020/i18n/languages/vi_VN.mjs +7 -1
  58. package/esm2020/i18n/languages/zh_CN.mjs +7 -1
  59. package/esm2020/i18n/languages/zh_TW.mjs +7 -1
  60. package/esm2020/list/list.component.mjs +55 -13
  61. package/esm2020/list/list.module.mjs +5 -1
  62. package/esm2020/list/list.property.mjs +22 -4
  63. package/esm2020/page-header/page-header.component.mjs +2 -2
  64. package/esm2020/pagination/pagination.component.mjs +2 -2
  65. package/esm2020/rate/rate.component.mjs +21 -4
  66. package/esm2020/rate/rate.property.mjs +9 -3
  67. package/esm2020/resizable/resizable.directive.mjs +64 -32
  68. package/esm2020/resizable/resizable.property.mjs +1 -1
  69. package/esm2020/select/select-portal.component.mjs +26 -9
  70. package/esm2020/select/select.component.mjs +15 -3
  71. package/esm2020/select/select.module.mjs +5 -4
  72. package/esm2020/select/select.property.mjs +12 -2
  73. package/esm2020/text-retract/text-retract.component.mjs +2 -2
  74. package/esm2020/upload/upload.component.mjs +13 -9
  75. package/esm2020/upload/upload.property.mjs +30 -2
  76. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  77. package/fesm2015/ng-nest-ui-date-picker.mjs +1 -1
  78. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  79. package/fesm2015/ng-nest-ui-dialog.mjs +5 -3
  80. package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
  81. package/fesm2015/ng-nest-ui-empty.mjs +1 -1
  82. package/fesm2015/ng-nest-ui-empty.mjs.map +1 -1
  83. package/fesm2015/ng-nest-ui-i18n.mjs +306 -0
  84. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  85. package/fesm2015/ng-nest-ui-list.mjs +77 -13
  86. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  87. package/fesm2015/ng-nest-ui-page-header.mjs +1 -1
  88. package/fesm2015/ng-nest-ui-page-header.mjs.map +1 -1
  89. package/fesm2015/ng-nest-ui-pagination.mjs +1 -1
  90. package/fesm2015/ng-nest-ui-pagination.mjs.map +1 -1
  91. package/fesm2015/ng-nest-ui-rate.mjs +27 -4
  92. package/fesm2015/ng-nest-ui-rate.mjs.map +1 -1
  93. package/fesm2015/ng-nest-ui-resizable.mjs +63 -31
  94. package/fesm2015/ng-nest-ui-resizable.mjs.map +1 -1
  95. package/fesm2015/ng-nest-ui-select.mjs +56 -16
  96. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  97. package/fesm2015/ng-nest-ui-text-retract.mjs +1 -1
  98. package/fesm2015/ng-nest-ui-text-retract.mjs.map +1 -1
  99. package/fesm2015/ng-nest-ui-upload.mjs +41 -9
  100. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  101. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  102. package/fesm2020/ng-nest-ui-date-picker.mjs +1 -1
  103. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  104. package/fesm2020/ng-nest-ui-dialog.mjs +5 -3
  105. package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
  106. package/fesm2020/ng-nest-ui-empty.mjs +1 -1
  107. package/fesm2020/ng-nest-ui-empty.mjs.map +1 -1
  108. package/fesm2020/ng-nest-ui-i18n.mjs +306 -0
  109. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  110. package/fesm2020/ng-nest-ui-list.mjs +77 -13
  111. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  112. package/fesm2020/ng-nest-ui-page-header.mjs +1 -1
  113. package/fesm2020/ng-nest-ui-page-header.mjs.map +1 -1
  114. package/fesm2020/ng-nest-ui-pagination.mjs +1 -1
  115. package/fesm2020/ng-nest-ui-pagination.mjs.map +1 -1
  116. package/fesm2020/ng-nest-ui-rate.mjs +27 -4
  117. package/fesm2020/ng-nest-ui-rate.mjs.map +1 -1
  118. package/fesm2020/ng-nest-ui-resizable.mjs +63 -31
  119. package/fesm2020/ng-nest-ui-resizable.mjs.map +1 -1
  120. package/fesm2020/ng-nest-ui-select.mjs +56 -16
  121. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  122. package/fesm2020/ng-nest-ui-text-retract.mjs +1 -1
  123. package/fesm2020/ng-nest-ui-text-retract.mjs.map +1 -1
  124. package/fesm2020/ng-nest-ui-upload.mjs +41 -9
  125. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  126. package/i18n/i18n.property.d.ts +8 -0
  127. package/i18n/languages/ar_EG.d.ts +6 -0
  128. package/i18n/languages/bg_BG.d.ts +6 -0
  129. package/i18n/languages/ca_ES.d.ts +6 -0
  130. package/i18n/languages/cs_CZ.d.ts +6 -0
  131. package/i18n/languages/da_DK.d.ts +6 -0
  132. package/i18n/languages/de_DE.d.ts +6 -0
  133. package/i18n/languages/el_GR.d.ts +6 -0
  134. package/i18n/languages/en_GB.d.ts +6 -0
  135. package/i18n/languages/en_US.d.ts +6 -0
  136. package/i18n/languages/es_ES.d.ts +6 -0
  137. package/i18n/languages/et_EE.d.ts +6 -0
  138. package/i18n/languages/fa_IR.d.ts +6 -0
  139. package/i18n/languages/fi_FI.d.ts +6 -0
  140. package/i18n/languages/fr_BE.d.ts +6 -0
  141. package/i18n/languages/fr_FR.d.ts +6 -0
  142. package/i18n/languages/he_IL.d.ts +6 -0
  143. package/i18n/languages/hi_IN.d.ts +6 -0
  144. package/i18n/languages/hr_HR.d.ts +6 -0
  145. package/i18n/languages/hu_HU.d.ts +6 -0
  146. package/i18n/languages/hy_AM.d.ts +6 -0
  147. package/i18n/languages/id_ID.d.ts +6 -0
  148. package/i18n/languages/is_IS.d.ts +6 -0
  149. package/i18n/languages/it_IT.d.ts +6 -0
  150. package/i18n/languages/ja_JP.d.ts +6 -0
  151. package/i18n/languages/ka_GE.d.ts +6 -0
  152. package/i18n/languages/kn_IN.d.ts +6 -0
  153. package/i18n/languages/ko_KR.d.ts +6 -0
  154. package/i18n/languages/ku_IQ.d.ts +6 -0
  155. package/i18n/languages/lv_LV.d.ts +6 -0
  156. package/i18n/languages/mn_MN.d.ts +6 -0
  157. package/i18n/languages/ms_MY.d.ts +6 -0
  158. package/i18n/languages/nb_NO.d.ts +6 -0
  159. package/i18n/languages/ne_NP.d.ts +6 -0
  160. package/i18n/languages/nl_BE.d.ts +6 -0
  161. package/i18n/languages/nl_NL.d.ts +6 -0
  162. package/i18n/languages/pl_PL.d.ts +6 -0
  163. package/i18n/languages/pt_BR.d.ts +6 -0
  164. package/i18n/languages/pt_PT.d.ts +6 -0
  165. package/i18n/languages/ro_RO.d.ts +6 -0
  166. package/i18n/languages/ru_RU.d.ts +6 -0
  167. package/i18n/languages/sk_SK.d.ts +6 -0
  168. package/i18n/languages/sl_SI.d.ts +6 -0
  169. package/i18n/languages/sr_RS.d.ts +6 -0
  170. package/i18n/languages/sv_SE.d.ts +6 -0
  171. package/i18n/languages/ta_IN.d.ts +6 -0
  172. package/i18n/languages/th_TH.d.ts +6 -0
  173. package/i18n/languages/tr_TR.d.ts +6 -0
  174. package/i18n/languages/uk_UA.d.ts +6 -0
  175. package/i18n/languages/vi_VN.d.ts +6 -0
  176. package/i18n/languages/zh_CN.d.ts +6 -0
  177. package/i18n/languages/zh_TW.d.ts +6 -0
  178. package/list/list.component.d.ts +7 -1
  179. package/list/list.module.d.ts +3 -2
  180. package/list/list.property.d.ts +17 -2
  181. package/package.json +1 -1
  182. package/page-header/page-header.component.d.ts +1 -1
  183. package/pagination/pagination.component.d.ts +1 -1
  184. package/rate/rate.component.d.ts +1 -0
  185. package/rate/rate.property.d.ts +13 -1
  186. package/resizable/resizable.directive.d.ts +1 -7
  187. package/resizable/resizable.property.d.ts +5 -0
  188. package/select/select-portal.component.d.ts +10 -1
  189. package/select/select.component.d.ts +1 -0
  190. package/select/select.module.d.ts +2 -1
  191. package/select/select.property.d.ts +11 -1
  192. package/text-retract/text-retract.component.d.ts +1 -1
  193. package/upload/upload.component.d.ts +4 -4
  194. package/upload/upload.property.d.ts +21 -1
@@ -3,17 +3,19 @@ import * as i0 from '@angular/core';
3
3
  import { Component, Input, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, HostListener, ViewChild, NgModule } from '@angular/core';
4
4
  import { __decorate } from 'tslib';
5
5
  import * as i3 from '@ng-nest/ui/core';
6
- import { XDataConvert, XWithConfig, XInputBoolean, XConnectBaseAnimation, XIsEmpty, XIsChange, XClearClass, XSetData, XIsObservable, XIsArray } from '@ng-nest/ui/core';
6
+ import { XDataConvert, XWithConfig, XInputBoolean, XConnectBaseAnimation, XIsEmpty, XIsChange, XClearClass, XSetData, XIsObjectArray, XIsObservable, XIsArray } from '@ng-nest/ui/core';
7
7
  import { XControlValueAccessor, XValueAccessor, XBaseFormModule } from '@ng-nest/ui/base-form';
8
8
  import * as i1$1 from '@ng-nest/ui/portal';
9
9
  import { XPortalConnectedPosition, XPortalModule } from '@ng-nest/ui/portal';
10
- import { takeUntil, throttleTime } from 'rxjs/operators';
11
- import * as i1 from '@ng-nest/ui/list';
10
+ import { takeUntil, map, throttleTime } from 'rxjs/operators';
11
+ import * as i1 from '@ng-nest/ui/i18n';
12
+ import { XI18nModule } from '@ng-nest/ui/i18n';
13
+ import * as i2 from '@ng-nest/ui/list';
12
14
  import { XListModule } from '@ng-nest/ui/list';
13
15
  import * as i5 from '@angular/forms';
14
16
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
15
17
  import { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, MAC_ENTER, ESCAPE, TAB } from '@angular/cdk/keycodes';
16
- import * as i2 from '@angular/cdk/overlay';
18
+ import * as i2$1 from '@angular/cdk/overlay';
17
19
  import * as i4 from '@ng-nest/ui/input';
18
20
  import { XInputModule } from '@ng-nest/ui/input';
19
21
  import { CommonModule } from '@angular/common';
@@ -39,7 +41,7 @@ class XSelectProperty extends XControlValueAccessor {
39
41
  }
40
42
  }
41
43
  /** @nocollapse */ /** @nocollapse */ XSelectProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
42
- /** @nocollapse */ /** @nocollapse */ XSelectProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XSelectProperty, selector: "ng-component", inputs: { data: "data", clearable: "clearable", async: "async", placement: "placement", multiple: "multiple", nodeTpl: "nodeTpl", size: "size", bordered: "bordered", portalMaxHeight: "portalMaxHeight" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
44
+ /** @nocollapse */ /** @nocollapse */ XSelectProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XSelectProperty, selector: "ng-component", inputs: { data: "data", clearable: "clearable", async: "async", placement: "placement", multiple: "multiple", selectAll: "selectAll", selectAllText: "selectAllText", nodeTpl: "nodeTpl", size: "size", bordered: "bordered", portalMaxHeight: "portalMaxHeight" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
43
45
  __decorate([
44
46
  XDataConvert()
45
47
  ], XSelectProperty.prototype, "data", void 0);
@@ -56,6 +58,12 @@ __decorate([
56
58
  __decorate([
57
59
  XInputBoolean()
58
60
  ], XSelectProperty.prototype, "multiple", void 0);
61
+ __decorate([
62
+ XInputBoolean()
63
+ ], XSelectProperty.prototype, "selectAll", void 0);
64
+ __decorate([
65
+ XWithConfig(X_CONFIG_NAME)
66
+ ], XSelectProperty.prototype, "selectAllText", void 0);
59
67
  __decorate([
60
68
  XWithConfig(X_CONFIG_NAME, 'medium')
61
69
  ], XSelectProperty.prototype, "size", void 0);
@@ -79,6 +87,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
79
87
  type: Input
80
88
  }], multiple: [{
81
89
  type: Input
90
+ }], selectAll: [{
91
+ type: Input
92
+ }], selectAllText: [{
93
+ type: Input
82
94
  }], nodeTpl: [{
83
95
  type: Input
84
96
  }], size: [{
@@ -96,13 +108,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
96
108
  const XSelectPortalPrefix = 'x-select-portal';
97
109
 
98
110
  class XSelectPortalComponent {
99
- constructor(renderer, cdr) {
111
+ constructor(renderer, cdr, i18n) {
100
112
  this.renderer = renderer;
101
113
  this.cdr = cdr;
114
+ this.i18n = i18n;
102
115
  this.multiple = 1;
116
+ this.selectAll = false;
103
117
  this.show = false;
118
+ this.objectArray = false;
104
119
  this.active = -1;
105
120
  this.portalMaxHeight = '';
121
+ this.locale = {};
106
122
  this._unSubject = new Subject();
107
123
  }
108
124
  done(event) {
@@ -112,6 +128,9 @@ class XSelectPortalComponent {
112
128
  start() {
113
129
  this.animating(true);
114
130
  }
131
+ get getSelectAllText() {
132
+ return this.selectAllText || this.locale.selectAllText;
133
+ }
115
134
  ngOnInit() {
116
135
  this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
117
136
  this.value = x;
@@ -127,6 +146,12 @@ class XSelectPortalComponent {
127
146
  this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {
128
147
  this.list.keydown(x);
129
148
  });
149
+ this.i18n.localeChange
150
+ .pipe(map((x) => x.select), takeUntil(this._unSubject))
151
+ .subscribe((x) => {
152
+ this.locale = x;
153
+ this.cdr.markForCheck();
154
+ });
130
155
  }
131
156
  ngOnDestroy() {
132
157
  this._unSubject.next();
@@ -141,6 +166,9 @@ class XSelectPortalComponent {
141
166
  else
142
167
  this.nodeEmit(node);
143
168
  }
169
+ onSelectAll(_isSelectAll) {
170
+ this.nodeEmit(this.value);
171
+ }
144
172
  onActive(num) {
145
173
  this.active = num;
146
174
  }
@@ -148,12 +176,12 @@ class XSelectPortalComponent {
148
176
  this.closeSubject.next();
149
177
  }
150
178
  }
151
- /** @nocollapse */ /** @nocollapse */ XSelectPortalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectPortalComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
152
- /** @nocollapse */ /** @nocollapse */ XSelectPortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XSelectPortalComponent, selector: "x-select-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true }], ngImport: i0, template: "<div #selectPortal class=\"x-select-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\" [style.maxHeight]=\"portalMaxHeight\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n [(ngModel)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n checked\r\n [objectArray]=\"multiple === 0\"\r\n [multiple]=\"multiple\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"selectPortal\"\r\n ></x-list>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-select-portal{width:100%}.x-select-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);width:100%;border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);position:relative;display:flex;background-color:var(--x-background);overflow:hidden auto;max-height:calc((calc(var(--x-font-size) + .875rem) * 6) + (var(--x-border-width) * 7))}\n"], components: [{ type: i1.XListComponent, selector: "x-list" }], directives: [{ type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
179
+ /** @nocollapse */ /** @nocollapse */ XSelectPortalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectPortalComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
180
+ /** @nocollapse */ /** @nocollapse */ XSelectPortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XSelectPortalComponent, selector: "x-select-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true }], ngImport: i0, template: "<div #selectPortal class=\"x-select-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\" [style.maxHeight]=\"portalMaxHeight\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n [(ngModel)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n (onSelectAll)=\"onSelectAll($event)\"\r\n checked\r\n [objectArray]=\"objectArray\"\r\n [multiple]=\"multiple\"\r\n [selectAll]=\"selectAll\"\r\n [selectAllText]=\"getSelectAllText\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"selectPortal\"\r\n ></x-list>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-select-portal{width:100%}.x-select-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);width:100%;border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);position:relative;display:flex;background-color:var(--x-background);overflow:hidden auto;max-height:calc((calc(var(--x-font-size) + .875rem) * 6) + (var(--x-border-width) * 7))}\n"], components: [{ type: i2.XListComponent, selector: "x-list" }], directives: [{ type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
153
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectPortalComponent, decorators: [{
154
182
  type: Component,
155
- args: [{ selector: `${XSelectPortalPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [XConnectBaseAnimation], template: "<div #selectPortal class=\"x-select-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\" [style.maxHeight]=\"portalMaxHeight\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n [(ngModel)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n checked\r\n [objectArray]=\"multiple === 0\"\r\n [multiple]=\"multiple\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"selectPortal\"\r\n ></x-list>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-select-portal{width:100%}.x-select-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);width:100%;border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);position:relative;display:flex;background-color:var(--x-background);overflow:hidden auto;max-height:calc((calc(var(--x-font-size) + .875rem) * 6) + (var(--x-border-width) * 7))}\n"] }]
156
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { placement: [{
183
+ args: [{ selector: `${XSelectPortalPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [XConnectBaseAnimation], template: "<div #selectPortal class=\"x-select-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\" [style.maxHeight]=\"portalMaxHeight\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n [(ngModel)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n (onSelectAll)=\"onSelectAll($event)\"\r\n checked\r\n [objectArray]=\"objectArray\"\r\n [multiple]=\"multiple\"\r\n [selectAll]=\"selectAll\"\r\n [selectAllText]=\"getSelectAllText\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"selectPortal\"\r\n ></x-list>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-select-portal{width:100%}.x-select-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);width:100%;border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);position:relative;display:flex;background-color:var(--x-background);overflow:hidden auto;max-height:calc((calc(var(--x-font-size) + .875rem) * 6) + (var(--x-border-width) * 7))}\n"] }]
184
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.XI18nService }]; }, propDecorators: { placement: [{
157
185
  type: HostBinding,
158
186
  args: ['@x-connect-base-animation']
159
187
  }], done: [{
@@ -187,6 +215,7 @@ class XSelectComponent extends XSelectProperty {
187
215
  this.protalTobottom = true;
188
216
  this.asyncLoading = false;
189
217
  this.animating = false;
218
+ this.objectArray = false;
190
219
  this.valueTplContext = { $node: null, $isValue: true };
191
220
  this.valueChange = new Subject();
192
221
  this.positionChange = new Subject();
@@ -284,7 +313,15 @@ class XSelectComponent extends XSelectProperty {
284
313
  this.valueTplContext.$node = null;
285
314
  }
286
315
  else {
287
- let nodes = this.nodes.filter((x) => !XIsEmpty(this.value.find((y) => y.id === x.id)));
316
+ let nodes = [];
317
+ if (XIsObjectArray(this.value)) {
318
+ this.objectArray = true;
319
+ nodes = this.nodes.filter((x) => !XIsEmpty(this.value.find((y) => y.id === x.id)));
320
+ }
321
+ else {
322
+ this.objectArray = false;
323
+ nodes = this.nodes.filter((x) => !XIsEmpty(this.value.find((y) => y === x.id)));
324
+ }
288
325
  this.displayValue = nodes.map((x) => x.label).join(',');
289
326
  this.valueTplContext.$node = [...nodes];
290
327
  }
@@ -382,6 +419,7 @@ class XSelectComponent extends XSelectProperty {
382
419
  value: this.value,
383
420
  placement: this.placement,
384
421
  multiple: this.multiple === true ? 0 : 1,
422
+ selectAll: this.selectAll,
385
423
  nodeTpl: this.nodeTpl,
386
424
  valueChange: this.valueChange,
387
425
  positionChange: this.positionChange,
@@ -389,6 +427,8 @@ class XSelectComponent extends XSelectProperty {
389
427
  keydownSubject: this.keydownSubject,
390
428
  inputCom: this.inputCom,
391
429
  portalMaxHeight: this.portalMaxHeight,
430
+ objectArray: this.objectArray,
431
+ selectAllText: this.selectAllText,
392
432
  destroyPortal: () => this.destroyPortal(),
393
433
  nodeEmit: (node) => this.nodeClick(node),
394
434
  animating: (ing) => (this.animating = ing)
@@ -437,12 +477,12 @@ class XSelectComponent extends XSelectProperty {
437
477
  this.inputCom.inputFocus();
438
478
  }
439
479
  }
440
- /** @nocollapse */ /** @nocollapse */ XSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1$1.XPortalService }, { token: i0.ViewContainerRef }, { token: i2.Overlay }, { token: i3.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
480
+ /** @nocollapse */ /** @nocollapse */ XSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1$1.XPortalService }, { token: i0.ViewContainerRef }, { token: i2$1.Overlay }, { token: i3.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
441
481
  /** @nocollapse */ /** @nocollapse */ XSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XSelectComponent, selector: "x-select", providers: [XValueAccessor(XSelectComponent)], viewQueries: [{ propertyName: "inputCom", first: true, predicate: ["inputCom"], descendants: true, static: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #select class=\"x-select\">\r\n <div class=\"x-select-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]=\"showClearable\"\r\n [(ngModel)]=\"displayValue\"\r\n [valueTpl]=\"valueTpl ? valueTpl : nodeTpl\"\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 (xKeydown)=\"onKeydown($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xClick)=\"showPortal()\"\r\n (xMouseenter)=\"menter()\"\r\n (xMouseleave)=\"mleave()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-select{display:inline-block}.x-select{margin:0;padding:0;width:100%}.x-select x-input{width:100%}.x-select-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);width:100%;border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);position:relative;display:flex;background-color:var(--x-background);overflow:hidden auto;max-height:calc((calc(var(--x-font-size) + .875rem) * 6) + (var(--x-border-width) * 7))}\n"], components: [{ type: i4.XInputComponent, selector: "x-input" }], directives: [{ type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
442
482
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectComponent, decorators: [{
443
483
  type: Component,
444
484
  args: [{ selector: `${XSelectPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XSelectComponent)], template: "<div #select class=\"x-select\">\r\n <div class=\"x-select-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]=\"showClearable\"\r\n [(ngModel)]=\"displayValue\"\r\n [valueTpl]=\"valueTpl ? valueTpl : nodeTpl\"\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 (xKeydown)=\"onKeydown($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xClick)=\"showPortal()\"\r\n (xMouseenter)=\"menter()\"\r\n (xMouseleave)=\"mleave()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-select{display:inline-block}.x-select{margin:0;padding:0;width:100%}.x-select x-input{width:100%}.x-select-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);width:100%;border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);position:relative;display:flex;background-color:var(--x-background);overflow:hidden auto;max-height:calc((calc(var(--x-font-size) + .875rem) * 6) + (var(--x-border-width) * 7))}\n"] }]
445
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1$1.XPortalService }, { type: i0.ViewContainerRef }, { type: i2.Overlay }, { type: i3.XConfigService }]; }, propDecorators: { inputCom: [{
485
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1$1.XPortalService }, { type: i0.ViewContainerRef }, { type: i2$1.Overlay }, { type: i3.XConfigService }]; }, propDecorators: { inputCom: [{
446
486
  type: ViewChild,
447
487
  args: ['inputCom', { static: true }]
448
488
  }], select: [{
@@ -453,14 +493,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
453
493
  class XSelectModule {
454
494
  }
455
495
  /** @nocollapse */ /** @nocollapse */ XSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
456
- /** @nocollapse */ /** @nocollapse */ XSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectModule, declarations: [XSelectComponent, XSelectPortalComponent, XSelectProperty], imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule], exports: [XSelectComponent, XSelectPortalComponent] });
457
- /** @nocollapse */ /** @nocollapse */ XSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectModule, imports: [[CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule]] });
496
+ /** @nocollapse */ /** @nocollapse */ XSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectModule, declarations: [XSelectComponent, XSelectPortalComponent, XSelectProperty], imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule, XI18nModule], exports: [XSelectComponent, XSelectPortalComponent] });
497
+ /** @nocollapse */ /** @nocollapse */ XSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectModule, imports: [[CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule, XI18nModule]] });
458
498
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XSelectModule, decorators: [{
459
499
  type: NgModule,
460
500
  args: [{
461
501
  declarations: [XSelectComponent, XSelectPortalComponent, XSelectProperty],
462
502
  exports: [XSelectComponent, XSelectPortalComponent],
463
- imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule]
503
+ imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule, XI18nModule]
464
504
  }]
465
505
  }] });
466
506
 
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-select.mjs","sources":["../../../../lib/ng-nest/ui/select/select.property.ts","../../../../lib/ng-nest/ui/select/select-portal.component.ts","../../../../lib/ng-nest/ui/select/select-portal.component.html","../../../../lib/ng-nest/ui/select/select.component.ts","../../../../lib/ng-nest/ui/select/select.component.html","../../../../lib/ng-nest/ui/select/select.module.ts","../../../../lib/ng-nest/ui/select/ng-nest-ui-select.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XDataConvert,\r\n XInputBoolean,\r\n XData,\r\n XBoolean,\r\n XWithConfig,\r\n XPositionTopBottom,\r\n XSize\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Component, TemplateRef } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * Select\r\n * @selector x-select\r\n * @decorator component\r\n */\r\nexport const XSelectPrefix = 'x-select';\r\nconst X_CONFIG_NAME = 'select';\r\n\r\n/**\r\n * Select Property\r\n */\r\n@Component({ template: '' })\r\nexport class XSelectProperty extends XControlValueAccessor<any> {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XSelectNode> = [];\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() clearable?: XBoolean;\r\n /**\r\n * @zh_CN 异步加载\r\n * @en_US Asynchronous loading\r\n */\r\n @Input() @XInputBoolean() async?: XBoolean;\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 Multiple choice\r\n */\r\n @Input() @XInputBoolean() multiple?: XBoolean;\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 The biggest height of the drop-down box\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '12rem') portalMaxHeight!: string;\r\n}\r\n\r\n/**\r\n * Select Option\r\n * @undocument true\r\n */\r\nexport interface XSelectOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XSelectNode>;\r\n /**\r\n * @zh_CN 异步加载\r\n * @en_US Asynchronous loading\r\n */\r\n async?: XBoolean;\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 Multiple choice\r\n */\r\n multiple?: XBoolean;\r\n}\r\n\r\n/**\r\n * @zh_CN Select 数据对象\r\n * @en_US Select data object\r\n */\r\nexport interface XSelectNode extends XParentIdentityProperty<XSelectNode> {}\r\n\r\n/**\r\n * Select Portal\r\n * @selector x-select-portal\r\n * @decorator component\r\n */\r\nexport const XSelectPortalPrefix = 'x-select-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 TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XSelectNode, XSelectPortalPrefix } from './select.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: `${XSelectPortalPrefix}`,\r\n templateUrl: './select-portal.component.html',\r\n styleUrls: ['./select-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XSelectPortalComponent 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 @ViewChild('list') list!: XListComponent;\r\n\r\n data!: XSelectNode[];\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n animating!: Function;\r\n activeChange!: 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 portalMaxHeight = '';\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.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: XSelectNode) {\r\n if (this.multiple === 0) this.nodeEmit(this.value);\r\n else 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 #selectPortal class=\"x-select-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\" [style.maxHeight]=\"portalMaxHeight\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n [(ngModel)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n checked\r\n [objectArray]=\"multiple === 0\"\r\n [multiple]=\"multiple\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"selectPortal\"\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 { XSelectNode, XSelectProperty, XSelectPrefix } from './select.property';\r\nimport { XIsEmpty, XIsObservable, XIsChange, XSetData, XClearClass, XConfigService, XIsArray, XPositionTopBottom } 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 { XSelectPortalComponent } from './select-portal.component';\r\nimport { Overlay, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { takeUntil, throttleTime } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, TAB, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: `${XSelectPrefix}`,\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XSelectComponent)]\r\n})\r\nexport class XSelectComponent extends XSelectProperty implements OnInit, OnChanges {\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n @ViewChild('select', { static: true }) select!: ElementRef;\r\n\r\n override writeValue(value: any) {\r\n if (this.multiple && XIsEmpty(value)) {\r\n value = [];\r\n }\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 = true;\r\n enter: boolean = false;\r\n showClearable: boolean = false;\r\n displayValue: any = '';\r\n nodes: XSelectNode[] = [];\r\n cloneNodes!: XSelectNode[];\r\n portal!: XPortalOverlayRef<XSelectPortalComponent>;\r\n icon: string = 'fto-chevron-down';\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 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 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.select.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 (this.async) return;\r\n XSetData<XSelectNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.setDisplayValue();\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.keydownSubject.pipe(throttleTime(10), takeUntil(this._unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.showPortal();\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 menter() {\r\n if (this.disabled || !this.clearable) return;\r\n this.enter = true;\r\n if (!XIsEmpty(this.displayValue)) {\r\n this.icon = '';\r\n this.showClearable = true;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n mleave() {\r\n if (this.disabled || !this.clearable) return;\r\n this.enter = false;\r\n if (this.clearable) {\r\n this.icon = 'fto-chevron-down';\r\n this.showClearable = 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.mleave();\r\n this.valueChange.next(this.value);\r\n if (this.onChange) this.onChange(this.value);\r\n }\r\n\r\n setDisplayValue() {\r\n if (this.nodes.length > 0) {\r\n if (this.multiple) {\r\n if (XIsEmpty(this.value)) {\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n } else {\r\n let nodes = this.nodes.filter((x) => !XIsEmpty(this.value.find((y: XSelectNode) => y.id === x.id)));\r\n this.displayValue = nodes.map((x) => x.label).join(',');\r\n this.valueTplContext.$node = [...nodes];\r\n }\r\n } else {\r\n let node = this.nodes.find((x) => x.id === this.value);\r\n if (node) {\r\n this.displayValue = node.label;\r\n this.valueTplContext.$node = node;\r\n } else {\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n }\r\n }\r\n this.cdr.detectChanges();\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 (this.disabled || this.iconSpin) return;\r\n if (this.animating) return;\r\n this.active = true;\r\n if (this.async && XIsObservable(this.data) && this.nodes.length === 0) {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XSelectNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.setDisplayValue();\r\n this.createPortal();\r\n this.icon = 'fto-chevron-down';\r\n this.iconSpin = false;\r\n this.cdr.detectChanges();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n this.inputCom.inputFocus();\r\n }\r\n\r\n createPortal() {\r\n this.nodes.filter((x) => x.selected).map((x) => (x.selected = false));\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: XSelectPortalComponent,\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.setDisplayValue();\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.nodes,\r\n value: this.value,\r\n placement: this.placement,\r\n multiple: this.multiple === true ? 0 : 1,\r\n nodeTpl: this.nodeTpl,\r\n valueChange: this.valueChange,\r\n positionChange: this.positionChange,\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject,\r\n inputCom: this.inputCom,\r\n portalMaxHeight: this.portalMaxHeight,\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: XSelectNode) => this.nodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n nodeClick(node: XSelectNode | XSelectNode[]) {\r\n if (this.multiple && XIsArray(node)) {\r\n node = node as XSelectNode[];\r\n this.value = node;\r\n this.setDisplayValue();\r\n } else {\r\n node = node as XSelectNode;\r\n this.displayValue = node.label;\r\n this.valueTplContext.$node = node;\r\n this.value = node.id;\r\n this.closeSubject.next();\r\n }\r\n this.inputCom.inputFocus();\r\n if (this.onChange) this.onChange(this.value);\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', 'top'],\r\n transformOriginOn: 'x-select-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.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 if ($event.keyCode !== TAB) $event.preventDefault();\r\n }\r\n\r\n onFocus(_event: Event) {\r\n this.inputCom.inputFocus();\r\n }\r\n}\r\n","<div #select class=\"x-select\">\r\n <div class=\"x-select-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]=\"showClearable\"\r\n [(ngModel)]=\"displayValue\"\r\n [valueTpl]=\"valueTpl ? valueTpl : nodeTpl\"\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 (xKeydown)=\"onKeydown($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xClick)=\"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 { XSelectComponent } from './select.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 { XSelectPortalComponent } from './select-portal.component';\r\nimport { XSelectProperty } from './select.property';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\n\r\n@NgModule({\r\n declarations: [XSelectComponent, XSelectPortalComponent, XSelectProperty],\r\n exports: [XSelectComponent, XSelectPortalComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule]\r\n})\r\nexport class XSelectModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1"],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-select.mjs","sources":["../../../../lib/ng-nest/ui/select/select.property.ts","../../../../lib/ng-nest/ui/select/select-portal.component.ts","../../../../lib/ng-nest/ui/select/select-portal.component.html","../../../../lib/ng-nest/ui/select/select.component.ts","../../../../lib/ng-nest/ui/select/select.component.html","../../../../lib/ng-nest/ui/select/select.module.ts","../../../../lib/ng-nest/ui/select/ng-nest-ui-select.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XDataConvert,\r\n XInputBoolean,\r\n XData,\r\n XBoolean,\r\n XWithConfig,\r\n XPositionTopBottom,\r\n XSize\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Component, TemplateRef } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * Select\r\n * @selector x-select\r\n * @decorator component\r\n */\r\nexport const XSelectPrefix = 'x-select';\r\nconst X_CONFIG_NAME = 'select';\r\n\r\n/**\r\n * Select Property\r\n */\r\n@Component({ template: '' })\r\nexport class XSelectProperty extends XControlValueAccessor<any> {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XSelectNode> = [];\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() clearable?: XBoolean;\r\n /**\r\n * @zh_CN 异步加载\r\n * @en_US Asynchronous loading\r\n */\r\n @Input() @XInputBoolean() async?: XBoolean;\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 Multiple choice\r\n */\r\n @Input() @XInputBoolean() multiple?: XBoolean;\r\n /**\r\n * @zh_CN 多选添加全选功能\r\n * @en_US Multi choice to add full selection function\r\n */\r\n @Input() @XInputBoolean() selectAll?: XBoolean;\r\n /**\r\n * @zh_CN 全选的文字\r\n * @en_US Selected all text\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME) selectAllText?: string;\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 The biggest height of the drop-down box\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '12rem') portalMaxHeight!: string;\r\n}\r\n\r\n/**\r\n * Select Option\r\n * @undocument true\r\n */\r\nexport interface XSelectOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XSelectNode>;\r\n /**\r\n * @zh_CN 异步加载\r\n * @en_US Asynchronous loading\r\n */\r\n async?: XBoolean;\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 Multiple choice\r\n */\r\n multiple?: XBoolean;\r\n}\r\n\r\n/**\r\n * @zh_CN Select 数据对象\r\n * @en_US Select data object\r\n */\r\nexport interface XSelectNode extends XParentIdentityProperty<XSelectNode> {}\r\n\r\n/**\r\n * Select Portal\r\n * @selector x-select-portal\r\n * @decorator component\r\n */\r\nexport const XSelectPortalPrefix = 'x-select-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 TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XSelectNode, XSelectPortalPrefix } from './select.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XConnectBaseAnimation, XNumber, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XI18nSelect, XI18nService } from '@ng-nest/ui/i18n';\r\n\r\n@Component({\r\n selector: `${XSelectPortalPrefix}`,\r\n templateUrl: './select-portal.component.html',\r\n styleUrls: ['./select-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XSelectPortalComponent 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 @ViewChild('list') list!: XListComponent;\r\n\r\n data!: XSelectNode[];\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n animating!: Function;\r\n activeChange!: Function;\r\n destroyPortal!: Function;\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n nodeEmit!: Function;\r\n selectAllEmit!: Function;\r\n multiple: XNumber = 1;\r\n selectAll: boolean = false;\r\n nodeTpl!: TemplateRef<any>;\r\n show: boolean = false;\r\n objectArray: boolean = false;\r\n active: number = -1;\r\n inputCom!: XInputComponent;\r\n portalMaxHeight = '';\r\n selectAllText!: string;\r\n locale: XI18nSelect = {};\r\n private _unSubject = new Subject<void>();\r\n\r\n get getSelectAllText() {\r\n return this.selectAllText || this.locale.selectAllText;\r\n }\r\n\r\n constructor(public renderer: Renderer2, public cdr: ChangeDetectorRef, public i18n: XI18nService) {}\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.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 this.i18n.localeChange\r\n .pipe(\r\n map((x) => x.select as XI18nSelect),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.locale = x;\r\n this.cdr.markForCheck();\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: XSelectNode) {\r\n if (this.multiple === 0) this.nodeEmit(this.value);\r\n else this.nodeEmit(node);\r\n }\r\n\r\n onSelectAll(_isSelectAll: boolean) {\r\n this.nodeEmit(this.value);\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 #selectPortal class=\"x-select-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\" [style.maxHeight]=\"portalMaxHeight\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n [(ngModel)]=\"value\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n (onSelectAll)=\"onSelectAll($event)\"\r\n checked\r\n [objectArray]=\"objectArray\"\r\n [multiple]=\"multiple\"\r\n [selectAll]=\"selectAll\"\r\n [selectAllText]=\"getSelectAllText\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"selectPortal\"\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 { XSelectNode, XSelectProperty, XSelectPrefix } from './select.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XClearClass,\r\n XConfigService,\r\n XIsArray,\r\n XPositionTopBottom,\r\n XIsObjectArray\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 { XSelectPortalComponent } from './select-portal.component';\r\nimport { Overlay, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { takeUntil, throttleTime } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, TAB, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: `${XSelectPrefix}`,\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XSelectComponent)]\r\n})\r\nexport class XSelectComponent extends XSelectProperty implements OnInit, OnChanges {\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n @ViewChild('select', { static: true }) select!: ElementRef;\r\n\r\n override writeValue(value: any) {\r\n if (this.multiple && XIsEmpty(value)) {\r\n value = [];\r\n }\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 = true;\r\n enter: boolean = false;\r\n showClearable: boolean = false;\r\n displayValue: any = '';\r\n nodes: XSelectNode[] = [];\r\n cloneNodes!: XSelectNode[];\r\n portal!: XPortalOverlayRef<XSelectPortalComponent>;\r\n icon: string = 'fto-chevron-down';\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 objectArray = false;\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 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.select.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 (this.async) return;\r\n XSetData<XSelectNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.setDisplayValue();\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.keydownSubject.pipe(throttleTime(10), takeUntil(this._unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.showPortal();\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 menter() {\r\n if (this.disabled || !this.clearable) return;\r\n this.enter = true;\r\n if (!XIsEmpty(this.displayValue)) {\r\n this.icon = '';\r\n this.showClearable = true;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n mleave() {\r\n if (this.disabled || !this.clearable) return;\r\n this.enter = false;\r\n if (this.clearable) {\r\n this.icon = 'fto-chevron-down';\r\n this.showClearable = 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.mleave();\r\n this.valueChange.next(this.value);\r\n if (this.onChange) this.onChange(this.value);\r\n }\r\n\r\n setDisplayValue() {\r\n if (this.nodes.length > 0) {\r\n if (this.multiple) {\r\n if (XIsEmpty(this.value)) {\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n } else {\r\n let nodes: XSelectNode[] = [];\r\n if (XIsObjectArray(this.value)) {\r\n this.objectArray = true;\r\n nodes = this.nodes.filter((x) => !XIsEmpty(this.value.find((y: XSelectNode) => y.id === x.id)));\r\n } else {\r\n this.objectArray = false;\r\n nodes = this.nodes.filter((x) => !XIsEmpty(this.value.find((y: string | number) => y === x.id)));\r\n }\r\n this.displayValue = nodes.map((x) => x.label).join(',');\r\n this.valueTplContext.$node = [...nodes];\r\n }\r\n } else {\r\n let node = this.nodes.find((x) => x.id === this.value);\r\n if (node) {\r\n this.displayValue = node.label;\r\n this.valueTplContext.$node = node;\r\n } else {\r\n this.displayValue = '';\r\n this.valueTplContext.$node = null;\r\n }\r\n }\r\n this.cdr.detectChanges();\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 (this.disabled || this.iconSpin) return;\r\n if (this.animating) return;\r\n this.active = true;\r\n if (this.async && XIsObservable(this.data) && this.nodes.length === 0) {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XSelectNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.setDisplayValue();\r\n this.createPortal();\r\n this.icon = 'fto-chevron-down';\r\n this.iconSpin = false;\r\n this.cdr.detectChanges();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n this.inputCom.inputFocus();\r\n }\r\n\r\n createPortal() {\r\n this.nodes.filter((x) => x.selected).map((x) => (x.selected = false));\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: XSelectPortalComponent,\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.setDisplayValue();\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.nodes,\r\n value: this.value,\r\n placement: this.placement,\r\n multiple: this.multiple === true ? 0 : 1,\r\n selectAll: this.selectAll,\r\n nodeTpl: this.nodeTpl,\r\n valueChange: this.valueChange,\r\n positionChange: this.positionChange,\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject,\r\n inputCom: this.inputCom,\r\n portalMaxHeight: this.portalMaxHeight,\r\n objectArray: this.objectArray,\r\n selectAllText: this.selectAllText,\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: XSelectNode) => this.nodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n nodeClick(node: XSelectNode | XSelectNode[]) {\r\n if (this.multiple && XIsArray(node)) {\r\n node = node as XSelectNode[];\r\n this.value = node;\r\n this.setDisplayValue();\r\n } else {\r\n node = node as XSelectNode;\r\n this.displayValue = node.label;\r\n this.valueTplContext.$node = node;\r\n this.value = node.id;\r\n this.closeSubject.next();\r\n }\r\n this.inputCom.inputFocus();\r\n if (this.onChange) this.onChange(this.value);\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', 'top'],\r\n transformOriginOn: 'x-select-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.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 if ($event.keyCode !== TAB) $event.preventDefault();\r\n }\r\n\r\n onFocus(_event: Event) {\r\n this.inputCom.inputFocus();\r\n }\r\n}\r\n","<div #select class=\"x-select\">\r\n <div class=\"x-select-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]=\"showClearable\"\r\n [(ngModel)]=\"displayValue\"\r\n [valueTpl]=\"valueTpl ? valueTpl : nodeTpl\"\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 (xKeydown)=\"onKeydown($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xClick)=\"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 { XSelectComponent } from './select.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 { XSelectPortalComponent } from './select-portal.component';\r\nimport { XSelectProperty } from './select.property';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XI18nModule } from '@ng-nest/ui/i18n';\r\n\r\n@NgModule({\r\n declarations: [XSelectComponent, XSelectPortalComponent, XSelectProperty],\r\n exports: [XSelectComponent, XSelectPortalComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule, XI18nModule]\r\n})\r\nexport class XSelectModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1","i2"],"mappings":"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"}
@@ -60,7 +60,7 @@ class XTextRetractComponent extends XTextRetractProperty {
60
60
  const { content } = changes;
61
61
  XIsChange(content) && this.setDisplayValue();
62
62
  }
63
- ngOnDestory() {
63
+ ngOnDestroy() {
64
64
  this._unSubject.next();
65
65
  this._unSubject.unsubscribe();
66
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-text-retract.mjs","sources":["../../../../lib/ng-nest/ui/text-retract/text-retract.property.ts","../../../../lib/ng-nest/ui/text-retract/text-retract.component.ts","../../../../lib/ng-nest/ui/text-retract/text-retract.component.html","../../../../lib/ng-nest/ui/text-retract/text-retract.module.ts","../../../../lib/ng-nest/ui/text-retract/ng-nest-ui-text-retract.ts"],"sourcesContent":["import { Input, Component } from '@angular/core';\r\nimport { XInputNumber, XNumber, XWithConfig } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * TextRetract\r\n * @selector x-text-retract\r\n * @decorator component\r\n */\r\nexport const XTextRetractPrefix = 'x-text-retract';\r\nconst X_CONFIG_NAME = 'textRetract';\r\n\r\n/**\r\n * TextRetract Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTextRetractProperty {\r\n /**\r\n * @zh_CN 文本\r\n * @en_US text\r\n */\r\n @Input() content?: string;\r\n /**\r\n * @zh_CN 默认最大显示字符数\r\n * @en_US Default maximum number of characters displayed\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 256) @XInputNumber() max?: XNumber;\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { XTextRetractPrefix, XTextRetractProperty } from './text-retract.property';\r\nimport { XIsChange, XConfigService } from '@ng-nest/ui/core';\r\nimport { XI18nService } from '@ng-nest/ui/i18n';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: `${XTextRetractPrefix}`,\r\n templateUrl: './text-retract.component.html',\r\n styleUrls: ['./text-retract.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTextRetractComponent extends XTextRetractProperty implements OnInit, OnChanges {\r\n displayValue!: string;\r\n retract: boolean = false;\r\n unfold: boolean = true;\r\n\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService,\r\n public i18n: XI18nService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setDisplayValue();\r\n this.i18n.localeChange.pipe(takeUntil(this._unSubject)).subscribe(() => this.cdr.markForCheck());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { content } = changes;\r\n XIsChange(content) && this.setDisplayValue();\r\n }\r\n\r\n ngOnDestory() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setDisplayValue() {\r\n if (this.content && this.content.length > (this.max as number)) {\r\n this.displayValue = this.content.substring(0, Number(this.max));\r\n this.retract = true;\r\n } else {\r\n this.displayValue = this.content as string;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n toggle() {\r\n this.unfold = !this.unfold;\r\n if (this.unfold) {\r\n this.displayValue = (this.content as string).substring(0, Number(this.max));\r\n } else {\r\n this.displayValue = this.content as string;\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div class=\"x-text-retract\">\r\n {{ displayValue }}\r\n <ng-container *ngIf=\"retract\">\r\n <x-link type=\"primary\" (click)=\"toggle()\" *ngIf=\"unfold\">...{{ 'textRetract.unfold' | xI18n }}</x-link>\r\n <x-link type=\"primary\" (click)=\"toggle()\" *ngIf=\"!unfold\">{{ 'textRetract.packUp' | xI18n }}</x-link>\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XTextRetractComponent } from './text-retract.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XLinkModule } from '@ng-nest/ui/link';\r\nimport { XTextRetractProperty } from './text-retract.property';\r\nimport { XI18nModule } from '@ng-nest/ui/i18n';\r\n\r\n@NgModule({\r\n declarations: [XTextRetractComponent, XTextRetractProperty],\r\n exports: [XTextRetractComponent],\r\n imports: [CommonModule, FormsModule, XLinkModule, XI18nModule]\r\n})\r\nexport class XTextRetractModule {}\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-text-retract.mjs","sources":["../../../../lib/ng-nest/ui/text-retract/text-retract.property.ts","../../../../lib/ng-nest/ui/text-retract/text-retract.component.ts","../../../../lib/ng-nest/ui/text-retract/text-retract.component.html","../../../../lib/ng-nest/ui/text-retract/text-retract.module.ts","../../../../lib/ng-nest/ui/text-retract/ng-nest-ui-text-retract.ts"],"sourcesContent":["import { Input, Component } from '@angular/core';\r\nimport { XInputNumber, XNumber, XWithConfig } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * TextRetract\r\n * @selector x-text-retract\r\n * @decorator component\r\n */\r\nexport const XTextRetractPrefix = 'x-text-retract';\r\nconst X_CONFIG_NAME = 'textRetract';\r\n\r\n/**\r\n * TextRetract Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTextRetractProperty {\r\n /**\r\n * @zh_CN 文本\r\n * @en_US text\r\n */\r\n @Input() content?: string;\r\n /**\r\n * @zh_CN 默认最大显示字符数\r\n * @en_US Default maximum number of characters displayed\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 256) @XInputNumber() max?: XNumber;\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { XTextRetractPrefix, XTextRetractProperty } from './text-retract.property';\r\nimport { XIsChange, XConfigService } from '@ng-nest/ui/core';\r\nimport { XI18nService } from '@ng-nest/ui/i18n';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: `${XTextRetractPrefix}`,\r\n templateUrl: './text-retract.component.html',\r\n styleUrls: ['./text-retract.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTextRetractComponent extends XTextRetractProperty implements OnInit, OnChanges {\r\n displayValue!: string;\r\n retract: boolean = false;\r\n unfold: boolean = true;\r\n\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService,\r\n public i18n: XI18nService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setDisplayValue();\r\n this.i18n.localeChange.pipe(takeUntil(this._unSubject)).subscribe(() => this.cdr.markForCheck());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { content } = changes;\r\n XIsChange(content) && this.setDisplayValue();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setDisplayValue() {\r\n if (this.content && this.content.length > (this.max as number)) {\r\n this.displayValue = this.content.substring(0, Number(this.max));\r\n this.retract = true;\r\n } else {\r\n this.displayValue = this.content as string;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n toggle() {\r\n this.unfold = !this.unfold;\r\n if (this.unfold) {\r\n this.displayValue = (this.content as string).substring(0, Number(this.max));\r\n } else {\r\n this.displayValue = this.content as string;\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div class=\"x-text-retract\">\r\n {{ displayValue }}\r\n <ng-container *ngIf=\"retract\">\r\n <x-link type=\"primary\" (click)=\"toggle()\" *ngIf=\"unfold\">...{{ 'textRetract.unfold' | xI18n }}</x-link>\r\n <x-link type=\"primary\" (click)=\"toggle()\" *ngIf=\"!unfold\">{{ 'textRetract.packUp' | xI18n }}</x-link>\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XTextRetractComponent } from './text-retract.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XLinkModule } from '@ng-nest/ui/link';\r\nimport { XTextRetractProperty } from './text-retract.property';\r\nimport { XI18nModule } from '@ng-nest/ui/i18n';\r\n\r\n@NgModule({\r\n declarations: [XTextRetractComponent, XTextRetractProperty],\r\n exports: [XTextRetractComponent],\r\n imports: [CommonModule, FormsModule, XLinkModule, XI18nModule]\r\n})\r\nexport class XTextRetractModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -44,10 +44,30 @@ class XUploadProperty extends XControlValueAccessor {
44
44
  * @en_US Delete button event
45
45
  */
46
46
  this.removeClick = new EventEmitter();
47
+ /**
48
+ * @zh_CN 开始上传事件
49
+ * @en_US Start upload event
50
+ */
51
+ this.uploadReady = new EventEmitter();
52
+ /**
53
+ * @zh_CN 正在上传事件
54
+ * @en_US Start upload event
55
+ */
56
+ this.uploading = new EventEmitter();
57
+ /**
58
+ * @zh_CN 上传成功事件
59
+ * @en_US Start upload event
60
+ */
61
+ this.uploadSuccess = new EventEmitter();
62
+ /**
63
+ * @zh_CN 上传失败事件
64
+ * @en_US Start upload event
65
+ */
66
+ this.uploadError = new EventEmitter();
47
67
  }
48
68
  }
49
69
  /** @nocollapse */ /** @nocollapse */ XUploadProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XUploadProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
50
- /** @nocollapse */ /** @nocollapse */ XUploadProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XUploadProperty, selector: "ng-component", inputs: { text: "text", action: "action", accept: "accept", type: "type", imgCut: "imgCut", multiple: "multiple" }, outputs: { removeClick: "removeClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
70
+ /** @nocollapse */ /** @nocollapse */ XUploadProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XUploadProperty, selector: "ng-component", inputs: { text: "text", action: "action", accept: "accept", type: "type", imgCut: "imgCut", multiple: "multiple" }, outputs: { removeClick: "removeClick", uploadReady: "uploadReady", uploading: "uploading", uploadSuccess: "uploadSuccess", uploadError: "uploadError" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
51
71
  __decorate([
52
72
  XInputBoolean()
53
73
  ], XUploadProperty.prototype, "imgCut", void 0);
@@ -71,6 +91,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
71
91
  type: Input
72
92
  }], removeClick: [{
73
93
  type: Output
94
+ }], uploadReady: [{
95
+ type: Output
96
+ }], uploading: [{
97
+ type: Output
98
+ }], uploadSuccess: [{
99
+ type: Output
100
+ }], uploadError: [{
101
+ type: Output
74
102
  }] } });
75
103
  /**
76
104
  * Upload Portal
@@ -307,7 +335,7 @@ class XUploadComponent extends XUploadProperty {
307
335
  if (this.type === 'img')
308
336
  this.accept = 'image/*';
309
337
  }
310
- ngOnDestory() {
338
+ ngOnDestroy() {
311
339
  this._unSubject.next();
312
340
  this._unSubject.unsubscribe();
313
341
  }
@@ -334,8 +362,9 @@ class XUploadComponent extends XUploadProperty {
334
362
  if (files.length > 0)
335
363
  this.showUpload = true;
336
364
  this.files = files;
337
- this.value = [];
338
- this.uploading();
365
+ this.value = this.files;
366
+ this.onChange && this.onChange(this.value);
367
+ this.onUploading();
339
368
  input.value = '';
340
369
  this.cdr.detectChanges();
341
370
  }
@@ -347,7 +376,7 @@ class XUploadComponent extends XUploadProperty {
347
376
  const vindex = this.value.indexOf(file);
348
377
  if (vindex > -1) {
349
378
  this.value.splice(vindex, 1);
350
- this.onChange(this.value);
379
+ this.onChange && this.onChange(this.value);
351
380
  }
352
381
  this.removeClick.emit({ file: file, index: index });
353
382
  this.cdr.detectChanges();
@@ -357,7 +386,7 @@ class XUploadComponent extends XUploadProperty {
357
386
  return;
358
387
  this.file.nativeElement.click();
359
388
  }
360
- uploading() {
389
+ onUploading() {
361
390
  if (!this.action)
362
391
  return;
363
392
  let readyFiles = this.files.filter((x) => x.state === 'ready');
@@ -381,13 +410,12 @@ class XUploadComponent extends XUploadProperty {
381
410
  reader.onload = () => {
382
411
  file.url = JSON.parse(reader.result)[0];
383
412
  if (index === -1) {
384
- this.value.push(file);
413
+ // this.value.push(file);
385
414
  }
386
415
  else {
387
- this.value[index] = file;
416
+ // this.value[index] = file;
388
417
  this.files[index] = file;
389
418
  }
390
- this.onChange(this.value);
391
419
  this.cdr.detectChanges();
392
420
  };
393
421
  })))
@@ -396,6 +424,7 @@ class XUploadComponent extends XUploadProperty {
396
424
  this.cdr.detectChanges();
397
425
  }, () => {
398
426
  file.state = 'error';
427
+ this.uploadError.emit(file);
399
428
  this.cdr.detectChanges();
400
429
  });
401
430
  }
@@ -403,15 +432,18 @@ class XUploadComponent extends XUploadProperty {
403
432
  switch (event.type) {
404
433
  case HttpEventType.Sent:
405
434
  file.state = 'ready';
435
+ this.uploadReady.emit(file);
406
436
  return `开始上传文件`;
407
437
  case HttpEventType.UploadProgress:
408
438
  file.state = 'uploading';
409
439
  if (event.total)
410
440
  file.percent = Math.round((100 * event.loaded) / event.total);
441
+ this.uploading.emit(file);
411
442
  return `上传中`;
412
443
  case HttpEventType.Response:
413
444
  file.state = 'success';
414
445
  fun(event.body);
446
+ this.uploadSuccess.emit(file);
415
447
  return `文件上传完毕`;
416
448
  }
417
449
  return;