ngx-tethys 19.1.0-next.1 → 19.1.0-next.11

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 (145) hide show
  1. package/CHANGELOG.md +114 -0
  2. package/arrow-switcher/arrow-switcher.component.d.ts +5 -1
  3. package/badge/badge.component.d.ts +1 -1
  4. package/color-picker/coordinates.directive.d.ts +1 -2
  5. package/date-picker/abstract-picker.component.d.ts +50 -52
  6. package/date-picker/abstract-picker.directive.d.ts +15 -40
  7. package/date-picker/base-picker.component.d.ts +12 -40
  8. package/date-picker/date-picker.config.d.ts +3 -0
  9. package/date-picker/lib/calendar/calendar-footer.component.d.ts +24 -19
  10. package/date-picker/lib/calendar/calendar-header.component.d.ts +15 -15
  11. package/date-picker/lib/calendar/calendar-table.component.d.ts +15 -16
  12. package/date-picker/lib/date/date-table-cell.component.d.ts +6 -3
  13. package/date-picker/lib/date/date-table.component.d.ts +2 -3
  14. package/date-picker/lib/date-carousel/date-carousel.component.d.ts +2 -3
  15. package/date-picker/lib/decade/decade-header.component.d.ts +2 -5
  16. package/date-picker/lib/decade/decade-table.component.d.ts +3 -5
  17. package/date-picker/lib/month/month-table.component.d.ts +1 -2
  18. package/date-picker/lib/popups/date-popup.component.d.ts +33 -34
  19. package/date-picker/lib/popups/inner-popup.component.d.ts +22 -29
  20. package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -4
  21. package/date-picker/lib/year/year-header.component.d.ts +2 -4
  22. package/date-picker/lib/year/year-table.component.d.ts +2 -4
  23. package/date-picker/month-picker.component.d.ts +2 -2
  24. package/date-picker/picker.component.d.ts +31 -36
  25. package/date-picker/picker.pipes.d.ts +4 -5
  26. package/date-picker/picker.util.d.ts +5 -5
  27. package/date-picker/picker.validators.d.ts +4 -8
  28. package/date-picker/quarter-picker.component.d.ts +2 -3
  29. package/date-picker/styles/range-picker.scss +1 -0
  30. package/date-picker/week-picker.component.d.ts +0 -1
  31. package/date-picker/year-picker.component.d.ts +2 -3
  32. package/dropdown/dropdown-menu.component.d.ts +1 -1
  33. package/dropdown/dropdown.directive.d.ts +4 -3
  34. package/empty/empty.component.d.ts +2 -1
  35. package/fesm2022/ngx-tethys-arrow-switcher.mjs +15 -3
  36. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  37. package/fesm2022/ngx-tethys-autocomplete.mjs +4 -4
  38. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  39. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  40. package/fesm2022/ngx-tethys-cascader.mjs +1 -1
  41. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  42. package/fesm2022/ngx-tethys-checkbox.mjs +2 -2
  43. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  44. package/fesm2022/ngx-tethys-color-picker.mjs +4 -6
  45. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  46. package/fesm2022/ngx-tethys-copy.mjs +2 -2
  47. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  48. package/fesm2022/ngx-tethys-date-picker.mjs +855 -1072
  49. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  50. package/fesm2022/ngx-tethys-divider.mjs +5 -5
  51. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  52. package/fesm2022/ngx-tethys-dropdown.mjs +9 -11
  53. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  54. package/fesm2022/ngx-tethys-empty.mjs +5 -2
  55. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  56. package/fesm2022/ngx-tethys-flexible-text.mjs +4 -5
  57. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  58. package/fesm2022/ngx-tethys-i18n.mjs +26 -6
  59. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  60. package/fesm2022/ngx-tethys-image.mjs +5 -7
  61. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  62. package/fesm2022/ngx-tethys-layout.mjs +291 -334
  63. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  64. package/fesm2022/ngx-tethys-list.mjs +183 -217
  65. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  66. package/fesm2022/ngx-tethys-message.mjs +29 -36
  67. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  68. package/fesm2022/ngx-tethys-notify.mjs +33 -41
  69. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  70. package/fesm2022/ngx-tethys-property.mjs +1 -0
  71. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  72. package/fesm2022/ngx-tethys-radio.mjs +4 -4
  73. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  74. package/fesm2022/ngx-tethys-resizable.mjs +20 -17
  75. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  76. package/fesm2022/ngx-tethys-select.mjs +164 -228
  77. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  78. package/fesm2022/ngx-tethys-shared.mjs +423 -587
  79. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  80. package/fesm2022/ngx-tethys-skeleton.mjs +1 -2
  81. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  82. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  83. package/fesm2022/ngx-tethys-table.mjs +1 -2
  84. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  85. package/fesm2022/ngx-tethys-time-picker.mjs +244 -271
  86. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  87. package/fesm2022/ngx-tethys-tooltip.mjs +109 -93
  88. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  89. package/fesm2022/ngx-tethys-tree-select.mjs +215 -281
  90. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  91. package/fesm2022/ngx-tethys-upload.mjs +2 -2
  92. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  93. package/fesm2022/ngx-tethys.mjs +1 -1
  94. package/fesm2022/ngx-tethys.mjs.map +1 -1
  95. package/i18n/i18n.d.ts +7 -2
  96. package/i18n/locales/de-de.d.ts +5 -1
  97. package/i18n/locales/en-us.d.ts +5 -1
  98. package/i18n/locales/ja-jp.d.ts +5 -1
  99. package/i18n/locales/zh-hans.d.ts +5 -1
  100. package/i18n/locales/zh-hant.d.ts +5 -1
  101. package/image/preview/image-preview.component.d.ts +2 -2
  102. package/layout/header.component.d.ts +15 -19
  103. package/layout/layout.component.d.ts +3 -2
  104. package/layout/sidebar-header.component.d.ts +7 -8
  105. package/layout/sidebar.component.d.ts +32 -62
  106. package/list/list-item-meta.component.d.ts +7 -9
  107. package/list/list-item.component.d.ts +0 -2
  108. package/list/list.component.d.ts +2 -8
  109. package/list/selection/selection-list.d.ts +33 -46
  110. package/message/abstract/abstract-message.component.d.ts +2 -3
  111. package/message/message-container.component.d.ts +0 -1
  112. package/message/message.component.d.ts +1 -3
  113. package/notify/notify-container.component.d.ts +0 -1
  114. package/notify/notify.component.d.ts +7 -12
  115. package/package.json +1 -1
  116. package/resizable/resizable.directive.d.ts +2 -1
  117. package/schematics/version.d.ts +1 -1
  118. package/schematics/version.js +1 -1
  119. package/select/custom-select/custom-select.component.d.ts +33 -56
  120. package/select/native-select/native-select.component.d.ts +7 -13
  121. package/shared/base-form-check.component.d.ts +6 -8
  122. package/shared/directives/string-or-template-outlet.directive.d.ts +5 -6
  123. package/shared/directives/thy-autofocus.directive.d.ts +4 -6
  124. package/shared/directives/thy-contextmenu.directive.d.ts +2 -2
  125. package/shared/directives/thy-ctrl-enter.directive.d.ts +2 -2
  126. package/shared/directives/thy-enter.directive.d.ts +2 -2
  127. package/shared/directives/thy-scroll.directive.d.ts +5 -8
  128. package/shared/directives/thy-show.d.ts +5 -6
  129. package/shared/directives/thy-stop-propagation.directive.d.ts +4 -4
  130. package/shared/directives/view-outlet.directive.d.ts +6 -7
  131. package/shared/ng-transclude.directive.d.ts +2 -3
  132. package/shared/option/group/option-group.component.d.ts +5 -9
  133. package/shared/option/list-option/list-option.component.d.ts +9 -13
  134. package/shared/option/option.component.d.ts +10 -17
  135. package/shared/option/option.token.d.ts +4 -3
  136. package/shared/option/options-container.component.d.ts +1 -1
  137. package/shared/select/select-control/select-control.component.d.ts +38 -53
  138. package/stepper/stepper.component.d.ts +1 -1
  139. package/table/table-column.component.d.ts +15 -5
  140. package/time-picker/inner/inner-time-picker.class.d.ts +15 -13
  141. package/time-picker/inner/inner-time-picker.component.d.ts +26 -26
  142. package/time-picker/time-picker-panel.component.d.ts +18 -20
  143. package/time-picker/time-picker.component.d.ts +22 -30
  144. package/tooltip/tooltip.directive.d.ts +20 -22
  145. package/tree-select/tree-select.component.d.ts +53 -70
@@ -1,15 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { HostBinding, Input, Component, inject, Renderer2, ElementRef, NgZone, ChangeDetectorRef, EventEmitter, forwardRef, Output, ContentChildren, ChangeDetectionStrategy, ContentChild, NgModule } from '@angular/core';
2
+ import { input, Component, inject, Renderer2, ElementRef, NgZone, ChangeDetectorRef, computed, output, effect, forwardRef, ContentChildren, ChangeDetectionStrategy, contentChild, NgModule } from '@angular/core';
3
3
  import { NgTemplateOutlet, CommonModule } from '@angular/common';
4
4
  import { coerceBooleanProperty, dom, helpers, keycodes } from 'ngx-tethys/util';
5
5
  import { ScrollToService } from 'ngx-tethys/core';
6
6
  import { ThyListOption, THY_LIST_OPTION_PARENT_COMPONENT, ThyOptionModule } from 'ngx-tethys/shared';
7
- import { Subscription } from 'rxjs';
8
- import { startWith } from 'rxjs/operators';
9
7
  import { useHostRenderer } from '@tethys/cdk/dom';
10
8
  import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
11
9
  import { SelectionModel } from '@angular/cdk/collections';
12
10
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
11
+ import { startWith } from 'rxjs/operators';
13
12
  import { ThyAvatar, ThyAvatarModule } from 'ngx-tethys/avatar';
14
13
 
15
14
  /**
@@ -18,58 +17,45 @@ import { ThyAvatar, ThyAvatarModule } from 'ngx-tethys/avatar';
18
17
  * @order 10
19
18
  */
20
19
  class ThyList {
21
- /**
22
- * 控制分割线的显示与隐藏
23
- * @default false
24
- */
25
- set thyDivided(value) {
26
- this._isDivided = value;
27
- }
28
20
  constructor() {
29
- this._isDivided = false;
30
- this._isList = true;
21
+ /**
22
+ * 控制分割线的显示与隐藏
23
+ */
24
+ this.thyDivided = input(false, { transform: coerceBooleanProperty });
31
25
  }
32
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.8", type: ThyList, isStandalone: true, selector: "thy-list", inputs: { thyDivided: ["thyDivided", "thyDivided", coerceBooleanProperty] }, host: { properties: { "class.thy-list-divided": "this._isDivided", "class.thy-list": "this._isList" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyList, isStandalone: true, selector: "thy-list", inputs: { thyDivided: { classPropertyName: "thyDivided", publicName: "thyDivided", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.thy-list-divided": "thyDivided()" }, classAttribute: "thy-list" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
34
28
  }
35
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyList, decorators: [{
36
30
  type: Component,
37
31
  args: [{
38
32
  selector: 'thy-list',
33
+ host: {
34
+ class: 'thy-list',
35
+ '[class.thy-list-divided]': 'thyDivided()'
36
+ },
39
37
  template: '<ng-content></ng-content>'
40
38
  }]
41
- }], ctorParameters: () => [], propDecorators: { thyDivided: [{
42
- type: Input,
43
- args: [{ transform: coerceBooleanProperty }]
44
- }], _isDivided: [{
45
- type: HostBinding,
46
- args: [`class.thy-list-divided`]
47
- }], _isList: [{
48
- type: HostBinding,
49
- args: [`class.thy-list`]
50
- }] } });
39
+ }] });
51
40
 
52
41
  /**
53
42
  * @name thy-list-item,[thy-list-item]
54
43
  * @order 15
55
44
  */
56
45
  class ThyListItem {
57
- constructor() {
58
- this._isListItem = true;
59
- }
60
46
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyListItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: ThyListItem, isStandalone: true, selector: "thy-list-item,[thy-list-item]", host: { properties: { "class.thy-list-item": "this._isListItem" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: ThyListItem, isStandalone: true, selector: "thy-list-item,[thy-list-item]", host: { classAttribute: "thy-list-item" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
62
48
  }
63
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyListItem, decorators: [{
64
50
  type: Component,
65
51
  args: [{
66
52
  selector: 'thy-list-item,[thy-list-item]',
67
- template: '<ng-content></ng-content>'
53
+ template: '<ng-content></ng-content>',
54
+ host: {
55
+ class: 'thy-list-item'
56
+ }
68
57
  }]
69
- }], ctorParameters: () => [], propDecorators: { _isListItem: [{
70
- type: HostBinding,
71
- args: [`class.thy-list-item`]
72
- }] } });
58
+ }] });
73
59
 
74
60
  const listSizesMap = {
75
61
  sm: 'thy-list-sm'
@@ -84,177 +70,190 @@ class ThySelectionList {
84
70
  this.elementRef = inject(ElementRef);
85
71
  this.ngZone = inject(NgZone);
86
72
  this.changeDetectorRef = inject(ChangeDetectorRef);
87
- this._selectionChangesUnsubscribe$ = Subscription.EMPTY;
88
73
  this.hostRenderer = useHostRenderer();
89
- this.layout = 'list';
90
- this._isList = true;
91
- this._isSelectionList = true;
92
- this.multiple = true;
93
- this.isLayoutGrid = false;
94
- this.spaceEnabled = true;
74
+ /**
75
+ * 改变 grid item 的选择模式,使其支持多选
76
+ */
77
+ this.multiple = input(true, { alias: 'thyMultiple', transform: coerceBooleanProperty });
78
+ /**
79
+ * 绑定键盘事件的容器
80
+ * @type HTMLElement | ElementRef | string
81
+ * @default thy-selection-list 组件绑定的元素
82
+ */
83
+ this.thyBindKeyEventContainer = input();
84
+ /**
85
+ * 出现滚动条的容器
86
+ * @type HTMLElement | ElementRef | string
87
+ * @default thy-selection-list 组件绑定的元素
88
+ */
89
+ this.thyScrollContainer = input();
90
+ /**
91
+ * 键盘事件触发 Before 调用,如果返回 false 则停止继续执行
92
+ */
93
+ this.thyBeforeKeydown = input();
94
+ /**
95
+ * Option Value 唯一的 Key,用于存储哪些选择被选中的唯一值,只有 Option 的 thyValue 是对象的时才可以传入该选项
96
+ */
97
+ this.thyUniqueKey = input();
98
+ /**
99
+ * 比较2个选项的 Value 是否相同
100
+ */
101
+ this.thyCompareWith = input();
102
+ /**
103
+ * grid item 的展示样式
104
+ * @type list | grid
105
+ */
106
+ this.layout = input('list', { alias: 'thyLayout' });
107
+ this.isLayoutGrid = computed(() => this.layout() === 'grid');
108
+ /**
109
+ * 是否自动激活第一项
110
+ */
111
+ this.thyAutoActiveFirstItem = input(false, { transform: coerceBooleanProperty });
112
+ /**
113
+ * 改变 grid item 的大小,支持默认以及 sm 两种大小
114
+ * @type sm | md | lg
115
+ */
116
+ this.thySize = input();
117
+ /**
118
+ * 是否按下空格切换聚焦选项
119
+ */
120
+ this.thySpaceKeyEnabled = input(true, { transform: coerceBooleanProperty });
95
121
  /**
96
122
  * 每当选项的选定状态发生更改时,都会触发更改事件
97
- * @type EventEmitter<ThySelectionListChange>
98
123
  */
99
- this.thySelectionChange = new EventEmitter();
100
- this._onTouched = () => { };
101
- this._onChange = (_) => { };
102
- }
103
- /**
104
- * 改变 grid item 的选择模式,使其支持多选
105
- * @default true
106
- */
107
- set thyMultiple(value) {
108
- const previousValue = this.multiple;
109
- this.multiple = value;
110
- if (previousValue !== this.multiple) {
111
- this._instanceSelectionModel();
112
- }
124
+ this.thySelectionChange = output();
125
+ this.onTouched = () => { };
126
+ this.onChange = (_) => { };
127
+ effect(() => {
128
+ this.setListSize();
129
+ });
130
+ effect(() => {
131
+ this.instanceSelectionModel();
132
+ });
113
133
  }
114
- /**
115
- * grid item 的展示样式
116
- * @type list | grid
117
- * @default list
118
- */
119
- set thyLayout(value) {
120
- this.layout = value;
121
- this.isLayoutGrid = value === 'grid';
122
- }
123
- /**
124
- * 是否自动激活第一项
125
- */
126
- set thyAutoActiveFirstItem(value) {
127
- this.autoActiveFirstItem = value;
128
- }
129
- /**
130
- * 改变 grid item 的大小,支持默认以及 sm 两种大小
131
- * @type sm | md | lg
132
- */
133
- set thySize(value) {
134
- this._setListSize(value);
135
- }
136
- /**
137
- * 是否按下空格切换聚焦选项
138
- */
139
- set thySpaceKeyEnabled(value) {
140
- this.spaceEnabled = value;
141
- }
142
- _emitChangeEvent(option, event) {
134
+ emitChangeEvent(option, event) {
143
135
  this.thySelectionChange.emit({
144
136
  source: this,
145
- value: option.thyValue,
137
+ value: option.thyValue(),
146
138
  option: option,
147
139
  event: event,
148
140
  selected: this.isSelected(option)
149
141
  });
150
142
  }
151
- _emitModelValueChange() {
143
+ emitModelValueChange() {
144
+ const uniqueKey = this.thyUniqueKey();
152
145
  if (this.options) {
153
146
  let selectedValues = this.selectionModel.selected;
154
- if (this.thyUniqueKey) {
147
+ if (uniqueKey) {
155
148
  selectedValues = selectedValues.map(selectedValue => {
156
149
  const selectedOption = this.options.find(option => {
157
- return option.thyValue[this.thyUniqueKey] === selectedValue;
150
+ return option.thyValue()[uniqueKey] === selectedValue;
158
151
  });
159
152
  if (selectedOption) {
160
- return selectedOption.thyValue;
153
+ return selectedOption.thyValue();
161
154
  }
162
155
  else {
163
- return this._modelValues.find(value => {
164
- return value[this.thyUniqueKey] === selectedValue;
156
+ return this.modelValues.find(value => {
157
+ return value[uniqueKey] === selectedValue;
165
158
  });
166
159
  }
167
160
  });
168
161
  }
169
- this._modelValues = selectedValues;
162
+ this.modelValues = selectedValues;
170
163
  let changeValue = selectedValues;
171
- if (!this.multiple && selectedValues && selectedValues.length > 0) {
164
+ if (!this.multiple() && selectedValues && selectedValues.length > 0) {
172
165
  changeValue = selectedValues[0];
173
166
  }
174
- this._onChange(changeValue);
167
+ this.onChange(changeValue);
175
168
  }
176
169
  }
177
- _toggleFocusedOption(event) {
178
- if (this._keyManager.activeItem) {
170
+ toggleFocusedOption(event) {
171
+ if (this.keyManager.activeItem) {
179
172
  this.ngZone.run(() => {
180
- this.toggleOption(this._keyManager.activeItem, event);
173
+ this.toggleOption(this.keyManager.activeItem, event);
181
174
  });
182
175
  }
183
176
  }
184
- _initializeFocusKeyManager() {
185
- this._keyManager = new ActiveDescendantKeyManager(this.options)
177
+ initializeFocusKeyManager() {
178
+ this.keyManager = new ActiveDescendantKeyManager(this.options)
186
179
  .withWrap()
187
180
  // .withTypeAhead()
188
181
  // Allow disabled items to be focusable. For accessibility reasons, there must be a way for
189
182
  // screenreader users, that allows reading the different options of the list.
190
183
  .skipPredicate(() => false);
191
184
  }
192
- _instanceSelectionModel() {
193
- this.selectionModel = new SelectionModel(this.multiple);
185
+ instanceSelectionModel() {
186
+ this.selectionModel = new SelectionModel(this.multiple());
194
187
  }
195
- _getElementBySelector(element) {
188
+ getElementBySelector(element) {
196
189
  return dom.getHTMLElementBySelector(element, this.elementRef);
197
190
  }
198
- _compareValue(value1, value2) {
199
- if (this.thyCompareWith) {
200
- const compareFn = this.thyCompareWith;
191
+ compareValue(value1, value2) {
192
+ const thyUniqueKey = this.thyUniqueKey();
193
+ const thyCompareWith = this.thyCompareWith();
194
+ if (thyCompareWith) {
195
+ const compareFn = thyCompareWith;
201
196
  return compareFn(value1, value2);
202
197
  }
203
- else if (this.thyUniqueKey) {
204
- return value1 && value1[this.thyUniqueKey] === value2 && value2[this.thyUniqueKey];
198
+ else if (thyUniqueKey) {
199
+ return value1 && value1[thyUniqueKey] === value2 && value2[thyUniqueKey];
205
200
  }
206
201
  else {
207
202
  return value1 === value2;
208
203
  }
209
204
  }
210
- _getOptionSelectionValue(option) {
211
- if (option.thyValue) {
212
- return this.thyUniqueKey ? option.thyValue[this.thyUniqueKey] : option.thyValue;
205
+ getOptionSelectionValue(option) {
206
+ const thyValue = option.thyValue();
207
+ if (thyValue) {
208
+ const thyUniqueKey = this.thyUniqueKey();
209
+ return thyUniqueKey ? thyValue[thyUniqueKey] : thyValue;
213
210
  }
214
211
  else {
215
212
  return option;
216
213
  }
217
214
  }
218
- _setSelectionByValues(values) {
215
+ setSelectionByValues(values) {
219
216
  this.selectionModel.clear();
220
217
  values.forEach(value => {
221
- if (this.thyUniqueKey) {
222
- this.selectionModel.select(value[this.thyUniqueKey]);
218
+ const thyUniqueKey = this.thyUniqueKey();
219
+ if (thyUniqueKey) {
220
+ this.selectionModel.select(value[thyUniqueKey]);
223
221
  }
224
222
  else {
225
223
  this.selectionModel.select(value);
226
224
  }
227
225
  });
228
226
  }
229
- _setAllOptionsSelected(toIsSelected) {
227
+ setAllOptionsSelected(toIsSelected) {
230
228
  // Keep track of whether anything changed, because we only want to
231
229
  // emit the changed event when something actually changed.
232
230
  let hasChanged = false;
233
231
  this.options.forEach(option => {
234
- const fromIsSelected = this.selectionModel.isSelected(option.thyValue);
232
+ const fromIsSelected = this.selectionModel.isSelected(option.thyValue());
235
233
  if (fromIsSelected !== toIsSelected) {
236
234
  hasChanged = true;
237
- this.selectionModel.toggle(option.thyValue);
235
+ this.selectionModel.toggle(option.thyValue());
238
236
  }
239
237
  });
240
238
  if (hasChanged) {
241
- this._emitModelValueChange();
239
+ this.emitModelValueChange();
242
240
  }
243
241
  }
244
- _getOptionByValue(value) {
242
+ getOptionByValue(value) {
245
243
  return this.options.find(option => {
246
- return this._compareValue(option.thyValue, value);
244
+ return this.compareValue(option.thyValue(), value);
247
245
  });
248
246
  }
249
- _getActiveOption() {
250
- if (this._keyManager.activeItem) {
251
- return this._getOptionByValue(this._keyManager.activeItem.thyValue);
247
+ getActiveOption() {
248
+ if (this.keyManager.activeItem) {
249
+ return this.getOptionByValue(this.keyManager.activeItem.thyValue());
252
250
  }
253
251
  else {
254
252
  return null;
255
253
  }
256
254
  }
257
- _setListSize(size) {
255
+ setListSize() {
256
+ const size = this.thySize();
258
257
  for (const key in listSizesMap) {
259
258
  if (listSizesMap.hasOwnProperty(key)) {
260
259
  this.hostRenderer.removeClass(listSizesMap[key]);
@@ -265,55 +264,57 @@ class ThySelectionList {
265
264
  }
266
265
  }
267
266
  ngOnInit() {
268
- const bindKeyEventElement = this._getElementBySelector(this.thyBindKeyEventContainer);
267
+ const bindKeyEventElement = this.getElementBySelector(this.thyBindKeyEventContainer());
269
268
  this.ngZone.runOutsideAngular(() => {
270
- this._bindKeyEventUnsubscribe = this.renderer.listen(bindKeyEventElement, 'keydown', this.onKeydown.bind(this));
269
+ this.bindKeyEventUnsubscribe = this.renderer.listen(bindKeyEventElement, 'keydown', this.onKeydown.bind(this));
271
270
  });
272
- this._instanceSelectionModel();
271
+ this.instanceSelectionModel();
273
272
  }
274
273
  writeValue(value) {
275
274
  if ((typeof ngDevMode === 'undefined' || ngDevMode) && value) {
276
- if (this.multiple && !helpers.isArray(value)) {
275
+ const multiple = this.multiple();
276
+ if (multiple && !helpers.isArray(value)) {
277
277
  throw new Error(`The multiple selection ngModel must be an array.`);
278
278
  }
279
- if (!this.multiple && helpers.isArray(value)) {
279
+ if (!multiple && helpers.isArray(value)) {
280
280
  throw new Error(`The single selection ngModel should not be an array.`);
281
281
  }
282
282
  }
283
283
  const values = helpers.isArray(value) ? value : value ? [value] : [];
284
- this._modelValues = values;
284
+ this.modelValues = values;
285
285
  if (this.options) {
286
- this._setSelectionByValues(values);
286
+ this.setSelectionByValues(values);
287
287
  }
288
288
  this.changeDetectorRef.markForCheck();
289
289
  }
290
290
  registerOnChange(fn) {
291
- this._onChange = fn;
291
+ this.onChange = fn;
292
292
  }
293
293
  registerOnTouched(fn) {
294
- this._onTouched = fn;
294
+ this.onTouched = fn;
295
295
  }
296
296
  setDisabledState(isDisabled) {
297
297
  this.disabled = isDisabled;
298
298
  }
299
299
  onKeydown(event) {
300
- if (this.thyBeforeKeydown) {
300
+ const thyBeforeKeydown = this.thyBeforeKeydown();
301
+ if (thyBeforeKeydown) {
301
302
  // stop key down event
302
- const isContinue = this.thyBeforeKeydown(event);
303
+ const isContinue = thyBeforeKeydown(event);
303
304
  if (!isContinue) {
304
305
  return;
305
306
  }
306
307
  }
307
308
  const keyCode = event.keyCode || event.which;
308
- const manager = this._keyManager;
309
+ const manager = this.keyManager;
309
310
  const previousFocusIndex = manager.activeItemIndex;
310
311
  switch (keyCode) {
311
312
  case keycodes.SPACE:
312
313
  case keycodes.ENTER:
313
- if (keyCode === keycodes.SPACE && !this.spaceEnabled) {
314
+ if (keyCode === keycodes.SPACE && !this.thySpaceKeyEnabled()) {
314
315
  return;
315
316
  }
316
- this._toggleFocusedOption(event);
317
+ this.toggleFocusedOption(event);
317
318
  // Always prevent space from scrolling the page since the list has focus
318
319
  event.preventDefault();
319
320
  break;
@@ -323,64 +324,63 @@ class ThySelectionList {
323
324
  if ((keyCode === keycodes.UP_ARROW || keyCode === keycodes.DOWN_ARROW) &&
324
325
  event.shiftKey &&
325
326
  manager.activeItemIndex !== previousFocusIndex) {
326
- this._toggleFocusedOption(event);
327
+ this.toggleFocusedOption(event);
327
328
  }
328
329
  }
329
330
  toggleOption(option, event) {
330
- if (option && !option.disabled) {
331
- this.selectionModel.toggle(this._getOptionSelectionValue(option));
331
+ if (option && !option.thyDisabled()) {
332
+ this.selectionModel.toggle(this.getOptionSelectionValue(option));
332
333
  // Emit a change event because the focused option changed its state through user
333
334
  // interaction.
334
- this._emitModelValueChange();
335
- this._emitChangeEvent(option, event);
335
+ this.emitModelValueChange();
336
+ this.emitChangeEvent(option, event);
336
337
  }
337
338
  }
338
339
  setActiveOption(option) {
339
- this._keyManager.updateActiveItem(option); // .updateActiveItemIndex(this._getOptionIndex(option));
340
+ this.keyManager.updateActiveItem(option); // .updateActiveItemIndex(this._getOptionIndex(option));
340
341
  }
341
342
  scrollIntoView(option) {
342
- const scrollContainerElement = dom.getHTMLElementBySelector(this.thyScrollContainer, this.elementRef);
343
+ const scrollContainerElement = dom.getHTMLElementBySelector(this.thyScrollContainer(), this.elementRef);
343
344
  ScrollToService.scrollToElement(option.element.nativeElement, scrollContainerElement);
344
345
  }
345
346
  isSelected(option) {
346
- return this.selectionModel.isSelected(this._getOptionSelectionValue(option));
347
+ return this.selectionModel.isSelected(this.getOptionSelectionValue(option));
347
348
  }
348
349
  clearActiveItem() {
349
- if (this._keyManager.activeItem) {
350
- this._keyManager.setActiveItem(-1);
350
+ if (this.keyManager.activeItem) {
351
+ this.keyManager.setActiveItem(-1);
351
352
  }
352
353
  }
353
354
  determineClearActiveItem() {
354
- if (!this._getActiveOption()) {
355
+ if (!this.getActiveOption()) {
355
356
  this.clearActiveItem();
356
357
  }
357
358
  }
358
359
  /** Selects all of the options. */
359
360
  selectAll() {
360
- this._setAllOptionsSelected(true);
361
+ this.setAllOptionsSelected(true);
361
362
  }
362
363
  /** Deselects all of the options. */
363
364
  deselectAll() {
364
- this._setAllOptionsSelected(false);
365
+ this.setAllOptionsSelected(false);
365
366
  }
366
367
  ngAfterContentInit() {
367
- this._initializeFocusKeyManager();
368
+ this.initializeFocusKeyManager();
368
369
  this.options.changes.pipe(startWith(true)).subscribe(() => {
369
- if (this.autoActiveFirstItem) {
370
- if (!this._keyManager.activeItem || this.options.toArray().indexOf(this._keyManager.activeItem) < 0) {
371
- this._keyManager.setFirstItemActive();
370
+ if (this.thyAutoActiveFirstItem()) {
371
+ if (!this.keyManager.activeItem || this.options.toArray().indexOf(this.keyManager.activeItem) < 0) {
372
+ this.keyManager.setFirstItemActive();
372
373
  }
373
374
  }
374
375
  });
375
376
  }
376
377
  ngOnDestroy() {
377
- this._selectionChangesUnsubscribe$.unsubscribe();
378
- if (this._bindKeyEventUnsubscribe) {
379
- this._bindKeyEventUnsubscribe();
378
+ if (this.bindKeyEventUnsubscribe) {
379
+ this.bindKeyEventUnsubscribe();
380
380
  }
381
381
  }
382
382
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySelectionList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
383
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.8", type: ThySelectionList, isStandalone: true, selector: "thy-selection-list,[thy-selection-list]", inputs: { thyMultiple: ["thyMultiple", "thyMultiple", coerceBooleanProperty], thyBindKeyEventContainer: "thyBindKeyEventContainer", thyScrollContainer: "thyScrollContainer", thyBeforeKeydown: "thyBeforeKeydown", thyUniqueKey: "thyUniqueKey", thyCompareWith: "thyCompareWith", thyLayout: "thyLayout", thyAutoActiveFirstItem: ["thyAutoActiveFirstItem", "thyAutoActiveFirstItem", coerceBooleanProperty], thySize: "thySize", thySpaceKeyEnabled: ["thySpaceKeyEnabled", "thySpaceKeyEnabled", coerceBooleanProperty] }, outputs: { thySelectionChange: "thySelectionChange" }, host: { properties: { "class.thy-list": "this._isList", "class.thy-selection-list": "this._isSelectionList", "class.thy-multiple-selection-list": "this.multiple", "class.thy-grid-list": "this.isLayoutGrid" } }, providers: [
383
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThySelectionList, isStandalone: true, selector: "thy-selection-list,[thy-selection-list]", inputs: { multiple: { classPropertyName: "multiple", publicName: "thyMultiple", isSignal: true, isRequired: false, transformFunction: null }, thyBindKeyEventContainer: { classPropertyName: "thyBindKeyEventContainer", publicName: "thyBindKeyEventContainer", isSignal: true, isRequired: false, transformFunction: null }, thyScrollContainer: { classPropertyName: "thyScrollContainer", publicName: "thyScrollContainer", isSignal: true, isRequired: false, transformFunction: null }, thyBeforeKeydown: { classPropertyName: "thyBeforeKeydown", publicName: "thyBeforeKeydown", isSignal: true, isRequired: false, transformFunction: null }, thyUniqueKey: { classPropertyName: "thyUniqueKey", publicName: "thyUniqueKey", isSignal: true, isRequired: false, transformFunction: null }, thyCompareWith: { classPropertyName: "thyCompareWith", publicName: "thyCompareWith", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "thyLayout", isSignal: true, isRequired: false, transformFunction: null }, thyAutoActiveFirstItem: { classPropertyName: "thyAutoActiveFirstItem", publicName: "thyAutoActiveFirstItem", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thySpaceKeyEnabled: { classPropertyName: "thySpaceKeyEnabled", publicName: "thySpaceKeyEnabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thySelectionChange: "thySelectionChange" }, host: { properties: { "class.thy-multiple-selection-list": "multiple()", "class.thy-grid-list": "isLayoutGrid()" }, classAttribute: "thy-list thy-selection-list" }, providers: [
384
384
  {
385
385
  provide: THY_LIST_OPTION_PARENT_COMPONENT,
386
386
  useExisting: ThySelectionList
@@ -408,48 +408,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
408
408
  multi: true
409
409
  }
410
410
  ],
411
+ host: {
412
+ class: 'thy-list thy-selection-list',
413
+ '[class.thy-multiple-selection-list]': 'multiple()',
414
+ '[class.thy-grid-list]': 'isLayoutGrid()'
415
+ },
411
416
  changeDetection: ChangeDetectionStrategy.OnPush
412
417
  }]
413
- }], propDecorators: { _isList: [{
414
- type: HostBinding,
415
- args: [`class.thy-list`]
416
- }], _isSelectionList: [{
417
- type: HostBinding,
418
- args: [`class.thy-selection-list`]
419
- }], multiple: [{
420
- type: HostBinding,
421
- args: [`class.thy-multiple-selection-list`]
422
- }], isLayoutGrid: [{
423
- type: HostBinding,
424
- args: [`class.thy-grid-list`]
425
- }], options: [{
418
+ }], ctorParameters: () => [], propDecorators: { options: [{
426
419
  type: ContentChildren,
427
420
  args: [ThyListOption, { descendants: true }]
428
- }], thyMultiple: [{
429
- type: Input,
430
- args: [{ transform: coerceBooleanProperty }]
431
- }], thyBindKeyEventContainer: [{
432
- type: Input
433
- }], thyScrollContainer: [{
434
- type: Input
435
- }], thyBeforeKeydown: [{
436
- type: Input
437
- }], thyUniqueKey: [{
438
- type: Input
439
- }], thyCompareWith: [{
440
- type: Input
441
- }], thyLayout: [{
442
- type: Input
443
- }], thyAutoActiveFirstItem: [{
444
- type: Input,
445
- args: [{ transform: coerceBooleanProperty }]
446
- }], thySize: [{
447
- type: Input
448
- }], thySpaceKeyEnabled: [{
449
- type: Input,
450
- args: [{ transform: coerceBooleanProperty }]
451
- }], thySelectionChange: [{
452
- type: Output
453
421
  }] } });
454
422
 
455
423
  /**
@@ -458,33 +426,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
458
426
  */
459
427
  class ThyListItemMeta {
460
428
  constructor() {
461
- this.className = `thy-list-item-meta`;
429
+ /**
430
+ * 列表项的左侧图片
431
+ */
432
+ this.thyAvatar = input();
433
+ /**
434
+ * 列表项的标题
435
+ */
436
+ this.thyTitle = input();
437
+ /**
438
+ * 列表项的描述文本
439
+ */
440
+ this.thyDescription = input();
441
+ this.avatarTemplateRef = contentChild('metaAvatar');
442
+ this.titleTemplateRef = contentChild('metaTitle');
443
+ this.descriptionTemplateRef = contentChild('metaDescription');
462
444
  }
463
445
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyListItemMeta, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
464
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyListItemMeta, isStandalone: true, selector: "thy-list-item-meta,[thy-list-item-meta]", inputs: { thyAvatar: "thyAvatar", thyTitle: "thyTitle", thyDescription: "thyDescription" }, host: { properties: { "class": "this.className" } }, queries: [{ propertyName: "avatarTemplateRef", first: true, predicate: ["metaAvatar"], descendants: true }, { propertyName: "titleTemplateRef", first: true, predicate: ["metaTitle"], descendants: true }, { propertyName: "descriptionTemplateRef", first: true, predicate: ["metaDescription"], descendants: true }], ngImport: i0, template: "<div class=\"thy-list-item-meta-avatar\">\n @if (thyAvatar) {\n <thy-avatar [thySrc]=\"thyAvatar\"></thy-avatar>\n } @else {\n <ng-template [ngTemplateOutlet]=\"avatarTemplateRef\"></ng-template>\n }\n</div>\n<div class=\"thy-list-item-meta-content\">\n <div class=\"thy-list-item-meta-title\">\n @if (thyTitle) {\n {{ thyTitle }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"titleTemplateRef\"></ng-template>\n }\n </div>\n <div class=\"thy-list-item-meta-description\">\n @if (thyDescription) {\n {{ thyDescription }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"descriptionTemplateRef\"></ng-template>\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ThyAvatar, selector: "thy-avatar", inputs: ["thyShowName", "thySrc", "thyName", "thySize", "thyShowRemove", "thyRemovable", "thyImgClass", "thyDisabled", "thyLoading", "thyFetchPriority"], outputs: ["thyOnRemove", "thyRemove", "thyError", "thySizeChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
446
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyListItemMeta, isStandalone: true, selector: "thy-list-item-meta,[thy-list-item-meta]", inputs: { thyAvatar: { classPropertyName: "thyAvatar", publicName: "thyAvatar", isSignal: true, isRequired: false, transformFunction: null }, thyTitle: { classPropertyName: "thyTitle", publicName: "thyTitle", isSignal: true, isRequired: false, transformFunction: null }, thyDescription: { classPropertyName: "thyDescription", publicName: "thyDescription", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "thy-list-item-meta" }, queries: [{ propertyName: "avatarTemplateRef", first: true, predicate: ["metaAvatar"], descendants: true, isSignal: true }, { propertyName: "titleTemplateRef", first: true, predicate: ["metaTitle"], descendants: true, isSignal: true }, { propertyName: "descriptionTemplateRef", first: true, predicate: ["metaDescription"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"thy-list-item-meta-avatar\">\n @if (thyAvatar()) {\n <thy-avatar [thySrc]=\"thyAvatar()\"></thy-avatar>\n } @else {\n <ng-template [ngTemplateOutlet]=\"avatarTemplateRef()\"></ng-template>\n }\n</div>\n<div class=\"thy-list-item-meta-content\">\n <div class=\"thy-list-item-meta-title\">\n @if (thyTitle()) {\n {{ thyTitle() }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"titleTemplateRef()\"></ng-template>\n }\n </div>\n <div class=\"thy-list-item-meta-description\">\n @if (thyDescription()) {\n {{ thyDescription() }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"descriptionTemplateRef()\"></ng-template>\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ThyAvatar, selector: "thy-avatar", inputs: ["thyShowName", "thySrc", "thyName", "thySize", "thyShowRemove", "thyRemovable", "thyImgClass", "thyDisabled", "thyLoading", "thyFetchPriority"], outputs: ["thyOnRemove", "thyRemove", "thyError", "thySizeChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
465
447
  }
466
448
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyListItemMeta, decorators: [{
467
449
  type: Component,
468
- args: [{ selector: 'thy-list-item-meta,[thy-list-item-meta]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ThyAvatar, NgTemplateOutlet], template: "<div class=\"thy-list-item-meta-avatar\">\n @if (thyAvatar) {\n <thy-avatar [thySrc]=\"thyAvatar\"></thy-avatar>\n } @else {\n <ng-template [ngTemplateOutlet]=\"avatarTemplateRef\"></ng-template>\n }\n</div>\n<div class=\"thy-list-item-meta-content\">\n <div class=\"thy-list-item-meta-title\">\n @if (thyTitle) {\n {{ thyTitle }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"titleTemplateRef\"></ng-template>\n }\n </div>\n <div class=\"thy-list-item-meta-description\">\n @if (thyDescription) {\n {{ thyDescription }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"descriptionTemplateRef\"></ng-template>\n }\n </div>\n</div>\n" }]
469
- }], ctorParameters: () => [], propDecorators: { thyAvatar: [{
470
- type: Input
471
- }], thyTitle: [{
472
- type: Input
473
- }], thyDescription: [{
474
- type: Input
475
- }], avatarTemplateRef: [{
476
- type: ContentChild,
477
- args: ['metaAvatar']
478
- }], titleTemplateRef: [{
479
- type: ContentChild,
480
- args: ['metaTitle']
481
- }], descriptionTemplateRef: [{
482
- type: ContentChild,
483
- args: ['metaDescription']
484
- }], className: [{
485
- type: HostBinding,
486
- args: ['class']
487
- }] } });
450
+ args: [{ selector: 'thy-list-item-meta,[thy-list-item-meta]', host: {
451
+ class: 'thy-list-item-meta'
452
+ }, imports: [ThyAvatar, NgTemplateOutlet], template: "<div class=\"thy-list-item-meta-avatar\">\n @if (thyAvatar()) {\n <thy-avatar [thySrc]=\"thyAvatar()\"></thy-avatar>\n } @else {\n <ng-template [ngTemplateOutlet]=\"avatarTemplateRef()\"></ng-template>\n }\n</div>\n<div class=\"thy-list-item-meta-content\">\n <div class=\"thy-list-item-meta-title\">\n @if (thyTitle()) {\n {{ thyTitle() }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"titleTemplateRef()\"></ng-template>\n }\n </div>\n <div class=\"thy-list-item-meta-description\">\n @if (thyDescription()) {\n {{ thyDescription() }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"descriptionTemplateRef()\"></ng-template>\n }\n </div>\n</div>\n" }]
453
+ }] });
488
454
 
489
455
  class ThyListModule {
490
456
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }