@ng-nest/ui 20.2.4 → 21.0.0

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 (204) hide show
  1. package/fesm2022/ng-nest-ui-affix.mjs +10 -10
  2. package/fesm2022/ng-nest-ui-alert.mjs +10 -10
  3. package/fesm2022/ng-nest-ui-anchor.mjs +16 -16
  4. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  5. package/fesm2022/ng-nest-ui-attachments.mjs +16 -17
  6. package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
  7. package/fesm2022/ng-nest-ui-auto-complete.mjs +13 -13
  8. package/fesm2022/ng-nest-ui-avatar.mjs +16 -16
  9. package/fesm2022/ng-nest-ui-back-top.mjs +10 -10
  10. package/fesm2022/ng-nest-ui-badge.mjs +10 -10
  11. package/fesm2022/ng-nest-ui-base-form.mjs +7 -7
  12. package/fesm2022/ng-nest-ui-bubble.mjs +115 -32
  13. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  14. package/fesm2022/ng-nest-ui-button.mjs +16 -16
  15. package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
  16. package/fesm2022/ng-nest-ui-card.mjs +10 -10
  17. package/fesm2022/ng-nest-ui-carousel.mjs +16 -16
  18. package/fesm2022/ng-nest-ui-cascade.mjs +13 -13
  19. package/fesm2022/ng-nest-ui-checkbox.mjs +10 -10
  20. package/fesm2022/ng-nest-ui-collapse.mjs +16 -16
  21. package/fesm2022/ng-nest-ui-color-picker.mjs +16 -16
  22. package/fesm2022/ng-nest-ui-color.mjs +10 -10
  23. package/fesm2022/ng-nest-ui-comment.mjs +16 -16
  24. package/fesm2022/ng-nest-ui-container.mjs +31 -31
  25. package/fesm2022/ng-nest-ui-core.mjs +18 -18
  26. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  27. package/fesm2022/ng-nest-ui-coversations.mjs +10 -10
  28. package/fesm2022/ng-nest-ui-crumb.mjs +10 -10
  29. package/fesm2022/ng-nest-ui-date-picker.mjs +49 -49
  30. package/fesm2022/ng-nest-ui-description.mjs +16 -16
  31. package/fesm2022/ng-nest-ui-dialog.mjs +40 -40
  32. package/fesm2022/ng-nest-ui-doc.mjs +7 -7
  33. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  34. package/fesm2022/ng-nest-ui-drawer.mjs +31 -31
  35. package/fesm2022/ng-nest-ui-dropdown.mjs +13 -13
  36. package/fesm2022/ng-nest-ui-empty.mjs +10 -10
  37. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  38. package/fesm2022/ng-nest-ui-find.mjs +10 -10
  39. package/fesm2022/ng-nest-ui-form.mjs +16 -16
  40. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  41. package/fesm2022/ng-nest-ui-highlight.mjs +13 -13
  42. package/fesm2022/ng-nest-ui-i18n.mjs +13 -13
  43. package/fesm2022/ng-nest-ui-icon.mjs +13 -13
  44. package/fesm2022/ng-nest-ui-image.mjs +19 -19
  45. package/fesm2022/ng-nest-ui-inner.mjs +10 -10
  46. package/fesm2022/ng-nest-ui-input-number.mjs +10 -10
  47. package/fesm2022/ng-nest-ui-input.mjs +16 -16
  48. package/fesm2022/ng-nest-ui-keyword.mjs +10 -10
  49. package/fesm2022/ng-nest-ui-layout.mjs +17 -17
  50. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  51. package/fesm2022/ng-nest-ui-link.mjs +10 -10
  52. package/fesm2022/ng-nest-ui-list.mjs +19 -19
  53. package/fesm2022/ng-nest-ui-loading.mjs +10 -10
  54. package/fesm2022/ng-nest-ui-menu.mjs +16 -16
  55. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  56. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  57. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  58. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  59. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  60. package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
  61. package/fesm2022/ng-nest-ui-pagination.mjs +10 -10
  62. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  63. package/fesm2022/ng-nest-ui-popconfirm.mjs +10 -10
  64. package/fesm2022/ng-nest-ui-popover.mjs +13 -13
  65. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  66. package/fesm2022/ng-nest-ui-progress.mjs +10 -10
  67. package/fesm2022/ng-nest-ui-prompts.mjs +10 -10
  68. package/fesm2022/ng-nest-ui-radio.mjs +10 -10
  69. package/fesm2022/ng-nest-ui-rate.mjs +10 -10
  70. package/fesm2022/ng-nest-ui-resizable.mjs +10 -10
  71. package/fesm2022/ng-nest-ui-result.mjs +10 -10
  72. package/fesm2022/ng-nest-ui-ripple.mjs +18 -14
  73. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  74. package/fesm2022/ng-nest-ui-scrollable.mjs +7 -7
  75. package/fesm2022/ng-nest-ui-select.mjs +21 -23
  76. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  77. package/fesm2022/ng-nest-ui-sender.mjs +13 -13
  78. package/fesm2022/ng-nest-ui-skeleton.mjs +10 -10
  79. package/fesm2022/ng-nest-ui-slider-select.mjs +10 -10
  80. package/fesm2022/ng-nest-ui-slider.mjs +10 -10
  81. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  82. package/fesm2022/ng-nest-ui-steps.mjs +10 -10
  83. package/fesm2022/ng-nest-ui-suggestion.mjs +10 -10
  84. package/fesm2022/ng-nest-ui-switch.mjs +10 -10
  85. package/fesm2022/ng-nest-ui-table-view.mjs +58 -58
  86. package/fesm2022/ng-nest-ui-table.mjs +34 -34
  87. package/fesm2022/ng-nest-ui-tabs.mjs +25 -25
  88. package/fesm2022/ng-nest-ui-tag.mjs +10 -10
  89. package/fesm2022/ng-nest-ui-text-retract.mjs +10 -10
  90. package/fesm2022/ng-nest-ui-textarea.mjs +33 -15
  91. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  92. package/fesm2022/ng-nest-ui-theme.mjs +10 -10
  93. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  94. package/fesm2022/ng-nest-ui-thought-chain.mjs +10 -10
  95. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  96. package/fesm2022/ng-nest-ui-time-picker.mjs +16 -16
  97. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  98. package/fesm2022/ng-nest-ui-timeline.mjs +10 -10
  99. package/fesm2022/ng-nest-ui-tooltip.mjs +13 -13
  100. package/fesm2022/ng-nest-ui-transfer.mjs +10 -10
  101. package/fesm2022/ng-nest-ui-tree-file.mjs +10 -10
  102. package/fesm2022/ng-nest-ui-tree-select.mjs +13 -13
  103. package/fesm2022/ng-nest-ui-tree.mjs +19 -19
  104. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  105. package/fesm2022/ng-nest-ui-upload.mjs +19 -19
  106. package/fesm2022/ng-nest-ui-welcome.mjs +10 -10
  107. package/package.json +119 -119
  108. package/{bubble/index.d.ts → types/ng-nest-ui-bubble.d.ts} +20 -2
  109. package/{core/index.d.ts → types/ng-nest-ui-core.d.ts} +3 -0
  110. package/{textarea/index.d.ts → types/ng-nest-ui-textarea.d.ts} +34 -5
  111. /package/{affix/index.d.ts → types/ng-nest-ui-affix.d.ts} +0 -0
  112. /package/{alert/index.d.ts → types/ng-nest-ui-alert.d.ts} +0 -0
  113. /package/{anchor/index.d.ts → types/ng-nest-ui-anchor.d.ts} +0 -0
  114. /package/{api/index.d.ts → types/ng-nest-ui-api.d.ts} +0 -0
  115. /package/{attachments/index.d.ts → types/ng-nest-ui-attachments.d.ts} +0 -0
  116. /package/{auto-complete/index.d.ts → types/ng-nest-ui-auto-complete.d.ts} +0 -0
  117. /package/{avatar/index.d.ts → types/ng-nest-ui-avatar.d.ts} +0 -0
  118. /package/{back-top/index.d.ts → types/ng-nest-ui-back-top.d.ts} +0 -0
  119. /package/{badge/index.d.ts → types/ng-nest-ui-badge.d.ts} +0 -0
  120. /package/{base-form/index.d.ts → types/ng-nest-ui-base-form.d.ts} +0 -0
  121. /package/{button/index.d.ts → types/ng-nest-ui-button.d.ts} +0 -0
  122. /package/{calendar/index.d.ts → types/ng-nest-ui-calendar.d.ts} +0 -0
  123. /package/{card/index.d.ts → types/ng-nest-ui-card.d.ts} +0 -0
  124. /package/{carousel/index.d.ts → types/ng-nest-ui-carousel.d.ts} +0 -0
  125. /package/{cascade/index.d.ts → types/ng-nest-ui-cascade.d.ts} +0 -0
  126. /package/{checkbox/index.d.ts → types/ng-nest-ui-checkbox.d.ts} +0 -0
  127. /package/{collapse/index.d.ts → types/ng-nest-ui-collapse.d.ts} +0 -0
  128. /package/{color-picker/index.d.ts → types/ng-nest-ui-color-picker.d.ts} +0 -0
  129. /package/{color/index.d.ts → types/ng-nest-ui-color.d.ts} +0 -0
  130. /package/{comment/index.d.ts → types/ng-nest-ui-comment.d.ts} +0 -0
  131. /package/{container/index.d.ts → types/ng-nest-ui-container.d.ts} +0 -0
  132. /package/{coversations/index.d.ts → types/ng-nest-ui-coversations.d.ts} +0 -0
  133. /package/{crumb/index.d.ts → types/ng-nest-ui-crumb.d.ts} +0 -0
  134. /package/{date-picker/index.d.ts → types/ng-nest-ui-date-picker.d.ts} +0 -0
  135. /package/{description/index.d.ts → types/ng-nest-ui-description.d.ts} +0 -0
  136. /package/{dialog/index.d.ts → types/ng-nest-ui-dialog.d.ts} +0 -0
  137. /package/{doc/index.d.ts → types/ng-nest-ui-doc.d.ts} +0 -0
  138. /package/{drag/index.d.ts → types/ng-nest-ui-drag.d.ts} +0 -0
  139. /package/{drawer/index.d.ts → types/ng-nest-ui-drawer.d.ts} +0 -0
  140. /package/{dropdown/index.d.ts → types/ng-nest-ui-dropdown.d.ts} +0 -0
  141. /package/{empty/index.d.ts → types/ng-nest-ui-empty.d.ts} +0 -0
  142. /package/{examples/index.d.ts → types/ng-nest-ui-examples.d.ts} +0 -0
  143. /package/{find/index.d.ts → types/ng-nest-ui-find.d.ts} +0 -0
  144. /package/{form/index.d.ts → types/ng-nest-ui-form.d.ts} +0 -0
  145. /package/{highlight/index.d.ts → types/ng-nest-ui-highlight.d.ts} +0 -0
  146. /package/{i18n/index.d.ts → types/ng-nest-ui-i18n.d.ts} +0 -0
  147. /package/{icon/index.d.ts → types/ng-nest-ui-icon.d.ts} +0 -0
  148. /package/{image/index.d.ts → types/ng-nest-ui-image.d.ts} +0 -0
  149. /package/{inner/index.d.ts → types/ng-nest-ui-inner.d.ts} +0 -0
  150. /package/{input-number/index.d.ts → types/ng-nest-ui-input-number.d.ts} +0 -0
  151. /package/{input/index.d.ts → types/ng-nest-ui-input.d.ts} +0 -0
  152. /package/{keyword/index.d.ts → types/ng-nest-ui-keyword.d.ts} +0 -0
  153. /package/{layout/index.d.ts → types/ng-nest-ui-layout.d.ts} +0 -0
  154. /package/{link/index.d.ts → types/ng-nest-ui-link.d.ts} +0 -0
  155. /package/{list/index.d.ts → types/ng-nest-ui-list.d.ts} +0 -0
  156. /package/{loading/index.d.ts → types/ng-nest-ui-loading.d.ts} +0 -0
  157. /package/{menu/index.d.ts → types/ng-nest-ui-menu.d.ts} +0 -0
  158. /package/{message-box/index.d.ts → types/ng-nest-ui-message-box.d.ts} +0 -0
  159. /package/{message/index.d.ts → types/ng-nest-ui-message.d.ts} +0 -0
  160. /package/{notification/index.d.ts → types/ng-nest-ui-notification.d.ts} +0 -0
  161. /package/{outlet/index.d.ts → types/ng-nest-ui-outlet.d.ts} +0 -0
  162. /package/{page-header/index.d.ts → types/ng-nest-ui-page-header.d.ts} +0 -0
  163. /package/{pagination/index.d.ts → types/ng-nest-ui-pagination.d.ts} +0 -0
  164. /package/{pattern/index.d.ts → types/ng-nest-ui-pattern.d.ts} +0 -0
  165. /package/{popconfirm/index.d.ts → types/ng-nest-ui-popconfirm.d.ts} +0 -0
  166. /package/{popover/index.d.ts → types/ng-nest-ui-popover.d.ts} +0 -0
  167. /package/{portal/index.d.ts → types/ng-nest-ui-portal.d.ts} +0 -0
  168. /package/{progress/index.d.ts → types/ng-nest-ui-progress.d.ts} +0 -0
  169. /package/{prompts/index.d.ts → types/ng-nest-ui-prompts.d.ts} +0 -0
  170. /package/{radio/index.d.ts → types/ng-nest-ui-radio.d.ts} +0 -0
  171. /package/{rate/index.d.ts → types/ng-nest-ui-rate.d.ts} +0 -0
  172. /package/{resizable/index.d.ts → types/ng-nest-ui-resizable.d.ts} +0 -0
  173. /package/{result/index.d.ts → types/ng-nest-ui-result.d.ts} +0 -0
  174. /package/{ripple/index.d.ts → types/ng-nest-ui-ripple.d.ts} +0 -0
  175. /package/{scrollable/index.d.ts → types/ng-nest-ui-scrollable.d.ts} +0 -0
  176. /package/{select/index.d.ts → types/ng-nest-ui-select.d.ts} +0 -0
  177. /package/{sender/index.d.ts → types/ng-nest-ui-sender.d.ts} +0 -0
  178. /package/{skeleton/index.d.ts → types/ng-nest-ui-skeleton.d.ts} +0 -0
  179. /package/{slider-select/index.d.ts → types/ng-nest-ui-slider-select.d.ts} +0 -0
  180. /package/{slider/index.d.ts → types/ng-nest-ui-slider.d.ts} +0 -0
  181. /package/{statistic/index.d.ts → types/ng-nest-ui-statistic.d.ts} +0 -0
  182. /package/{steps/index.d.ts → types/ng-nest-ui-steps.d.ts} +0 -0
  183. /package/{suggestion/index.d.ts → types/ng-nest-ui-suggestion.d.ts} +0 -0
  184. /package/{switch/index.d.ts → types/ng-nest-ui-switch.d.ts} +0 -0
  185. /package/{table-view/index.d.ts → types/ng-nest-ui-table-view.d.ts} +0 -0
  186. /package/{table/index.d.ts → types/ng-nest-ui-table.d.ts} +0 -0
  187. /package/{tabs/index.d.ts → types/ng-nest-ui-tabs.d.ts} +0 -0
  188. /package/{tag/index.d.ts → types/ng-nest-ui-tag.d.ts} +0 -0
  189. /package/{text-retract/index.d.ts → types/ng-nest-ui-text-retract.d.ts} +0 -0
  190. /package/{theme/index.d.ts → types/ng-nest-ui-theme.d.ts} +0 -0
  191. /package/{thought-chain/index.d.ts → types/ng-nest-ui-thought-chain.d.ts} +0 -0
  192. /package/{time-ago/index.d.ts → types/ng-nest-ui-time-ago.d.ts} +0 -0
  193. /package/{time-picker/index.d.ts → types/ng-nest-ui-time-picker.d.ts} +0 -0
  194. /package/{time-range/index.d.ts → types/ng-nest-ui-time-range.d.ts} +0 -0
  195. /package/{timeline/index.d.ts → types/ng-nest-ui-timeline.d.ts} +0 -0
  196. /package/{tooltip/index.d.ts → types/ng-nest-ui-tooltip.d.ts} +0 -0
  197. /package/{transfer/index.d.ts → types/ng-nest-ui-transfer.d.ts} +0 -0
  198. /package/{tree-file/index.d.ts → types/ng-nest-ui-tree-file.d.ts} +0 -0
  199. /package/{tree-select/index.d.ts → types/ng-nest-ui-tree-select.d.ts} +0 -0
  200. /package/{tree/index.d.ts → types/ng-nest-ui-tree.d.ts} +0 -0
  201. /package/{typography/index.d.ts → types/ng-nest-ui-typography.d.ts} +0 -0
  202. /package/{upload/index.d.ts → types/ng-nest-ui-upload.d.ts} +0 -0
  203. /package/{welcome/index.d.ts → types/ng-nest-ui-welcome.d.ts} +0 -0
  204. /package/{index.d.ts → types/ng-nest-ui.d.ts} +0 -0
@@ -29,10 +29,10 @@ class XTextRetractProperty extends XPropertyFunction(X_TEXT_RETRACT_CONFIG_NAME)
29
29
  */
30
30
  this.max = input(this.config?.max ?? 256, ...(ngDevMode ? [{ debugName: "max", transform: XToNumber }] : [{ transform: XToNumber }]));
31
31
  }
32
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextRetractProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
33
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XTextRetractProperty, isStandalone: true, selector: "x-text-retract-property", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
32
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextRetractProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
33
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: XTextRetractProperty, isStandalone: true, selector: "x-text-retract-property", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextRetractProperty, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextRetractProperty, decorators: [{
36
36
  type: Component,
37
37
  args: [{ selector: `${XTextRetractPrefix}-property`, template: '' }]
38
38
  }], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
@@ -65,20 +65,20 @@ class XTextRetractComponent extends XTextRetractProperty {
65
65
  toggle() {
66
66
  this.unfold.update((x) => !x);
67
67
  }
68
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextRetractComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
69
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XTextRetractComponent, isStandalone: true, selector: "x-text-retract", usesInheritance: true, ngImport: i0, template: "<div class=\"x-text-retract\">\r\n {{ displayValue() }}\r\n @if (retract()) {\r\n @if (unfold()) {\r\n <x-link type=\"primary\" (click)=\"toggle()\">...{{ 'textRetract.unfold' | xI18n }}</x-link>\r\n } @else {\r\n <x-link type=\"primary\" (click)=\"toggle()\">{{ 'textRetract.packUp' | xI18n }}</x-link>\r\n }\r\n }\r\n</div>\r\n", styles: [".x-text-retract{margin:0;padding:0}.x-text-retract{font-size:var(--x-font-size);display:inline}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "pipe", type: XI18nPipe, name: "xI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
68
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextRetractComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
69
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XTextRetractComponent, isStandalone: true, selector: "x-text-retract", usesInheritance: true, ngImport: i0, template: "<div class=\"x-text-retract\">\r\n {{ displayValue() }}\r\n @if (retract()) {\r\n @if (unfold()) {\r\n <x-link type=\"primary\" (click)=\"toggle()\">...{{ 'textRetract.unfold' | xI18n }}</x-link>\r\n } @else {\r\n <x-link type=\"primary\" (click)=\"toggle()\">{{ 'textRetract.packUp' | xI18n }}</x-link>\r\n }\r\n }\r\n</div>\r\n", styles: [".x-text-retract{margin:0;padding:0}.x-text-retract{font-size:var(--x-font-size);display:inline}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "pipe", type: XI18nPipe, name: "xI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextRetractComponent, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextRetractComponent, decorators: [{
72
72
  type: Component,
73
73
  args: [{ selector: `${XTextRetractPrefix}`, imports: [FormsModule, XLinkComponent, XI18nPipe], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-text-retract\">\r\n {{ displayValue() }}\r\n @if (retract()) {\r\n @if (unfold()) {\r\n <x-link type=\"primary\" (click)=\"toggle()\">...{{ 'textRetract.unfold' | xI18n }}</x-link>\r\n } @else {\r\n <x-link type=\"primary\" (click)=\"toggle()\">{{ 'textRetract.packUp' | xI18n }}</x-link>\r\n }\r\n }\r\n</div>\r\n", styles: [".x-text-retract{margin:0;padding:0}.x-text-retract{font-size:var(--x-font-size);display:inline}\n"] }]
74
74
  }] });
75
75
 
76
76
  class XTextRetractModule {
77
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextRetractModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
78
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.5", ngImport: i0, type: XTextRetractModule, imports: [XTextRetractComponent], exports: [XTextRetractComponent] }); }
79
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextRetractModule, imports: [XTextRetractComponent] }); }
77
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextRetractModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
78
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XTextRetractModule, imports: [XTextRetractComponent], exports: [XTextRetractComponent] }); }
79
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextRetractModule, imports: [XTextRetractComponent] }); }
80
80
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextRetractModule, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextRetractModule, decorators: [{
82
82
  type: NgModule,
83
83
  args: [{
84
84
  exports: [XTextRetractComponent],
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, output, Component, viewChild, computed, inject, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
2
+ import { input, output, Component, viewChild, signal, computed, inject, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
3
3
  import { XToBoolean, XToNumber, XToCssPixelValue, XIsEmpty, XConfigService, XIsFunction } from '@ng-nest/ui/core';
4
4
  import { XFormControlFunction, XValueAccessor } from '@ng-nest/ui/base-form';
5
5
  import { NgClass } from '@angular/common';
@@ -56,6 +56,16 @@ class XTextareaProperty extends XFormControlFunction(X_TEXTAREA_CONFIG_NAME) {
56
56
  * @en_US height
57
57
  */
58
58
  this.height = input('6rem', ...(ngDevMode ? [{ debugName: "height", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
59
+ /**
60
+ * @zh_CN 浮动标签
61
+ * @en_US Float label
62
+ */
63
+ this.floatLabel = input(this.config?.floatLabel ?? null, ...(ngDevMode ? [{ debugName: "floatLabel" }] : []));
64
+ /**
65
+ * @zh_CN 固定浮动标签
66
+ * @en_US Fixed float label
67
+ */
68
+ this.floatFixed = input(this.config?.floatFixed ?? false, ...(ngDevMode ? [{ debugName: "floatFixed", transform: XToBoolean }] : [{ transform: XToBoolean }]));
59
69
  /**
60
70
  * @zh_CN 输入提示信息
61
71
  * @en_US Enter prompt information
@@ -127,18 +137,19 @@ class XTextareaProperty extends XFormControlFunction(X_TEXTAREA_CONFIG_NAME) {
127
137
  */
128
138
  this.clearEmit = output();
129
139
  }
130
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
131
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XTextareaProperty, isStandalone: true, selector: "x-textarea-property", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconLayout: { classPropertyName: "iconLayout", publicName: "iconLayout", isSignal: true, isRequired: false, transformFunction: null }, iconSpin: { classPropertyName: "iconSpin", publicName: "iconSpin", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clearEmit: "clearEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
140
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextareaProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
141
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: XTextareaProperty, isStandalone: true, selector: "x-textarea-property", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconLayout: { classPropertyName: "iconLayout", publicName: "iconLayout", isSignal: true, isRequired: false, transformFunction: null }, iconSpin: { classPropertyName: "iconSpin", publicName: "iconSpin", isSignal: true, isRequired: false, transformFunction: null }, maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, floatLabel: { classPropertyName: "floatLabel", publicName: "floatLabel", isSignal: true, isRequired: false, transformFunction: null }, floatFixed: { classPropertyName: "floatFixed", publicName: "floatFixed", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clearEmit: "clearEmit" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
132
142
  }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaProperty, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextareaProperty, decorators: [{
134
144
  type: Component,
135
145
  args: [{ selector: `${XTextareaPrefix}-property`, template: '' }]
136
- }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconLayout", required: false }] }], iconSpin: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSpin", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelWidth", required: false }] }], labelAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelAlign", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], inputValidator: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputValidator", required: false }] }], clearEmit: [{ type: i0.Output, args: ["clearEmit"] }] } });
146
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconLayout", required: false }] }], iconSpin: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSpin", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], floatLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatLabel", required: false }] }], floatFixed: [{ type: i0.Input, args: [{ isSignal: true, alias: "floatFixed", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelWidth", required: false }] }], labelAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelAlign", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], inputValidator: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputValidator", required: false }] }], clearEmit: [{ type: i0.Output, args: ["clearEmit"] }] } });
137
147
 
138
148
  class XTextareaComponent extends XTextareaProperty {
139
149
  constructor() {
140
150
  super(...arguments);
141
151
  this.textareaRef = viewChild.required('textareaRef');
152
+ this.focused = signal(false, ...(ngDevMode ? [{ debugName: "focused" }] : []));
142
153
  this.valueLength = computed(() => {
143
154
  if (this.maxlength()) {
144
155
  return XIsEmpty(this.value()) ? 0 : `${this.value()}`.length;
@@ -159,11 +170,12 @@ class XTextareaComponent extends XTextareaProperty {
159
170
  return false;
160
171
  }
161
172
  }, ...(ngDevMode ? [{ debugName: "clearShow" }] : []));
173
+ this.hasValue = computed(() => !XIsEmpty(this.value()), ...(ngDevMode ? [{ debugName: "hasValue" }] : []));
162
174
  this.getIcon = computed(() => !XIsEmpty(this.icon()), ...(ngDevMode ? [{ debugName: "getIcon" }] : []));
163
175
  this.getIconLayoutLeft = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'left', ...(ngDevMode ? [{ debugName: "getIconLayoutLeft" }] : []));
164
176
  this.getIconLayoutRight = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'right', ...(ngDevMode ? [{ debugName: "getIconLayoutRight" }] : []));
165
- this.paddingLeft = computed(() => (this.getIconLayoutLeft() ? 2.15 : 0.75), ...(ngDevMode ? [{ debugName: "paddingLeft" }] : []));
166
- this.paddingRight = computed(() => (this.getIconLayoutRight() ? 2.15 : 0.75), ...(ngDevMode ? [{ debugName: "paddingRight" }] : []));
177
+ this.paddingLeft = computed(() => (this.getIconLayoutLeft() ? `2.15rem` : `0.75rem`), ...(ngDevMode ? [{ debugName: "paddingLeft" }] : []));
178
+ this.paddingRight = computed(() => (this.getIconLayoutRight() ? `2.15rem` : `0.75rem`), ...(ngDevMode ? [{ debugName: "paddingRight" }] : []));
167
179
  this.configService = inject(XConfigService);
168
180
  this.classMap = computed(() => ({
169
181
  [`${XTextareaPrefix}-${this.size()}`]: !!this.size(),
@@ -189,20 +201,26 @@ class XTextareaComponent extends XTextareaProperty {
189
201
  this.clearEmit.emit(clearValue);
190
202
  this.textareaRef().nativeElement.focus();
191
203
  }
192
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
193
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XTextareaComponent, isStandalone: true, selector: "x-textarea", providers: [XValueAccessor(XTextareaComponent)], viewQueries: [{ propertyName: "textareaRef", first: true, predicate: ["textareaRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder()\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left.rem]=\"paddingLeft()\"\r\n [style.padding-right.rem]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:16rem}.x-textarea{width:100%}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:500}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea>.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea>.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .5rem);padding:.5rem}.x-textarea>.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea>.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea>.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea>.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea>.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size)) * -2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.75rem;width:.75rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a300)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.75rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:2.15rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .75rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.75rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:2.15rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium)1.5rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}.x-textarea-filled>.x-textarea-row>textarea{border-color:transparent;background-color:var(--x-background-a200)}.x-textarea-filled>.x-textarea-row>textarea:hover{background-color:var(--x-background-a300)}.x-textarea-filled>.x-textarea-row>textarea:focus{border-color:var(--x-primary);background-color:var(--x-background)}.x-textarea-borderless>.x-textarea-row>textarea{border:none}.x-textarea-underlined>.x-textarea-row>textarea{background-color:transparent;border-width:0 0 var(--x-border-width);border-radius:0}.x-textarea{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
204
+ onFocus(_event) {
205
+ this.focused.set(true);
206
+ }
207
+ onBlur(_event) {
208
+ this.focused.set(false);
209
+ }
210
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
211
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XTextareaComponent, isStandalone: true, selector: "x-textarea", providers: [XValueAccessor(XTextareaComponent)], viewQueries: [{ propertyName: "textareaRef", first: true, predicate: ["textareaRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-active]=\"active()\"\r\n [class.x-textarea-focus]=\"focused()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [class.x-textarea-float-fixed]=\"floatFixed()\"\r\n [class.x-textarea-float-label]=\"!!floatLabel()\"\r\n [class.x-textarea-float-label-over]=\"floatLabel() === 'over'\"\r\n [class.x-textarea-float-label-in]=\"floatLabel() === 'in'\"\r\n [class.x-textarea-float-label-on]=\"floatLabel() === 'on'\"\r\n [class.x-textarea-has-value]=\"hasValue()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [style.margin-left]=\"!!floatLabel() ? paddingLeft() : null\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"!floatLabel() ? placeholder() : ''\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left]=\"paddingLeft()\"\r\n [style.padding-right]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:16rem}.x-textarea{width:100%}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:500;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem)}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .5rem);padding:.5rem}.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size)) * -2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.75rem;width:.75rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a300)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.75rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:2.15rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .75rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.75rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:2.15rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium)1.5rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}.x-textarea-filled>.x-textarea-row>textarea{border-color:transparent;background-color:var(--x-background-a200)}.x-textarea-filled>.x-textarea-row>textarea:hover{background-color:var(--x-background-a300)}.x-textarea-filled>.x-textarea-row>textarea:focus{border-color:var(--x-primary);background-color:var(--x-background)}.x-textarea-borderless>.x-textarea-row>textarea{border:none}.x-textarea-underlined>.x-textarea-row>textarea{background-color:transparent;border-width:0 0 var(--x-border-width);border-radius:0}.x-textarea-float-label{position:relative;display:flex!important;align-items:center!important;flex-direction:row!important}.x-textarea-float-label>label{position:absolute;pointer-events:none;transition:all var(--x-animation-duration-base) ease;line-height:1!important;height:initial!important;z-index:2}.x-textarea-float-label>label.x-textarea-label-required{display:flex;align-items:center;padding-left:var(--x-font-size-mini)}.x-textarea-float-label>label.x-textarea-label-required:before{position:absolute;left:0;top:.125rem}.x-textarea-float-label-over>label,.x-textarea-float-label-on>label,.x-textarea-float-label-in>label{top:.75rem}.x-textarea-float-label-over.x-textarea-focus>label,.x-textarea-float-label-over.x-textarea-has-value>label,.x-textarea-float-label-over.x-textarea-active>label,.x-textarea-float-label-over.x-textarea-float-fixed>label{top:calc(0% - (var(--x-font-size) + var(--x-padding-medium) * .5))}.x-textarea-float-label-on.x-textarea-focus>label,.x-textarea-float-label-on.x-textarea-has-value>label,.x-textarea-float-label-on.x-textarea-active>label,.x-textarea-float-label-on.x-textarea-float-fixed>label{font-size:var(--x-font-size-mini);background-color:var(--x-background);top:calc(0% - var(--x-font-size-small) * .5)}.x-textarea-float-label-in>label{height:calc(var(--x-font-size) + .875rem)!important;line-height:calc(var(--x-font-size) + .875rem)!important;width:calc(100% - var(--x-border-width) * 2);margin-left:0!important;padding-left:.75rem;background-color:var(--x-background);top:var(--x-border-width);left:var(--x-border-width);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius)}.x-textarea-float-label-in.x-textarea-focus>label,.x-textarea-float-label-in.x-textarea-has-value>label,.x-textarea-float-label-in.x-textarea-active>label,.x-textarea-float-label-in.x-textarea-float-fixed>label{font-size:var(--x-font-size-mini)}.x-textarea-float-label-in.x-textarea-focus .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-has-value .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-active .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-float-fixed .x-textarea-row>textarea{padding-top:calc(0% + var(--x-padding-medium) * .75 + 1rem)}.x-textarea{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
194
212
  }
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaComponent, decorators: [{
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextareaComponent, decorators: [{
196
214
  type: Component,
197
- args: [{ selector: `${XTextareaPrefix}`, imports: [NgClass, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XTextareaComponent)], template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder()\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left.rem]=\"paddingLeft()\"\r\n [style.padding-right.rem]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:16rem}.x-textarea{width:100%}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:500}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea>.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea>.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .5rem);padding:.5rem}.x-textarea>.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea>.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea>.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea>.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea>.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea>.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size)) * -2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.75rem;width:.75rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a300)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.75rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:2.15rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .75rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.75rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:2.15rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium)1.5rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}.x-textarea-filled>.x-textarea-row>textarea{border-color:transparent;background-color:var(--x-background-a200)}.x-textarea-filled>.x-textarea-row>textarea:hover{background-color:var(--x-background-a300)}.x-textarea-filled>.x-textarea-row>textarea:focus{border-color:var(--x-primary);background-color:var(--x-background)}.x-textarea-borderless>.x-textarea-row>textarea{border:none}.x-textarea-underlined>.x-textarea-row>textarea{background-color:transparent;border-width:0 0 var(--x-border-width);border-radius:0}.x-textarea{margin:0;padding:0}\n"] }]
215
+ args: [{ selector: `${XTextareaPrefix}`, imports: [NgClass, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XTextareaComponent)], template: "<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-active]=\"active()\"\r\n [class.x-textarea-focus]=\"focused()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [class.x-textarea-float-fixed]=\"floatFixed()\"\r\n [class.x-textarea-float-label]=\"!!floatLabel()\"\r\n [class.x-textarea-float-label-over]=\"floatLabel() === 'over'\"\r\n [class.x-textarea-float-label-in]=\"floatLabel() === 'in'\"\r\n [class.x-textarea-float-label-on]=\"floatLabel() === 'on'\"\r\n [class.x-textarea-has-value]=\"hasValue()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [style.margin-left]=\"!!floatLabel() ? paddingLeft() : null\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"!floatLabel() ? placeholder() : ''\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left]=\"paddingLeft()\"\r\n [style.padding-right]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-textarea{display:inline-block;width:16rem}.x-textarea{width:100%}.x-textarea.x-flex{display:flex}.x-textarea.x-justify-start{justify-content:flex-start}.x-textarea.x-justify-center{justify-content:center}.x-textarea.x-justify-end{justify-content:flex-end}.x-textarea.x-justify-space-between{justify-content:space-between}.x-textarea.x-justify-space-around{justify-content:space-around}.x-textarea.x-align-start{align-items:flex-start}.x-textarea.x-align-center{align-items:center}.x-textarea.x-align-end{align-items:flex-end}.x-textarea.x-direction-column{flex-direction:column}.x-textarea.x-direction-column-reverse{flex-direction:column-reverse}.x-textarea.x-direction-row{flex-direction:row}.x-textarea.x-direction-row-reverse{flex-direction:row-reverse}.x-textarea>label{display:inline-block;white-space:nowrap;position:relative;color:var(--x-text-300);font-weight:500;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem)}.x-textarea>label.x-text-align-start{text-align:start}.x-textarea>label.x-text-align-center{text-align:center}.x-textarea>label.x-text-align-end{text-align:end}.x-textarea-row{flex:1;display:flex;align-items:center;position:relative}.x-textarea-row>textarea{flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow);line-height:calc(var(--x-font-size) + .5rem);padding:.5rem}.x-textarea-row>textarea::-moz-placeholder{color:var(--x-text-700);opacity:1}.x-textarea-row>textarea:-ms-input-placeholder{color:var(--x-text-700)}.x-textarea-row>textarea::-webkit-input-placeholder{color:var(--x-text-700)}.x-textarea-row>textarea:hover{border-color:var(--x-primary-300)}.x-textarea-row>textarea:focus{border-color:var(--x-primary);outline:0}.x-textarea-row>textarea[disabled]{color:var(--x-text-500)}.x-textarea-row>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base)}.x-textarea-label-required:before{display:inline-block;margin-right:.25rem;color:var(--x-danger);line-height:1;font-size:var(--x-font-size-small);content:\"*\"}.x-textarea-error-message{position:absolute;bottom:0;left:0;font-size:var(--x-font-size)-.125rem;color:var(--x-danger);margin-bottom:calc((var(--x-font-size)) * -2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-textarea.x-invalid>label,.x-textarea.x-required>label{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row>x-icon,.x-textarea.x-required>.x-textarea-row>x-icon{color:var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error,.x-textarea.x-required>.x-textarea-row .x-border-error{position:absolute;height:.75rem;width:.75rem;z-index:10}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-left{border-top-left-radius:var(--x-border-radius);top:0;left:0;border-top:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-top-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-top-right{border-top-right-radius:var(--x-border-radius);top:0;right:0;border-top:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-left,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-left{border-bottom-left-radius:var(--x-border-radius);bottom:0;left:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-left:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-invalid>.x-textarea-row .x-border-error.x-bottom-right,.x-textarea.x-required>.x-textarea-row .x-border-error.x-bottom-right{border-bottom-right-radius:var(--x-border-radius);bottom:0;right:0;border-bottom:var(--x-border-width) solid var(--x-danger);border-right:var(--x-border-width) solid var(--x-danger)}.x-textarea.x-disabled>.x-textarea-row>x-icon{color:var(--x-text-400)}.x-textarea.x-disabled>.x-textarea-row>textarea{color:var(--x-text-400);cursor:not-allowed;border-color:var(--x-border-100);background-color:var(--x-background-a300)}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear{position:absolute;color:var(--x-text-400);font-size:var(--x-font-size-medium);padding:.75rem;top:0;right:0;left:inherit;opacity:0;cursor:pointer}.x-textarea.x-clearable>.x-textarea-row>.x-textarea-clear:hover{color:var(--x-text-300)}.x-textarea.x-clearable>.x-textarea-row>textarea:hover+.x-textarea-clear,.x-textarea.x-clearable>.x-textarea-row>textarea:focus+.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>.x-textarea-clear{opacity:1}.x-textarea.x-clearable.x-clear-show>.x-textarea-row>textarea{padding-right:2.15rem!important}.x-textarea-max-length{position:absolute;font-size:var(--x-font-size-small);color:var(--x-text-400);padding:0 .75rem;right:.25rem;bottom:.25rem}.x-textarea.x-direction-row>label{padding:0 .5rem 0 0}.x-textarea.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-textarea.x-direction-column,.x-textarea.x-direction-column-reverse{align-items:inherit}.x-textarea-icon>.x-textarea-row>x-icon{position:absolute;font-size:var(--x-font-size-medium);padding:.75rem}.x-textarea-icon-left>.x-textarea-row>textarea{padding-left:2.15rem}.x-textarea-icon-left>.x-textarea-row>x-icon{left:0;top:0}.x-textarea-icon-right>.x-textarea-row>textarea{padding-right:var(--x-font-size-medium)1.5rem}.x-textarea-icon-right>.x-textarea-row>x-icon{right:0;top:0}.x-textarea-icon-right>.x-textarea-row>.x-textarea-max-length{right:inherit;left:0;bottom:0}.x-textarea-filled>.x-textarea-row>textarea{border-color:transparent;background-color:var(--x-background-a200)}.x-textarea-filled>.x-textarea-row>textarea:hover{background-color:var(--x-background-a300)}.x-textarea-filled>.x-textarea-row>textarea:focus{border-color:var(--x-primary);background-color:var(--x-background)}.x-textarea-borderless>.x-textarea-row>textarea{border:none}.x-textarea-underlined>.x-textarea-row>textarea{background-color:transparent;border-width:0 0 var(--x-border-width);border-radius:0}.x-textarea-float-label{position:relative;display:flex!important;align-items:center!important;flex-direction:row!important}.x-textarea-float-label>label{position:absolute;pointer-events:none;transition:all var(--x-animation-duration-base) ease;line-height:1!important;height:initial!important;z-index:2}.x-textarea-float-label>label.x-textarea-label-required{display:flex;align-items:center;padding-left:var(--x-font-size-mini)}.x-textarea-float-label>label.x-textarea-label-required:before{position:absolute;left:0;top:.125rem}.x-textarea-float-label-over>label,.x-textarea-float-label-on>label,.x-textarea-float-label-in>label{top:.75rem}.x-textarea-float-label-over.x-textarea-focus>label,.x-textarea-float-label-over.x-textarea-has-value>label,.x-textarea-float-label-over.x-textarea-active>label,.x-textarea-float-label-over.x-textarea-float-fixed>label{top:calc(0% - (var(--x-font-size) + var(--x-padding-medium) * .5))}.x-textarea-float-label-on.x-textarea-focus>label,.x-textarea-float-label-on.x-textarea-has-value>label,.x-textarea-float-label-on.x-textarea-active>label,.x-textarea-float-label-on.x-textarea-float-fixed>label{font-size:var(--x-font-size-mini);background-color:var(--x-background);top:calc(0% - var(--x-font-size-small) * .5)}.x-textarea-float-label-in>label{height:calc(var(--x-font-size) + .875rem)!important;line-height:calc(var(--x-font-size) + .875rem)!important;width:calc(100% - var(--x-border-width) * 2);margin-left:0!important;padding-left:.75rem;background-color:var(--x-background);top:var(--x-border-width);left:var(--x-border-width);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius)}.x-textarea-float-label-in.x-textarea-focus>label,.x-textarea-float-label-in.x-textarea-has-value>label,.x-textarea-float-label-in.x-textarea-active>label,.x-textarea-float-label-in.x-textarea-float-fixed>label{font-size:var(--x-font-size-mini)}.x-textarea-float-label-in.x-textarea-focus .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-has-value .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-active .x-textarea-row>textarea,.x-textarea-float-label-in.x-textarea-float-fixed .x-textarea-row>textarea{padding-top:calc(0% + var(--x-padding-medium) * .75 + 1rem)}.x-textarea{margin:0;padding:0}\n"] }]
198
216
  }], propDecorators: { textareaRef: [{ type: i0.ViewChild, args: ['textareaRef', { isSignal: true }] }] } });
199
217
 
200
218
  class XTextareaModule {
201
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
202
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.5", ngImport: i0, type: XTextareaModule, imports: [XTextareaComponent], exports: [XTextareaComponent] }); }
203
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaModule, imports: [XTextareaComponent] }); }
219
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
220
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XTextareaModule, imports: [XTextareaComponent], exports: [XTextareaComponent] }); }
221
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextareaModule, imports: [XTextareaComponent] }); }
204
222
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XTextareaModule, decorators: [{
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTextareaModule, decorators: [{
206
224
  type: NgModule,
207
225
  args: [{
208
226
  exports: [XTextareaComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-textarea.mjs","sources":["../../../../lib/ng-nest/ui/textarea/textarea.property.ts","../../../../lib/ng-nest/ui/textarea/textarea.component.ts","../../../../lib/ng-nest/ui/textarea/textarea.component.html","../../../../lib/ng-nest/ui/textarea/textarea.module.ts","../../../../lib/ng-nest/ui/textarea/ng-nest-ui-textarea.ts"],"sourcesContent":["import { XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n XNumber,\r\n XBoolean,\r\n XPositionLeftRight,\r\n XDirection,\r\n XAlign,\r\n XJustify,\r\n XTemplate,\r\n XVariant\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Textarea\r\n * @selector x-textarea\r\n * @decorator component\r\n */\r\nexport const XTextareaPrefix = 'x-textarea';\r\nconst X_TEXTAREA_CONFIG_NAME = 'textarea';\r\n\r\n/**\r\n * Textarea Property\r\n */\r\n@Component({ selector: `${XTextareaPrefix}-property`, template: '' })\r\nexport class XTextareaProperty extends XFormControlFunction(X_TEXTAREA_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XTextareaVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n readonly clearable = input<boolean, XBoolean>(this.config?.clearable ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n readonly iconLayout = input<XTextareaIconLayoutType>('right');\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n readonly iconSpin = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n readonly maxlength = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n readonly height = input<string, XNumber>('6rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n readonly clearEmit = output<any>();\r\n}\r\n\r\n/**\r\n * Textarea Option\r\n */\r\nexport interface XTextareaOption extends XFormOption {\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XTextareaVariant;\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n clearable?: boolean;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n iconLayout?: XTextareaIconLayoutType;\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n iconSpin?: boolean;\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n maxlength?: number;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n clearEmit?: (value: any) => void;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 图标布局方式,指在输入框中的位置\r\n * @en_US Icon layout, refers to the position in the input box\r\n * @value \"left\" 靠左\r\n * @value \"right\" 靠右\r\n */\r\nexport type XTextareaIconLayoutType = XPositionLeftRight;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XTextareaVariant = XVariant;\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n inject,\r\n computed,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XTextareaPrefix, XTextareaProperty } from './textarea.property';\r\nimport { XIsEmpty, XConfigService, XIsFunction } from '@ng-nest/ui/core';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XTextareaPrefix}`,\r\n imports: [NgClass, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective],\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XTextareaComponent)]\r\n})\r\nexport class XTextareaComponent extends XTextareaProperty {\r\n textareaRef = viewChild.required<ElementRef<HTMLElement>>('textareaRef');\r\n\r\n valueLength = computed(() => {\r\n if (this.maxlength()) {\r\n return XIsEmpty(this.value()) ? 0 : `${this.value()}`.length;\r\n }\r\n return 0;\r\n });\r\n lengthTotal = computed(() => {\r\n if (this.maxlength()) {\r\n return `${this.valueLength()}/${this.maxlength()}`;\r\n }\r\n return '';\r\n });\r\n\r\n clearShow = computed(() => {\r\n if (this.clearable() && !this.disabledComputed()) {\r\n return !XIsEmpty(this.value());\r\n } else {\r\n return false;\r\n }\r\n });\r\n\r\n getIcon = computed(() => !XIsEmpty(this.icon()));\r\n getIconLayoutLeft = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'left');\r\n getIconLayoutRight = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'right');\r\n paddingLeft = computed(() => (this.getIconLayoutLeft() ? 2.15 : 0.75));\r\n paddingRight = computed(() => (this.getIconLayoutRight() ? 2.15 : 0.75));\r\n\r\n configService = inject(XConfigService);\r\n\r\n classMap = computed(() => ({\r\n [`${XTextareaPrefix}-${this.size()}`]: !!this.size(),\r\n [`x-justify-${this.justify()}`]: !!this.justify(),\r\n [`x-align-${this.align()}`]: !!this.align(),\r\n [`x-direction-${this.direction()}`]: !!this.direction()\r\n }));\r\n labelMapSignal = computed(() => ({\r\n [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n }));\r\n\r\n change(value: any) {\r\n if (this.onChange) this.onChange(value);\r\n if (this.validatorComputed() && XIsFunction(this.inputValidator())) {\r\n this.invalidInputValidator.set(!this.inputValidator()!(value));\r\n }\r\n }\r\n\r\n onClear() {\r\n const clearValue = this.value();\r\n this.value.set('');\r\n this.change(this.value());\r\n this.clearEmit.emit(clearValue);\r\n this.textareaRef().nativeElement.focus();\r\n }\r\n}\r\n","<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"placeholder()\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left.rem]=\"paddingLeft()\"\r\n [style.padding-right.rem]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTextareaComponent } from './textarea.component';\r\n\r\n@NgModule({\r\n exports: [XTextareaComponent],\r\n imports: [XTextareaComponent]\r\n})\r\nexport class XTextareaModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-textarea.mjs","sources":["../../../../lib/ng-nest/ui/textarea/textarea.property.ts","../../../../lib/ng-nest/ui/textarea/textarea.component.ts","../../../../lib/ng-nest/ui/textarea/textarea.component.html","../../../../lib/ng-nest/ui/textarea/textarea.module.ts","../../../../lib/ng-nest/ui/textarea/ng-nest-ui-textarea.ts"],"sourcesContent":["import { XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n XNumber,\r\n XBoolean,\r\n XPositionLeftRight,\r\n XDirection,\r\n XAlign,\r\n XJustify,\r\n XTemplate,\r\n XVariant,\r\n XFloatLabel\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Textarea\r\n * @selector x-textarea\r\n * @decorator component\r\n */\r\nexport const XTextareaPrefix = 'x-textarea';\r\nconst X_TEXTAREA_CONFIG_NAME = 'textarea';\r\n\r\n/**\r\n * Textarea Property\r\n */\r\n@Component({ selector: `${XTextareaPrefix}-property`, template: '' })\r\nexport class XTextareaProperty extends XFormControlFunction(X_TEXTAREA_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XTextareaVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n readonly clearable = input<boolean, XBoolean>(this.config?.clearable ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n readonly iconLayout = input<XTextareaIconLayoutType>('right');\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n readonly iconSpin = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n readonly maxlength = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n readonly height = input<string, XNumber>('6rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n readonly floatLabel = input<XTextareaFloatLabel | null>(this.config?.floatLabel ?? null);\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n readonly floatFixed = input<boolean, XBoolean>(this.config?.floatFixed ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n readonly clearEmit = output<any>();\r\n}\r\n\r\n/**\r\n * Textarea Option\r\n */\r\nexport interface XTextareaOption extends XFormOption {\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n floatLabel?: XTextareaFloatLabel;\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n floatFixed?: boolean;\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XTextareaVariant;\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n clearable?: boolean;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n iconLayout?: XTextareaIconLayoutType;\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n iconSpin?: boolean;\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n maxlength?: number;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n clearEmit?: (value: any) => void;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 图标布局方式,指在输入框中的位置\r\n * @en_US Icon layout, refers to the position in the input box\r\n * @value \"left\" 靠左\r\n * @value \"right\" 靠右\r\n */\r\nexport type XTextareaIconLayoutType = XPositionLeftRight;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XTextareaVariant = XVariant;\r\n\r\n/**\r\n * @zh_CN 浮动标签类型\r\n * @en_US Float label type\r\n */\r\nexport type XTextareaFloatLabel = XFloatLabel;\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n inject,\r\n computed,\r\n viewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { XTextareaPrefix, XTextareaProperty } from './textarea.property';\r\nimport { XIsEmpty, XConfigService, XIsFunction } from '@ng-nest/ui/core';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XTextareaPrefix}`,\r\n imports: [NgClass, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective],\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XTextareaComponent)]\r\n})\r\nexport class XTextareaComponent extends XTextareaProperty {\r\n textareaRef = viewChild.required<ElementRef<HTMLElement>>('textareaRef');\r\n focused = signal(false);\r\n\r\n valueLength = computed(() => {\r\n if (this.maxlength()) {\r\n return XIsEmpty(this.value()) ? 0 : `${this.value()}`.length;\r\n }\r\n return 0;\r\n });\r\n lengthTotal = computed(() => {\r\n if (this.maxlength()) {\r\n return `${this.valueLength()}/${this.maxlength()}`;\r\n }\r\n return '';\r\n });\r\n\r\n clearShow = computed(() => {\r\n if (this.clearable() && !this.disabledComputed()) {\r\n return !XIsEmpty(this.value());\r\n } else {\r\n return false;\r\n }\r\n });\r\n hasValue = computed(() => !XIsEmpty(this.value()));\r\n\r\n getIcon = computed(() => !XIsEmpty(this.icon()));\r\n getIconLayoutLeft = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'left');\r\n getIconLayoutRight = computed(() => !XIsEmpty(this.icon()) && this.iconLayout() === 'right');\r\n paddingLeft = computed(() => (this.getIconLayoutLeft() ? `2.15rem` : `0.75rem`));\r\n paddingRight = computed(() => (this.getIconLayoutRight() ? `2.15rem` : `0.75rem`));\r\n\r\n configService = inject(XConfigService);\r\n\r\n classMap = computed(() => ({\r\n [`${XTextareaPrefix}-${this.size()}`]: !!this.size(),\r\n [`x-justify-${this.justify()}`]: !!this.justify(),\r\n [`x-align-${this.align()}`]: !!this.align(),\r\n [`x-direction-${this.direction()}`]: !!this.direction()\r\n }));\r\n labelMapSignal = computed(() => ({\r\n [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n }));\r\n\r\n change(value: any) {\r\n if (this.onChange) this.onChange(value);\r\n if (this.validatorComputed() && XIsFunction(this.inputValidator())) {\r\n this.invalidInputValidator.set(!this.inputValidator()!(value));\r\n }\r\n }\r\n\r\n onClear() {\r\n const clearValue = this.value();\r\n this.value.set('');\r\n this.change(this.value());\r\n this.clearEmit.emit(clearValue);\r\n this.textareaRef().nativeElement.focus();\r\n }\r\n\r\n onFocus(_event: Event) {\r\n this.focused.set(true);\r\n }\r\n\r\n onBlur(_event: Event) {\r\n this.focused.set(false);\r\n }\r\n}\r\n","<div\r\n #textarea\r\n class=\"x-textarea\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-textarea-active]=\"active()\"\r\n [class.x-textarea-focus]=\"focused()\"\r\n [class.x-textarea-icon]=\"getIcon()\"\r\n [class.x-textarea-filled]=\"variant() === 'filled'\"\r\n [class.x-textarea-borderless]=\"variant() === 'borderless'\"\r\n [class.x-textarea-underlined]=\"variant() === 'underlined'\"\r\n [class.x-textarea-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-textarea-icon-right]=\"getIconLayoutRight()\"\r\n [class.x-textarea-float-fixed]=\"floatFixed()\"\r\n [class.x-textarea-float-label]=\"!!floatLabel()\"\r\n [class.x-textarea-float-label-over]=\"floatLabel() === 'over'\"\r\n [class.x-textarea-float-label-in]=\"floatLabel() === 'in'\"\r\n [class.x-textarea-float-label-on]=\"floatLabel() === 'on'\"\r\n [class.x-textarea-has-value]=\"hasValue()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-textarea-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [style.margin-left]=\"!!floatLabel() ? paddingLeft() : null\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-textarea-row\">\r\n <textarea\r\n #textareaRef\r\n [placeholder]=\"!floatLabel() ? placeholder() : ''\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [style.height]=\"height()\"\r\n [style.padding-left]=\"paddingLeft()\"\r\n [style.padding-right]=\"paddingRight()\"\r\n (keydown)=\"formControlValidator()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n ></textarea>\r\n @if (clearShow()) {\r\n <x-icon class=\"x-textarea-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft())) {\r\n <x-icon class=\"x-textarea-icon-in\" [type]=\"icon()\" [spin]=\"iconSpin()\"></x-icon>\r\n }\r\n @if (maxlength()) {\r\n <span class=\"x-textarea-max-length\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-textarea-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTextareaComponent } from './textarea.component';\r\n\r\n@NgModule({\r\n exports: [XTextareaComponent],\r\n imports: [XTextareaComponent]\r\n})\r\nexport class XTextareaModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -64,10 +64,10 @@ class XThemeProperty extends XFormControlFunction(X_THEME_CONFIG_NAME) {
64
64
  */
65
65
  this.defaultClick = output();
66
66
  }
67
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XThemeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
68
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XThemeProperty, isStandalone: true, selector: "x-theme-property", inputs: { prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, amounts: { classPropertyName: "amounts", publicName: "amounts", isSignal: true, isRequired: false, transformFunction: null }, showDark: { classPropertyName: "showDark", publicName: "showDark", isSignal: true, isRequired: false, transformFunction: null }, showDetail: { classPropertyName: "showDetail", publicName: "showDetail", isSignal: true, isRequired: false, transformFunction: null }, dark: { classPropertyName: "dark", publicName: "dark", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dark: "darkChange", defaultClick: "defaultClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
67
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XThemeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
68
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: XThemeProperty, isStandalone: true, selector: "x-theme-property", inputs: { prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, amounts: { classPropertyName: "amounts", publicName: "amounts", isSignal: true, isRequired: false, transformFunction: null }, showDark: { classPropertyName: "showDark", publicName: "showDark", isSignal: true, isRequired: false, transformFunction: null }, showDetail: { classPropertyName: "showDetail", publicName: "showDetail", isSignal: true, isRequired: false, transformFunction: null }, dark: { classPropertyName: "dark", publicName: "dark", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dark: "darkChange", defaultClick: "defaultClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
69
69
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XThemeProperty, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XThemeProperty, decorators: [{
71
71
  type: Component,
72
72
  args: [{ selector: `${XThemePrefix}-property`, template: '' }]
73
73
  }], propDecorators: { prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], amounts: [{ type: i0.Input, args: [{ isSignal: true, alias: "amounts", required: false }] }], showDark: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDark", required: false }] }], showDetail: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDetail", required: false }] }], dark: [{ type: i0.Input, args: [{ isSignal: true, alias: "dark", required: false }] }, { type: i0.Output, args: ["darkChange"] }], defaultClick: [{ type: i0.Output, args: ["defaultClick"] }] } });
@@ -219,10 +219,10 @@ class XThemeComponent extends XThemeProperty {
219
219
  }
220
220
  this.formGroup().patchValue(colors);
221
221
  }
222
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XThemeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
223
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XThemeComponent, isStandalone: true, selector: "x-theme", providers: [XValueAccessor(XThemeComponent)], usesInheritance: true, ngImport: i0, template: "<div class=\"x-theme\">\r\n <x-row>\r\n @if (showDark()) {\r\n <x-col [style.width.rem]=\"8\">\r\n <x-switch\r\n direction=\"row\"\r\n [label]=\"locale().darkMode!\"\r\n [(ngModel)]=\"dark\"\r\n (ngModelChange)=\"darkChanges()\"\r\n ></x-switch>\r\n </x-col>\r\n }\r\n <x-col [style.width.rem]=\"8\">\r\n <x-button (click)=\"default()\">{{ locale().initDefault }}</x-button>\r\n </x-col>\r\n </x-row>\r\n <x-form [formGroup]=\"formGroup()\" [controls]=\"controls()\" [width]=\"width()\" span=\"2\" space=\"1\"></x-form>\r\n</div>\r\n", styles: [".x-theme{margin:0;padding:0}.x-theme{display:inline-block}.x-theme x-color-picker:not(:first-child){margin-left:.125rem}.x-theme-darken,.x-theme-default,.x-theme-gradual{display:flex}.x-theme-default x-color-picker{width:9.25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: XSwitchComponent, selector: "x-switch" }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XRowComponent, selector: "x-row" }, { kind: "component", type: XColComponent, selector: "x-col" }, { kind: "component", type: XFormComponent, selector: "x-form" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
222
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XThemeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
223
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XThemeComponent, isStandalone: true, selector: "x-theme", providers: [XValueAccessor(XThemeComponent)], usesInheritance: true, ngImport: i0, template: "<div class=\"x-theme\">\r\n <x-row>\r\n @if (showDark()) {\r\n <x-col [style.width.rem]=\"8\">\r\n <x-switch\r\n direction=\"row\"\r\n [label]=\"locale().darkMode!\"\r\n [(ngModel)]=\"dark\"\r\n (ngModelChange)=\"darkChanges()\"\r\n ></x-switch>\r\n </x-col>\r\n }\r\n <x-col [style.width.rem]=\"8\">\r\n <x-button (click)=\"default()\">{{ locale().initDefault }}</x-button>\r\n </x-col>\r\n </x-row>\r\n <x-form [formGroup]=\"formGroup()\" [controls]=\"controls()\" [width]=\"width()\" span=\"2\" space=\"1\"></x-form>\r\n</div>\r\n", styles: [".x-theme{margin:0;padding:0}.x-theme{display:inline-block}.x-theme x-color-picker:not(:first-child){margin-left:.125rem}.x-theme-darken,.x-theme-default,.x-theme-gradual{display:flex}.x-theme-default x-color-picker{width:9.25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: XSwitchComponent, selector: "x-switch" }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XRowComponent, selector: "x-row" }, { kind: "component", type: XColComponent, selector: "x-col" }, { kind: "component", type: XFormComponent, selector: "x-form" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
224
224
  }
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XThemeComponent, decorators: [{
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XThemeComponent, decorators: [{
226
226
  type: Component,
227
227
  args: [{ selector: 'x-theme', imports: [
228
228
  FormsModule,
@@ -236,11 +236,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImpor
236
236
  }], ctorParameters: () => [] });
237
237
 
238
238
  class XThemeModule {
239
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XThemeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
240
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.5", ngImport: i0, type: XThemeModule, imports: [XThemeComponent], exports: [XThemeComponent] }); }
241
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XThemeModule, imports: [XThemeComponent] }); }
239
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XThemeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
240
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XThemeModule, imports: [XThemeComponent], exports: [XThemeComponent] }); }
241
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XThemeModule, imports: [XThemeComponent] }); }
242
242
  }
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XThemeModule, decorators: [{
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XThemeModule, decorators: [{
244
244
  type: NgModule,
245
245
  args: [{
246
246
  exports: [XThemeComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-theme.mjs","sources":["../../../../lib/ng-nest/ui/theme/theme.property.ts","../../../../lib/ng-nest/ui/theme/theme.component.ts","../../../../lib/ng-nest/ui/theme/theme.component.html","../../../../lib/ng-nest/ui/theme/theme.module.ts","../../../../lib/ng-nest/ui/theme/ng-nest-ui-theme.ts"],"sourcesContent":["import { XColorsTheme, XBoolean, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input, model, output } from '@angular/core';\r\nimport { XFormControlFunction } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * Theme\r\n * @selector x-theme\r\n * @decorator component\r\n */\r\nexport const XThemePrefix = 'x-theme';\r\nconst X_THEME_CONFIG_NAME = 'theme';\r\n\r\n/**\r\n * @zh_CN 混合的颜色占比\r\n * @en_US Proportion of mixed colors\r\n */\r\nexport const XThemeAmounts = [\r\n -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9\r\n];\r\n\r\n/**\r\n * Theme Property\r\n */\r\n@Component({ selector: `${XThemePrefix}-property`, template: '' })\r\nexport class XThemeProperty extends XFormControlFunction(X_THEME_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 参数前缀\r\n * @en_US Parameter prefix\r\n */\r\n readonly prefix = input<string>('--x-');\r\n /**\r\n * @zh_CN 混合的颜色占比\r\n * @en_US Proportion of mixed colors\r\n */\r\n readonly amounts = input<number[]>(this.config?.amounts ?? XThemeAmounts);\r\n /**\r\n * @zh_CN 显示暗黑模式的设置\r\n * @en_US Show dark mode settings\r\n */\r\n readonly showDark = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 详细设置\r\n * @en_US Detailed settings\r\n */\r\n readonly showDetail = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 暗黑模式\r\n * @en_US Dark mode\r\n */\r\n readonly dark = model(false);\r\n /**\r\n * @zh_CN 初始化默认值事件\r\n * @en_US Initialize default value event\r\n */\r\n readonly defaultClick = output<XColorsTheme>();\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n inject,\r\n AfterViewInit,\r\n signal,\r\n effect\r\n} from '@angular/core';\r\nimport { XThemeProperty } from './theme.property';\r\nimport {\r\n XConfigService,\r\n XColorsTheme,\r\n XTheme,\r\n X_THEME_COLOR_KEYS,\r\n X_THEME_COLORS,\r\n X_THEME_DARK_COLORS\r\n} from '@ng-nest/ui/core';\r\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { XControl, XFormComponent } from '@ng-nest/ui/form';\r\nimport { debounceTime, takeUntil, map } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { XI18nService, XI18nTheme, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XColComponent, XRowComponent } from '@ng-nest/ui/layout';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'x-theme',\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XSwitchComponent,\r\n XButtonComponent,\r\n XRowComponent,\r\n XColComponent,\r\n XFormComponent\r\n ],\r\n templateUrl: './theme.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XThemeComponent)]\r\n})\r\nexport class XThemeComponent extends XThemeProperty implements OnInit, AfterViewInit, OnDestroy {\r\n public i18n = inject(XI18nService);\r\n configService = inject(XConfigService);\r\n themeService = this.configService.themeService;\r\n\r\n formGroup = signal(new UntypedFormGroup({}));\r\n theme = signal<XTheme>({ colors: {} });\r\n width = signal('45rem');\r\n beforeColors = signal<XColorsTheme>({});\r\n currentColors = signal<XColorsTheme>({});\r\n darkBeforeColors = signal<XColorsTheme>({});\r\n controls = signal<XControl[]>([\r\n { control: 'color-picker', id: 'primary', label: '主色', span: 5 },\r\n { control: 'color-picker', id: 'success', label: '成功', span: 5 },\r\n { control: 'color-picker', id: 'warning', label: '警告', span: 5 },\r\n { control: 'color-picker', id: 'danger', label: '危险', span: 5 },\r\n { control: 'color-picker', id: 'info', label: '信息', span: 5 },\r\n { control: 'color-picker', id: 'background', label: '背景', span: 5 },\r\n { control: 'color-picker', id: 'border', label: '边框', span: 5 },\r\n { control: 'color-picker', id: 'text', label: '文字', span: 5 }\r\n ]);\r\n\r\n override value = signal<XColorsTheme>({});\r\n\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.theme as XI18nTheme)), { initialValue: zh_CN.theme });\r\n\r\n private unSubject = new Subject<void>();\r\n\r\n override writeValue(value: XColorsTheme) {\r\n this.value.set(value);\r\n if (this.value() && Object.keys(this.value()).length > 0) {\r\n this.theme.set({\r\n colors: this.themeService.getDefineColors(\r\n Object.assign({}, X_THEME_COLORS, this.value()),\r\n '',\r\n this.dark() as boolean\r\n )\r\n });\r\n this.formGroup().patchValue(this.theme().colors as XColorsTheme);\r\n }\r\n }\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.setControlsLabel());\r\n effect(() => {\r\n if (this.dark()) {\r\n this.themeService.changed.next('dark');\r\n } else {\r\n this.themeService.changed.next('light');\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.theme.set(this.configService.getTheme(true));\r\n this.setControls();\r\n this.setDefaultColors();\r\n this.controls.update((controls) => {\r\n controls.map((x: XControl) => {\r\n x.value = (this.theme().colors as XColorsTheme)[x.id];\r\n });\r\n return [...controls];\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.formGroup()\r\n .valueChanges.pipe(debounceTime(100), takeUntil(this.unSubject))\r\n .subscribe((x: XColorsTheme) => {\r\n this.beforeColors.set(this.currentColors());\r\n let changes = this.getChanges(x);\r\n if (this.isOneAndInColorKeys(changes)) {\r\n let [key, value] = Object.entries(changes)[0];\r\n let colors = !this.dark()\r\n ? this.themeService.setColorRoot(key, value, '')\r\n : this.themeService.setDarkColorRoot(key, value, '');\r\n Object.assign(x, colors);\r\n this.currentColors.set(x);\r\n this.formGroup().patchValue(x);\r\n } else {\r\n this.currentColors.set(x);\r\n this.value.set(x);\r\n this.configService.setTheme({ colors: x });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setControlsLabel() {\r\n Object.keys(this.locale()).forEach((x) => {\r\n let control = this.controls().find((y) => y.id === x);\r\n if (control) {\r\n control.label = (this.locale() as any)[x];\r\n control.change && control.change();\r\n }\r\n });\r\n }\r\n\r\n setDefaultColors() {\r\n this.beforeColors.set(this.theme().colors as XColorsTheme);\r\n this.currentColors.set(this.beforeColors());\r\n this.darkBeforeColors = this.beforeColors;\r\n }\r\n\r\n setControls() {\r\n [...this.controls()].forEach((control, index) => {\r\n let addControls: XControl[] = [];\r\n control.span = !this.showDetail() ? 6 : 5;\r\n this.width.set(!this.showDetail() ? '36rem' : '45rem');\r\n for (let amount of this.amounts()) {\r\n addControls.push({\r\n control: 'color-picker',\r\n id: `${control.id}${this.themeService.getSuffix(amount)}`,\r\n label: '',\r\n hidden: !this.showDetail\r\n });\r\n }\r\n this.controls.update((x) => {\r\n x.splice(index * this.amounts().length + index + 1, 0, ...addControls);\r\n return [...x];\r\n });\r\n });\r\n }\r\n\r\n default() {\r\n this.dark.set(false);\r\n let colors = this.themeService.getDefineColors(Object.assign({}, X_THEME_COLORS), '', this.dark());\r\n this.beforeColors.set(colors);\r\n this.currentColors.set(colors);\r\n this.formGroup().patchValue(colors);\r\n this.defaultClick.emit(colors);\r\n }\r\n\r\n isOneAndInColorKeys(colors: XColorsTheme) {\r\n const keys = Object.keys(colors);\r\n if (keys.length === 1 && X_THEME_COLOR_KEYS.includes(keys[0])) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n getChanges(colors: XColorsTheme) {\r\n let result: XColorsTheme = {};\r\n for (let color in colors) {\r\n if (colors[color] !== this.beforeColors()[color]) {\r\n result[color] = colors[color];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n darkChanges() {\r\n let colors = this.darkBeforeColors();\r\n if (this.dark()) {\r\n this.beforeColors.set(this.formGroup().value);\r\n this.darkBeforeColors.set(this.formGroup().value);\r\n colors = this.themeService.getDefineColors(\r\n Object.assign({}, this.themeService.getColorsInProperty(X_THEME_COLORS), X_THEME_DARK_COLORS),\r\n '',\r\n this.dark()\r\n );\r\n }\r\n this.formGroup().patchValue(colors);\r\n }\r\n}\r\n","<div class=\"x-theme\">\r\n <x-row>\r\n @if (showDark()) {\r\n <x-col [style.width.rem]=\"8\">\r\n <x-switch\r\n direction=\"row\"\r\n [label]=\"locale().darkMode!\"\r\n [(ngModel)]=\"dark\"\r\n (ngModelChange)=\"darkChanges()\"\r\n ></x-switch>\r\n </x-col>\r\n }\r\n <x-col [style.width.rem]=\"8\">\r\n <x-button (click)=\"default()\">{{ locale().initDefault }}</x-button>\r\n </x-col>\r\n </x-row>\r\n <x-form [formGroup]=\"formGroup()\" [controls]=\"controls()\" [width]=\"width()\" span=\"2\" space=\"1\"></x-form>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XThemeComponent } from './theme.component';\r\n\r\n@NgModule({\r\n exports: [XThemeComponent],\r\n imports: [XThemeComponent]\r\n})\r\nexport class XThemeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA;;;;AAIG;AACI,MAAM,YAAY,GAAG;AAC5B,MAAM,mBAAmB,GAAG,OAAO;AAEnC;;;AAGG;AACI,MAAM,aAAa,GAAG;AAC3B,IAAA,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;;AAGhG;;AAEG;MAEU,cAAe,SAAQ,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;AAD7E,IAAA,WAAA,GAAA;;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,MAAM,kDAAC;AACvC;;;AAGG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzE;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoB,KAAK,4CAAI,SAAS,EAAE,UAAU,EAAA,CAAA,GAAA,CAAvB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAC;AAC9E;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAoB,KAAK,8CAAI,SAAS,EAAE,UAAU,EAAA,CAAA,GAAA,CAAvB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAC;AAChF;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;AAC5B;;;AAGG;QACM,IAAA,CAAA,YAAY,GAAG,MAAM,EAAgB;AAC/C,IAAA;iIA/BY,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,oyBADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAClD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAA,EAAG,YAAY,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACyB3D,MAAO,eAAgB,SAAQ,cAAc,CAAA;AA4BxC,IAAA,UAAU,CAAC,KAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACb,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,CACvC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAC/C,EAAE,EACF,IAAI,CAAC,IAAI,EAAa;AAEzB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAsB,CAAC;QAClE;IACF;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AA1CF,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;QAE9C,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC5C,IAAA,CAAA,KAAK,GAAG,MAAM,CAAS,EAAE,MAAM,EAAE,EAAE,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACtC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,OAAO,iDAAC;AACvB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAe,EAAE,wDAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAe,EAAE,yDAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAe,EAAE,4DAAC;QAC3C,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAa;AAC5B,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AAChE,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AAChE,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AAChE,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AAC/D,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AAC7D,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AACnE,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AAC/D,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5D,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEO,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAe,EAAE,iDAAC;AAEzC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAmB,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;AAExG,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;QAkBrC,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACxC;iBAAO;gBACL,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YACzC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAI;AAChC,YAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAW,KAAI;AAC3B,gBAAA,CAAC,CAAC,KAAK,GAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,CAAC,GAAG,QAAQ,CAAC;AACtB,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,SAAS;AACX,aAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9D,aAAA,SAAS,CAAC,CAAC,CAAe,KAAI;YAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAChC,YAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;AACrC,gBAAA,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAA,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI;AACrB,sBAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;AAC/C,sBAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;AACtD,gBAAA,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;AACxB,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAChC;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC5C;AACF,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3B;IAEA,gBAAgB,GAAA;AACd,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACvC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACrD,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,KAAK,GAAI,IAAI,CAAC,MAAM,EAAU,CAAC,CAAC,CAAC;AACzC,gBAAA,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;YACpC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAsB,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY;IAC3C;IAEA,WAAW,GAAA;AACT,QAAA,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;YAC9C,IAAI,WAAW,GAAe,EAAE;AAChC,YAAA,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC;YACtD,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBACjC,WAAW,CAAC,IAAI,CAAC;AACf,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,EAAE,EAAE,CAAA,EAAG,OAAO,CAAC,EAAE,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE;AACzD,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,MAAM,EAAE,CAAC,IAAI,CAAC;AACf,iBAAA,CAAC;YACJ;YACA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;gBACzB,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC;AACtE,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACpB,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAClG,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC;AAEA,IAAA,mBAAmB,CAAC,MAAoB,EAAA;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7D,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,UAAU,CAAC,MAAoB,EAAA;QAC7B,IAAI,MAAM,GAAiB,EAAE;AAC7B,QAAA,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE;gBAChD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YAC/B;QACF;AACA,QAAA,OAAO,MAAM;IACf;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACpC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;AAC7C,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;AACjD,YAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CACxC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,EAC7F,EAAE,EACF,IAAI,CAAC,IAAI,EAAE,CACZ;QACH;QACA,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;IACrC;iIAxKW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAFf,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9C9C,umBAkBA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDgBI,WAAW,0fACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,qDAChB,aAAa,EAAA,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,aAAa,EAAA,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQL,eAAe,EAAA,UAAA,EAAA,CAAA;kBAjB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,OAAA,EACV;wBACP,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb;qBACD,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,cAAc,CAAA,eAAA,CAAiB,CAAC,EAAA,QAAA,EAAA,umBAAA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA;;;MEvCjC,YAAY,CAAA;iIAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAZ,YAAY,EAAA,OAAA,EAAA,CAFb,eAAe,CAAA,EAAA,OAAA,EAAA,CADf,eAAe,CAAA,EAAA,CAAA,CAAA;AAGd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAFb,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAEd,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe;AAC1B,iBAAA;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-nest-ui-theme.mjs","sources":["../../../../lib/ng-nest/ui/theme/theme.property.ts","../../../../lib/ng-nest/ui/theme/theme.component.ts","../../../../lib/ng-nest/ui/theme/theme.component.html","../../../../lib/ng-nest/ui/theme/theme.module.ts","../../../../lib/ng-nest/ui/theme/ng-nest-ui-theme.ts"],"sourcesContent":["import { XColorsTheme, XBoolean, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input, model, output } from '@angular/core';\r\nimport { XFormControlFunction } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * Theme\r\n * @selector x-theme\r\n * @decorator component\r\n */\r\nexport const XThemePrefix = 'x-theme';\r\nconst X_THEME_CONFIG_NAME = 'theme';\r\n\r\n/**\r\n * @zh_CN 混合的颜色占比\r\n * @en_US Proportion of mixed colors\r\n */\r\nexport const XThemeAmounts = [\r\n -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9\r\n];\r\n\r\n/**\r\n * Theme Property\r\n */\r\n@Component({ selector: `${XThemePrefix}-property`, template: '' })\r\nexport class XThemeProperty extends XFormControlFunction(X_THEME_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 参数前缀\r\n * @en_US Parameter prefix\r\n */\r\n readonly prefix = input<string>('--x-');\r\n /**\r\n * @zh_CN 混合的颜色占比\r\n * @en_US Proportion of mixed colors\r\n */\r\n readonly amounts = input<number[]>(this.config?.amounts ?? XThemeAmounts);\r\n /**\r\n * @zh_CN 显示暗黑模式的设置\r\n * @en_US Show dark mode settings\r\n */\r\n readonly showDark = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 详细设置\r\n * @en_US Detailed settings\r\n */\r\n readonly showDetail = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 暗黑模式\r\n * @en_US Dark mode\r\n */\r\n readonly dark = model(false);\r\n /**\r\n * @zh_CN 初始化默认值事件\r\n * @en_US Initialize default value event\r\n */\r\n readonly defaultClick = output<XColorsTheme>();\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n inject,\r\n AfterViewInit,\r\n signal,\r\n effect\r\n} from '@angular/core';\r\nimport { XThemeProperty } from './theme.property';\r\nimport {\r\n XConfigService,\r\n XColorsTheme,\r\n XTheme,\r\n X_THEME_COLOR_KEYS,\r\n X_THEME_COLORS,\r\n X_THEME_DARK_COLORS\r\n} from '@ng-nest/ui/core';\r\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { XControl, XFormComponent } from '@ng-nest/ui/form';\r\nimport { debounceTime, takeUntil, map } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { XI18nService, XI18nTheme, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XColComponent, XRowComponent } from '@ng-nest/ui/layout';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'x-theme',\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XSwitchComponent,\r\n XButtonComponent,\r\n XRowComponent,\r\n XColComponent,\r\n XFormComponent\r\n ],\r\n templateUrl: './theme.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XThemeComponent)]\r\n})\r\nexport class XThemeComponent extends XThemeProperty implements OnInit, AfterViewInit, OnDestroy {\r\n public i18n = inject(XI18nService);\r\n configService = inject(XConfigService);\r\n themeService = this.configService.themeService;\r\n\r\n formGroup = signal(new UntypedFormGroup({}));\r\n theme = signal<XTheme>({ colors: {} });\r\n width = signal('45rem');\r\n beforeColors = signal<XColorsTheme>({});\r\n currentColors = signal<XColorsTheme>({});\r\n darkBeforeColors = signal<XColorsTheme>({});\r\n controls = signal<XControl[]>([\r\n { control: 'color-picker', id: 'primary', label: '主色', span: 5 },\r\n { control: 'color-picker', id: 'success', label: '成功', span: 5 },\r\n { control: 'color-picker', id: 'warning', label: '警告', span: 5 },\r\n { control: 'color-picker', id: 'danger', label: '危险', span: 5 },\r\n { control: 'color-picker', id: 'info', label: '信息', span: 5 },\r\n { control: 'color-picker', id: 'background', label: '背景', span: 5 },\r\n { control: 'color-picker', id: 'border', label: '边框', span: 5 },\r\n { control: 'color-picker', id: 'text', label: '文字', span: 5 }\r\n ]);\r\n\r\n override value = signal<XColorsTheme>({});\r\n\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.theme as XI18nTheme)), { initialValue: zh_CN.theme });\r\n\r\n private unSubject = new Subject<void>();\r\n\r\n override writeValue(value: XColorsTheme) {\r\n this.value.set(value);\r\n if (this.value() && Object.keys(this.value()).length > 0) {\r\n this.theme.set({\r\n colors: this.themeService.getDefineColors(\r\n Object.assign({}, X_THEME_COLORS, this.value()),\r\n '',\r\n this.dark() as boolean\r\n )\r\n });\r\n this.formGroup().patchValue(this.theme().colors as XColorsTheme);\r\n }\r\n }\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.setControlsLabel());\r\n effect(() => {\r\n if (this.dark()) {\r\n this.themeService.changed.next('dark');\r\n } else {\r\n this.themeService.changed.next('light');\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.theme.set(this.configService.getTheme(true));\r\n this.setControls();\r\n this.setDefaultColors();\r\n this.controls.update((controls) => {\r\n controls.map((x: XControl) => {\r\n x.value = (this.theme().colors as XColorsTheme)[x.id];\r\n });\r\n return [...controls];\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.formGroup()\r\n .valueChanges.pipe(debounceTime(100), takeUntil(this.unSubject))\r\n .subscribe((x: XColorsTheme) => {\r\n this.beforeColors.set(this.currentColors());\r\n let changes = this.getChanges(x);\r\n if (this.isOneAndInColorKeys(changes)) {\r\n let [key, value] = Object.entries(changes)[0];\r\n let colors = !this.dark()\r\n ? this.themeService.setColorRoot(key, value, '')\r\n : this.themeService.setDarkColorRoot(key, value, '');\r\n Object.assign(x, colors);\r\n this.currentColors.set(x);\r\n this.formGroup().patchValue(x);\r\n } else {\r\n this.currentColors.set(x);\r\n this.value.set(x);\r\n this.configService.setTheme({ colors: x });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setControlsLabel() {\r\n Object.keys(this.locale()).forEach((x) => {\r\n let control = this.controls().find((y) => y.id === x);\r\n if (control) {\r\n control.label = (this.locale() as any)[x];\r\n control.change && control.change();\r\n }\r\n });\r\n }\r\n\r\n setDefaultColors() {\r\n this.beforeColors.set(this.theme().colors as XColorsTheme);\r\n this.currentColors.set(this.beforeColors());\r\n this.darkBeforeColors = this.beforeColors;\r\n }\r\n\r\n setControls() {\r\n [...this.controls()].forEach((control, index) => {\r\n let addControls: XControl[] = [];\r\n control.span = !this.showDetail() ? 6 : 5;\r\n this.width.set(!this.showDetail() ? '36rem' : '45rem');\r\n for (let amount of this.amounts()) {\r\n addControls.push({\r\n control: 'color-picker',\r\n id: `${control.id}${this.themeService.getSuffix(amount)}`,\r\n label: '',\r\n hidden: !this.showDetail\r\n });\r\n }\r\n this.controls.update((x) => {\r\n x.splice(index * this.amounts().length + index + 1, 0, ...addControls);\r\n return [...x];\r\n });\r\n });\r\n }\r\n\r\n default() {\r\n this.dark.set(false);\r\n let colors = this.themeService.getDefineColors(Object.assign({}, X_THEME_COLORS), '', this.dark());\r\n this.beforeColors.set(colors);\r\n this.currentColors.set(colors);\r\n this.formGroup().patchValue(colors);\r\n this.defaultClick.emit(colors);\r\n }\r\n\r\n isOneAndInColorKeys(colors: XColorsTheme) {\r\n const keys = Object.keys(colors);\r\n if (keys.length === 1 && X_THEME_COLOR_KEYS.includes(keys[0])) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n getChanges(colors: XColorsTheme) {\r\n let result: XColorsTheme = {};\r\n for (let color in colors) {\r\n if (colors[color] !== this.beforeColors()[color]) {\r\n result[color] = colors[color];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n darkChanges() {\r\n let colors = this.darkBeforeColors();\r\n if (this.dark()) {\r\n this.beforeColors.set(this.formGroup().value);\r\n this.darkBeforeColors.set(this.formGroup().value);\r\n colors = this.themeService.getDefineColors(\r\n Object.assign({}, this.themeService.getColorsInProperty(X_THEME_COLORS), X_THEME_DARK_COLORS),\r\n '',\r\n this.dark()\r\n );\r\n }\r\n this.formGroup().patchValue(colors);\r\n }\r\n}\r\n","<div class=\"x-theme\">\r\n <x-row>\r\n @if (showDark()) {\r\n <x-col [style.width.rem]=\"8\">\r\n <x-switch\r\n direction=\"row\"\r\n [label]=\"locale().darkMode!\"\r\n [(ngModel)]=\"dark\"\r\n (ngModelChange)=\"darkChanges()\"\r\n ></x-switch>\r\n </x-col>\r\n }\r\n <x-col [style.width.rem]=\"8\">\r\n <x-button (click)=\"default()\">{{ locale().initDefault }}</x-button>\r\n </x-col>\r\n </x-row>\r\n <x-form [formGroup]=\"formGroup()\" [controls]=\"controls()\" [width]=\"width()\" span=\"2\" space=\"1\"></x-form>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XThemeComponent } from './theme.component';\r\n\r\n@NgModule({\r\n exports: [XThemeComponent],\r\n imports: [XThemeComponent]\r\n})\r\nexport class XThemeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}