ngx-tethys 20.0.1 → 20.0.2

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 (239) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/action/index.d.ts +3 -3
  3. package/affix/index.d.ts +1 -1
  4. package/alert/index.d.ts +3 -3
  5. package/anchor/index.d.ts +3 -3
  6. package/arrow-switcher/index.d.ts +6 -6
  7. package/autocomplete/index.d.ts +7 -7
  8. package/avatar/index.d.ts +9 -9
  9. package/back-top/index.d.ts +3 -3
  10. package/badge/index.d.ts +6 -6
  11. package/breadcrumb/index.d.ts +7 -7
  12. package/button/index.d.ts +19 -19
  13. package/calendar/index.d.ts +8 -8
  14. package/card/index.d.ts +6 -6
  15. package/carousel/index.d.ts +4 -4
  16. package/cascader/index.d.ts +24 -24
  17. package/collapse/index.d.ts +4 -4
  18. package/color-picker/index.d.ts +16 -16
  19. package/comment/index.d.ts +3 -3
  20. package/copy/index.d.ts +2 -2
  21. package/core/index.d.ts +22 -22
  22. package/date-picker/index.d.ts +111 -111
  23. package/date-range/index.d.ts +5 -5
  24. package/dialog/index.d.ts +18 -18
  25. package/divider/index.d.ts +3 -3
  26. package/drag-drop/index.d.ts +7 -7
  27. package/dropdown/index.d.ts +10 -10
  28. package/empty/index.d.ts +12 -12
  29. package/fesm2022/ngx-tethys-action.mjs +14 -12
  30. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  31. package/fesm2022/ngx-tethys-affix.mjs +7 -7
  32. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  33. package/fesm2022/ngx-tethys-alert.mjs +10 -10
  34. package/fesm2022/ngx-tethys-anchor.mjs +11 -11
  35. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  36. package/fesm2022/ngx-tethys-arrow-switcher.mjs +7 -7
  37. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  38. package/fesm2022/ngx-tethys-autocomplete.mjs +19 -18
  39. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  40. package/fesm2022/ngx-tethys-avatar.mjs +23 -22
  41. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  42. package/fesm2022/ngx-tethys-back-top.mjs +7 -7
  43. package/fesm2022/ngx-tethys-badge.mjs +7 -7
  44. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  45. package/fesm2022/ngx-tethys-breadcrumb.mjs +10 -10
  46. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  47. package/fesm2022/ngx-tethys-button.mjs +16 -16
  48. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  49. package/fesm2022/ngx-tethys-calendar.mjs +16 -16
  50. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  51. package/fesm2022/ngx-tethys-card.mjs +13 -13
  52. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  53. package/fesm2022/ngx-tethys-carousel.mjs +15 -15
  54. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  55. package/fesm2022/ngx-tethys-cascader.mjs +41 -34
  56. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  57. package/fesm2022/ngx-tethys-checkbox.mjs +7 -7
  58. package/fesm2022/ngx-tethys-collapse.mjs +10 -10
  59. package/fesm2022/ngx-tethys-color-picker.mjs +65 -57
  60. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  61. package/fesm2022/ngx-tethys-comment.mjs +13 -13
  62. package/fesm2022/ngx-tethys-copy.mjs +10 -10
  63. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  64. package/fesm2022/ngx-tethys-core.mjs +30 -25
  65. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  66. package/fesm2022/ngx-tethys-date-picker.mjs +184 -174
  67. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  68. package/fesm2022/ngx-tethys-date-range.mjs +16 -16
  69. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  70. package/fesm2022/ngx-tethys-dialog.mjs +24 -24
  71. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  72. package/fesm2022/ngx-tethys-divider.mjs +7 -7
  73. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  74. package/fesm2022/ngx-tethys-dot.mjs +7 -7
  75. package/fesm2022/ngx-tethys-drag-drop.mjs +24 -24
  76. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  77. package/fesm2022/ngx-tethys-dropdown.mjs +48 -47
  78. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  79. package/fesm2022/ngx-tethys-empty.mjs +13 -13
  80. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  81. package/fesm2022/ngx-tethys-flexible-text.mjs +7 -7
  82. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  83. package/fesm2022/ngx-tethys-form.mjs +64 -61
  84. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  85. package/fesm2022/ngx-tethys-fullscreen.mjs +18 -15
  86. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  87. package/fesm2022/ngx-tethys-grid.mjs +34 -33
  88. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  89. package/fesm2022/ngx-tethys-guider.mjs +25 -24
  90. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  91. package/fesm2022/ngx-tethys-i18n.mjs +3 -3
  92. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  93. package/fesm2022/ngx-tethys-icon.mjs +15 -13
  94. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  95. package/fesm2022/ngx-tethys-image.mjs +31 -29
  96. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  97. package/fesm2022/ngx-tethys-input-number.mjs +17 -10
  98. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  99. package/fesm2022/ngx-tethys-input.mjs +28 -27
  100. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  101. package/fesm2022/ngx-tethys-layout.mjs +63 -63
  102. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  103. package/fesm2022/ngx-tethys-list.mjs +21 -18
  104. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  105. package/fesm2022/ngx-tethys-loading.mjs +7 -7
  106. package/fesm2022/ngx-tethys-mention.mjs +35 -31
  107. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  108. package/fesm2022/ngx-tethys-menu.mjs +26 -26
  109. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  110. package/fesm2022/ngx-tethys-message.mjs +24 -24
  111. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  112. package/fesm2022/ngx-tethys-nav.mjs +27 -27
  113. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  114. package/fesm2022/ngx-tethys-notify.mjs +20 -20
  115. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  116. package/fesm2022/ngx-tethys-pagination.mjs +18 -18
  117. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  118. package/fesm2022/ngx-tethys-popover.mjs +22 -21
  119. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  120. package/fesm2022/ngx-tethys-progress.mjs +17 -17
  121. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  122. package/fesm2022/ngx-tethys-property-operation.mjs +11 -11
  123. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  124. package/fesm2022/ngx-tethys-property.mjs +12 -11
  125. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  126. package/fesm2022/ngx-tethys-radio.mjs +17 -17
  127. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  128. package/fesm2022/ngx-tethys-rate.mjs +12 -12
  129. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  130. package/fesm2022/ngx-tethys-resizable.mjs +21 -18
  131. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  132. package/fesm2022/ngx-tethys-result.mjs +11 -11
  133. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  134. package/fesm2022/ngx-tethys-segment.mjs +19 -16
  135. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  136. package/fesm2022/ngx-tethys-select.mjs +60 -38
  137. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  138. package/fesm2022/ngx-tethys-shared.mjs +82 -79
  139. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  140. package/fesm2022/ngx-tethys-skeleton.mjs +32 -32
  141. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  142. package/fesm2022/ngx-tethys-slide.mjs +37 -36
  143. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  144. package/fesm2022/ngx-tethys-slider.mjs +11 -11
  145. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  146. package/fesm2022/ngx-tethys-space.mjs +10 -10
  147. package/fesm2022/ngx-tethys-statistic.mjs +7 -7
  148. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  149. package/fesm2022/ngx-tethys-stepper.mjs +22 -22
  150. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  151. package/fesm2022/ngx-tethys-strength.mjs +7 -7
  152. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  153. package/fesm2022/ngx-tethys-switch.mjs +7 -7
  154. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  155. package/fesm2022/ngx-tethys-table.mjs +28 -28
  156. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  157. package/fesm2022/ngx-tethys-tabs.mjs +13 -13
  158. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  159. package/fesm2022/ngx-tethys-tag.mjs +11 -11
  160. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  161. package/fesm2022/ngx-tethys-testing.mjs +1 -1
  162. package/fesm2022/ngx-tethys-testing.mjs.map +1 -1
  163. package/fesm2022/ngx-tethys-time-picker.mjs +22 -22
  164. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  165. package/fesm2022/ngx-tethys-timeline.mjs +14 -14
  166. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  167. package/fesm2022/ngx-tethys-tooltip.mjs +19 -16
  168. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  169. package/fesm2022/ngx-tethys-transfer.mjs +15 -15
  170. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  171. package/fesm2022/ngx-tethys-tree-select.mjs +17 -17
  172. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  173. package/fesm2022/ngx-tethys-tree.mjs +50 -43
  174. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  175. package/fesm2022/ngx-tethys-typography.mjs +16 -16
  176. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  177. package/fesm2022/ngx-tethys-upload.mjs +26 -25
  178. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  179. package/fesm2022/ngx-tethys-util.mjs +11 -5
  180. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  181. package/fesm2022/ngx-tethys-vote.mjs +7 -7
  182. package/fesm2022/ngx-tethys-watermark.mjs +18 -15
  183. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  184. package/fesm2022/ngx-tethys.mjs +1 -1
  185. package/fesm2022/ngx-tethys.mjs.map +1 -1
  186. package/flexible-text/index.d.ts +5 -5
  187. package/form/index.d.ts +26 -22
  188. package/fullscreen/index.d.ts +4 -4
  189. package/grid/index.d.ts +12 -12
  190. package/guider/index.d.ts +10 -10
  191. package/i18n/index.d.ts +1 -1
  192. package/icon/index.d.ts +3 -3
  193. package/image/index.d.ts +12 -12
  194. package/input/index.d.ts +22 -22
  195. package/input-number/index.d.ts +4 -4
  196. package/layout/index.d.ts +16 -16
  197. package/list/index.d.ts +16 -15
  198. package/mention/index.d.ts +4 -4
  199. package/menu/index.d.ts +7 -7
  200. package/message/index.d.ts +5 -5
  201. package/nav/index.d.ts +12 -12
  202. package/notify/index.d.ts +1 -1
  203. package/package.json +1 -1
  204. package/pagination/index.d.ts +21 -17
  205. package/popover/index.d.ts +8 -8
  206. package/progress/index.d.ts +18 -18
  207. package/property/index.d.ts +6 -6
  208. package/property-operation/index.d.ts +3 -3
  209. package/radio/index.d.ts +6 -6
  210. package/rate/index.d.ts +5 -5
  211. package/resizable/index.d.ts +2 -2
  212. package/result/index.d.ts +8 -8
  213. package/schematics/testing/test-workspace.js +1 -0
  214. package/schematics/version.d.ts +1 -1
  215. package/schematics/version.js +1 -1
  216. package/segment/index.d.ts +9 -9
  217. package/select/index.d.ts +21 -21
  218. package/shared/index.d.ts +29 -29
  219. package/skeleton/index.d.ts +52 -52
  220. package/slide/index.d.ts +5 -5
  221. package/slider/index.d.ts +6 -6
  222. package/space/index.d.ts +1 -1
  223. package/statistic/index.d.ts +18 -18
  224. package/stepper/index.d.ts +8 -8
  225. package/switch/index.d.ts +2 -2
  226. package/table/index.d.ts +24 -24
  227. package/tabs/index.d.ts +6 -6
  228. package/testing/index.d.ts +1 -1
  229. package/time-picker/index.d.ts +21 -21
  230. package/timeline/index.d.ts +8 -8
  231. package/tooltip/index.d.ts +12 -12
  232. package/transfer/index.d.ts +16 -16
  233. package/tree/index.d.ts +28 -28
  234. package/tree-select/index.d.ts +13 -13
  235. package/typography/index.d.ts +3 -3
  236. package/upload/index.d.ts +4 -4
  237. package/util/index.d.ts +17 -7
  238. package/vote/index.d.ts +2 -2
  239. package/watermark/index.d.ts +2 -2
@@ -43,7 +43,7 @@ class ThyInputDirective {
43
43
  * @type 'xs' | 'sm' | 'md' | 'default' | 'lg'
44
44
  * @default default
45
45
  */
46
- this.thySize = input(undefined, ...(ngDevMode ? [{ debugName: "thySize" }] : []));
46
+ this.thySize = input(...(ngDevMode ? [undefined, { debugName: "thySize" }] : []));
47
47
  effect(() => {
48
48
  const size = this.thySize();
49
49
  if (size && inputGroupSizeMap$1[size]) {
@@ -54,10 +54,10 @@ class ThyInputDirective {
54
54
  }
55
55
  });
56
56
  }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
58
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.14", type: ThyInputDirective, isStandalone: true, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: { thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.form-control": "this.isFormControl" } }, exportAs: ["thyInput"], ngImport: i0 }); }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: ThyInputDirective, isStandalone: true, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: { thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.form-control": "this.isFormControl" } }, exportAs: ["thyInput"], ngImport: i0 }); }
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputDirective, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputDirective, decorators: [{
61
61
  type: Directive,
62
62
  args: [{
63
63
  selector: 'input[thyInput], select[thyInput], textarea[thyInput]',
@@ -110,7 +110,7 @@ class ThyInput {
110
110
  /**
111
111
  * 输入 Label 文本
112
112
  */
113
- this.thyLabelText = input(undefined, ...(ngDevMode ? [{ debugName: "thyLabelText" }] : []));
113
+ this.thyLabelText = input(...(ngDevMode ? [undefined, { debugName: "thyLabelText" }] : []));
114
114
  /**
115
115
  * 是否只读
116
116
  */
@@ -183,16 +183,16 @@ class ThyInput {
183
183
  togglePasswordType() {
184
184
  this.type.set(this.isPassword(this.type()) ? 'text' : 'password');
185
185
  }
186
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: ThyInput, isStandalone: true, selector: "thy-input", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyAutofocus: { classPropertyName: "thyAutofocus", publicName: "thyAutofocus", isSignal: true, isRequired: false, transformFunction: null }, thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, thyLabelText: { classPropertyName: "thyLabelText", publicName: "thyLabelText", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focus: "focus", blur: "blur" }, host: { properties: { "class.form-control-active": "focused()", "class.disabled": "disabled()" }, classAttribute: "thy-input form-control" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], queries: [{ propertyName: "appendTemplate", first: true, predicate: ["append"], descendants: true, isSignal: true }, { propertyName: "prependTemplate", first: true, predicate: ["prepend"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (prependTemplate()) {\n <div #prepend class=\"input-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n<input\n #input\n thyInput\n [thySize]=\"thySize()\"\n [thyAutofocus]=\"thyAutofocus()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onModelChange()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [readonly]=\"readonly()\"\n />\n<span class=\"input-label input-label-{{ thySize() }}\" [class.active]=\"showLabel()\">{{ thyLabelText() }}</span>\n\n@if (isPasswordType() || appendTemplate()) {\n <div #append class=\"input-append\">\n @if (isPasswordType()) {\n <a href=\"javascript:;\" class=\"link-secondary input-password-icon\" (click)=\"togglePasswordType()\">\n @if (isPassword(type())) {\n <thy-icon thyIconName=\"eye\"></thy-icon>\n }\n @if (!isPassword(type())) {\n <thy-icon thyIconName=\"eye-invisible\"></thy-icon>\n }\n </a>\n } @else {\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n }\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ThyInputDirective, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: ["thySize"], exportAs: ["thyInput"] }, { kind: "directive", type: ThyAutofocusDirective, selector: "input[thyAutofocus],textarea[thyAutofocus]", inputs: ["thyAutofocus", "thyAutoSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], encapsulation: i0.ViewEncapsulation.None }); }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ThyInput, isStandalone: true, selector: "thy-input", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyAutofocus: { classPropertyName: "thyAutofocus", publicName: "thyAutofocus", isSignal: true, isRequired: false, transformFunction: null }, thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, thyLabelText: { classPropertyName: "thyLabelText", publicName: "thyLabelText", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focus: "focus", blur: "blur" }, host: { properties: { "class.form-control-active": "focused()", "class.disabled": "disabled()" }, classAttribute: "thy-input form-control" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], queries: [{ propertyName: "appendTemplate", first: true, predicate: ["append"], descendants: true, isSignal: true }, { propertyName: "prependTemplate", first: true, predicate: ["prepend"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (prependTemplate()) {\n <div #prepend class=\"input-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n<input\n #input\n thyInput\n [thySize]=\"thySize()\"\n [thyAutofocus]=\"thyAutofocus()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onModelChange()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [readonly]=\"readonly()\" />\n<span class=\"input-label input-label-{{ thySize() }}\" [class.active]=\"showLabel()\">{{ thyLabelText() }}</span>\n\n@if (isPasswordType() || appendTemplate()) {\n <div #append class=\"input-append\">\n @if (isPasswordType()) {\n <a href=\"javascript:;\" class=\"link-secondary input-password-icon\" (click)=\"togglePasswordType()\">\n @if (isPassword(type())) {\n <thy-icon thyIconName=\"eye\"></thy-icon>\n }\n @if (!isPassword(type())) {\n <thy-icon thyIconName=\"eye-invisible\"></thy-icon>\n }\n </a>\n } @else {\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n }\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ThyInputDirective, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: ["thySize"], exportAs: ["thyInput"] }, { kind: "directive", type: ThyAutofocusDirective, selector: "input[thyAutofocus],textarea[thyAutofocus]", inputs: ["thyAutofocus", "thyAutoSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], encapsulation: i0.ViewEncapsulation.None }); }
188
188
  }
189
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInput, decorators: [{
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInput, decorators: [{
190
190
  type: Component,
191
191
  args: [{ selector: 'thy-input', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, host: {
192
192
  class: 'thy-input form-control',
193
193
  '[class.form-control-active]': 'focused()',
194
194
  '[class.disabled]': 'disabled()'
195
- }, imports: [NgTemplateOutlet, ThyInputDirective, ThyAutofocusDirective, FormsModule, ThyIcon], template: "@if (prependTemplate()) {\n <div #prepend class=\"input-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n<input\n #input\n thyInput\n [thySize]=\"thySize()\"\n [thyAutofocus]=\"thyAutofocus()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onModelChange()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [readonly]=\"readonly()\"\n />\n<span class=\"input-label input-label-{{ thySize() }}\" [class.active]=\"showLabel()\">{{ thyLabelText() }}</span>\n\n@if (isPasswordType() || appendTemplate()) {\n <div #append class=\"input-append\">\n @if (isPasswordType()) {\n <a href=\"javascript:;\" class=\"link-secondary input-password-icon\" (click)=\"togglePasswordType()\">\n @if (isPassword(type())) {\n <thy-icon thyIconName=\"eye\"></thy-icon>\n }\n @if (!isPassword(type())) {\n <thy-icon thyIconName=\"eye-invisible\"></thy-icon>\n }\n </a>\n } @else {\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n }\n </div>\n}\n" }]
195
+ }, imports: [NgTemplateOutlet, ThyInputDirective, ThyAutofocusDirective, FormsModule, ThyIcon], template: "@if (prependTemplate()) {\n <div #prepend class=\"input-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n<input\n #input\n thyInput\n [thySize]=\"thySize()\"\n [thyAutofocus]=\"thyAutofocus()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onModelChange()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [readonly]=\"readonly()\" />\n<span class=\"input-label input-label-{{ thySize() }}\" [class.active]=\"showLabel()\">{{ thyLabelText() }}</span>\n\n@if (isPasswordType() || appendTemplate()) {\n <div #append class=\"input-append\">\n @if (isPasswordType()) {\n <a href=\"javascript:;\" class=\"link-secondary input-password-icon\" (click)=\"togglePasswordType()\">\n @if (isPassword(type())) {\n <thy-icon thyIconName=\"eye\"></thy-icon>\n }\n @if (!isPassword(type())) {\n <thy-icon thyIconName=\"eye-invisible\"></thy-icon>\n }\n </a>\n } @else {\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n }\n </div>\n}\n" }]
196
196
  }], ctorParameters: () => [], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], thySize: [{ type: i0.Input, args: [{ isSignal: true, alias: "thySize", required: false }] }], thyAutofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyAutofocus", required: false }] }], thyType: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyType", required: false }] }], _type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], thyLabelText: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyLabelText", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], focus: [{ type: i0.Output, args: ["focus"] }], blur: [{ type: i0.Output, args: ["blur"] }], appendTemplate: [{ type: i0.ContentChild, args: ['append', { isSignal: true }] }], prependTemplate: [{ type: i0.ContentChild, args: ['prepend', { isSignal: true }] }] } });
197
197
 
198
198
  const inputGroupSizeMap = {
@@ -270,7 +270,8 @@ class ThyInputGroup {
270
270
  /**
271
271
  * @private
272
272
  */
273
- this.inputDirective = contentChild(ThyInputDirective, ...(ngDevMode ? [{ debugName: "inputDirective" }] : []));
273
+ this.inputDirective = contentChild.required(ThyInputDirective);
274
+ this.disabledObservable = null;
274
275
  effect(() => {
275
276
  const size = this.thySize();
276
277
  if (size && inputGroupSizeMap[size]) {
@@ -349,10 +350,10 @@ class ThyInputGroup {
349
350
  ngOnDestroy() {
350
351
  this.hostFocusControl.destroy();
351
352
  }
352
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
353
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: ThyInputGroup, isStandalone: true, selector: "thy-input-group", inputs: { thyAppendText: { classPropertyName: "thyAppendText", publicName: "thyAppendText", isSignal: true, isRequired: false, transformFunction: null }, thyAppendTextTranslateKey: { classPropertyName: "thyAppendTextTranslateKey", publicName: "thyAppendTextTranslateKey", isSignal: true, isRequired: false, transformFunction: null }, thyPrependText: { classPropertyName: "thyPrependText", publicName: "thyPrependText", isSignal: true, isRequired: false, transformFunction: null }, thyPrependTextTranslateKey: { classPropertyName: "thyPrependTextTranslateKey", publicName: "thyPrependTextTranslateKey", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.form-control": "prefixTemplate() || suffixTemplate()", "class.thy-input-group-with-prefix": "prefixTemplate()", "class.thy-input-group-with-suffix": "suffixTemplate()", "class.thy-input-group-with-textarea-suffix": "isTextareaSuffix()", "class.thy-input-group-with-scroll-bar": "isTextareaSuffix() && hasScrollbar()", "class.disabled": "disabled()" }, classAttribute: "thy-input-group" }, queries: [{ propertyName: "appendTemplate", first: true, predicate: ["append"], descendants: true, isSignal: true }, { propertyName: "prependTemplate", first: true, predicate: ["prepend"], descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ["prefix"], descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ["suffix"], descendants: true, isSignal: true }, { propertyName: "inputDirective", first: true, predicate: ThyInputDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (prependText()) {\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\">{{ prependText() }}</span>\n </div>\n}\n@if (prependTemplate()) {\n <div class=\"input-group-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n\n@if (prefixTemplate()) {\n <div class=\"input-group-prefix\">\n <ng-template *ngTemplateOutlet=\"prefixTemplate()\"></ng-template>\n </div>\n}\n\n<ng-content></ng-content>\n\n@if (appendText()) {\n <div class=\"input-group-append\">\n <span class=\"input-group-text\">{{ appendText() }}</span>\n </div>\n}\n@if (appendTemplate()) {\n <div class=\"input-group-append\">\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n </div>\n}\n\n@if (suffixTemplate()) {\n <div class=\"input-group-suffix\">\n <ng-template *ngTemplateOutlet=\"suffixTemplate()\"></ng-template>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
353
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
354
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ThyInputGroup, isStandalone: true, selector: "thy-input-group", inputs: { thyAppendText: { classPropertyName: "thyAppendText", publicName: "thyAppendText", isSignal: true, isRequired: false, transformFunction: null }, thyAppendTextTranslateKey: { classPropertyName: "thyAppendTextTranslateKey", publicName: "thyAppendTextTranslateKey", isSignal: true, isRequired: false, transformFunction: null }, thyPrependText: { classPropertyName: "thyPrependText", publicName: "thyPrependText", isSignal: true, isRequired: false, transformFunction: null }, thyPrependTextTranslateKey: { classPropertyName: "thyPrependTextTranslateKey", publicName: "thyPrependTextTranslateKey", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.form-control": "prefixTemplate() || suffixTemplate()", "class.thy-input-group-with-prefix": "prefixTemplate()", "class.thy-input-group-with-suffix": "suffixTemplate()", "class.thy-input-group-with-textarea-suffix": "isTextareaSuffix()", "class.thy-input-group-with-scroll-bar": "isTextareaSuffix() && hasScrollbar()", "class.disabled": "disabled()" }, classAttribute: "thy-input-group" }, queries: [{ propertyName: "appendTemplate", first: true, predicate: ["append"], descendants: true, isSignal: true }, { propertyName: "prependTemplate", first: true, predicate: ["prepend"], descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ["prefix"], descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ["suffix"], descendants: true, isSignal: true }, { propertyName: "inputDirective", first: true, predicate: ThyInputDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (prependText()) {\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\">{{ prependText() }}</span>\n </div>\n}\n@if (prependTemplate()) {\n <div class=\"input-group-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n\n@if (prefixTemplate()) {\n <div class=\"input-group-prefix\">\n <ng-template *ngTemplateOutlet=\"prefixTemplate()\"></ng-template>\n </div>\n}\n\n<ng-content></ng-content>\n\n@if (appendText()) {\n <div class=\"input-group-append\">\n <span class=\"input-group-text\">{{ appendText() }}</span>\n </div>\n}\n@if (appendTemplate()) {\n <div class=\"input-group-append\">\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n </div>\n}\n\n@if (suffixTemplate()) {\n <div class=\"input-group-suffix\">\n <ng-template *ngTemplateOutlet=\"suffixTemplate()\"></ng-template>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
354
355
  }
355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputGroup, decorators: [{
356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputGroup, decorators: [{
356
357
  type: Component,
357
358
  args: [{ selector: 'thy-input-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
358
359
  class: 'thy-input-group',
@@ -381,7 +382,7 @@ class ThyInputSearch extends _MixinBase {
381
382
  constructor() {
382
383
  super();
383
384
  this.elementRef = inject(ElementRef);
384
- this.inputElement = viewChild('input', ...(ngDevMode ? [{ debugName: "inputElement" }] : []));
385
+ this.inputElement = viewChild.required('input');
385
386
  this.hostRenderer = useHostRenderer();
386
387
  this.hostFocusControl = useHostFocusControl();
387
388
  this.disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
@@ -479,10 +480,10 @@ class ThyInputSearch extends _MixinBase {
479
480
  ngOnDestroy() {
480
481
  this.hostFocusControl.destroy();
481
482
  }
482
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputSearch, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
483
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: ThyInputSearch, isStandalone: true, selector: "thy-input-search", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, thyTheme: { classPropertyName: "thyTheme", publicName: "thyTheme", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "thySearchFocus", isSignal: true, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "thyIconPosition", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clear: "clear", thyClear: "thyClear" }, host: { properties: { "class.thy-input-search-ellipse": "thyTheme() === \"ellipse\"", "class.thy-input-search-transparent": "thyTheme() === \"transparent\"", "class.thy-input-search-before-with-clear": "searchText() && iconPosition() === \"before\"", "class.form-control-active": "focused()", "attr.tabindex": "tabIndex" }, classAttribute: "thy-input form-control thy-input-search" }, providers: [CUSTOM_INPUT_SEARCH_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (iconPosition() === 'before') {\n <thy-icon class=\"input-prepend\" thyIconName=\"search\"></thy-icon>\n}\n<input\n class=\"input-search-control\"\n #input\n thyInput\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [thyAutofocus]=\"autoFocus()\"\n [(ngModel)]=\"searchText\"\n (ngModelChange)=\"searchModelChange()\"\n (focus)=\"!focused() ? (focused.set(true)) : null\"\n [thySize]=\"thySize()\"\n tabindex=\"-1\" />\n@if (iconPosition() === 'after') {\n <div class=\"input-append input-append-divider\">\n @if (searchText()) {\n <a class=\"close\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n } @else {\n <thy-icon class=\"text-placeholder\" thyIconName=\"search\"></thy-icon>\n }\n </div>\n}\n\n@if (searchText() && iconPosition() === 'before') {\n <a class=\"close input-append\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyInputDirective, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: ["thySize"], exportAs: ["thyInput"] }, { kind: "directive", type: ThyAutofocusDirective, selector: "input[thyAutofocus],textarea[thyAutofocus]", inputs: ["thyAutofocus", "thyAutoSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
483
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputSearch, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
484
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ThyInputSearch, isStandalone: true, selector: "thy-input-search", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, thyTheme: { classPropertyName: "thyTheme", publicName: "thyTheme", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "thySearchFocus", isSignal: true, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "thyIconPosition", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clear: "clear", thyClear: "thyClear" }, host: { properties: { "class.thy-input-search-ellipse": "thyTheme() === \"ellipse\"", "class.thy-input-search-transparent": "thyTheme() === \"transparent\"", "class.thy-input-search-before-with-clear": "searchText() && iconPosition() === \"before\"", "class.form-control-active": "focused()", "attr.tabindex": "tabIndex" }, classAttribute: "thy-input form-control thy-input-search" }, providers: [CUSTOM_INPUT_SEARCH_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (iconPosition() === 'before') {\n <thy-icon class=\"input-prepend\" thyIconName=\"search\"></thy-icon>\n}\n<input\n class=\"input-search-control\"\n #input\n thyInput\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [thyAutofocus]=\"autoFocus()\"\n [(ngModel)]=\"searchText\"\n (ngModelChange)=\"searchModelChange()\"\n (focus)=\"!focused() ? focused.set(true) : null\"\n [thySize]=\"thySize()\"\n tabindex=\"-1\" />\n@if (iconPosition() === 'after') {\n <div class=\"input-append input-append-divider\">\n @if (searchText()) {\n <a class=\"close\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n } @else {\n <thy-icon class=\"text-placeholder\" thyIconName=\"search\"></thy-icon>\n }\n </div>\n}\n\n@if (searchText() && iconPosition() === 'before') {\n <a class=\"close input-append\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyInputDirective, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: ["thySize"], exportAs: ["thyInput"] }, { kind: "directive", type: ThyAutofocusDirective, selector: "input[thyAutofocus],textarea[thyAutofocus]", inputs: ["thyAutofocus", "thyAutoSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
484
485
  }
485
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputSearch, decorators: [{
486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputSearch, decorators: [{
486
487
  type: Component,
487
488
  args: [{ selector: 'thy-input-search', providers: [CUSTOM_INPUT_SEARCH_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
488
489
  class: 'thy-input form-control thy-input-search',
@@ -491,7 +492,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
491
492
  '[class.thy-input-search-before-with-clear]': 'searchText() && iconPosition() === "before"',
492
493
  '[class.form-control-active]': 'focused()',
493
494
  '[attr.tabindex]': 'tabIndex'
494
- }, imports: [ThyIcon, ThyInputDirective, ThyAutofocusDirective, FormsModule], template: "@if (iconPosition() === 'before') {\n <thy-icon class=\"input-prepend\" thyIconName=\"search\"></thy-icon>\n}\n<input\n class=\"input-search-control\"\n #input\n thyInput\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [thyAutofocus]=\"autoFocus()\"\n [(ngModel)]=\"searchText\"\n (ngModelChange)=\"searchModelChange()\"\n (focus)=\"!focused() ? (focused.set(true)) : null\"\n [thySize]=\"thySize()\"\n tabindex=\"-1\" />\n@if (iconPosition() === 'after') {\n <div class=\"input-append input-append-divider\">\n @if (searchText()) {\n <a class=\"close\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n } @else {\n <thy-icon class=\"text-placeholder\" thyIconName=\"search\"></thy-icon>\n }\n </div>\n}\n\n@if (searchText() && iconPosition() === 'before') {\n <a class=\"close input-append\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n" }]
495
+ }, imports: [ThyIcon, ThyInputDirective, ThyAutofocusDirective, FormsModule], template: "@if (iconPosition() === 'before') {\n <thy-icon class=\"input-prepend\" thyIconName=\"search\"></thy-icon>\n}\n<input\n class=\"input-search-control\"\n #input\n thyInput\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [thyAutofocus]=\"autoFocus()\"\n [(ngModel)]=\"searchText\"\n (ngModelChange)=\"searchModelChange()\"\n (focus)=\"!focused() ? focused.set(true) : null\"\n [thySize]=\"thySize()\"\n tabindex=\"-1\" />\n@if (iconPosition() === 'after') {\n <div class=\"input-append input-append-divider\">\n @if (searchText()) {\n <a class=\"close\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n } @else {\n <thy-icon class=\"text-placeholder\" thyIconName=\"search\"></thy-icon>\n }\n </div>\n}\n\n@if (searchText() && iconPosition() === 'before') {\n <a class=\"close input-append\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n" }]
495
496
  }], ctorParameters: () => [], propDecorators: { inputElement: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], thyTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyTheme", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "thySearchFocus", required: false }] }], iconPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyIconPosition", required: false }] }], thySize: [{ type: i0.Input, args: [{ isSignal: true, alias: "thySize", required: false }] }], clear: [{ type: i0.Output, args: ["clear"] }], thyClear: [{ type: i0.Output, args: ["thyClear"] }] } });
496
497
 
497
498
  /**
@@ -509,7 +510,7 @@ class ThyInputCount {
509
510
  * @type ThyInputDirective
510
511
  */
511
512
  this.thyInput = input(...(ngDevMode ? [undefined, { debugName: "thyInput" }] : []));
512
- this.maxLength = signal(undefined, ...(ngDevMode ? [{ debugName: "maxLength" }] : []));
513
+ this.maxLength = signal(null, ...(ngDevMode ? [{ debugName: "maxLength" }] : []));
513
514
  this.inputLength = signal(0, ...(ngDevMode ? [{ debugName: "inputLength" }] : []));
514
515
  this.thyInput$ = new Subject();
515
516
  this.setup();
@@ -526,7 +527,7 @@ class ThyInputCount {
526
527
  .pipe(filter(input => {
527
528
  return !!input;
528
529
  }), tap(input => {
529
- this.maxLength.set(input.nativeElement.getAttribute('maxlength'));
530
+ this.maxLength.set(input?.nativeElement?.getAttribute('maxlength'));
530
531
  }), takeUntilDestroyed(this.destroyRef), switchMap(input => {
531
532
  return input.ngControl.valueChanges;
532
533
  }), tap(value => {
@@ -540,10 +541,10 @@ class ThyInputCount {
540
541
  this.thyInput$.next(inputDirective);
541
542
  }
542
543
  }
543
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputCount, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
544
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.14", type: ThyInputCount, isStandalone: true, selector: "thy-input-count", inputs: { thyInput: { classPropertyName: "thyInput", publicName: "thyInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "thy-input-count text-muted" }, ngImport: i0, template: '{{inputLength()}} / {{maxLength()}}', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
544
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputCount, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
545
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.15", type: ThyInputCount, isStandalone: true, selector: "thy-input-count", inputs: { thyInput: { classPropertyName: "thyInput", publicName: "thyInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "thy-input-count text-muted" }, ngImport: i0, template: '{{inputLength()}} / {{maxLength()}}', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
545
546
  }
546
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputCount, decorators: [{
547
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputCount, decorators: [{
547
548
  type: Component,
548
549
  args: [{
549
550
  selector: 'thy-input-count',
@@ -556,8 +557,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
556
557
  }], ctorParameters: () => [], propDecorators: { thyInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyInput", required: false }] }] } });
557
558
 
558
559
  class ThyInputModule {
559
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
560
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: ThyInputModule, imports: [CommonModule,
560
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
561
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: ThyInputModule, imports: [CommonModule,
561
562
  FormsModule,
562
563
  ThySharedModule,
563
564
  ThyIconModule,
@@ -567,7 +568,7 @@ class ThyInputModule {
567
568
  ThyInputGroup,
568
569
  ThyInputSearch,
569
570
  ThyInputCount], exports: [ThyInputDirective, ThyInput, ThyInputGroup, ThyInputSearch, ThyInputCount] }); }
570
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputModule, imports: [CommonModule,
571
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputModule, imports: [CommonModule,
571
572
  FormsModule,
572
573
  ThySharedModule,
573
574
  ThyIconModule,
@@ -575,7 +576,7 @@ class ThyInputModule {
575
576
  ThyInput,
576
577
  ThyInputSearch] }); }
577
578
  }
578
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyInputModule, decorators: [{
579
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputModule, decorators: [{
579
580
  type: NgModule,
580
581
  args: [{
581
582
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-input.mjs","sources":["../../../src/input/input.directive.ts","../../../src/input/input.component.ts","../../../src/input/input.component.html","../../../src/input/input-group.component.ts","../../../src/input/input-group.component.html","../../../src/input/input-search.component.ts","../../../src/input/input-search.component.html","../../../src/input/input-count.component.ts","../../../src/input/module.ts","../../../src/input/ngx-tethys-input.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Input, OnInit, Renderer2, effect, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nexport type ThyInputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nconst inputGroupSizeMap = {\n xs: ['form-control-xs'],\n sm: ['form-control-sm'],\n md: ['form-control-md'],\n lg: ['form-control-lg']\n};\n\n/**\n * 输入框指令\n * @name thyInput\n * @order 10\n */\n@Directive({\n selector: 'input[thyInput], select[thyInput], textarea[thyInput]',\n exportAs: 'thyInput'\n})\nexport class ThyInputDirective {\n private elementRef = inject(ElementRef);\n private render = inject(Renderer2);\n private control = inject(NgControl, { optional: true, self: true })!;\n\n @HostBinding('class.form-control') isFormControl = true;\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 输入框大小\n * @type 'xs' | 'sm' | 'md' | 'default' | 'lg'\n * @default default\n */\n readonly thySize = input<ThyInputSize>(undefined);\n\n get ngControl() {\n return this.control;\n }\n\n get nativeElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n constructor() {\n effect(() => {\n const size = this.thySize();\n if (size && inputGroupSizeMap[size]) {\n this.hostRenderer.updateClass(inputGroupSizeMap[size]);\n } else {\n this.hostRenderer.updateClass([]);\n }\n });\n }\n}\n","import { take } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n forwardRef,\n NgZone,\n OnInit,\n TemplateRef,\n ViewEncapsulation,\n inject,\n input,\n effect,\n signal,\n output,\n contentChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\nimport { ThyInputDirective, ThyInputSize } from './input.directive';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyInput),\n multi: true\n};\n\nconst noop = () => {};\n\nconst password = 'password';\n\n/**\n * 内部集成输入框组件,建议 thy-input-group 和 thyInput 组合使用\n * @name thy-input\n * @order 50\n */\n@Component({\n selector: 'thy-input',\n templateUrl: './input.component.html',\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-input form-control',\n '[class.form-control-active]': 'focused()',\n '[class.disabled]': 'disabled()'\n },\n imports: [NgTemplateOutlet, ThyInputDirective, ThyAutofocusDirective, FormsModule, ThyIcon]\n})\nexport class ThyInput implements ControlValueAccessor, OnInit {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n\n /**\n * Placeholder\n */\n readonly placeholder = input('');\n\n /**\n * 输入框大小\n * @type 'xs' | 'sm' | 'md' | 'default' | 'lg'\n * @default default\n */\n readonly thySize = input<ThyInputSize>();\n\n /**\n * 是否自动聚焦\n */\n readonly thyAutofocus = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 输入框类型\n * @type 'number' | 'input'\n */\n readonly thyType = input<string>();\n\n /**\n * @deprecated please use thyType\n */\n readonly _type = input<string>(undefined, { alias: 'type' });\n\n /**\n * 输入 Label 文本\n */\n readonly thyLabelText = input<string>(undefined);\n\n /**\n * 是否只读\n */\n readonly readonly = input(false, { transform: coerceBooleanProperty });\n\n /**\n * focus 聚焦事件\n */\n readonly focus = output<Event>();\n\n /**\n * blur 失焦事件\n */\n readonly blur = output<Event>();\n\n /**\n * 后置模板\n */\n readonly appendTemplate = contentChild<TemplateRef<any>>('append');\n\n /**\n * 前置模板\n */\n readonly prependTemplate = contentChild<TemplateRef<any>>('prepend');\n\n public type = signal<string>(undefined);\n\n public value = signal('');\n\n public showLabel = signal(false);\n\n public focused = signal(false);\n\n public disabled = signal(false);\n\n private onTouchedCallback: () => void = noop;\n\n private onChangeCallback: (_: any) => void = noop;\n\n public isPasswordType = signal(false);\n\n constructor() {\n effect(() => {\n this.type.set(this.thyType() || this._type());\n });\n }\n\n ngOnInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.isPasswordType.set(this.isPassword(this.type()));\n });\n }\n\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onModelChange() {\n this.onChangeCallback(this.value());\n }\n\n onInputFocus(event: Event) {\n this.focused.set(true);\n this.showLabel.set(true);\n this.focus.emit(event);\n }\n\n onInputBlur(event: Event) {\n this.onTouchedCallback();\n if (this.elementRef.nativeElement.onblur) {\n this.elementRef.nativeElement.onblur(event);\n }\n this.focused.set(false);\n this.showLabel.set(false);\n this.blur.emit(event);\n }\n\n isPassword(value: string) {\n return value === password;\n }\n\n togglePasswordType() {\n this.type.set(this.isPassword(this.type()) ? 'text' : 'password');\n }\n}\n","@if (prependTemplate()) {\n <div #prepend class=\"input-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n<input\n #input\n thyInput\n [thySize]=\"thySize()\"\n [thyAutofocus]=\"thyAutofocus()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onModelChange()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [readonly]=\"readonly()\"\n />\n<span class=\"input-label input-label-{{ thySize() }}\" [class.active]=\"showLabel()\">{{ thyLabelText() }}</span>\n\n@if (isPasswordType() || appendTemplate()) {\n <div #append class=\"input-append\">\n @if (isPasswordType()) {\n <a href=\"javascript:;\" class=\"link-secondary input-password-icon\" (click)=\"togglePasswordType()\">\n @if (isPassword(type())) {\n <thy-icon thyIconName=\"eye\"></thy-icon>\n }\n @if (!isPassword(type())) {\n <thy-icon thyIconName=\"eye-invisible\"></thy-icon>\n }\n </a>\n } @else {\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n }\n </div>\n}\n","import {\n Component,\n TemplateRef,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n NgZone,\n inject,\n DestroyRef,\n input,\n computed,\n effect,\n contentChild,\n signal\n} from '@angular/core';\nimport { ThyTranslate, useHostFocusControl } from 'ngx-tethys/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyInputDirective } from './input.directive';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { throttleTime } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, of } from 'rxjs';\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport { MutationObserverFactory } from '@angular/cdk/observers';\n\nexport type InputGroupSize = 'sm' | 'lg' | 'md' | '';\n\nconst inputGroupSizeMap = {\n sm: ['input-group-sm'],\n lg: ['input-group-lg'],\n md: ['input-group-md']\n};\n\n/**\n * 输入框分组\n * @name thy-input-group\n * @order 20\n */\n@Component({\n selector: 'thy-input-group',\n templateUrl: './input-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-input-group',\n '[class.form-control]': 'prefixTemplate() || suffixTemplate()',\n '[class.thy-input-group-with-prefix]': 'prefixTemplate()',\n '[class.thy-input-group-with-suffix]': 'suffixTemplate()',\n '[class.thy-input-group-with-textarea-suffix]': 'isTextareaSuffix()',\n '[class.thy-input-group-with-scroll-bar]': 'isTextareaSuffix() && hasScrollbar()',\n '[class.disabled]': 'disabled()'\n },\n imports: [NgTemplateOutlet]\n})\nexport class ThyInputGroup implements OnInit, OnDestroy {\n private thyTranslate = inject(ThyTranslate);\n private ngZone = inject(NgZone);\n\n private hostRenderer = useHostRenderer();\n\n private hostFocusControl = useHostFocusControl();\n\n private readonly destroyRef = inject(DestroyRef);\n\n public isTextareaSuffix = signal(false);\n\n public hasScrollbar = signal(false);\n\n disabled = signal(false);\n\n /**\n * 输入框上添加的后置文本\n */\n readonly thyAppendText = input<string>();\n\n /**\n * 输入框上添加的后置文本多语言 Key\n */\n readonly thyAppendTextTranslateKey = input<string>();\n\n /**\n * 输入框上添加的前置文本\n */\n readonly thyPrependText = input<string>();\n\n /**\n * 输入框上添加的前置文本多语言 Key\n */\n readonly thyPrependTextTranslateKey = input<string>();\n\n protected readonly prependText = computed(() => {\n const prependTextTranslateKey = this.thyPrependTextTranslateKey();\n if (prependTextTranslateKey) {\n return this.thyTranslate.instant(prependTextTranslateKey);\n }\n return this.thyPrependText();\n });\n\n protected readonly appendText = computed(() => {\n const appendTextTranslateKey = this.thyAppendTextTranslateKey();\n if (appendTextTranslateKey) {\n return this.thyTranslate.instant(appendTextTranslateKey);\n }\n return this.thyAppendText();\n });\n\n /**\n * 输入框分组大小\n * @type 'sm' | 'lg' | 'md' | ''\n * @default ''\n */\n readonly thySize = input<InputGroupSize>();\n\n /**\n * 后置模板\n */\n readonly appendTemplate = contentChild<TemplateRef<unknown>>('append');\n\n /**\n * 前置模板\n */\n readonly prependTemplate = contentChild<TemplateRef<unknown>>('prepend');\n\n /**\n * 前缀\n */\n readonly prefixTemplate = contentChild<TemplateRef<unknown>>('prefix');\n\n /**\n * 后缀\n */\n readonly suffixTemplate = contentChild<TemplateRef<unknown>>('suffix');\n\n /**\n * @private\n */\n readonly inputDirective = contentChild(ThyInputDirective);\n\n private disabledObservable: MutationObserver;\n\n constructor() {\n effect(() => {\n const size = this.thySize();\n if (size && inputGroupSizeMap[size]) {\n this.hostRenderer.updateClass(inputGroupSizeMap[size]);\n } else {\n this.hostRenderer.updateClass([]);\n }\n });\n\n effect(() => {\n const inputDirective = this.inputDirective();\n if (inputDirective?.nativeElement) {\n this.isTextareaSuffix.set(inputDirective?.nativeElement?.tagName === 'TEXTAREA');\n if (this.isTextareaSuffix()) {\n this.determineHasScrollbar();\n }\n }\n });\n\n effect(() => {\n const inputDirective = this.inputDirective();\n this.disabledObservable?.disconnect();\n if (inputDirective?.nativeElement) {\n this.disabledObservable = new MutationObserverFactory().create(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'disabled') {\n this.disabled.set(!!inputDirective.nativeElement.hasAttribute('disabled'));\n }\n }\n });\n if (this.disabledObservable) {\n this.disabledObservable.observe(inputDirective.nativeElement, {\n attributes: true,\n attributeFilter: ['disabled']\n });\n }\n }\n });\n }\n\n ngOnInit() {\n this.hostFocusControl.focusChanged = (origin: FocusOrigin) => {\n if (origin) {\n this.hostRenderer.addClass('form-control-active');\n } else {\n this.hostRenderer.removeClass('form-control-active');\n }\n };\n }\n\n private determineHasScrollbar() {\n this.ngZone.runOutsideAngular(() => {\n this.resizeObserver(this.inputDirective().nativeElement)\n .pipe(throttleTime(100), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const hasScrollbar =\n this.inputDirective().nativeElement.scrollHeight > this.inputDirective().nativeElement.clientHeight;\n if (this.hasScrollbar() !== hasScrollbar) {\n this.ngZone.run(() => {\n this.hasScrollbar.set(hasScrollbar);\n });\n }\n });\n });\n }\n\n private resizeObserver(element: HTMLElement): Observable<ResizeObserverEntry[]> {\n return typeof ResizeObserver === 'undefined' || !ResizeObserver\n ? of(null)\n : new Observable(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(entries);\n });\n resize.observe(element);\n return () => {\n resize.disconnect();\n };\n });\n }\n\n ngOnDestroy() {\n this.hostFocusControl.destroy();\n }\n}\n","@if (prependText()) {\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\">{{ prependText() }}</span>\n </div>\n}\n@if (prependTemplate()) {\n <div class=\"input-group-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n\n@if (prefixTemplate()) {\n <div class=\"input-group-prefix\">\n <ng-template *ngTemplateOutlet=\"prefixTemplate()\"></ng-template>\n </div>\n}\n\n<ng-content></ng-content>\n\n@if (appendText()) {\n <div class=\"input-group-append\">\n <span class=\"input-group-text\">{{ appendText() }}</span>\n </div>\n}\n@if (appendTemplate()) {\n <div class=\"input-group-append\">\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n </div>\n}\n\n@if (suffixTemplate()) {\n <div class=\"input-group-suffix\">\n <ng-template *ngTemplateOutlet=\"suffixTemplate()\"></ng-template>\n </div>\n}\n","import {\n AbstractControlValueAccessor,\n Constructor,\n mixinDisabled,\n mixinInitialized,\n mixinTabIndex,\n ThyCanDisable,\n ThyHasTabIndex,\n ThyInitialized,\n useHostFocusControl\n} from 'ngx-tethys/core';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n inject,\n input,\n effect,\n signal,\n output,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\nimport { ThyInputDirective, ThyInputSize } from './input.directive';\n\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport type ThyInputSearchTheme = 'default' | 'ellipse' | 'transparent' | '';\nexport type ThyInputSearchIconPosition = 'before' | 'after';\n\nexport const CUSTOM_INPUT_SEARCH_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyInputSearch),\n multi: true\n};\n\nconst noop = () => {};\n\nconst _MixinBase: Constructor<ThyHasTabIndex> &\n Constructor<ThyInitialized> &\n Constructor<ThyCanDisable> &\n typeof AbstractControlValueAccessor = mixinInitialized(mixinTabIndex(mixinDisabled(AbstractControlValueAccessor)));\n\n/**\n * 搜索输入框\n * @name thy-input-search\n * @order 30\n */\n@Component({\n selector: 'thy-input-search',\n templateUrl: './input-search.component.html',\n providers: [CUSTOM_INPUT_SEARCH_CONTROL_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-input form-control thy-input-search',\n '[class.thy-input-search-ellipse]': 'thyTheme() === \"ellipse\"',\n '[class.thy-input-search-transparent]': 'thyTheme() === \"transparent\"',\n '[class.thy-input-search-before-with-clear]': 'searchText() && iconPosition() === \"before\"',\n '[class.form-control-active]': 'focused()',\n '[attr.tabindex]': 'tabIndex'\n },\n imports: [ThyIcon, ThyInputDirective, ThyAutofocusDirective, FormsModule]\n})\nexport class ThyInputSearch extends _MixinBase implements ControlValueAccessor, OnInit, OnDestroy {\n private elementRef = inject(ElementRef);\n\n readonly inputElement = viewChild<ElementRef<any>>('input');\n\n private hostRenderer = useHostRenderer();\n\n private hostFocusControl = useHostFocusControl();\n\n public disabled = signal(false);\n\n searchText = signal<string>('');\n\n focused = signal(false);\n\n /**\n * 搜索框 name 属性\n */\n readonly name = input('');\n\n /**\n * 搜索框 Placeholder\n */\n readonly placeholder = input('');\n\n /**\n * 搜索框风格\n * @type 'default' | 'ellipse' | 'transparent'\n * @default default\n */\n readonly thyTheme = input<ThyInputSearchTheme>();\n\n /**\n * 是否自动聚焦\n * @default false\n */\n readonly autoFocus = input(false, { alias: 'thySearchFocus', transform: coerceBooleanProperty });\n\n /**\n * 搜索图标位置,当传入 after 时,搜索图标在输入框后方显示,有内容时显示为关闭按钮\n * @type ThyInputSearchIconPosition\n */\n readonly iconPosition = input('before', {\n alias: 'thyIconPosition',\n transform: (value: ThyInputSearchIconPosition) => value || 'before'\n });\n\n /**\n * 输入框大小\n * @type 'xs' | 'sm' | 'md' | 'default' | 'lg'\n */\n readonly thySize = input<ThyInputSize>();\n\n /**\n * @deprecated please use thyClear\n */\n readonly clear = output<Event>();\n\n /**\n * 清除搜索事件\n */\n readonly thyClear = output<Event>();\n\n constructor() {\n super();\n\n effect(() => {\n this.focused.set(this.autoFocus());\n });\n\n effect(() => {\n const iconPosition = this.iconPosition();\n this.hostRenderer.updateClass([`thy-input-search-${iconPosition}`]);\n });\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.hostFocusControl.focusChanged = (origin: FocusOrigin) => {\n if (this.disabled()) {\n return;\n }\n\n if (origin) {\n if (!this.focused()) {\n this.inputElement().nativeElement.focus();\n }\n } else {\n if (this.focused()) {\n this.focused.set(false);\n this.onTouchedFn();\n }\n }\n };\n }\n\n writeValue(value: any): void {\n this.searchText.set(value);\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n searchModelChange() {\n this.onChangeFn(this.searchText());\n }\n\n clearSearchText(event: Event) {\n const element = this.elementRef.nativeElement.querySelector('.input-search-control');\n element.focus();\n event.stopPropagation();\n if (this.disabled()) {\n return;\n }\n this.searchText.set('');\n this.onChangeFn(this.searchText());\n this.clear.emit(event);\n this.thyClear.emit(event);\n }\n\n ngOnDestroy(): void {\n this.hostFocusControl.destroy();\n }\n}\n","@if (iconPosition() === 'before') {\n <thy-icon class=\"input-prepend\" thyIconName=\"search\"></thy-icon>\n}\n<input\n class=\"input-search-control\"\n #input\n thyInput\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [thyAutofocus]=\"autoFocus()\"\n [(ngModel)]=\"searchText\"\n (ngModelChange)=\"searchModelChange()\"\n (focus)=\"!focused() ? (focused.set(true)) : null\"\n [thySize]=\"thySize()\"\n tabindex=\"-1\" />\n@if (iconPosition() === 'after') {\n <div class=\"input-append input-append-divider\">\n @if (searchText()) {\n <a class=\"close\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n } @else {\n <thy-icon class=\"text-placeholder\" thyIconName=\"search\"></thy-icon>\n }\n </div>\n}\n\n@if (searchText() && iconPosition() === 'before') {\n <a class=\"close input-append\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n","import { Component, OnInit, ChangeDetectionStrategy, inject, DestroyRef, input, effect, signal } from '@angular/core';\nimport { ThyInputDirective } from './input.directive';\nimport { switchMap, filter, tap } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { ThyInputGroup } from './input-group.component';\n\n/**\n * 输入框输入文字展示\n * @name thy-input-count\n * @order 40\n */\n@Component({\n selector: 'thy-input-count',\n template: '{{inputLength()}} / {{maxLength()}}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-input-count text-muted'\n }\n})\nexport class ThyInputCount implements OnInit {\n private inputGroup = inject(ThyInputGroup, { optional: true })!;\n\n private readonly destroyRef = inject(DestroyRef);\n\n private hasInput = false;\n\n /**\n * 输入框组件,如果不传默认会读取外层 thy-input-group 下的 thyInput 指令\n * @type ThyInputDirective\n */\n readonly thyInput = input<ThyInputDirective>();\n\n maxLength = signal<number | string>(undefined);\n\n inputLength = signal(0);\n\n thyInput$ = new Subject<ThyInputDirective>();\n\n constructor() {\n this.setup();\n\n effect(() => {\n const input = this.thyInput();\n if (input) {\n this.hasInput = true;\n this.thyInput$.next(input);\n }\n });\n }\n\n setup() {\n this.thyInput$\n .pipe(\n filter(input => {\n return !!input;\n }),\n tap(input => {\n this.maxLength.set(input.nativeElement.getAttribute('maxlength'));\n }),\n takeUntilDestroyed(this.destroyRef),\n switchMap(input => {\n return input.ngControl.valueChanges;\n }),\n tap(value => {\n this.inputLength.set(value?.length || 0);\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n }\n\n ngOnInit(): void {\n const inputDirective = this.inputGroup.inputDirective();\n if (!this.hasInput && this.inputGroup && inputDirective) {\n this.thyInput$.next(inputDirective);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyInputDirective } from './input.directive';\nimport { ThyInput } from './input.component';\nimport { ThyInputGroup } from './input-group.component';\nimport { ThyInputSearch } from './input-search.component';\nimport { FormsModule } from '@angular/forms';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyDividerModule } from 'ngx-tethys/divider';\nimport { ThyInputCount } from './input-count.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThySharedModule,\n ThyIconModule,\n ThyDividerModule,\n ThyInputDirective,\n ThyInput,\n ThyInputGroup,\n ThyInputSearch,\n ThyInputCount\n ],\n exports: [ThyInputDirective, ThyInput, ThyInputGroup, ThyInputSearch, ThyInputCount]\n})\nexport class ThyInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["inputGroupSizeMap","noop"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-input.mjs","sources":["../../../src/input/input.directive.ts","../../../src/input/input.component.ts","../../../src/input/input.component.html","../../../src/input/input-group.component.ts","../../../src/input/input-group.component.html","../../../src/input/input-search.component.ts","../../../src/input/input-search.component.html","../../../src/input/input-count.component.ts","../../../src/input/module.ts","../../../src/input/ngx-tethys-input.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Input, OnInit, Renderer2, effect, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nexport type ThyInputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nconst inputGroupSizeMap = {\n xs: ['form-control-xs'],\n sm: ['form-control-sm'],\n md: ['form-control-md'],\n lg: ['form-control-lg']\n};\n\n/**\n * 输入框指令\n * @name thyInput\n * @order 10\n */\n@Directive({\n selector: 'input[thyInput], select[thyInput], textarea[thyInput]',\n exportAs: 'thyInput'\n})\nexport class ThyInputDirective {\n private elementRef = inject(ElementRef);\n private render = inject(Renderer2);\n private control = inject(NgControl, { optional: true, self: true })!;\n\n @HostBinding('class.form-control') isFormControl = true;\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 输入框大小\n * @type 'xs' | 'sm' | 'md' | 'default' | 'lg'\n * @default default\n */\n readonly thySize = input<ThyInputSize>();\n\n get ngControl() {\n return this.control;\n }\n\n get nativeElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n constructor() {\n effect(() => {\n const size = this.thySize();\n if (size && inputGroupSizeMap[size]) {\n this.hostRenderer.updateClass(inputGroupSizeMap[size]);\n } else {\n this.hostRenderer.updateClass([]);\n }\n });\n }\n}\n","import { take } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n forwardRef,\n NgZone,\n OnInit,\n TemplateRef,\n ViewEncapsulation,\n inject,\n input,\n effect,\n signal,\n output,\n contentChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\nimport { ThyInputDirective, ThyInputSize } from './input.directive';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyInput),\n multi: true\n};\n\nconst noop = () => {};\n\nconst password = 'password';\n\n/**\n * 内部集成输入框组件,建议 thy-input-group 和 thyInput 组合使用\n * @name thy-input\n * @order 50\n */\n@Component({\n selector: 'thy-input',\n templateUrl: './input.component.html',\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-input form-control',\n '[class.form-control-active]': 'focused()',\n '[class.disabled]': 'disabled()'\n },\n imports: [NgTemplateOutlet, ThyInputDirective, ThyAutofocusDirective, FormsModule, ThyIcon]\n})\nexport class ThyInput implements ControlValueAccessor, OnInit {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n\n /**\n * Placeholder\n */\n readonly placeholder = input('');\n\n /**\n * 输入框大小\n * @type 'xs' | 'sm' | 'md' | 'default' | 'lg'\n * @default default\n */\n readonly thySize = input<ThyInputSize>();\n\n /**\n * 是否自动聚焦\n */\n readonly thyAutofocus = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 输入框类型\n * @type 'number' | 'input'\n */\n readonly thyType = input<string>();\n\n /**\n * @deprecated please use thyType\n */\n readonly _type = input<string>(undefined, { alias: 'type' });\n\n /**\n * 输入 Label 文本\n */\n readonly thyLabelText = input<string>();\n\n /**\n * 是否只读\n */\n readonly readonly = input(false, { transform: coerceBooleanProperty });\n\n /**\n * focus 聚焦事件\n */\n readonly focus = output<Event>();\n\n /**\n * blur 失焦事件\n */\n readonly blur = output<Event>();\n\n /**\n * 后置模板\n */\n readonly appendTemplate = contentChild<TemplateRef<any>>('append');\n\n /**\n * 前置模板\n */\n readonly prependTemplate = contentChild<TemplateRef<any>>('prepend');\n\n public type = signal<string | undefined>(undefined);\n\n public value = signal('');\n\n public showLabel = signal(false);\n\n public focused = signal(false);\n\n public disabled = signal(false);\n\n private onTouchedCallback: () => void = noop;\n\n private onChangeCallback: (_: any) => void = noop;\n\n public isPasswordType = signal(false);\n\n constructor() {\n effect(() => {\n this.type.set(this.thyType() || this._type());\n });\n }\n\n ngOnInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.isPasswordType.set(this.isPassword(this.type()));\n });\n }\n\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onModelChange() {\n this.onChangeCallback(this.value());\n }\n\n onInputFocus(event: Event) {\n this.focused.set(true);\n this.showLabel.set(true);\n this.focus.emit(event);\n }\n\n onInputBlur(event: Event) {\n this.onTouchedCallback();\n if (this.elementRef.nativeElement.onblur) {\n this.elementRef.nativeElement.onblur(event);\n }\n this.focused.set(false);\n this.showLabel.set(false);\n this.blur.emit(event);\n }\n\n isPassword(value?: string) {\n return value === password;\n }\n\n togglePasswordType() {\n this.type.set(this.isPassword(this.type()) ? 'text' : 'password');\n }\n}\n","@if (prependTemplate()) {\n <div #prepend class=\"input-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n<input\n #input\n thyInput\n [thySize]=\"thySize()\"\n [thyAutofocus]=\"thyAutofocus()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onModelChange()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [readonly]=\"readonly()\" />\n<span class=\"input-label input-label-{{ thySize() }}\" [class.active]=\"showLabel()\">{{ thyLabelText() }}</span>\n\n@if (isPasswordType() || appendTemplate()) {\n <div #append class=\"input-append\">\n @if (isPasswordType()) {\n <a href=\"javascript:;\" class=\"link-secondary input-password-icon\" (click)=\"togglePasswordType()\">\n @if (isPassword(type())) {\n <thy-icon thyIconName=\"eye\"></thy-icon>\n }\n @if (!isPassword(type())) {\n <thy-icon thyIconName=\"eye-invisible\"></thy-icon>\n }\n </a>\n } @else {\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n }\n </div>\n}\n","import {\n Component,\n TemplateRef,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n NgZone,\n inject,\n DestroyRef,\n input,\n computed,\n effect,\n contentChild,\n signal\n} from '@angular/core';\nimport { ThyTranslate, useHostFocusControl } from 'ngx-tethys/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyInputDirective } from './input.directive';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { throttleTime } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, of } from 'rxjs';\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport { MutationObserverFactory } from '@angular/cdk/observers';\n\nexport type InputGroupSize = 'sm' | 'lg' | 'md' | '';\n\nconst inputGroupSizeMap = {\n sm: ['input-group-sm'],\n lg: ['input-group-lg'],\n md: ['input-group-md']\n};\n\n/**\n * 输入框分组\n * @name thy-input-group\n * @order 20\n */\n@Component({\n selector: 'thy-input-group',\n templateUrl: './input-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-input-group',\n '[class.form-control]': 'prefixTemplate() || suffixTemplate()',\n '[class.thy-input-group-with-prefix]': 'prefixTemplate()',\n '[class.thy-input-group-with-suffix]': 'suffixTemplate()',\n '[class.thy-input-group-with-textarea-suffix]': 'isTextareaSuffix()',\n '[class.thy-input-group-with-scroll-bar]': 'isTextareaSuffix() && hasScrollbar()',\n '[class.disabled]': 'disabled()'\n },\n imports: [NgTemplateOutlet]\n})\nexport class ThyInputGroup implements OnInit, OnDestroy {\n private thyTranslate = inject(ThyTranslate);\n private ngZone = inject(NgZone);\n\n private hostRenderer = useHostRenderer();\n\n private hostFocusControl = useHostFocusControl();\n\n private readonly destroyRef = inject(DestroyRef);\n\n public isTextareaSuffix = signal(false);\n\n public hasScrollbar = signal(false);\n\n disabled = signal(false);\n\n /**\n * 输入框上添加的后置文本\n */\n readonly thyAppendText = input<string>();\n\n /**\n * 输入框上添加的后置文本多语言 Key\n */\n readonly thyAppendTextTranslateKey = input<string>();\n\n /**\n * 输入框上添加的前置文本\n */\n readonly thyPrependText = input<string>();\n\n /**\n * 输入框上添加的前置文本多语言 Key\n */\n readonly thyPrependTextTranslateKey = input<string>();\n\n protected readonly prependText = computed(() => {\n const prependTextTranslateKey = this.thyPrependTextTranslateKey();\n if (prependTextTranslateKey) {\n return this.thyTranslate.instant(prependTextTranslateKey);\n }\n return this.thyPrependText();\n });\n\n protected readonly appendText = computed(() => {\n const appendTextTranslateKey = this.thyAppendTextTranslateKey();\n if (appendTextTranslateKey) {\n return this.thyTranslate.instant(appendTextTranslateKey);\n }\n return this.thyAppendText();\n });\n\n /**\n * 输入框分组大小\n * @type 'sm' | 'lg' | 'md' | ''\n * @default ''\n */\n readonly thySize = input<InputGroupSize>();\n\n /**\n * 后置模板\n */\n readonly appendTemplate = contentChild<TemplateRef<unknown>>('append');\n\n /**\n * 前置模板\n */\n readonly prependTemplate = contentChild<TemplateRef<unknown>>('prepend');\n\n /**\n * 前缀\n */\n readonly prefixTemplate = contentChild<TemplateRef<unknown>>('prefix');\n\n /**\n * 后缀\n */\n readonly suffixTemplate = contentChild<TemplateRef<unknown>>('suffix');\n\n /**\n * @private\n */\n readonly inputDirective = contentChild.required(ThyInputDirective);\n\n private disabledObservable: MutationObserver | null = null;\n\n constructor() {\n effect(() => {\n const size = this.thySize();\n if (size && inputGroupSizeMap[size]) {\n this.hostRenderer.updateClass(inputGroupSizeMap[size]);\n } else {\n this.hostRenderer.updateClass([]);\n }\n });\n\n effect(() => {\n const inputDirective = this.inputDirective();\n if (inputDirective?.nativeElement) {\n this.isTextareaSuffix.set(inputDirective?.nativeElement?.tagName === 'TEXTAREA');\n if (this.isTextareaSuffix()) {\n this.determineHasScrollbar();\n }\n }\n });\n\n effect(() => {\n const inputDirective = this.inputDirective();\n this.disabledObservable?.disconnect();\n if (inputDirective?.nativeElement) {\n this.disabledObservable = new MutationObserverFactory().create(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'disabled') {\n this.disabled.set(!!inputDirective.nativeElement.hasAttribute('disabled'));\n }\n }\n });\n if (this.disabledObservable) {\n this.disabledObservable.observe(inputDirective.nativeElement, {\n attributes: true,\n attributeFilter: ['disabled']\n });\n }\n }\n });\n }\n\n ngOnInit() {\n this.hostFocusControl.focusChanged = (origin: FocusOrigin) => {\n if (origin) {\n this.hostRenderer.addClass('form-control-active');\n } else {\n this.hostRenderer.removeClass('form-control-active');\n }\n };\n }\n\n private determineHasScrollbar() {\n this.ngZone.runOutsideAngular(() => {\n this.resizeObserver(this.inputDirective().nativeElement)\n .pipe(throttleTime(100), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const hasScrollbar =\n this.inputDirective().nativeElement.scrollHeight > this.inputDirective().nativeElement.clientHeight;\n if (this.hasScrollbar() !== hasScrollbar) {\n this.ngZone.run(() => {\n this.hasScrollbar.set(hasScrollbar);\n });\n }\n });\n });\n }\n\n private resizeObserver(element: HTMLElement): Observable<ResizeObserverEntry[] | null> {\n return typeof ResizeObserver === 'undefined' || !ResizeObserver\n ? of(null)\n : new Observable(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(entries);\n });\n resize.observe(element);\n return () => {\n resize.disconnect();\n };\n });\n }\n\n ngOnDestroy() {\n this.hostFocusControl.destroy();\n }\n}\n","@if (prependText()) {\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\">{{ prependText() }}</span>\n </div>\n}\n@if (prependTemplate()) {\n <div class=\"input-group-prepend\">\n <ng-template *ngTemplateOutlet=\"prependTemplate()\"></ng-template>\n </div>\n}\n\n@if (prefixTemplate()) {\n <div class=\"input-group-prefix\">\n <ng-template *ngTemplateOutlet=\"prefixTemplate()\"></ng-template>\n </div>\n}\n\n<ng-content></ng-content>\n\n@if (appendText()) {\n <div class=\"input-group-append\">\n <span class=\"input-group-text\">{{ appendText() }}</span>\n </div>\n}\n@if (appendTemplate()) {\n <div class=\"input-group-append\">\n <ng-template *ngTemplateOutlet=\"appendTemplate()\"></ng-template>\n </div>\n}\n\n@if (suffixTemplate()) {\n <div class=\"input-group-suffix\">\n <ng-template *ngTemplateOutlet=\"suffixTemplate()\"></ng-template>\n </div>\n}\n","import {\n AbstractControlValueAccessor,\n Constructor,\n mixinDisabled,\n mixinInitialized,\n mixinTabIndex,\n ThyCanDisable,\n ThyHasTabIndex,\n ThyInitialized,\n useHostFocusControl\n} from 'ngx-tethys/core';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n inject,\n input,\n effect,\n signal,\n output,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\nimport { ThyInputDirective, ThyInputSize } from './input.directive';\n\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport type ThyInputSearchTheme = 'default' | 'ellipse' | 'transparent' | '';\nexport type ThyInputSearchIconPosition = 'before' | 'after';\n\nexport const CUSTOM_INPUT_SEARCH_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyInputSearch),\n multi: true\n};\n\nconst noop = () => {};\n\nconst _MixinBase: Constructor<ThyHasTabIndex> &\n Constructor<ThyInitialized> &\n Constructor<ThyCanDisable> &\n typeof AbstractControlValueAccessor = mixinInitialized(mixinTabIndex(mixinDisabled(AbstractControlValueAccessor)));\n\n/**\n * 搜索输入框\n * @name thy-input-search\n * @order 30\n */\n@Component({\n selector: 'thy-input-search',\n templateUrl: './input-search.component.html',\n providers: [CUSTOM_INPUT_SEARCH_CONTROL_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-input form-control thy-input-search',\n '[class.thy-input-search-ellipse]': 'thyTheme() === \"ellipse\"',\n '[class.thy-input-search-transparent]': 'thyTheme() === \"transparent\"',\n '[class.thy-input-search-before-with-clear]': 'searchText() && iconPosition() === \"before\"',\n '[class.form-control-active]': 'focused()',\n '[attr.tabindex]': 'tabIndex'\n },\n imports: [ThyIcon, ThyInputDirective, ThyAutofocusDirective, FormsModule]\n})\nexport class ThyInputSearch extends _MixinBase implements ControlValueAccessor, OnInit, OnDestroy {\n private elementRef = inject(ElementRef);\n\n readonly inputElement = viewChild.required<ElementRef<any>>('input');\n\n private hostRenderer = useHostRenderer();\n\n private hostFocusControl = useHostFocusControl();\n\n public disabled = signal(false);\n\n searchText = signal<string>('');\n\n focused = signal(false);\n\n /**\n * 搜索框 name 属性\n */\n readonly name = input('');\n\n /**\n * 搜索框 Placeholder\n */\n readonly placeholder = input('');\n\n /**\n * 搜索框风格\n * @type 'default' | 'ellipse' | 'transparent'\n * @default default\n */\n readonly thyTheme = input<ThyInputSearchTheme>();\n\n /**\n * 是否自动聚焦\n * @default false\n */\n readonly autoFocus = input(false, { alias: 'thySearchFocus', transform: coerceBooleanProperty });\n\n /**\n * 搜索图标位置,当传入 after 时,搜索图标在输入框后方显示,有内容时显示为关闭按钮\n * @type ThyInputSearchIconPosition\n */\n readonly iconPosition = input('before', {\n alias: 'thyIconPosition',\n transform: (value: ThyInputSearchIconPosition) => value || 'before'\n });\n\n /**\n * 输入框大小\n * @type 'xs' | 'sm' | 'md' | 'default' | 'lg'\n */\n readonly thySize = input<ThyInputSize>();\n\n /**\n * @deprecated please use thyClear\n */\n readonly clear = output<Event>();\n\n /**\n * 清除搜索事件\n */\n readonly thyClear = output<Event>();\n\n constructor() {\n super();\n\n effect(() => {\n this.focused.set(this.autoFocus());\n });\n\n effect(() => {\n const iconPosition = this.iconPosition();\n this.hostRenderer.updateClass([`thy-input-search-${iconPosition}`]);\n });\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.hostFocusControl.focusChanged = (origin: FocusOrigin) => {\n if (this.disabled()) {\n return;\n }\n\n if (origin) {\n if (!this.focused()) {\n this.inputElement().nativeElement.focus();\n }\n } else {\n if (this.focused()) {\n this.focused.set(false);\n this.onTouchedFn();\n }\n }\n };\n }\n\n writeValue(value: any): void {\n this.searchText.set(value);\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n searchModelChange() {\n this.onChangeFn(this.searchText());\n }\n\n clearSearchText(event: Event) {\n const element = this.elementRef.nativeElement.querySelector('.input-search-control');\n element.focus();\n event.stopPropagation();\n if (this.disabled()) {\n return;\n }\n this.searchText.set('');\n this.onChangeFn(this.searchText());\n this.clear.emit(event);\n this.thyClear.emit(event);\n }\n\n ngOnDestroy(): void {\n this.hostFocusControl.destroy();\n }\n}\n","@if (iconPosition() === 'before') {\n <thy-icon class=\"input-prepend\" thyIconName=\"search\"></thy-icon>\n}\n<input\n class=\"input-search-control\"\n #input\n thyInput\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [thyAutofocus]=\"autoFocus()\"\n [(ngModel)]=\"searchText\"\n (ngModelChange)=\"searchModelChange()\"\n (focus)=\"!focused() ? focused.set(true) : null\"\n [thySize]=\"thySize()\"\n tabindex=\"-1\" />\n@if (iconPosition() === 'after') {\n <div class=\"input-append input-append-divider\">\n @if (searchText()) {\n <a class=\"close\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n } @else {\n <thy-icon class=\"text-placeholder\" thyIconName=\"search\"></thy-icon>\n }\n </div>\n}\n\n@if (searchText() && iconPosition() === 'before') {\n <a class=\"close input-append\" href=\"javascript:;\" (click)=\"clearSearchText($event)\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n","import { Component, OnInit, ChangeDetectionStrategy, inject, DestroyRef, input, effect, signal } from '@angular/core';\nimport { ThyInputDirective } from './input.directive';\nimport { switchMap, filter, tap } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { ThyInputGroup } from './input-group.component';\n\n/**\n * 输入框输入文字展示\n * @name thy-input-count\n * @order 40\n */\n@Component({\n selector: 'thy-input-count',\n template: '{{inputLength()}} / {{maxLength()}}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-input-count text-muted'\n }\n})\nexport class ThyInputCount implements OnInit {\n private inputGroup = inject(ThyInputGroup, { optional: true })!;\n\n private readonly destroyRef = inject(DestroyRef);\n\n private hasInput = false;\n\n /**\n * 输入框组件,如果不传默认会读取外层 thy-input-group 下的 thyInput 指令\n * @type ThyInputDirective\n */\n readonly thyInput = input<ThyInputDirective>();\n\n maxLength = signal<number | string | null>(null);\n\n inputLength = signal(0);\n\n thyInput$ = new Subject<ThyInputDirective>();\n\n constructor() {\n this.setup();\n\n effect(() => {\n const input = this.thyInput();\n if (input) {\n this.hasInput = true;\n this.thyInput$.next(input);\n }\n });\n }\n\n setup() {\n this.thyInput$\n .pipe(\n filter(input => {\n return !!input;\n }),\n tap(input => {\n this.maxLength.set(input?.nativeElement?.getAttribute('maxlength'));\n }),\n takeUntilDestroyed(this.destroyRef),\n switchMap(input => {\n return input.ngControl.valueChanges!;\n }),\n tap(value => {\n this.inputLength.set(value?.length || 0);\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n }\n\n ngOnInit(): void {\n const inputDirective = this.inputGroup.inputDirective();\n if (!this.hasInput && this.inputGroup && inputDirective) {\n this.thyInput$.next(inputDirective);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyInputDirective } from './input.directive';\nimport { ThyInput } from './input.component';\nimport { ThyInputGroup } from './input-group.component';\nimport { ThyInputSearch } from './input-search.component';\nimport { FormsModule } from '@angular/forms';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyDividerModule } from 'ngx-tethys/divider';\nimport { ThyInputCount } from './input-count.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThySharedModule,\n ThyIconModule,\n ThyDividerModule,\n ThyInputDirective,\n ThyInput,\n ThyInputGroup,\n ThyInputSearch,\n ThyInputCount\n ],\n exports: [ThyInputDirective, ThyInput, ThyInputGroup, ThyInputSearch, ThyInputCount]\n})\nexport class ThyInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["inputGroupSizeMap","noop"],"mappings":"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"}