ux4g-components-angular 1.4.1 → 1.5.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 (273) hide show
  1. package/README.md +134 -0
  2. package/dist/accessibility-bar/README.md +134 -0
  3. package/dist/accordion/README.md +134 -0
  4. package/dist/alert/README.md +134 -0
  5. package/dist/avatar/README.md +134 -0
  6. package/dist/badge/README.md +134 -0
  7. package/dist/breadcrumb/README.md +134 -0
  8. package/dist/button/README.md +134 -0
  9. package/dist/card/README.md +134 -0
  10. package/dist/carousel/README.md +134 -0
  11. package/dist/checkbox/README.md +134 -0
  12. package/dist/chip/README.md +134 -0
  13. package/dist/chip-group/README.md +134 -0
  14. package/dist/combobox/README.md +134 -0
  15. package/dist/date-time-picker/README.md +134 -0
  16. package/dist/divider/README.md +134 -0
  17. package/dist/draft-status-banner/README.md +134 -0
  18. package/dist/drawer/README.md +134 -0
  19. package/dist/dropdown/README.md +134 -0
  20. package/dist/empty-state/README.md +134 -0
  21. package/dist/feedback/README.md +134 -0
  22. package/dist/file-upload/README.md +134 -0
  23. package/dist/footer/README.md +134 -0
  24. package/dist/form-field-group/README.md +134 -0
  25. package/dist/icon-button/README.md +134 -0
  26. package/dist/image/README.md +134 -0
  27. package/dist/input/README.md +134 -0
  28. package/dist/journey-timeline/README.md +134 -0
  29. package/dist/link/README.md +134 -0
  30. package/dist/list/README.md +134 -0
  31. package/dist/mega-menu/README.md +134 -0
  32. package/dist/modal/README.md +134 -0
  33. package/dist/native/accordion/README.md +1541 -0
  34. package/dist/native/accordion/fesm2022/ux4g-components-angular-native-accordion.mjs +85 -0
  35. package/dist/native/accordion/fesm2022/ux4g-components-angular-native-accordion.mjs.map +1 -0
  36. package/dist/native/accordion/index.d.ts +6 -0
  37. package/dist/native/accordion/public-api.d.ts +3 -0
  38. package/dist/native/accordion/public-api.d.ts.map +1 -0
  39. package/dist/native/accordion/ux4g-components-angular-native-accordion.d.ts.map +1 -0
  40. package/dist/native/accordion/ux4g-native-accordion.component.d.ts +31 -0
  41. package/dist/native/accordion/ux4g-native-accordion.component.d.ts.map +1 -0
  42. package/dist/native/accordion/ux4g-native-accordion.module.d.ts +12 -0
  43. package/dist/native/accordion/ux4g-native-accordion.module.d.ts.map +1 -0
  44. package/dist/native/avatar/README.md +1541 -0
  45. package/dist/native/avatar/fesm2022/ux4g-components-angular-native-avatar.mjs +81 -0
  46. package/dist/native/avatar/fesm2022/ux4g-components-angular-native-avatar.mjs.map +1 -0
  47. package/dist/native/avatar/index.d.ts +6 -0
  48. package/dist/native/avatar/public-api.d.ts +3 -0
  49. package/dist/native/avatar/public-api.d.ts.map +1 -0
  50. package/dist/native/avatar/ux4g-components-angular-native-avatar.d.ts.map +1 -0
  51. package/dist/native/avatar/ux4g-native-avatar.component.d.ts +34 -0
  52. package/dist/native/avatar/ux4g-native-avatar.component.d.ts.map +1 -0
  53. package/dist/native/avatar/ux4g-native-avatar.module.d.ts +8 -0
  54. package/dist/native/avatar/ux4g-native-avatar.module.d.ts.map +1 -0
  55. package/dist/native/carousel/README.md +1541 -0
  56. package/dist/native/carousel/fesm2022/ux4g-components-angular-native-carousel.mjs +91 -0
  57. package/dist/native/carousel/fesm2022/ux4g-components-angular-native-carousel.mjs.map +1 -0
  58. package/dist/native/carousel/index.d.ts +6 -0
  59. package/dist/native/carousel/public-api.d.ts +3 -0
  60. package/dist/native/carousel/public-api.d.ts.map +1 -0
  61. package/dist/native/carousel/ux4g-components-angular-native-carousel.d.ts.map +1 -0
  62. package/dist/native/carousel/ux4g-native-carousel.component.d.ts +34 -0
  63. package/dist/native/carousel/ux4g-native-carousel.component.d.ts.map +1 -0
  64. package/dist/native/carousel/ux4g-native-carousel.module.d.ts +8 -0
  65. package/dist/native/carousel/ux4g-native-carousel.module.d.ts.map +1 -0
  66. package/dist/native/chip/README.md +1541 -0
  67. package/dist/native/chip/fesm2022/ux4g-components-angular-native-chip.mjs +99 -0
  68. package/dist/native/chip/fesm2022/ux4g-components-angular-native-chip.mjs.map +1 -0
  69. package/dist/native/chip/index.d.ts +6 -0
  70. package/dist/native/chip/public-api.d.ts +3 -0
  71. package/dist/native/chip/public-api.d.ts.map +1 -0
  72. package/dist/native/chip/ux4g-components-angular-native-chip.d.ts.map +1 -0
  73. package/dist/native/chip/ux4g-native-chip.component.d.ts +34 -0
  74. package/dist/native/chip/ux4g-native-chip.component.d.ts.map +1 -0
  75. package/dist/native/chip/ux4g-native-chip.module.d.ts +8 -0
  76. package/dist/native/chip/ux4g-native-chip.module.d.ts.map +1 -0
  77. package/dist/native/combobox/README.md +1541 -0
  78. package/dist/native/combobox/fesm2022/ux4g-components-angular-native-combobox.mjs +107 -0
  79. package/dist/native/combobox/fesm2022/ux4g-components-angular-native-combobox.mjs.map +1 -0
  80. package/dist/native/combobox/index.d.ts +6 -0
  81. package/dist/native/combobox/public-api.d.ts +3 -0
  82. package/dist/native/combobox/public-api.d.ts.map +1 -0
  83. package/dist/native/combobox/ux4g-components-angular-native-combobox.d.ts.map +1 -0
  84. package/dist/native/combobox/ux4g-native-combobox.component.d.ts +30 -0
  85. package/dist/native/combobox/ux4g-native-combobox.component.d.ts.map +1 -0
  86. package/dist/native/combobox/ux4g-native-combobox.module.d.ts +8 -0
  87. package/dist/native/combobox/ux4g-native-combobox.module.d.ts.map +1 -0
  88. package/dist/native/date-picker/README.md +1541 -0
  89. package/dist/native/date-picker/fesm2022/ux4g-components-angular-native-date-picker.mjs +181 -0
  90. package/dist/native/date-picker/fesm2022/ux4g-components-angular-native-date-picker.mjs.map +1 -0
  91. package/dist/native/date-picker/index.d.ts +6 -0
  92. package/dist/native/date-picker/public-api.d.ts +3 -0
  93. package/dist/native/date-picker/public-api.d.ts.map +1 -0
  94. package/dist/native/date-picker/ux4g-components-angular-native-date-picker.d.ts.map +1 -0
  95. package/dist/native/date-picker/ux4g-native-date-picker.component.d.ts +39 -0
  96. package/dist/native/date-picker/ux4g-native-date-picker.component.d.ts.map +1 -0
  97. package/dist/native/date-picker/ux4g-native-date-picker.module.d.ts +12 -0
  98. package/dist/native/date-picker/ux4g-native-date-picker.module.d.ts.map +1 -0
  99. package/dist/native/drawer/README.md +1541 -0
  100. package/dist/native/drawer/fesm2022/ux4g-components-angular-native-drawer.mjs +159 -0
  101. package/dist/native/drawer/fesm2022/ux4g-components-angular-native-drawer.mjs.map +1 -0
  102. package/dist/native/drawer/index.d.ts +6 -0
  103. package/dist/native/drawer/public-api.d.ts +3 -0
  104. package/dist/native/drawer/public-api.d.ts.map +1 -0
  105. package/dist/native/drawer/ux4g-components-angular-native-drawer.d.ts.map +1 -0
  106. package/dist/native/drawer/ux4g-native-drawer.component.d.ts +37 -0
  107. package/dist/native/drawer/ux4g-native-drawer.component.d.ts.map +1 -0
  108. package/dist/native/drawer/ux4g-native-drawer.module.d.ts +12 -0
  109. package/dist/native/drawer/ux4g-native-drawer.module.d.ts.map +1 -0
  110. package/dist/native/dropdown/README.md +1541 -0
  111. package/dist/native/dropdown/fesm2022/ux4g-components-angular-native-dropdown.mjs +108 -0
  112. package/dist/native/dropdown/fesm2022/ux4g-components-angular-native-dropdown.mjs.map +1 -0
  113. package/dist/native/dropdown/index.d.ts +6 -0
  114. package/dist/native/dropdown/public-api.d.ts +3 -0
  115. package/dist/native/dropdown/public-api.d.ts.map +1 -0
  116. package/dist/native/dropdown/ux4g-components-angular-native-dropdown.d.ts.map +1 -0
  117. package/dist/native/dropdown/ux4g-native-dropdown.component.d.ts +32 -0
  118. package/dist/native/dropdown/ux4g-native-dropdown.component.d.ts.map +1 -0
  119. package/dist/native/dropdown/ux4g-native-dropdown.module.d.ts +8 -0
  120. package/dist/native/dropdown/ux4g-native-dropdown.module.d.ts.map +1 -0
  121. package/dist/native/file-upload/README.md +1541 -0
  122. package/dist/native/file-upload/fesm2022/ux4g-components-angular-native-file-upload.mjs +193 -0
  123. package/dist/native/file-upload/fesm2022/ux4g-components-angular-native-file-upload.mjs.map +1 -0
  124. package/dist/native/file-upload/index.d.ts +6 -0
  125. package/dist/native/file-upload/public-api.d.ts +3 -0
  126. package/dist/native/file-upload/public-api.d.ts.map +1 -0
  127. package/dist/native/file-upload/ux4g-components-angular-native-file-upload.d.ts.map +1 -0
  128. package/dist/native/file-upload/ux4g-native-file-upload.component.d.ts +40 -0
  129. package/dist/native/file-upload/ux4g-native-file-upload.component.d.ts.map +1 -0
  130. package/dist/native/file-upload/ux4g-native-file-upload.module.d.ts +8 -0
  131. package/dist/native/file-upload/ux4g-native-file-upload.module.d.ts.map +1 -0
  132. package/dist/native/modal/README.md +1541 -0
  133. package/dist/native/modal/fesm2022/ux4g-components-angular-native-modal.mjs +219 -0
  134. package/dist/native/modal/fesm2022/ux4g-components-angular-native-modal.mjs.map +1 -0
  135. package/dist/native/modal/index.d.ts +6 -0
  136. package/dist/native/modal/public-api.d.ts +3 -0
  137. package/dist/native/modal/public-api.d.ts.map +1 -0
  138. package/dist/native/modal/ux4g-components-angular-native-modal.d.ts.map +1 -0
  139. package/dist/native/modal/ux4g-native-modal.component.d.ts +42 -0
  140. package/dist/native/modal/ux4g-native-modal.component.d.ts.map +1 -0
  141. package/dist/native/modal/ux4g-native-modal.module.d.ts +12 -0
  142. package/dist/native/modal/ux4g-native-modal.module.d.ts.map +1 -0
  143. package/dist/native/otp/README.md +1541 -0
  144. package/dist/native/otp/fesm2022/ux4g-components-angular-native-otp.mjs +176 -0
  145. package/dist/native/otp/fesm2022/ux4g-components-angular-native-otp.mjs.map +1 -0
  146. package/dist/native/otp/index.d.ts +6 -0
  147. package/dist/native/otp/public-api.d.ts +3 -0
  148. package/dist/native/otp/public-api.d.ts.map +1 -0
  149. package/dist/native/otp/ux4g-components-angular-native-otp.d.ts.map +1 -0
  150. package/dist/native/otp/ux4g-native-otp.component.d.ts +32 -0
  151. package/dist/native/otp/ux4g-native-otp.component.d.ts.map +1 -0
  152. package/dist/native/otp/ux4g-native-otp.module.d.ts +8 -0
  153. package/dist/native/otp/ux4g-native-otp.module.d.ts.map +1 -0
  154. package/dist/native/popover/README.md +1541 -0
  155. package/dist/native/popover/fesm2022/ux4g-components-angular-native-popover.mjs +75 -0
  156. package/dist/native/popover/fesm2022/ux4g-components-angular-native-popover.mjs.map +1 -0
  157. package/dist/native/popover/index.d.ts +6 -0
  158. package/dist/native/popover/public-api.d.ts +3 -0
  159. package/dist/native/popover/public-api.d.ts.map +1 -0
  160. package/dist/native/popover/ux4g-components-angular-native-popover.d.ts.map +1 -0
  161. package/dist/native/popover/ux4g-native-popover.component.d.ts +29 -0
  162. package/dist/native/popover/ux4g-native-popover.component.d.ts.map +1 -0
  163. package/dist/native/popover/ux4g-native-popover.module.d.ts +8 -0
  164. package/dist/native/popover/ux4g-native-popover.module.d.ts.map +1 -0
  165. package/dist/native/progress/README.md +1541 -0
  166. package/dist/native/progress/fesm2022/ux4g-components-angular-native-progress.mjs +79 -0
  167. package/dist/native/progress/fesm2022/ux4g-components-angular-native-progress.mjs.map +1 -0
  168. package/dist/native/progress/index.d.ts +6 -0
  169. package/dist/native/progress/public-api.d.ts +3 -0
  170. package/dist/native/progress/public-api.d.ts.map +1 -0
  171. package/dist/native/progress/ux4g-components-angular-native-progress.d.ts.map +1 -0
  172. package/dist/native/progress/ux4g-native-progress.component.d.ts +29 -0
  173. package/dist/native/progress/ux4g-native-progress.component.d.ts.map +1 -0
  174. package/dist/native/progress/ux4g-native-progress.module.d.ts +8 -0
  175. package/dist/native/progress/ux4g-native-progress.module.d.ts.map +1 -0
  176. package/dist/native/search/README.md +1541 -0
  177. package/dist/native/search/fesm2022/ux4g-components-angular-native-search.mjs +148 -0
  178. package/dist/native/search/fesm2022/ux4g-components-angular-native-search.mjs.map +1 -0
  179. package/dist/native/search/index.d.ts +6 -0
  180. package/dist/native/search/public-api.d.ts +3 -0
  181. package/dist/native/search/public-api.d.ts.map +1 -0
  182. package/dist/native/search/ux4g-components-angular-native-search.d.ts.map +1 -0
  183. package/dist/native/search/ux4g-native-search.component.d.ts +46 -0
  184. package/dist/native/search/ux4g-native-search.component.d.ts.map +1 -0
  185. package/dist/native/search/ux4g-native-search.module.d.ts +8 -0
  186. package/dist/native/search/ux4g-native-search.module.d.ts.map +1 -0
  187. package/dist/native/shared/README.md +1541 -0
  188. package/dist/native/shared/base-native.component.d.ts +38 -0
  189. package/dist/native/shared/base-native.component.d.ts.map +1 -0
  190. package/dist/native/shared/fesm2022/ux4g-components-angular-native-shared.mjs +113 -0
  191. package/dist/native/shared/fesm2022/ux4g-components-angular-native-shared.mjs.map +1 -0
  192. package/dist/native/shared/index.d.ts +6 -0
  193. package/dist/native/shared/public-api.d.ts +3 -0
  194. package/dist/native/shared/public-api.d.ts.map +1 -0
  195. package/dist/native/shared/render-descriptor.d.ts +8 -0
  196. package/dist/native/shared/render-descriptor.d.ts.map +1 -0
  197. package/dist/native/shared/ux4g-components-angular-native-shared.d.ts.map +1 -0
  198. package/dist/native/stepper/README.md +1541 -0
  199. package/dist/native/stepper/fesm2022/ux4g-components-angular-native-stepper.mjs +92 -0
  200. package/dist/native/stepper/fesm2022/ux4g-components-angular-native-stepper.mjs.map +1 -0
  201. package/dist/native/stepper/index.d.ts +6 -0
  202. package/dist/native/stepper/public-api.d.ts +3 -0
  203. package/dist/native/stepper/public-api.d.ts.map +1 -0
  204. package/dist/native/stepper/ux4g-components-angular-native-stepper.d.ts.map +1 -0
  205. package/dist/native/stepper/ux4g-native-stepper.component.d.ts +35 -0
  206. package/dist/native/stepper/ux4g-native-stepper.component.d.ts.map +1 -0
  207. package/dist/native/stepper/ux4g-native-stepper.module.d.ts +8 -0
  208. package/dist/native/stepper/ux4g-native-stepper.module.d.ts.map +1 -0
  209. package/dist/native/table/README.md +1541 -0
  210. package/dist/native/table/fesm2022/ux4g-components-angular-native-table.mjs +91 -0
  211. package/dist/native/table/fesm2022/ux4g-components-angular-native-table.mjs.map +1 -0
  212. package/dist/native/table/index.d.ts +6 -0
  213. package/dist/native/table/public-api.d.ts +3 -0
  214. package/dist/native/table/public-api.d.ts.map +1 -0
  215. package/dist/native/table/ux4g-components-angular-native-table.d.ts.map +1 -0
  216. package/dist/native/table/ux4g-native-table.component.d.ts +32 -0
  217. package/dist/native/table/ux4g-native-table.component.d.ts.map +1 -0
  218. package/dist/native/table/ux4g-native-table.module.d.ts +12 -0
  219. package/dist/native/table/ux4g-native-table.module.d.ts.map +1 -0
  220. package/dist/native/tabs/README.md +1541 -0
  221. package/dist/native/tabs/fesm2022/ux4g-components-angular-native-tabs.mjs +190 -0
  222. package/dist/native/tabs/fesm2022/ux4g-components-angular-native-tabs.mjs.map +1 -0
  223. package/dist/native/tabs/index.d.ts +6 -0
  224. package/dist/native/tabs/public-api.d.ts +3 -0
  225. package/dist/native/tabs/public-api.d.ts.map +1 -0
  226. package/dist/native/tabs/ux4g-components-angular-native-tabs.d.ts.map +1 -0
  227. package/dist/native/tabs/ux4g-native-tabs.component.d.ts +43 -0
  228. package/dist/native/tabs/ux4g-native-tabs.component.d.ts.map +1 -0
  229. package/dist/native/tabs/ux4g-native-tabs.module.d.ts +12 -0
  230. package/dist/native/tabs/ux4g-native-tabs.module.d.ts.map +1 -0
  231. package/dist/native/time-picker/README.md +1541 -0
  232. package/dist/native/time-picker/fesm2022/ux4g-components-angular-native-time-picker.mjs +104 -0
  233. package/dist/native/time-picker/fesm2022/ux4g-components-angular-native-time-picker.mjs.map +1 -0
  234. package/dist/native/time-picker/index.d.ts +6 -0
  235. package/dist/native/time-picker/public-api.d.ts +3 -0
  236. package/dist/native/time-picker/public-api.d.ts.map +1 -0
  237. package/dist/native/time-picker/ux4g-components-angular-native-time-picker.d.ts.map +1 -0
  238. package/dist/native/time-picker/ux4g-native-time-picker.component.d.ts +27 -0
  239. package/dist/native/time-picker/ux4g-native-time-picker.component.d.ts.map +1 -0
  240. package/dist/native/time-picker/ux4g-native-time-picker.module.d.ts +8 -0
  241. package/dist/native/time-picker/ux4g-native-time-picker.module.d.ts.map +1 -0
  242. package/dist/native/tooltip/README.md +1541 -0
  243. package/dist/native/tooltip/fesm2022/ux4g-components-angular-native-tooltip.mjs +80 -0
  244. package/dist/native/tooltip/fesm2022/ux4g-components-angular-native-tooltip.mjs.map +1 -0
  245. package/dist/native/tooltip/index.d.ts +6 -0
  246. package/dist/native/tooltip/public-api.d.ts +3 -0
  247. package/dist/native/tooltip/public-api.d.ts.map +1 -0
  248. package/dist/native/tooltip/ux4g-components-angular-native-tooltip.d.ts.map +1 -0
  249. package/dist/native/tooltip/ux4g-native-tooltip.component.d.ts +31 -0
  250. package/dist/native/tooltip/ux4g-native-tooltip.component.d.ts.map +1 -0
  251. package/dist/native/tooltip/ux4g-native-tooltip.module.d.ts +8 -0
  252. package/dist/native/tooltip/ux4g-native-tooltip.module.d.ts.map +1 -0
  253. package/dist/navbar/README.md +134 -0
  254. package/dist/otp-input/README.md +134 -0
  255. package/dist/pagination/README.md +134 -0
  256. package/dist/popover/README.md +134 -0
  257. package/dist/progress-indicator/README.md +134 -0
  258. package/dist/radio/README.md +134 -0
  259. package/dist/result-list-row/README.md +134 -0
  260. package/dist/search/README.md +134 -0
  261. package/dist/sla-progress-indicator/README.md +134 -0
  262. package/dist/slider/README.md +134 -0
  263. package/dist/slot-grid/README.md +134 -0
  264. package/dist/social-links/README.md +134 -0
  265. package/dist/spinner/README.md +134 -0
  266. package/dist/status-pipeline/README.md +134 -0
  267. package/dist/stepper/README.md +134 -0
  268. package/dist/switch/README.md +134 -0
  269. package/dist/tab/README.md +134 -0
  270. package/dist/table/README.md +134 -0
  271. package/dist/tag/README.md +134 -0
  272. package/dist/tooltip/README.md +134 -0
  273. package/package.json +176 -3
@@ -0,0 +1,80 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Input, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
+ import { generateTooltipDOM } from 'ux4g-components-web/dom-generators';
4
+ import { BaseNativeComponent, renderDescriptorToDOM } from '@ux4g-native-shared';
5
+
6
+ /**
7
+ * Angular Native Tooltip component.
8
+ * Generates the complete UX4G tooltip DOM structure internally using the shared DOM Generator.
9
+ *
10
+ * Produces a tooltip wrapper containing a trigger element with `data-ux4g-tooltip`
11
+ * and `aria-describedby`, plus a tooltip container with `role="tooltip"`, arrow element,
12
+ * and `data-placement` attribute for Runtime_JS positioning.
13
+ *
14
+ * Usage:
15
+ * ```html
16
+ * <ux4g-native-tooltip
17
+ * [text]="'Help text'"
18
+ * [placement]="'top-center'"
19
+ * [size]="'s'">
20
+ * </ux4g-native-tooltip>
21
+ * ```
22
+ */
23
+ class UX4GNativeTooltipComponent extends BaseNativeComponent {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.text = '';
27
+ this.placement = 'top-center';
28
+ this.size = 's';
29
+ }
30
+ ngOnChanges(_changes) {
31
+ this.renderComponent();
32
+ }
33
+ renderComponent() {
34
+ super.renderComponent();
35
+ const props = {
36
+ text: this.text,
37
+ placement: this.placement,
38
+ size: this.size,
39
+ };
40
+ const descriptor = generateTooltipDOM(props);
41
+ renderDescriptorToDOM(this.renderer, descriptor, this.elementRef.nativeElement);
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UX4GNativeTooltipComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: UX4GNativeTooltipComponent, isStandalone: true, selector: "ux4g-native-tooltip", inputs: { text: "text", placement: "placement", size: "size" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UX4GNativeTooltipComponent, decorators: [{
47
+ type: Component,
48
+ args: [{
49
+ selector: 'ux4g-native-tooltip',
50
+ standalone: true,
51
+ template: '',
52
+ encapsulation: ViewEncapsulation.None,
53
+ }]
54
+ }], propDecorators: { text: [{
55
+ type: Input
56
+ }], placement: [{
57
+ type: Input
58
+ }], size: [{
59
+ type: Input
60
+ }] } });
61
+
62
+ class UX4GNativeTooltipModule {
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UX4GNativeTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
64
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: UX4GNativeTooltipModule, imports: [UX4GNativeTooltipComponent], exports: [UX4GNativeTooltipComponent] }); }
65
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UX4GNativeTooltipModule }); }
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UX4GNativeTooltipModule, decorators: [{
68
+ type: NgModule,
69
+ args: [{
70
+ imports: [UX4GNativeTooltipComponent],
71
+ exports: [UX4GNativeTooltipComponent],
72
+ }]
73
+ }] });
74
+
75
+ /**
76
+ * Generated bundle index. Do not edit.
77
+ */
78
+
79
+ export { UX4GNativeTooltipComponent, UX4GNativeTooltipModule };
80
+ //# sourceMappingURL=ux4g-components-angular-native-tooltip.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux4g-components-angular-native-tooltip.mjs","sources":["../../../../src/native/tooltip/ux4g-native-tooltip.component.ts","../../../../src/native/tooltip/ux4g-native-tooltip.module.ts","../../../../src/native/tooltip/ux4g-components-angular-native-tooltip.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { generateTooltipDOM, TooltipGeneratorProps } from 'ux4g-components-web/dom-generators';\r\nimport { TooltipPlacement, TooltipSize } from 'ux4g-components-web/types';\r\nimport { BaseNativeComponent, renderDescriptorToDOM } from '@ux4g-native-shared';\r\n\r\n/**\r\n * Angular Native Tooltip component.\r\n * Generates the complete UX4G tooltip DOM structure internally using the shared DOM Generator.\r\n *\r\n * Produces a tooltip wrapper containing a trigger element with `data-ux4g-tooltip`\r\n * and `aria-describedby`, plus a tooltip container with `role=\"tooltip\"`, arrow element,\r\n * and `data-placement` attribute for Runtime_JS positioning.\r\n *\r\n * Usage:\r\n * ```html\r\n * <ux4g-native-tooltip\r\n * [text]=\"'Help text'\"\r\n * [placement]=\"'top-center'\"\r\n * [size]=\"'s'\">\r\n * </ux4g-native-tooltip>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'ux4g-native-tooltip',\r\n standalone: true,\r\n template: '',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UX4GNativeTooltipComponent extends BaseNativeComponent implements OnChanges {\r\n @Input() text: string = '';\r\n @Input() placement: TooltipPlacement = 'top-center';\r\n @Input() size: TooltipSize = 's';\r\n\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n this.renderComponent();\r\n }\r\n\r\n protected override renderComponent(): void {\r\n super.renderComponent();\r\n\r\n const props: TooltipGeneratorProps = {\r\n text: this.text,\r\n placement: this.placement,\r\n size: this.size,\r\n };\r\n\r\n const descriptor = generateTooltipDOM(props);\r\n renderDescriptorToDOM(this.renderer, descriptor, this.elementRef.nativeElement);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UX4GNativeTooltipComponent } from './ux4g-native-tooltip.component';\r\n\r\n@NgModule({\r\n imports: [UX4GNativeTooltipComponent],\r\n exports: [UX4GNativeTooltipComponent],\r\n})\r\nexport class UX4GNativeTooltipModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAWA;;;;;;;;;;;;;;;;AAgBG;AAOG,MAAO,0BAA2B,SAAQ,mBAAmB,CAAA;AANnE,IAAA,WAAA,GAAA;;QAOW,IAAA,CAAA,IAAI,GAAW,EAAE;QACjB,IAAA,CAAA,SAAS,GAAqB,YAAY;QAC1C,IAAA,CAAA,IAAI,GAAgB,GAAG;AAkBjC,IAAA;AAhBC,IAAA,WAAW,CAAC,QAAuB,EAAA;QACjC,IAAI,CAAC,eAAe,EAAE;IACxB;IAEmB,eAAe,GAAA;QAChC,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,KAAK,GAA0B;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB;AAED,QAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAC5C,QAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACjF;+GApBW,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,2LAH3B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;8BAEU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MC9BU,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAvB,uBAAuB,EAAA,OAAA,EAAA,CAHxB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC1B,0BAA0B,CAAA,EAAA,CAAA,CAAA;gHAEzB,uBAAuB,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,0BAA0B,CAAC;oBACrC,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA;;;ACND;;AAEG;;;;"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ux4g-components-angular" />
5
+ export * from './public-api';
6
+ //# sourceMappingURL=ux4g-components-angular-native-tooltip.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { UX4GNativeTooltipComponent } from './ux4g-native-tooltip.component';
2
+ export { UX4GNativeTooltipModule } from './ux4g-native-tooltip.module';
3
+ //# sourceMappingURL=public-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../../src/native/tooltip/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux4g-components-angular-native-tooltip.d.ts","sourceRoot":"","sources":["../../../src/native/tooltip/ux4g-components-angular-native-tooltip.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,cAAc,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import { TooltipPlacement, TooltipSize } from 'ux4g-components-web/types';
3
+ import { BaseNativeComponent } from '@ux4g-native-shared';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Angular Native Tooltip component.
7
+ * Generates the complete UX4G tooltip DOM structure internally using the shared DOM Generator.
8
+ *
9
+ * Produces a tooltip wrapper containing a trigger element with `data-ux4g-tooltip`
10
+ * and `aria-describedby`, plus a tooltip container with `role="tooltip"`, arrow element,
11
+ * and `data-placement` attribute for Runtime_JS positioning.
12
+ *
13
+ * Usage:
14
+ * ```html
15
+ * <ux4g-native-tooltip
16
+ * [text]="'Help text'"
17
+ * [placement]="'top-center'"
18
+ * [size]="'s'">
19
+ * </ux4g-native-tooltip>
20
+ * ```
21
+ */
22
+ export declare class UX4GNativeTooltipComponent extends BaseNativeComponent implements OnChanges {
23
+ text: string;
24
+ placement: TooltipPlacement;
25
+ size: TooltipSize;
26
+ ngOnChanges(_changes: SimpleChanges): void;
27
+ protected renderComponent(): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<UX4GNativeTooltipComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<UX4GNativeTooltipComponent, "ux4g-native-tooltip", never, { "text": { "alias": "text"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
30
+ }
31
+ //# sourceMappingURL=ux4g-native-tooltip.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux4g-native-tooltip.component.d.ts","sourceRoot":"","sources":["../../../src/native/tooltip/ux4g-native-tooltip.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,aAAa,EACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAyB,MAAM,qBAAqB,CAAC;;AAEjF;;;;;;;;;;;;;;;;GAgBG;AACH,qBAMa,0BAA2B,SAAQ,mBAAoB,YAAW,SAAS;IAC7E,IAAI,EAAE,MAAM,CAAM;IAClB,SAAS,EAAE,gBAAgB,CAAgB;IAC3C,IAAI,EAAE,WAAW,CAAO;IAEjC,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;cAIvB,eAAe,IAAI,IAAI;yCAT/B,0BAA0B;2CAA1B,0BAA0B;CAqBtC"}
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./ux4g-native-tooltip.component";
3
+ export declare class UX4GNativeTooltipModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<UX4GNativeTooltipModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UX4GNativeTooltipModule, never, [typeof i1.UX4GNativeTooltipComponent], [typeof i1.UX4GNativeTooltipComponent]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<UX4GNativeTooltipModule>;
7
+ }
8
+ //# sourceMappingURL=ux4g-native-tooltip.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux4g-native-tooltip.module.d.ts","sourceRoot":"","sources":["../../../src/native/tooltip/ux4g-native-tooltip.module.ts"],"names":[],"mappings":";;AAGA,qBAIa,uBAAuB;yCAAvB,uBAAuB;0CAAvB,uBAAuB;0CAAvB,uBAAuB;CAAG"}
@@ -1397,6 +1397,140 @@ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadc
1397
1397
 
1398
1398
  ---
1399
1399
 
1400
+ ## Native Wrappers
1401
+
1402
+ In addition to the default thin wrappers documented above, this package provides **Native Wrappers** — Angular components that internally generate the complete UX4G-compliant DOM structure. With Native Wrappers, you declare a single element with input bindings and get a fully rendered, accessible, interactive component without writing any HTML markup.
1403
+
1404
+ ### Architecture Decision
1405
+
1406
+ > **Thin Wrappers are the default export. Native Wrappers are opt-in via `/native/` sub-paths.** This decision shall not be reversed without a major version bump.
1407
+
1408
+ - Existing thin wrapper imports (e.g., `ux4g-components-angular/dropdown`) remain unchanged
1409
+ - Native Wrappers use the `/native/` sub-path convention (e.g., `ux4g-components-angular/native/dropdown`)
1410
+ - Both can coexist in the same application without conflicts
1411
+
1412
+ ### Import Convention
1413
+
1414
+ ```ts
1415
+ // Thin Wrapper (default — unchanged)
1416
+ import { UX4GDropdownModule } from 'ux4g-components-angular/dropdown';
1417
+
1418
+ // Native Wrapper (opt-in)
1419
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1420
+ ```
1421
+
1422
+ ### Usage Example
1423
+
1424
+ ```ts
1425
+ // app.component.ts
1426
+ import { Component } from '@angular/core';
1427
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1428
+
1429
+ @Component({
1430
+ selector: 'app-root',
1431
+ standalone: true,
1432
+ imports: [UX4GNativeDropdownComponent],
1433
+ template: `
1434
+ <ux4g-native-dropdown
1435
+ [options]="options"
1436
+ [(ngModel)]="selected"
1437
+ placeholder="Select..."
1438
+ size="md"
1439
+ ></ux4g-native-dropdown>
1440
+ `,
1441
+ })
1442
+ export class AppComponent {
1443
+ options = [
1444
+ { label: 'Option 1', value: '1' },
1445
+ { label: 'Option 2', value: '2' },
1446
+ { label: 'Option 3', value: '3', disabled: true },
1447
+ ];
1448
+ selected = '1';
1449
+ }
1450
+ ```
1451
+
1452
+ Compare this to the thin wrapper approach, which requires manual HTML structure:
1453
+
1454
+ ```html
1455
+ <!-- Thin wrapper — consumer provides all HTML structure -->
1456
+ <ux4g-dropdown type="selection" mode="single" size="md" state="default">
1457
+ <ux4g-dropdown-item value="1">Option 1</ux4g-dropdown-item>
1458
+ <ux4g-dropdown-item value="2">Option 2</ux4g-dropdown-item>
1459
+ <ux4g-dropdown-item value="3">Option 3</ux4g-dropdown-item>
1460
+ </ux4g-dropdown>
1461
+ ```
1462
+
1463
+ ### Available Native Wrapper Components (19)
1464
+
1465
+ | Import Path | Component |
1466
+ |---|---|
1467
+ | `ux4g-components-angular/native/dropdown` | Dropdown |
1468
+ | `ux4g-components-angular/native/accordion` | Accordion |
1469
+ | `ux4g-components-angular/native/tabs` | Tabs |
1470
+ | `ux4g-components-angular/native/modal` | Modal |
1471
+ | `ux4g-components-angular/native/carousel` | Carousel |
1472
+ | `ux4g-components-angular/native/date-picker` | Date Picker |
1473
+ | `ux4g-components-angular/native/time-picker` | Time Picker |
1474
+ | `ux4g-components-angular/native/drawer` | Drawer |
1475
+ | `ux4g-components-angular/native/combobox` | Combobox |
1476
+ | `ux4g-components-angular/native/search` | Search |
1477
+ | `ux4g-components-angular/native/otp` | OTP Input |
1478
+ | `ux4g-components-angular/native/progress` | Progress Indicator |
1479
+ | `ux4g-components-angular/native/file-upload` | File Upload |
1480
+ | `ux4g-components-angular/native/table` | Table |
1481
+ | `ux4g-components-angular/native/stepper` | Stepper |
1482
+ | `ux4g-components-angular/native/popover` | Popover |
1483
+ | `ux4g-components-angular/native/tooltip` | Tooltip |
1484
+ | `ux4g-components-angular/native/avatar` | Avatar |
1485
+ | `ux4g-components-angular/native/chip` | Chip |
1486
+
1487
+ ### Key Differences from Thin Wrappers
1488
+
1489
+ | Feature | Thin Wrapper | Native Wrapper |
1490
+ |---|---|---|
1491
+ | DOM structure | Consumer provides HTML | Generated internally |
1492
+ | Data attributes | Consumer adds manually | Included automatically |
1493
+ | ARIA attributes | Consumer manages | Built-in |
1494
+ | Interactive behaviors | Consumer wires up | Works via Runtime JS auto-init |
1495
+ | Angular Forms | N/A | `ControlValueAccessor` support |
1496
+ | Standalone | NgModule-based | `standalone: true` (NgModule also available) |
1497
+
1498
+ ### Angular Forms Integration
1499
+
1500
+ Native Wrappers for form control components implement `ControlValueAccessor`, so they work with both template-driven and reactive forms:
1501
+
1502
+ ```html
1503
+ <!-- Template-driven -->
1504
+ <ux4g-native-dropdown [options]="options" [(ngModel)]="selected"></ux4g-native-dropdown>
1505
+
1506
+ <!-- Reactive forms -->
1507
+ <ux4g-native-dropdown [options]="options" formControlName="country"></ux4g-native-dropdown>
1508
+ ```
1509
+
1510
+ ### Standalone and NgModule Support
1511
+
1512
+ Native Wrappers are declared as `standalone: true` for Angular 17+ consumers. An NgModule is also provided for backward compatibility:
1513
+
1514
+ ```ts
1515
+ // Standalone (Angular 17+)
1516
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1517
+
1518
+ @Component({
1519
+ standalone: true,
1520
+ imports: [UX4GNativeDropdownComponent],
1521
+ // ...
1522
+ })
1523
+
1524
+ // NgModule (Angular 15–16)
1525
+ import { UX4GNativeDropdownModule } from 'ux4g-components-angular/native/dropdown';
1526
+
1527
+ @NgModule({
1528
+ imports: [UX4GNativeDropdownModule],
1529
+ })
1530
+ ```
1531
+
1532
+ ---
1533
+
1400
1534
  ## Related Packages
1401
1535
 
1402
1536
  - [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
@@ -1397,6 +1397,140 @@ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadc
1397
1397
 
1398
1398
  ---
1399
1399
 
1400
+ ## Native Wrappers
1401
+
1402
+ In addition to the default thin wrappers documented above, this package provides **Native Wrappers** — Angular components that internally generate the complete UX4G-compliant DOM structure. With Native Wrappers, you declare a single element with input bindings and get a fully rendered, accessible, interactive component without writing any HTML markup.
1403
+
1404
+ ### Architecture Decision
1405
+
1406
+ > **Thin Wrappers are the default export. Native Wrappers are opt-in via `/native/` sub-paths.** This decision shall not be reversed without a major version bump.
1407
+
1408
+ - Existing thin wrapper imports (e.g., `ux4g-components-angular/dropdown`) remain unchanged
1409
+ - Native Wrappers use the `/native/` sub-path convention (e.g., `ux4g-components-angular/native/dropdown`)
1410
+ - Both can coexist in the same application without conflicts
1411
+
1412
+ ### Import Convention
1413
+
1414
+ ```ts
1415
+ // Thin Wrapper (default — unchanged)
1416
+ import { UX4GDropdownModule } from 'ux4g-components-angular/dropdown';
1417
+
1418
+ // Native Wrapper (opt-in)
1419
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1420
+ ```
1421
+
1422
+ ### Usage Example
1423
+
1424
+ ```ts
1425
+ // app.component.ts
1426
+ import { Component } from '@angular/core';
1427
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1428
+
1429
+ @Component({
1430
+ selector: 'app-root',
1431
+ standalone: true,
1432
+ imports: [UX4GNativeDropdownComponent],
1433
+ template: `
1434
+ <ux4g-native-dropdown
1435
+ [options]="options"
1436
+ [(ngModel)]="selected"
1437
+ placeholder="Select..."
1438
+ size="md"
1439
+ ></ux4g-native-dropdown>
1440
+ `,
1441
+ })
1442
+ export class AppComponent {
1443
+ options = [
1444
+ { label: 'Option 1', value: '1' },
1445
+ { label: 'Option 2', value: '2' },
1446
+ { label: 'Option 3', value: '3', disabled: true },
1447
+ ];
1448
+ selected = '1';
1449
+ }
1450
+ ```
1451
+
1452
+ Compare this to the thin wrapper approach, which requires manual HTML structure:
1453
+
1454
+ ```html
1455
+ <!-- Thin wrapper — consumer provides all HTML structure -->
1456
+ <ux4g-dropdown type="selection" mode="single" size="md" state="default">
1457
+ <ux4g-dropdown-item value="1">Option 1</ux4g-dropdown-item>
1458
+ <ux4g-dropdown-item value="2">Option 2</ux4g-dropdown-item>
1459
+ <ux4g-dropdown-item value="3">Option 3</ux4g-dropdown-item>
1460
+ </ux4g-dropdown>
1461
+ ```
1462
+
1463
+ ### Available Native Wrapper Components (19)
1464
+
1465
+ | Import Path | Component |
1466
+ |---|---|
1467
+ | `ux4g-components-angular/native/dropdown` | Dropdown |
1468
+ | `ux4g-components-angular/native/accordion` | Accordion |
1469
+ | `ux4g-components-angular/native/tabs` | Tabs |
1470
+ | `ux4g-components-angular/native/modal` | Modal |
1471
+ | `ux4g-components-angular/native/carousel` | Carousel |
1472
+ | `ux4g-components-angular/native/date-picker` | Date Picker |
1473
+ | `ux4g-components-angular/native/time-picker` | Time Picker |
1474
+ | `ux4g-components-angular/native/drawer` | Drawer |
1475
+ | `ux4g-components-angular/native/combobox` | Combobox |
1476
+ | `ux4g-components-angular/native/search` | Search |
1477
+ | `ux4g-components-angular/native/otp` | OTP Input |
1478
+ | `ux4g-components-angular/native/progress` | Progress Indicator |
1479
+ | `ux4g-components-angular/native/file-upload` | File Upload |
1480
+ | `ux4g-components-angular/native/table` | Table |
1481
+ | `ux4g-components-angular/native/stepper` | Stepper |
1482
+ | `ux4g-components-angular/native/popover` | Popover |
1483
+ | `ux4g-components-angular/native/tooltip` | Tooltip |
1484
+ | `ux4g-components-angular/native/avatar` | Avatar |
1485
+ | `ux4g-components-angular/native/chip` | Chip |
1486
+
1487
+ ### Key Differences from Thin Wrappers
1488
+
1489
+ | Feature | Thin Wrapper | Native Wrapper |
1490
+ |---|---|---|
1491
+ | DOM structure | Consumer provides HTML | Generated internally |
1492
+ | Data attributes | Consumer adds manually | Included automatically |
1493
+ | ARIA attributes | Consumer manages | Built-in |
1494
+ | Interactive behaviors | Consumer wires up | Works via Runtime JS auto-init |
1495
+ | Angular Forms | N/A | `ControlValueAccessor` support |
1496
+ | Standalone | NgModule-based | `standalone: true` (NgModule also available) |
1497
+
1498
+ ### Angular Forms Integration
1499
+
1500
+ Native Wrappers for form control components implement `ControlValueAccessor`, so they work with both template-driven and reactive forms:
1501
+
1502
+ ```html
1503
+ <!-- Template-driven -->
1504
+ <ux4g-native-dropdown [options]="options" [(ngModel)]="selected"></ux4g-native-dropdown>
1505
+
1506
+ <!-- Reactive forms -->
1507
+ <ux4g-native-dropdown [options]="options" formControlName="country"></ux4g-native-dropdown>
1508
+ ```
1509
+
1510
+ ### Standalone and NgModule Support
1511
+
1512
+ Native Wrappers are declared as `standalone: true` for Angular 17+ consumers. An NgModule is also provided for backward compatibility:
1513
+
1514
+ ```ts
1515
+ // Standalone (Angular 17+)
1516
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1517
+
1518
+ @Component({
1519
+ standalone: true,
1520
+ imports: [UX4GNativeDropdownComponent],
1521
+ // ...
1522
+ })
1523
+
1524
+ // NgModule (Angular 15–16)
1525
+ import { UX4GNativeDropdownModule } from 'ux4g-components-angular/native/dropdown';
1526
+
1527
+ @NgModule({
1528
+ imports: [UX4GNativeDropdownModule],
1529
+ })
1530
+ ```
1531
+
1532
+ ---
1533
+
1400
1534
  ## Related Packages
1401
1535
 
1402
1536
  - [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
@@ -1397,6 +1397,140 @@ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadc
1397
1397
 
1398
1398
  ---
1399
1399
 
1400
+ ## Native Wrappers
1401
+
1402
+ In addition to the default thin wrappers documented above, this package provides **Native Wrappers** — Angular components that internally generate the complete UX4G-compliant DOM structure. With Native Wrappers, you declare a single element with input bindings and get a fully rendered, accessible, interactive component without writing any HTML markup.
1403
+
1404
+ ### Architecture Decision
1405
+
1406
+ > **Thin Wrappers are the default export. Native Wrappers are opt-in via `/native/` sub-paths.** This decision shall not be reversed without a major version bump.
1407
+
1408
+ - Existing thin wrapper imports (e.g., `ux4g-components-angular/dropdown`) remain unchanged
1409
+ - Native Wrappers use the `/native/` sub-path convention (e.g., `ux4g-components-angular/native/dropdown`)
1410
+ - Both can coexist in the same application without conflicts
1411
+
1412
+ ### Import Convention
1413
+
1414
+ ```ts
1415
+ // Thin Wrapper (default — unchanged)
1416
+ import { UX4GDropdownModule } from 'ux4g-components-angular/dropdown';
1417
+
1418
+ // Native Wrapper (opt-in)
1419
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1420
+ ```
1421
+
1422
+ ### Usage Example
1423
+
1424
+ ```ts
1425
+ // app.component.ts
1426
+ import { Component } from '@angular/core';
1427
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1428
+
1429
+ @Component({
1430
+ selector: 'app-root',
1431
+ standalone: true,
1432
+ imports: [UX4GNativeDropdownComponent],
1433
+ template: `
1434
+ <ux4g-native-dropdown
1435
+ [options]="options"
1436
+ [(ngModel)]="selected"
1437
+ placeholder="Select..."
1438
+ size="md"
1439
+ ></ux4g-native-dropdown>
1440
+ `,
1441
+ })
1442
+ export class AppComponent {
1443
+ options = [
1444
+ { label: 'Option 1', value: '1' },
1445
+ { label: 'Option 2', value: '2' },
1446
+ { label: 'Option 3', value: '3', disabled: true },
1447
+ ];
1448
+ selected = '1';
1449
+ }
1450
+ ```
1451
+
1452
+ Compare this to the thin wrapper approach, which requires manual HTML structure:
1453
+
1454
+ ```html
1455
+ <!-- Thin wrapper — consumer provides all HTML structure -->
1456
+ <ux4g-dropdown type="selection" mode="single" size="md" state="default">
1457
+ <ux4g-dropdown-item value="1">Option 1</ux4g-dropdown-item>
1458
+ <ux4g-dropdown-item value="2">Option 2</ux4g-dropdown-item>
1459
+ <ux4g-dropdown-item value="3">Option 3</ux4g-dropdown-item>
1460
+ </ux4g-dropdown>
1461
+ ```
1462
+
1463
+ ### Available Native Wrapper Components (19)
1464
+
1465
+ | Import Path | Component |
1466
+ |---|---|
1467
+ | `ux4g-components-angular/native/dropdown` | Dropdown |
1468
+ | `ux4g-components-angular/native/accordion` | Accordion |
1469
+ | `ux4g-components-angular/native/tabs` | Tabs |
1470
+ | `ux4g-components-angular/native/modal` | Modal |
1471
+ | `ux4g-components-angular/native/carousel` | Carousel |
1472
+ | `ux4g-components-angular/native/date-picker` | Date Picker |
1473
+ | `ux4g-components-angular/native/time-picker` | Time Picker |
1474
+ | `ux4g-components-angular/native/drawer` | Drawer |
1475
+ | `ux4g-components-angular/native/combobox` | Combobox |
1476
+ | `ux4g-components-angular/native/search` | Search |
1477
+ | `ux4g-components-angular/native/otp` | OTP Input |
1478
+ | `ux4g-components-angular/native/progress` | Progress Indicator |
1479
+ | `ux4g-components-angular/native/file-upload` | File Upload |
1480
+ | `ux4g-components-angular/native/table` | Table |
1481
+ | `ux4g-components-angular/native/stepper` | Stepper |
1482
+ | `ux4g-components-angular/native/popover` | Popover |
1483
+ | `ux4g-components-angular/native/tooltip` | Tooltip |
1484
+ | `ux4g-components-angular/native/avatar` | Avatar |
1485
+ | `ux4g-components-angular/native/chip` | Chip |
1486
+
1487
+ ### Key Differences from Thin Wrappers
1488
+
1489
+ | Feature | Thin Wrapper | Native Wrapper |
1490
+ |---|---|---|
1491
+ | DOM structure | Consumer provides HTML | Generated internally |
1492
+ | Data attributes | Consumer adds manually | Included automatically |
1493
+ | ARIA attributes | Consumer manages | Built-in |
1494
+ | Interactive behaviors | Consumer wires up | Works via Runtime JS auto-init |
1495
+ | Angular Forms | N/A | `ControlValueAccessor` support |
1496
+ | Standalone | NgModule-based | `standalone: true` (NgModule also available) |
1497
+
1498
+ ### Angular Forms Integration
1499
+
1500
+ Native Wrappers for form control components implement `ControlValueAccessor`, so they work with both template-driven and reactive forms:
1501
+
1502
+ ```html
1503
+ <!-- Template-driven -->
1504
+ <ux4g-native-dropdown [options]="options" [(ngModel)]="selected"></ux4g-native-dropdown>
1505
+
1506
+ <!-- Reactive forms -->
1507
+ <ux4g-native-dropdown [options]="options" formControlName="country"></ux4g-native-dropdown>
1508
+ ```
1509
+
1510
+ ### Standalone and NgModule Support
1511
+
1512
+ Native Wrappers are declared as `standalone: true` for Angular 17+ consumers. An NgModule is also provided for backward compatibility:
1513
+
1514
+ ```ts
1515
+ // Standalone (Angular 17+)
1516
+ import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
1517
+
1518
+ @Component({
1519
+ standalone: true,
1520
+ imports: [UX4GNativeDropdownComponent],
1521
+ // ...
1522
+ })
1523
+
1524
+ // NgModule (Angular 15–16)
1525
+ import { UX4GNativeDropdownModule } from 'ux4g-components-angular/native/dropdown';
1526
+
1527
+ @NgModule({
1528
+ imports: [UX4GNativeDropdownModule],
1529
+ })
1530
+ ```
1531
+
1532
+ ---
1533
+
1400
1534
  ## Related Packages
1401
1535
 
1402
1536
  - [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)