@qualcomm-ui/angular-core 1.5.0 → 2.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 (217) hide show
  1. package/fesm2022/qualcomm-ui-angular-core-accordion.mjs +44 -50
  2. package/fesm2022/qualcomm-ui-angular-core-accordion.mjs.map +1 -1
  3. package/fesm2022/qualcomm-ui-angular-core-avatar.mjs +24 -24
  4. package/fesm2022/qualcomm-ui-angular-core-avatar.mjs.map +1 -1
  5. package/fesm2022/qualcomm-ui-angular-core-checkbox.mjs +56 -66
  6. package/fesm2022/qualcomm-ui-angular-core-checkbox.mjs.map +1 -1
  7. package/fesm2022/qualcomm-ui-angular-core-collapsible.mjs +22 -24
  8. package/fesm2022/qualcomm-ui-angular-core-collapsible.mjs.map +1 -1
  9. package/fesm2022/qualcomm-ui-angular-core-collection.mjs +3 -3
  10. package/fesm2022/qualcomm-ui-angular-core-collection.mjs.map +1 -1
  11. package/fesm2022/qualcomm-ui-angular-core-combobox.mjs +116 -152
  12. package/fesm2022/qualcomm-ui-angular-core-combobox.mjs.map +1 -1
  13. package/fesm2022/qualcomm-ui-angular-core-dialog.mjs +64 -78
  14. package/fesm2022/qualcomm-ui-angular-core-dialog.mjs.map +1 -1
  15. package/fesm2022/qualcomm-ui-angular-core-dom.mjs +15 -15
  16. package/fesm2022/qualcomm-ui-angular-core-dom.mjs.map +1 -1
  17. package/fesm2022/qualcomm-ui-angular-core-events.mjs +4 -4
  18. package/fesm2022/qualcomm-ui-angular-core-events.mjs.map +1 -1
  19. package/fesm2022/qualcomm-ui-angular-core-highlight.mjs +9 -15
  20. package/fesm2022/qualcomm-ui-angular-core-highlight.mjs.map +1 -1
  21. package/fesm2022/qualcomm-ui-angular-core-inline-notification.mjs +32 -32
  22. package/fesm2022/qualcomm-ui-angular-core-inline-notification.mjs.map +1 -1
  23. package/fesm2022/qualcomm-ui-angular-core-input.mjs +35 -51
  24. package/fesm2022/qualcomm-ui-angular-core-input.mjs.map +1 -1
  25. package/fesm2022/qualcomm-ui-angular-core-locale.mjs +3 -3
  26. package/fesm2022/qualcomm-ui-angular-core-locale.mjs.map +1 -1
  27. package/fesm2022/qualcomm-ui-angular-core-lorem-ipsum.mjs +11 -23
  28. package/fesm2022/qualcomm-ui-angular-core-lorem-ipsum.mjs.map +1 -1
  29. package/fesm2022/qualcomm-ui-angular-core-machine.mjs +20 -20
  30. package/fesm2022/qualcomm-ui-angular-core-machine.mjs.map +1 -1
  31. package/fesm2022/qualcomm-ui-angular-core-menu.mjs +111 -127
  32. package/fesm2022/qualcomm-ui-angular-core-menu.mjs.map +1 -1
  33. package/fesm2022/qualcomm-ui-angular-core-number-input.mjs +80 -106
  34. package/fesm2022/qualcomm-ui-angular-core-number-input.mjs.map +1 -1
  35. package/fesm2022/qualcomm-ui-angular-core-observers.mjs +3 -3
  36. package/fesm2022/qualcomm-ui-angular-core-observers.mjs.map +1 -1
  37. package/fesm2022/qualcomm-ui-angular-core-pagination.mjs +46 -60
  38. package/fesm2022/qualcomm-ui-angular-core-pagination.mjs.map +1 -1
  39. package/fesm2022/qualcomm-ui-angular-core-password-input.mjs +46 -50
  40. package/fesm2022/qualcomm-ui-angular-core-password-input.mjs.map +1 -1
  41. package/fesm2022/qualcomm-ui-angular-core-popover.mjs +62 -66
  42. package/fesm2022/qualcomm-ui-angular-core-popover.mjs.map +1 -1
  43. package/fesm2022/qualcomm-ui-angular-core-portal.mjs +18 -22
  44. package/fesm2022/qualcomm-ui-angular-core-portal.mjs.map +1 -1
  45. package/fesm2022/qualcomm-ui-angular-core-presence.mjs +18 -24
  46. package/fesm2022/qualcomm-ui-angular-core-presence.mjs.map +1 -1
  47. package/fesm2022/qualcomm-ui-angular-core-progress-ring.mjs +31 -30
  48. package/fesm2022/qualcomm-ui-angular-core-progress-ring.mjs.map +1 -1
  49. package/fesm2022/qualcomm-ui-angular-core-progress.mjs +47 -52
  50. package/fesm2022/qualcomm-ui-angular-core-progress.mjs.map +1 -1
  51. package/fesm2022/qualcomm-ui-angular-core-radio.mjs +72 -80
  52. package/fesm2022/qualcomm-ui-angular-core-radio.mjs.map +1 -1
  53. package/fesm2022/qualcomm-ui-angular-core-segmented-control.mjs +32 -38
  54. package/fesm2022/qualcomm-ui-angular-core-segmented-control.mjs.map +1 -1
  55. package/fesm2022/qualcomm-ui-angular-core-select.mjs +88 -102
  56. package/fesm2022/qualcomm-ui-angular-core-select.mjs.map +1 -1
  57. package/fesm2022/qualcomm-ui-angular-core-side-nav.mjs +44 -58
  58. package/fesm2022/qualcomm-ui-angular-core-side-nav.mjs.map +1 -1
  59. package/fesm2022/qualcomm-ui-angular-core-signals.mjs +2 -2
  60. package/fesm2022/qualcomm-ui-angular-core-signals.mjs.map +1 -1
  61. package/fesm2022/qualcomm-ui-angular-core-slider.mjs +98 -102
  62. package/fesm2022/qualcomm-ui-angular-core-slider.mjs.map +1 -1
  63. package/fesm2022/qualcomm-ui-angular-core-state.mjs +5 -5
  64. package/fesm2022/qualcomm-ui-angular-core-state.mjs.map +1 -1
  65. package/fesm2022/qualcomm-ui-angular-core-switch.mjs +38 -40
  66. package/fesm2022/qualcomm-ui-angular-core-switch.mjs.map +1 -1
  67. package/fesm2022/qualcomm-ui-angular-core-tabs.mjs +51 -65
  68. package/fesm2022/qualcomm-ui-angular-core-tabs.mjs.map +1 -1
  69. package/fesm2022/qualcomm-ui-angular-core-text-area.mjs +34 -34
  70. package/fesm2022/qualcomm-ui-angular-core-text-area.mjs.map +1 -1
  71. package/fesm2022/qualcomm-ui-angular-core-text-input.mjs +37 -37
  72. package/fesm2022/qualcomm-ui-angular-core-text-input.mjs.map +1 -1
  73. package/fesm2022/qualcomm-ui-angular-core-toast.mjs +30 -30
  74. package/fesm2022/qualcomm-ui-angular-core-toast.mjs.map +1 -1
  75. package/fesm2022/qualcomm-ui-angular-core-tooltip.mjs +37 -45
  76. package/fesm2022/qualcomm-ui-angular-core-tooltip.mjs.map +1 -1
  77. package/fesm2022/qualcomm-ui-angular-core-tree.mjs +70 -78
  78. package/fesm2022/qualcomm-ui-angular-core-tree.mjs.map +1 -1
  79. package/fesm2022/qualcomm-ui-angular-core-virtual.mjs +5 -5
  80. package/fesm2022/qualcomm-ui-angular-core-virtual.mjs.map +1 -1
  81. package/package.json +57 -57
  82. package/{accordion/index.d.ts → types/qualcomm-ui-angular-core-accordion.d.ts} +1 -1
  83. package/types/qualcomm-ui-angular-core-accordion.d.ts.map +1 -0
  84. package/{attributes/index.d.ts → types/qualcomm-ui-angular-core-attributes.d.ts} +1 -1
  85. package/types/qualcomm-ui-angular-core-attributes.d.ts.map +1 -0
  86. package/{avatar/index.d.ts → types/qualcomm-ui-angular-core-avatar.d.ts} +1 -1
  87. package/types/qualcomm-ui-angular-core-avatar.d.ts.map +1 -0
  88. package/{checkbox/index.d.ts → types/qualcomm-ui-angular-core-checkbox.d.ts} +1 -1
  89. package/types/qualcomm-ui-angular-core-checkbox.d.ts.map +1 -0
  90. package/{collapsible/index.d.ts → types/qualcomm-ui-angular-core-collapsible.d.ts} +1 -1
  91. package/types/qualcomm-ui-angular-core-collapsible.d.ts.map +1 -0
  92. package/{collection/index.d.ts → types/qualcomm-ui-angular-core-collection.d.ts} +1 -1
  93. package/types/qualcomm-ui-angular-core-collection.d.ts.map +1 -0
  94. package/{combobox/index.d.ts → types/qualcomm-ui-angular-core-combobox.d.ts} +2 -2
  95. package/types/qualcomm-ui-angular-core-combobox.d.ts.map +1 -0
  96. package/{common/index.d.ts → types/qualcomm-ui-angular-core-common.d.ts} +1 -1
  97. package/types/qualcomm-ui-angular-core-common.d.ts.map +1 -0
  98. package/{dialog/index.d.ts → types/qualcomm-ui-angular-core-dialog.d.ts} +1 -1
  99. package/types/qualcomm-ui-angular-core-dialog.d.ts.map +1 -0
  100. package/{dom/index.d.ts → types/qualcomm-ui-angular-core-dom.d.ts} +1 -1
  101. package/types/qualcomm-ui-angular-core-dom.d.ts.map +1 -0
  102. package/{events/index.d.ts → types/qualcomm-ui-angular-core-events.d.ts} +1 -1
  103. package/types/qualcomm-ui-angular-core-events.d.ts.map +1 -0
  104. package/{forms/index.d.ts → types/qualcomm-ui-angular-core-forms.d.ts} +1 -1
  105. package/types/qualcomm-ui-angular-core-forms.d.ts.map +1 -0
  106. package/{highlight/index.d.ts → types/qualcomm-ui-angular-core-highlight.d.ts} +1 -1
  107. package/types/qualcomm-ui-angular-core-highlight.d.ts.map +1 -0
  108. package/{inline-notification/index.d.ts → types/qualcomm-ui-angular-core-inline-notification.d.ts} +1 -1
  109. package/types/qualcomm-ui-angular-core-inline-notification.d.ts.map +1 -0
  110. package/{input/index.d.ts → types/qualcomm-ui-angular-core-input.d.ts} +2 -2
  111. package/types/qualcomm-ui-angular-core-input.d.ts.map +1 -0
  112. package/{locale/index.d.ts → types/qualcomm-ui-angular-core-locale.d.ts} +1 -1
  113. package/types/qualcomm-ui-angular-core-locale.d.ts.map +1 -0
  114. package/{lorem-ipsum/index.d.ts → types/qualcomm-ui-angular-core-lorem-ipsum.d.ts} +1 -1
  115. package/types/qualcomm-ui-angular-core-lorem-ipsum.d.ts.map +1 -0
  116. package/{lucide/index.d.ts → types/qualcomm-ui-angular-core-lucide.d.ts} +1 -1
  117. package/types/qualcomm-ui-angular-core-lucide.d.ts.map +1 -0
  118. package/{machine/index.d.ts → types/qualcomm-ui-angular-core-machine.d.ts} +2 -2
  119. package/types/qualcomm-ui-angular-core-machine.d.ts.map +1 -0
  120. package/{menu/index.d.ts → types/qualcomm-ui-angular-core-menu.d.ts} +1 -1
  121. package/types/qualcomm-ui-angular-core-menu.d.ts.map +1 -0
  122. package/{number-input/index.d.ts → types/qualcomm-ui-angular-core-number-input.d.ts} +1 -1
  123. package/types/qualcomm-ui-angular-core-number-input.d.ts.map +1 -0
  124. package/{observers/index.d.ts → types/qualcomm-ui-angular-core-observers.d.ts} +1 -1
  125. package/types/qualcomm-ui-angular-core-observers.d.ts.map +1 -0
  126. package/{pagination/index.d.ts → types/qualcomm-ui-angular-core-pagination.d.ts} +1 -1
  127. package/types/qualcomm-ui-angular-core-pagination.d.ts.map +1 -0
  128. package/{password-input/index.d.ts → types/qualcomm-ui-angular-core-password-input.d.ts} +1 -1
  129. package/types/qualcomm-ui-angular-core-password-input.d.ts.map +1 -0
  130. package/{popover/index.d.ts → types/qualcomm-ui-angular-core-popover.d.ts} +1 -1
  131. package/types/qualcomm-ui-angular-core-popover.d.ts.map +1 -0
  132. package/{portal/index.d.ts → types/qualcomm-ui-angular-core-portal.d.ts} +1 -1
  133. package/types/qualcomm-ui-angular-core-portal.d.ts.map +1 -0
  134. package/{presence/index.d.ts → types/qualcomm-ui-angular-core-presence.d.ts} +1 -1
  135. package/types/qualcomm-ui-angular-core-presence.d.ts.map +1 -0
  136. package/{progress-ring/index.d.ts → types/qualcomm-ui-angular-core-progress-ring.d.ts} +1 -1
  137. package/types/qualcomm-ui-angular-core-progress-ring.d.ts.map +1 -0
  138. package/{progress/index.d.ts → types/qualcomm-ui-angular-core-progress.d.ts} +6 -2
  139. package/types/qualcomm-ui-angular-core-progress.d.ts.map +1 -0
  140. package/{radio/index.d.ts → types/qualcomm-ui-angular-core-radio.d.ts} +1 -1
  141. package/types/qualcomm-ui-angular-core-radio.d.ts.map +1 -0
  142. package/{segmented-control/index.d.ts → types/qualcomm-ui-angular-core-segmented-control.d.ts} +1 -1
  143. package/types/qualcomm-ui-angular-core-segmented-control.d.ts.map +1 -0
  144. package/{select/index.d.ts → types/qualcomm-ui-angular-core-select.d.ts} +1 -1
  145. package/types/qualcomm-ui-angular-core-select.d.ts.map +1 -0
  146. package/{side-nav/index.d.ts → types/qualcomm-ui-angular-core-side-nav.d.ts} +1 -1
  147. package/types/qualcomm-ui-angular-core-side-nav.d.ts.map +1 -0
  148. package/{signals/index.d.ts → types/qualcomm-ui-angular-core-signals.d.ts} +1 -1
  149. package/types/qualcomm-ui-angular-core-signals.d.ts.map +1 -0
  150. package/{slider/index.d.ts → types/qualcomm-ui-angular-core-slider.d.ts} +1 -1
  151. package/types/qualcomm-ui-angular-core-slider.d.ts.map +1 -0
  152. package/{state/index.d.ts → types/qualcomm-ui-angular-core-state.d.ts} +1 -1
  153. package/types/qualcomm-ui-angular-core-state.d.ts.map +1 -0
  154. package/{switch/index.d.ts → types/qualcomm-ui-angular-core-switch.d.ts} +1 -1
  155. package/types/qualcomm-ui-angular-core-switch.d.ts.map +1 -0
  156. package/{tabs/index.d.ts → types/qualcomm-ui-angular-core-tabs.d.ts} +1 -1
  157. package/types/qualcomm-ui-angular-core-tabs.d.ts.map +1 -0
  158. package/{text-area/index.d.ts → types/qualcomm-ui-angular-core-text-area.d.ts} +1 -1
  159. package/types/qualcomm-ui-angular-core-text-area.d.ts.map +1 -0
  160. package/{text-input/index.d.ts → types/qualcomm-ui-angular-core-text-input.d.ts} +1 -1
  161. package/types/qualcomm-ui-angular-core-text-input.d.ts.map +1 -0
  162. package/{toast/index.d.ts → types/qualcomm-ui-angular-core-toast.d.ts} +1 -1
  163. package/types/qualcomm-ui-angular-core-toast.d.ts.map +1 -0
  164. package/{tooltip/index.d.ts → types/qualcomm-ui-angular-core-tooltip.d.ts} +1 -1
  165. package/types/qualcomm-ui-angular-core-tooltip.d.ts.map +1 -0
  166. package/{tree/index.d.ts → types/qualcomm-ui-angular-core-tree.d.ts} +1 -1
  167. package/types/qualcomm-ui-angular-core-tree.d.ts.map +1 -0
  168. package/{virtual/index.d.ts → types/qualcomm-ui-angular-core-virtual.d.ts} +1 -1
  169. package/types/qualcomm-ui-angular-core-virtual.d.ts.map +1 -0
  170. package/types/qualcomm-ui-angular-core.d.ts +3 -0
  171. package/types/qualcomm-ui-angular-core.d.ts.map +1 -0
  172. package/accordion/index.d.ts.map +0 -1
  173. package/attributes/index.d.ts.map +0 -1
  174. package/avatar/index.d.ts.map +0 -1
  175. package/checkbox/index.d.ts.map +0 -1
  176. package/collapsible/index.d.ts.map +0 -1
  177. package/collection/index.d.ts.map +0 -1
  178. package/combobox/index.d.ts.map +0 -1
  179. package/common/index.d.ts.map +0 -1
  180. package/dialog/index.d.ts.map +0 -1
  181. package/dom/index.d.ts.map +0 -1
  182. package/events/index.d.ts.map +0 -1
  183. package/forms/index.d.ts.map +0 -1
  184. package/highlight/index.d.ts.map +0 -1
  185. package/index.d.ts +0 -3
  186. package/index.d.ts.map +0 -1
  187. package/inline-notification/index.d.ts.map +0 -1
  188. package/input/index.d.ts.map +0 -1
  189. package/locale/index.d.ts.map +0 -1
  190. package/lorem-ipsum/index.d.ts.map +0 -1
  191. package/lucide/index.d.ts.map +0 -1
  192. package/machine/index.d.ts.map +0 -1
  193. package/menu/index.d.ts.map +0 -1
  194. package/number-input/index.d.ts.map +0 -1
  195. package/observers/index.d.ts.map +0 -1
  196. package/pagination/index.d.ts.map +0 -1
  197. package/password-input/index.d.ts.map +0 -1
  198. package/popover/index.d.ts.map +0 -1
  199. package/portal/index.d.ts.map +0 -1
  200. package/presence/index.d.ts.map +0 -1
  201. package/progress/index.d.ts.map +0 -1
  202. package/progress-ring/index.d.ts.map +0 -1
  203. package/radio/index.d.ts.map +0 -1
  204. package/segmented-control/index.d.ts.map +0 -1
  205. package/select/index.d.ts.map +0 -1
  206. package/side-nav/index.d.ts.map +0 -1
  207. package/signals/index.d.ts.map +0 -1
  208. package/slider/index.d.ts.map +0 -1
  209. package/state/index.d.ts.map +0 -1
  210. package/switch/index.d.ts.map +0 -1
  211. package/tabs/index.d.ts.map +0 -1
  212. package/text-area/index.d.ts.map +0 -1
  213. package/text-input/index.d.ts.map +0 -1
  214. package/toast/index.d.ts.map +0 -1
  215. package/tooltip/index.d.ts.map +0 -1
  216. package/tree/index.d.ts.map +0 -1
  217. package/virtual/index.d.ts.map +0 -1
@@ -47,7 +47,7 @@ function initInputFormControl() {
47
47
  ...defaultErrors,
48
48
  ...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, { optional: true }) ?? {}),
49
49
  };
50
- const formEventData = signal(null, ...(ngDevMode ? [{ debugName: "formEventData" }] : []));
50
+ const formEventData = signal(null, ...(ngDevMode ? [{ debugName: "formEventData" }] : /* istanbul ignore next */ []));
51
51
  function isTemplateDrivenForm() {
52
52
  return ngControl instanceof NgModel;
53
53
  }
@@ -83,46 +83,38 @@ class AbstractInputFormControlDirective {
83
83
  * need to control the checked state of the input. This property will be
84
84
  * ignored if you opt into controlled state via form control bindings.
85
85
  */
86
- defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : []));
86
+ defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
87
87
  /**
88
88
  * Controls whether the input is disabled in template-driven forms. When true,
89
89
  * prevents user interaction and applies visual styling to indicate the disabled
90
90
  * state.
91
91
  */
92
- disabled = input(undefined, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{
93
- transform: booleanAttribute,
94
- }]));
92
+ disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
95
93
  /**
96
94
  * Controls the visual error state of the input. When true, applies semantic error
97
95
  * styling to indicate validation failure.
98
96
  */
99
- invalid = input(undefined, ...(ngDevMode ? [{ debugName: "invalid", transform: booleanAttribute }] : [{
100
- transform: booleanAttribute,
101
- }]));
97
+ invalid = input(undefined, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
102
98
  /**
103
99
  * The name of the input field. Useful for form submission.
104
100
  */
105
- name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
101
+ name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
106
102
  /**
107
103
  * Whether the input is read-only. When true, prevents user interaction while
108
104
  * keeping the input focusable and visible.
109
105
  */
110
- readOnly = input(undefined, ...(ngDevMode ? [{ debugName: "readOnly", transform: booleanAttribute }] : [{
111
- transform: booleanAttribute,
112
- }]));
106
+ readOnly = input(undefined, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
113
107
  /**
114
108
  * Controls whether the input is required in template-driven forms. When
115
109
  * true, the input must have a value for form validation to pass.
116
110
  */
117
- required = input(undefined, ...(ngDevMode ? [{ debugName: "required", transform: booleanAttribute }] : [{
118
- transform: booleanAttribute,
119
- }]));
111
+ required = input(undefined, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
120
112
  /* the internal "value" state of the input */
121
- value = signal("", ...(ngDevMode ? [{ debugName: "value" }] : []));
113
+ value = signal("", ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
122
114
  onDestroy = useOnDestroy();
123
115
  injector = inject(Injector);
124
- formControlStatus = signal(undefined, ...(ngDevMode ? [{ debugName: "formControlStatus" }] : []));
125
- formSubmitted = signal(false, ...(ngDevMode ? [{ debugName: "formSubmitted" }] : []));
116
+ formControlStatus = signal(undefined, ...(ngDevMode ? [{ debugName: "formControlStatus" }] : /* istanbul ignore next */ []));
117
+ formSubmitted = signal(false, ...(ngDevMode ? [{ debugName: "formSubmitted" }] : /* istanbul ignore next */ []));
126
118
  formControlContext = initInputFormControl();
127
119
  /**
128
120
  * If the component is bound to an Angular AbstractControl, its state wins.
@@ -139,7 +131,7 @@ class AbstractInputFormControlDirective {
139
131
  return status === "DISABLED";
140
132
  }
141
133
  return !!disabled;
142
- }, ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
134
+ }, ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
143
135
  isInvalid = computed(() => {
144
136
  const formEventData = this.formControlContext.formEventData();
145
137
  this.formSubmitted();
@@ -171,7 +163,7 @@ class AbstractInputFormControlDirective {
171
163
  // "change"
172
164
  return dirty && invalid;
173
165
  }
174
- }, ...(ngDevMode ? [{ debugName: "isInvalid" }] : []));
166
+ }, ...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
175
167
  isRequired = linkedSignal(() => {
176
168
  const control = this.control;
177
169
  const required = this.required();
@@ -183,7 +175,7 @@ class AbstractInputFormControlDirective {
183
175
  control.hasValidator(Validators.requiredTrue));
184
176
  }
185
177
  return false;
186
- }, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
178
+ }, ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
187
179
  constructor() {
188
180
  if (this.formControlContext.ngControl) {
189
181
  this.formControlContext.ngControl.valueAccessor = this;
@@ -314,10 +306,10 @@ class AbstractInputFormControlDirective {
314
306
  setDisabledState(isDisabled) {
315
307
  this.isDisabled.set(isDisabled);
316
308
  }
317
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AbstractInputFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
318
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: AbstractInputFormControlDirective, isStandalone: true, inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
309
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractInputFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
310
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.2", type: AbstractInputFormControlDirective, isStandalone: true, inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
319
311
  }
320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AbstractInputFormControlDirective, decorators: [{
312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractInputFormControlDirective, decorators: [{
321
313
  type: Directive
322
314
  }], ctorParameters: () => [], propDecorators: { defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] } });
323
315
 
@@ -331,46 +323,38 @@ class AbstractBaseListCollectionFormControlDirective {
331
323
  *
332
324
  * @inheritDoc
333
325
  */
334
- defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : []));
326
+ defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
335
327
  /**
336
328
  * Controls whether the input is disabled in template-driven forms. When true,
337
329
  * prevents user interaction and applies visual styling to indicate the disabled
338
330
  * state.
339
331
  */
340
- disabled = input(undefined, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{
341
- transform: booleanAttribute,
342
- }]));
332
+ disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
343
333
  /**
344
334
  * Controls the visual error state of the input. When true, applies semantic error
345
335
  * styling to indicate validation failure.
346
336
  */
347
- invalid = input(undefined, ...(ngDevMode ? [{ debugName: "invalid", transform: booleanAttribute }] : [{
348
- transform: booleanAttribute,
349
- }]));
337
+ invalid = input(undefined, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
350
338
  /**
351
339
  * The name of the input field. Useful for form submission.
352
340
  */
353
- name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
341
+ name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
354
342
  /**
355
343
  * Whether the input is read-only. When true, prevents user interaction while
356
344
  * keeping the input focusable and visible.
357
345
  */
358
- readOnly = input(undefined, ...(ngDevMode ? [{ debugName: "readOnly", transform: booleanAttribute }] : [{
359
- transform: booleanAttribute,
360
- }]));
346
+ readOnly = input(undefined, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
361
347
  /**
362
348
  * Controls whether the input is required in template-driven forms. When
363
349
  * true, the input must have a value for form validation to pass.
364
350
  */
365
- required = input(undefined, ...(ngDevMode ? [{ debugName: "required", transform: booleanAttribute }] : [{
366
- transform: booleanAttribute,
367
- }]));
351
+ required = input(undefined, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
368
352
  /* the internal "value" state of the input */
369
- value = signal([], ...(ngDevMode ? [{ debugName: "value" }] : []));
353
+ value = signal([], ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
370
354
  onDestroy = useOnDestroy();
371
355
  injector = inject(Injector);
372
- formControlStatus = signal(undefined, ...(ngDevMode ? [{ debugName: "formControlStatus" }] : []));
373
- formSubmitted = signal(false, ...(ngDevMode ? [{ debugName: "formSubmitted" }] : []));
356
+ formControlStatus = signal(undefined, ...(ngDevMode ? [{ debugName: "formControlStatus" }] : /* istanbul ignore next */ []));
357
+ formSubmitted = signal(false, ...(ngDevMode ? [{ debugName: "formSubmitted" }] : /* istanbul ignore next */ []));
374
358
  formControlContext = initInputFormControl();
375
359
  /**
376
360
  * If the component is bound to an Angular AbstractControl, its state wins.
@@ -387,7 +371,7 @@ class AbstractBaseListCollectionFormControlDirective {
387
371
  return status === "DISABLED";
388
372
  }
389
373
  return !!disabled;
390
- }, ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
374
+ }, ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
391
375
  isInvalid = computed(() => {
392
376
  const formEventData = this.formControlContext.formEventData();
393
377
  this.formSubmitted();
@@ -419,7 +403,7 @@ class AbstractBaseListCollectionFormControlDirective {
419
403
  // "change"
420
404
  return dirty && invalid;
421
405
  }
422
- }, ...(ngDevMode ? [{ debugName: "isInvalid" }] : []));
406
+ }, ...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
423
407
  isRequired = linkedSignal(() => {
424
408
  const control = this.control;
425
409
  const required = this.required();
@@ -431,7 +415,7 @@ class AbstractBaseListCollectionFormControlDirective {
431
415
  control.hasValidator(Validators.requiredTrue));
432
416
  }
433
417
  return false;
434
- }, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
418
+ }, ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
435
419
  constructor() {
436
420
  if (this.formControlContext.ngControl) {
437
421
  this.formControlContext.ngControl.valueAccessor = this;
@@ -577,10 +561,10 @@ class AbstractBaseListCollectionFormControlDirective {
577
561
  setDisabledState(isDisabled) {
578
562
  this.isDisabled.set(isDisabled);
579
563
  }
580
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AbstractBaseListCollectionFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
581
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: AbstractBaseListCollectionFormControlDirective, isStandalone: true, inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
564
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractBaseListCollectionFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
565
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.2", type: AbstractBaseListCollectionFormControlDirective, isStandalone: true, inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
582
566
  }
583
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AbstractBaseListCollectionFormControlDirective, decorators: [{
567
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractBaseListCollectionFormControlDirective, decorators: [{
584
568
  type: Directive
585
569
  }], ctorParameters: () => [], propDecorators: { defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] } });
586
570
  class AbstractListCollectionFormControlDirective extends AbstractBaseListCollectionFormControlDirective {
@@ -589,11 +573,11 @@ class AbstractListCollectionFormControlDirective extends AbstractBaseListCollect
589
573
  *
590
574
  * @inheritDoc
591
575
  */
592
- collection = input.required(...(ngDevMode ? [{ debugName: "collection" }] : []));
593
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AbstractListCollectionFormControlDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
594
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: AbstractListCollectionFormControlDirective, isStandalone: true, inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
576
+ collection = input.required(...(ngDevMode ? [{ debugName: "collection" }] : /* istanbul ignore next */ []));
577
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractListCollectionFormControlDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
578
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.2", type: AbstractListCollectionFormControlDirective, isStandalone: true, inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
595
579
  }
596
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AbstractListCollectionFormControlDirective, decorators: [{
580
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractListCollectionFormControlDirective, decorators: [{
597
581
  type: Directive
598
582
  }], propDecorators: { collection: [{ type: i0.Input, args: [{ isSignal: true, alias: "collection", required: true }] }] } });
599
583
 
@@ -1 +1 @@
1
- {"version":3,"file":"qualcomm-ui-angular-core-input.mjs","sources":["../../src/input/input-form-control-provider.ts","../../src/input/abstract-input-form-control.directive.ts","../../src/input/abstract-list-collection-form-control.directive.ts","../../src/input/qualcomm-ui-angular-core-input.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n computed,\n inject,\n InjectionToken,\n type Signal,\n signal,\n type WritableSignal,\n} from \"@angular/core\"\nimport {NgControl, NgModel} from \"@angular/forms\"\n\nimport type {FormEventData} from \"@qualcomm-ui/angular-core/forms\"\n\nexport interface InputFormControlContext<T> {\n control?: NgControl[\"control\"] | null\n /**\n * Computed error message from the underlying control.\n */\n errorText: Signal<string | undefined | null>\n formEventData: WritableSignal<FormEventData<T | undefined> | null>\n /** `true` when used with reactive-forms (`formControl`, `formControlName`). */\n isReactiveForm: () => boolean\n /** `true` when used with template-driven forms (`[(ngModel)]`, `ngModel`). */\n isTemplateDrivenForm: () => boolean\n ngControl: NgControl | null\n}\n\nexport type FormControlKnownErrors = Record<\n string,\n ((error: any) => string) | undefined\n>\n\nconst defaultErrors: FormControlKnownErrors = {\n email: () => \"Invalid email\",\n max: (err) => `Max: ${err.max}`,\n maxLength: (err) => `Max length: ${err.maxLength}`,\n min: (err) => `Min: ${err.min}`,\n minLength: (err) => `Min length: ${err.requiredLength}`,\n pattern: () => \"Invalid format\",\n required: () => \"This field is required\",\n requiredTrue: () => \"Required\",\n}\n\n/**\n * Override the default error messages for known form control errors.\n *\n * The defaults are as follows:\n * ```angular-html\n * const defaultKnownErrors: FormControlKnownErrors = {\n * email: () => \"Invalid email\",\n * max: (err) => `Max: ${err.max}`,\n * maxLength: (err) => `Max length: ${err.maxLength}`,\n * min: (err) => `Min: ${err.min}`,\n * minLength: (err) => `Min length: ${err.requiredLength}`,\n * pattern: () => \"Invalid format\",\n * required: () => \"This field is required\",\n * requiredTrue: () => \"This field is required\",\n * }\n * ```\n */\nexport const FORM_CONTROL_ERROR_MESSAGE_PROVIDER = new InjectionToken<\n Partial<FormControlKnownErrors>\n>(\"FormControlErrorProvider\")\n\nexport const INPUT_FORM_CONTROL_CONTEXT = new InjectionToken<\n InputFormControlContext<any>\n>(\"InputFormControl\")\n\nexport function initInputFormControl<T = string>(): InputFormControlContext<T> {\n const ngControl: NgControl | null = inject(NgControl, {\n optional: true,\n self: true,\n })\n\n const knownErrors: FormControlKnownErrors = {\n ...defaultErrors,\n ...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, {optional: true}) ?? {}),\n }\n\n const formEventData = signal<FormEventData<T | undefined> | null>(null)\n\n function isTemplateDrivenForm(): boolean {\n return ngControl instanceof NgModel\n }\n\n function isReactiveForm(): boolean {\n // Any NgControl that is *not* NgModel belongs to the reactive-forms package\n return !!ngControl && !isTemplateDrivenForm()\n }\n\n return {\n control: ngControl?.control ?? null,\n errorText: computed(() => {\n // make this reactive so that the error message is updated when the form state\n // changes.\n formEventData()\n const errors = ngControl?.control?.errors ?? {}\n const [errorKey, errorValue] = Object.entries(errors)[0] ?? []\n if (errorKey && knownErrors[errorKey]) {\n return knownErrors[errorKey](errorValue)\n }\n return errors[\"errorText\"] ?? errors[\"error\"] ?? null\n }),\n formEventData,\n isReactiveForm,\n isTemplateDrivenForm,\n ngControl,\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractInputFormControlDirective\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial state of the input when rendered. Use when you don't\n * need to control the checked state of the input. This property will be\n * ignored if you opt into controlled state via form control bindings.\n */\n readonly defaultValue = input<string | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<string>(\"\")\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || \"\")\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n if (this.control && this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators(Validators.required)\n } else if (this.control.hasValidator(Validators.required)) {\n this.control.removeValidators(Validators.required)\n }\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control && defaultValue) {\n this.value.set(defaultValue)\n } else if (this.control) {\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<string | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value)\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value)\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {\n type CollectionItem,\n ListCollection,\n} from \"@qualcomm-ui/utils/collection\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractBaseListCollectionFormControlDirective<\n T extends CollectionItem,\n >\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial value of the input when rendered. Use when you don't need to\n * control the value of the input. This property will be ignored if you\n * opt into controlled state via form control bindings.\n *\n * @inheritDoc\n */\n readonly defaultValue = input<T[] | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<T[]>([])\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl<T[]>()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || [])\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n const isRequired = this.isRequired()\n if (!this.control) {\n return\n }\n if (this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n } else if (\n this.control.hasValidator(Validators.required) &&\n this.control.hasValidator(Validators.minLength(1))\n ) {\n this.control.removeValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n }\n } else if (isRequired) {\n this.control.addValidators(Validators.minLength(1))\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control) {\n if (defaultValue) {\n this.value.set(defaultValue)\n }\n return\n }\n\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<T[] | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value ?? [])\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value ?? [])\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n\n@Directive()\nexport abstract class AbstractListCollectionFormControlDirective<\n T extends CollectionItem,\n> extends AbstractBaseListCollectionFormControlDirective<T> {\n /**\n * The item collection\n *\n * @inheritDoc\n */\n readonly collection = input.required<ListCollection<T>>()\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qualcomm-ui-angular-core-input.mjs","sources":["../../src/input/input-form-control-provider.ts","../../src/input/abstract-input-form-control.directive.ts","../../src/input/abstract-list-collection-form-control.directive.ts","../../src/input/qualcomm-ui-angular-core-input.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n computed,\n inject,\n InjectionToken,\n type Signal,\n signal,\n type WritableSignal,\n} from \"@angular/core\"\nimport {NgControl, NgModel} from \"@angular/forms\"\n\nimport type {FormEventData} from \"@qualcomm-ui/angular-core/forms\"\n\nexport interface InputFormControlContext<T> {\n control?: NgControl[\"control\"] | null\n /**\n * Computed error message from the underlying control.\n */\n errorText: Signal<string | undefined | null>\n formEventData: WritableSignal<FormEventData<T | undefined> | null>\n /** `true` when used with reactive-forms (`formControl`, `formControlName`). */\n isReactiveForm: () => boolean\n /** `true` when used with template-driven forms (`[(ngModel)]`, `ngModel`). */\n isTemplateDrivenForm: () => boolean\n ngControl: NgControl | null\n}\n\nexport type FormControlKnownErrors = Record<\n string,\n ((error: any) => string) | undefined\n>\n\nconst defaultErrors: FormControlKnownErrors = {\n email: () => \"Invalid email\",\n max: (err) => `Max: ${err.max}`,\n maxLength: (err) => `Max length: ${err.maxLength}`,\n min: (err) => `Min: ${err.min}`,\n minLength: (err) => `Min length: ${err.requiredLength}`,\n pattern: () => \"Invalid format\",\n required: () => \"This field is required\",\n requiredTrue: () => \"Required\",\n}\n\n/**\n * Override the default error messages for known form control errors.\n *\n * The defaults are as follows:\n * ```angular-html\n * const defaultKnownErrors: FormControlKnownErrors = {\n * email: () => \"Invalid email\",\n * max: (err) => `Max: ${err.max}`,\n * maxLength: (err) => `Max length: ${err.maxLength}`,\n * min: (err) => `Min: ${err.min}`,\n * minLength: (err) => `Min length: ${err.requiredLength}`,\n * pattern: () => \"Invalid format\",\n * required: () => \"This field is required\",\n * requiredTrue: () => \"This field is required\",\n * }\n * ```\n */\nexport const FORM_CONTROL_ERROR_MESSAGE_PROVIDER = new InjectionToken<\n Partial<FormControlKnownErrors>\n>(\"FormControlErrorProvider\")\n\nexport const INPUT_FORM_CONTROL_CONTEXT = new InjectionToken<\n InputFormControlContext<any>\n>(\"InputFormControl\")\n\nexport function initInputFormControl<T = string>(): InputFormControlContext<T> {\n const ngControl: NgControl | null = inject(NgControl, {\n optional: true,\n self: true,\n })\n\n const knownErrors: FormControlKnownErrors = {\n ...defaultErrors,\n ...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, {optional: true}) ?? {}),\n }\n\n const formEventData = signal<FormEventData<T | undefined> | null>(null)\n\n function isTemplateDrivenForm(): boolean {\n return ngControl instanceof NgModel\n }\n\n function isReactiveForm(): boolean {\n // Any NgControl that is *not* NgModel belongs to the reactive-forms package\n return !!ngControl && !isTemplateDrivenForm()\n }\n\n return {\n control: ngControl?.control ?? null,\n errorText: computed(() => {\n // make this reactive so that the error message is updated when the form state\n // changes.\n formEventData()\n const errors = ngControl?.control?.errors ?? {}\n const [errorKey, errorValue] = Object.entries(errors)[0] ?? []\n if (errorKey && knownErrors[errorKey]) {\n return knownErrors[errorKey](errorValue)\n }\n return errors[\"errorText\"] ?? errors[\"error\"] ?? null\n }),\n formEventData,\n isReactiveForm,\n isTemplateDrivenForm,\n ngControl,\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractInputFormControlDirective\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial state of the input when rendered. Use when you don't\n * need to control the checked state of the input. This property will be\n * ignored if you opt into controlled state via form control bindings.\n */\n readonly defaultValue = input<string | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<string>(\"\")\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || \"\")\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n if (this.control && this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators(Validators.required)\n } else if (this.control.hasValidator(Validators.required)) {\n this.control.removeValidators(Validators.required)\n }\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control && defaultValue) {\n this.value.set(defaultValue)\n } else if (this.control) {\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<string | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value)\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value)\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {\n type CollectionItem,\n ListCollection,\n} from \"@qualcomm-ui/utils/collection\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractBaseListCollectionFormControlDirective<\n T extends CollectionItem,\n >\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial value of the input when rendered. Use when you don't need to\n * control the value of the input. This property will be ignored if you\n * opt into controlled state via form control bindings.\n *\n * @inheritDoc\n */\n readonly defaultValue = input<T[] | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<T[]>([])\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl<T[]>()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || [])\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n const isRequired = this.isRequired()\n if (!this.control) {\n return\n }\n if (this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n } else if (\n this.control.hasValidator(Validators.required) &&\n this.control.hasValidator(Validators.minLength(1))\n ) {\n this.control.removeValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n }\n } else if (isRequired) {\n this.control.addValidators(Validators.minLength(1))\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control) {\n if (defaultValue) {\n this.value.set(defaultValue)\n }\n return\n }\n\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<T[] | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value ?? [])\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value ?? [])\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n\n@Directive()\nexport abstract class AbstractListCollectionFormControlDirective<\n T extends CollectionItem,\n> extends AbstractBaseListCollectionFormControlDirective<T> {\n /**\n * The item collection\n *\n * @inheritDoc\n */\n readonly collection = input.required<ListCollection<T>>()\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,10 +6,10 @@ import { createFilter } from '@qualcomm-ui/utils/i18n';
6
6
  // Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
7
7
  // SPDX-License-Identifier: BSD-3-Clause-Clear
8
8
  class LocaleContextService extends BaseApiContextService {
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocaleContextService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
10
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocaleContextService });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LocaleContextService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
10
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LocaleContextService });
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LocaleContextService, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LocaleContextService, decorators: [{
13
13
  type: Injectable
14
14
  }] });
15
15
  const [LOCALE_CONTEXT, useLocaleContext, provideLocaleContext,] = createApiContext("LocaleContext", LocaleContextService, { dir: "ltr", locale: "en-US" });
@@ -1 +1 @@
1
- {"version":3,"file":"qualcomm-ui-angular-core-locale.mjs","sources":["../../src/locale/locale-context.service.ts","../../src/locale/use-filter.ts","../../src/locale/qualcomm-ui-angular-core-locale.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Injectable} from \"@angular/core\"\n\nimport {\n type ApiContext,\n BaseApiContextService,\n createApiContext,\n} from \"@qualcomm-ui/angular-core/machine\"\nimport type {Locale} from \"@qualcomm-ui/utils/direction\"\n\n@Injectable()\nexport class LocaleContextService extends BaseApiContextService<Locale> {}\n\nexport const [\n LOCALE_CONTEXT,\n useLocaleContext,\n provideLocaleContext,\n]: ApiContext<Locale> = createApiContext<Locale>(\n \"LocaleContext\",\n LocaleContextService,\n {dir: \"ltr\", locale: \"en-US\"},\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {computed, inject, type Signal} from \"@angular/core\"\n\nimport {\n createFilter,\n type FilterOptions,\n type FilterReturn,\n} from \"@qualcomm-ui/utils/i18n\"\n\nimport {LocaleContextService} from \"./locale-context.service\"\n\nexport interface UseFilterProps extends FilterOptions {}\nexport interface UseFilterReturn extends FilterReturn {}\n\nexport function useFilter(props: UseFilterProps): Signal<UseFilterReturn> {\n const env = inject(LocaleContextService, {optional: true})\n return computed(() => {\n const localeContext = env?.context?.()\n return createFilter({\n ...props,\n locale: props.locale ?? localeContext?.locale ?? \"en-US\",\n })\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAYM,MAAO,oBAAqB,SAAQ,qBAA6B,CAAA;wGAA1D,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAApB,oBAAoB,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;AAGM,MAAM,CACX,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACrB,GAAuB,gBAAgB,CACtC,eAAe,EACf,oBAAoB,EACpB,EAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAC;;ACtB/B;AACA;AAeM,SAAU,SAAS,CAAC,KAAqB,EAAA;AAC7C,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,aAAa,GAAG,GAAG,EAAE,OAAO,IAAI;AACtC,QAAA,OAAO,YAAY,CAAC;AAClB,YAAA,GAAG,KAAK;YACR,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,MAAM,IAAI,OAAO;AACzD,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;ACzBA;;AAEG;;;;"}
1
+ {"version":3,"file":"qualcomm-ui-angular-core-locale.mjs","sources":["../../src/locale/locale-context.service.ts","../../src/locale/use-filter.ts","../../src/locale/qualcomm-ui-angular-core-locale.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Injectable} from \"@angular/core\"\n\nimport {\n type ApiContext,\n BaseApiContextService,\n createApiContext,\n} from \"@qualcomm-ui/angular-core/machine\"\nimport type {Locale} from \"@qualcomm-ui/utils/direction\"\n\n@Injectable()\nexport class LocaleContextService extends BaseApiContextService<Locale> {}\n\nexport const [\n LOCALE_CONTEXT,\n useLocaleContext,\n provideLocaleContext,\n]: ApiContext<Locale> = createApiContext<Locale>(\n \"LocaleContext\",\n LocaleContextService,\n {dir: \"ltr\", locale: \"en-US\"},\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {computed, inject, type Signal} from \"@angular/core\"\n\nimport {\n createFilter,\n type FilterOptions,\n type FilterReturn,\n} from \"@qualcomm-ui/utils/i18n\"\n\nimport {LocaleContextService} from \"./locale-context.service\"\n\nexport interface UseFilterProps extends FilterOptions {}\nexport interface UseFilterReturn extends FilterReturn {}\n\nexport function useFilter(props: UseFilterProps): Signal<UseFilterReturn> {\n const env = inject(LocaleContextService, {optional: true})\n return computed(() => {\n const localeContext = env?.context?.()\n return createFilter({\n ...props,\n locale: props.locale ?? localeContext?.locale ?? \"en-US\",\n })\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAYM,MAAO,oBAAqB,SAAQ,qBAA6B,CAAA;uGAA1D,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAApB,oBAAoB,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;AAGM,MAAM,CACX,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACrB,GAAuB,gBAAgB,CACtC,eAAe,EACf,oBAAoB,EACpB,EAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAC;;ACtB/B;AACA;AAeM,SAAU,SAAS,CAAC,KAAqB,EAAA;AAC7C,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,aAAa,GAAG,GAAG,EAAE,OAAO,IAAI;AACtC,QAAA,OAAO,YAAY,CAAC;AAClB,YAAA,GAAG,KAAK;YACR,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,MAAM,IAAI,OAAO;AACzD,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;ACzBA;;AAEG;;;;"}
@@ -12,46 +12,34 @@ class LoremIpsumDirective {
12
12
  *
13
13
  * @default 5
14
14
  */
15
- avgSentencesPerParagraph = input(undefined, ...(ngDevMode ? [{ debugName: "avgSentencesPerParagraph", transform: numberAttributeOrUndefined }] : [{
16
- transform: numberAttributeOrUndefined,
17
- }]));
15
+ avgSentencesPerParagraph = input(undefined, { ...(ngDevMode ? { debugName: "avgSentencesPerParagraph" } : /* istanbul ignore next */ {}), transform: numberAttributeOrUndefined });
18
16
  /**
19
17
  * Average number of words created for each sentence (standard deviation is fixed
20
18
  * ±25%)
21
19
  *
22
20
  * @default 8
23
21
  */
24
- avgWordsPerSentence = input(undefined, ...(ngDevMode ? [{ debugName: "avgWordsPerSentence", transform: numberAttributeOrUndefined }] : [{
25
- transform: numberAttributeOrUndefined,
26
- }]));
22
+ avgWordsPerSentence = input(undefined, { ...(ngDevMode ? { debugName: "avgWordsPerSentence" } : /* istanbul ignore next */ {}), transform: numberAttributeOrUndefined });
27
23
  /**
28
24
  * @default 1
29
25
  */
30
- numParagraphs = input(undefined, ...(ngDevMode ? [{ debugName: "numParagraphs", transform: numberAttributeOrUndefined }] : [{
31
- transform: numberAttributeOrUndefined,
32
- }]));
26
+ numParagraphs = input(undefined, { ...(ngDevMode ? { debugName: "numParagraphs" } : /* istanbul ignore next */ {}), transform: numberAttributeOrUndefined });
33
27
  /**
34
28
  * If `false`, always generates the same paragraphs in order.
35
29
  *
36
30
  * @default false
37
31
  */
38
- random = input(undefined, ...(ngDevMode ? [{ debugName: "random", transform: booleanAttribute }] : [{
39
- transform: booleanAttribute,
40
- }]));
32
+ random = input(undefined, { ...(ngDevMode ? { debugName: "random" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
41
33
  /**
42
34
  * Seed for deterministic random generation. If not provided, uses Math.random()
43
35
  */
44
- seed = input(undefined, ...(ngDevMode ? [{ debugName: "seed", transform: numberAttributeOrUndefined }] : [{
45
- transform: numberAttributeOrUndefined,
46
- }]));
36
+ seed = input(undefined, { ...(ngDevMode ? { debugName: "seed" } : /* istanbul ignore next */ {}), transform: numberAttributeOrUndefined });
47
37
  /**
48
38
  * Start with 'Lorem ipsum odor amet...' to first sentence of first paragraph
49
39
  *
50
40
  * @default true
51
41
  */
52
- startWithLoremIpsum = input(undefined, ...(ngDevMode ? [{ debugName: "startWithLoremIpsum", transform: booleanAttribute }] : [{
53
- transform: booleanAttribute,
54
- }]));
42
+ startWithLoremIpsum = input(undefined, { ...(ngDevMode ? { debugName: "startWithLoremIpsum" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
55
43
  loremIpsumOptions = computed(() => {
56
44
  return {
57
45
  avgSentencesPerParagraph: this.avgSentencesPerParagraph(),
@@ -61,16 +49,16 @@ class LoremIpsumDirective {
61
49
  seed: this.seed(),
62
50
  startWithLoremIpsum: this.startWithLoremIpsum(),
63
51
  };
64
- }, ...(ngDevMode ? [{ debugName: "loremIpsumOptions" }] : []));
65
- paragraphs = computed(() => loremIpsum(this.loremIpsumOptions()), ...(ngDevMode ? [{ debugName: "paragraphs" }] : []));
66
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoremIpsumDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
67
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: LoremIpsumDirective, isStandalone: true, selector: "[q-lorem-ipsum]", inputs: { avgSentencesPerParagraph: { classPropertyName: "avgSentencesPerParagraph", publicName: "avgSentencesPerParagraph", isSignal: true, isRequired: false, transformFunction: null }, avgWordsPerSentence: { classPropertyName: "avgWordsPerSentence", publicName: "avgWordsPerSentence", isSignal: true, isRequired: false, transformFunction: null }, numParagraphs: { classPropertyName: "numParagraphs", publicName: "numParagraphs", isSignal: true, isRequired: false, transformFunction: null }, random: { classPropertyName: "random", publicName: "random", isSignal: true, isRequired: false, transformFunction: null }, seed: { classPropertyName: "seed", publicName: "seed", isSignal: true, isRequired: false, transformFunction: null }, startWithLoremIpsum: { classPropertyName: "startWithLoremIpsum", publicName: "startWithLoremIpsum", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
52
+ }, ...(ngDevMode ? [{ debugName: "loremIpsumOptions" }] : /* istanbul ignore next */ []));
53
+ paragraphs = computed(() => loremIpsum(this.loremIpsumOptions()), ...(ngDevMode ? [{ debugName: "paragraphs" }] : /* istanbul ignore next */ []));
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LoremIpsumDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: LoremIpsumDirective, isStandalone: true, selector: "[q-lorem-ipsum]", inputs: { avgSentencesPerParagraph: { classPropertyName: "avgSentencesPerParagraph", publicName: "avgSentencesPerParagraph", isSignal: true, isRequired: false, transformFunction: null }, avgWordsPerSentence: { classPropertyName: "avgWordsPerSentence", publicName: "avgWordsPerSentence", isSignal: true, isRequired: false, transformFunction: null }, numParagraphs: { classPropertyName: "numParagraphs", publicName: "numParagraphs", isSignal: true, isRequired: false, transformFunction: null }, random: { classPropertyName: "random", publicName: "random", isSignal: true, isRequired: false, transformFunction: null }, seed: { classPropertyName: "seed", publicName: "seed", isSignal: true, isRequired: false, transformFunction: null }, startWithLoremIpsum: { classPropertyName: "startWithLoremIpsum", publicName: "startWithLoremIpsum", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
68
56
  @for (paragraph of paragraphs(); track $index) {
69
57
  <div>{{ paragraph }}</div>
70
58
  }
71
59
  `, isInline: true });
72
60
  }
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoremIpsumDirective, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LoremIpsumDirective, decorators: [{
74
62
  type: Component,
75
63
  args: [{
76
64
  selector: "[q-lorem-ipsum]",
@@ -1 +1 @@
1
- {"version":3,"file":"qualcomm-ui-angular-core-lorem-ipsum.mjs","sources":["../../src/lorem-ipsum/lorem-ipsum.directive.ts","../../src/lorem-ipsum/qualcomm-ui-angular-core-lorem-ipsum.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {booleanAttribute, Component, computed, input} from \"@angular/core\"\n\nimport {numberAttributeOrUndefined} from \"@qualcomm-ui/angular-core/attributes\"\nimport type {Booleanish, NumberInput} from \"@qualcomm-ui/utils/coercion\"\nimport {\n loremIpsum,\n type LoremIpsumOptions,\n} from \"@qualcomm-ui/utils/lorem-ipsum\"\n\n@Component({\n selector: \"[q-lorem-ipsum]\",\n template: `\n @for (paragraph of paragraphs(); track $index) {\n <div>{{ paragraph }}</div>\n }\n `,\n})\nexport class LoremIpsumDirective {\n /**\n * Average number of sentences created for each paragraph (standard deviation is\n * fixed ±25%)\n *\n * @default 5\n */\n readonly avgSentencesPerParagraph = input<number | undefined, NumberInput>(\n undefined,\n {\n transform: numberAttributeOrUndefined,\n },\n )\n\n /**\n * Average number of words created for each sentence (standard deviation is fixed\n * ±25%)\n *\n * @default 8\n */\n readonly avgWordsPerSentence = input<number | undefined, NumberInput>(\n undefined,\n {\n transform: numberAttributeOrUndefined,\n },\n )\n\n /**\n * @default 1\n */\n readonly numParagraphs = input<number | undefined, NumberInput>(undefined, {\n transform: numberAttributeOrUndefined,\n })\n\n /**\n * If `false`, always generates the same paragraphs in order.\n *\n * @default false\n */\n readonly random = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Seed for deterministic random generation. If not provided, uses Math.random()\n */\n readonly seed = input<number | undefined, NumberInput>(undefined, {\n transform: numberAttributeOrUndefined,\n })\n\n /**\n * Start with 'Lorem ipsum odor amet...' to first sentence of first paragraph\n *\n * @default true\n */\n readonly startWithLoremIpsum = input<boolean | undefined, Booleanish>(\n undefined,\n {\n transform: booleanAttribute,\n },\n )\n\n readonly loremIpsumOptions = computed<LoremIpsumOptions>(() => {\n return {\n avgSentencesPerParagraph: this.avgSentencesPerParagraph(),\n avgWordsPerSentence: this.avgWordsPerSentence(),\n numParagraphs: this.numParagraphs(),\n random: this.random(),\n seed: this.seed(),\n startWithLoremIpsum: this.startWithLoremIpsum(),\n }\n })\n\n readonly paragraphs = computed(() => loremIpsum(this.loremIpsumOptions()))\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qualcomm-ui-angular-core-lorem-ipsum.mjs","sources":["../../src/lorem-ipsum/lorem-ipsum.directive.ts","../../src/lorem-ipsum/qualcomm-ui-angular-core-lorem-ipsum.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {booleanAttribute, Component, computed, input} from \"@angular/core\"\n\nimport {numberAttributeOrUndefined} from \"@qualcomm-ui/angular-core/attributes\"\nimport type {Booleanish, NumberInput} from \"@qualcomm-ui/utils/coercion\"\nimport {\n loremIpsum,\n type LoremIpsumOptions,\n} from \"@qualcomm-ui/utils/lorem-ipsum\"\n\n@Component({\n selector: \"[q-lorem-ipsum]\",\n template: `\n @for (paragraph of paragraphs(); track $index) {\n <div>{{ paragraph }}</div>\n }\n `,\n})\nexport class LoremIpsumDirective {\n /**\n * Average number of sentences created for each paragraph (standard deviation is\n * fixed ±25%)\n *\n * @default 5\n */\n readonly avgSentencesPerParagraph = input<number | undefined, NumberInput>(\n undefined,\n {\n transform: numberAttributeOrUndefined,\n },\n )\n\n /**\n * Average number of words created for each sentence (standard deviation is fixed\n * ±25%)\n *\n * @default 8\n */\n readonly avgWordsPerSentence = input<number | undefined, NumberInput>(\n undefined,\n {\n transform: numberAttributeOrUndefined,\n },\n )\n\n /**\n * @default 1\n */\n readonly numParagraphs = input<number | undefined, NumberInput>(undefined, {\n transform: numberAttributeOrUndefined,\n })\n\n /**\n * If `false`, always generates the same paragraphs in order.\n *\n * @default false\n */\n readonly random = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Seed for deterministic random generation. If not provided, uses Math.random()\n */\n readonly seed = input<number | undefined, NumberInput>(undefined, {\n transform: numberAttributeOrUndefined,\n })\n\n /**\n * Start with 'Lorem ipsum odor amet...' to first sentence of first paragraph\n *\n * @default true\n */\n readonly startWithLoremIpsum = input<boolean | undefined, Booleanish>(\n undefined,\n {\n transform: booleanAttribute,\n },\n )\n\n readonly loremIpsumOptions = computed<LoremIpsumOptions>(() => {\n return {\n avgSentencesPerParagraph: this.avgSentencesPerParagraph(),\n avgWordsPerSentence: this.avgWordsPerSentence(),\n numParagraphs: this.numParagraphs(),\n random: this.random(),\n seed: this.seed(),\n startWithLoremIpsum: this.startWithLoremIpsum(),\n }\n })\n\n readonly paragraphs = computed(() => loremIpsum(this.loremIpsumOptions()))\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}