@masterteam/components 0.0.107 → 0.0.108

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 (219) hide show
  1. package/.codex-tmp-pack/extract/package/README.md +63 -0
  2. package/.codex-tmp-pack/extract/package/assets/cairo.css +70 -0
  3. package/.codex-tmp-pack/extract/package/assets/common.css +2 -0
  4. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-Black.woff2 +0 -0
  5. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-Bold.woff2 +0 -0
  6. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-ExtraBold.woff2 +0 -0
  7. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-ExtraLight.woff2 +0 -0
  8. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-Light.woff2 +0 -0
  9. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-Medium.woff2 +0 -0
  10. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-Regular.woff2 +0 -0
  11. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-SemiBold.woff2 +0 -0
  12. package/.codex-tmp-pack/extract/package/assets/fonts/Cairo-VariableFont_slnt,wght.woff2 +0 -0
  13. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-Black.woff2 +0 -0
  14. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-BlackItalic.woff2 +0 -0
  15. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-Bold.woff2 +0 -0
  16. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-BoldItalic.woff2 +0 -0
  17. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-ExtraBold.woff2 +0 -0
  18. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-ExtraBoldItalic.woff2 +0 -0
  19. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-ExtraLight.woff2 +0 -0
  20. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-ExtraLightItalic.woff2 +0 -0
  21. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-Italic.woff2 +0 -0
  22. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-Light.woff2 +0 -0
  23. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-LightItalic.woff2 +0 -0
  24. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-Medium.woff2 +0 -0
  25. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-MediumItalic.woff2 +0 -0
  26. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-Regular.woff2 +0 -0
  27. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-SemiBold.woff2 +0 -0
  28. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-SemiBoldItalic.woff2 +0 -0
  29. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-Thin.woff2 +0 -0
  30. package/.codex-tmp-pack/extract/package/assets/fonts/Inter-ThinItalic.woff2 +0 -0
  31. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-Black.woff2 +0 -0
  32. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-BlackItalic.woff2 +0 -0
  33. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-Bold.woff2 +0 -0
  34. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-BoldItalic.woff2 +0 -0
  35. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-ExtraBold.woff2 +0 -0
  36. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-ExtraBoldItalic.woff2 +0 -0
  37. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-ExtraLight.woff2 +0 -0
  38. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-ExtraLightItalic.woff2 +0 -0
  39. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-Italic.woff2 +0 -0
  40. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-Light.woff2 +0 -0
  41. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-LightItalic.woff2 +0 -0
  42. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-Medium.woff2 +0 -0
  43. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-MediumItalic.woff2 +0 -0
  44. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-Regular.woff2 +0 -0
  45. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-SemiBold.woff2 +0 -0
  46. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-SemiBoldItalic.woff2 +0 -0
  47. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-Thin.woff2 +0 -0
  48. package/.codex-tmp-pack/extract/package/assets/fonts/InterDisplay-ThinItalic.woff2 +0 -0
  49. package/.codex-tmp-pack/extract/package/assets/fonts/InterVariable-Italic.woff2 +0 -0
  50. package/.codex-tmp-pack/extract/package/assets/fonts/InterVariable.woff2 +0 -0
  51. package/.codex-tmp-pack/extract/package/assets/i18n/ar.json +44 -0
  52. package/.codex-tmp-pack/extract/package/assets/i18n/en.json +44 -0
  53. package/.codex-tmp-pack/extract/package/assets/inter.css +418 -0
  54. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-avatar-text.mjs +46 -0
  55. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-avatar-text.mjs.map +1 -0
  56. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-avatar.mjs +45 -0
  57. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-avatar.mjs.map +1 -0
  58. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-breadcrumb.mjs +27 -0
  59. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-breadcrumb.mjs.map +1 -0
  60. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-business-fields.mjs +222 -0
  61. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-business-fields.mjs.map +1 -0
  62. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-button-group.mjs +20 -0
  63. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-button-group.mjs.map +1 -0
  64. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-button.mjs +52 -0
  65. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-button.mjs.map +1 -0
  66. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-card.mjs +28 -0
  67. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-card.mjs.map +1 -0
  68. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-checkbox-field.mjs +88 -0
  69. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-checkbox-field.mjs.map +1 -0
  70. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-chip.mjs +35 -0
  71. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-chip.mjs.map +1 -0
  72. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-client-page-menu.mjs +92 -0
  73. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-client-page-menu.mjs.map +1 -0
  74. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-client-page.mjs +93 -0
  75. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-client-page.mjs.map +1 -0
  76. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-color-picker-field.mjs +94 -0
  77. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-color-picker-field.mjs.map +1 -0
  78. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-confirmation.mjs +93 -0
  79. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-confirmation.mjs.map +1 -0
  80. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-date-field.mjs +94 -0
  81. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-date-field.mjs.map +1 -0
  82. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-dialog.mjs +33 -0
  83. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-dialog.mjs.map +1 -0
  84. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-drawer.mjs +69 -0
  85. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-drawer.mjs.map +1 -0
  86. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-dynamic-drawer.mjs +321 -0
  87. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +1 -0
  88. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-editor-field.mjs +96 -0
  89. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-editor-field.mjs.map +1 -0
  90. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-entities.mjs +572 -0
  91. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-entities.mjs.map +1 -0
  92. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-field-validation.mjs +103 -0
  93. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-field-validation.mjs.map +1 -0
  94. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-formula.mjs +3102 -0
  95. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-formula.mjs.map +1 -0
  96. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-icon-field.mjs +63 -0
  97. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-icon-field.mjs.map +1 -0
  98. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-list.mjs +31 -0
  99. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-list.mjs.map +1 -0
  100. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-menu.mjs +136 -0
  101. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-menu.mjs.map +1 -0
  102. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-modal.mjs +50 -0
  103. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-modal.mjs.map +1 -0
  104. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-module-summary-card.mjs +32 -0
  105. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-module-summary-card.mjs.map +1 -0
  106. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-multi-select-field.mjs +197 -0
  107. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-multi-select-field.mjs.map +1 -0
  108. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-number-field.mjs +95 -0
  109. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-number-field.mjs.map +1 -0
  110. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-page-header.mjs +42 -0
  111. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-page-header.mjs.map +1 -0
  112. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-page.mjs +35 -0
  113. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-page.mjs.map +1 -0
  114. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-paginator.mjs +44 -0
  115. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-paginator.mjs.map +1 -0
  116. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-pick-list-field.mjs +204 -0
  117. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-pick-list-field.mjs.map +1 -0
  118. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-progress.mjs +41 -0
  119. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-progress.mjs.map +1 -0
  120. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-property-filter-builder.mjs +383 -0
  121. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-property-filter-builder.mjs.map +1 -0
  122. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-radio-button-field.mjs +85 -0
  123. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-radio-button-field.mjs.map +1 -0
  124. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-radio-cards-field.mjs +68 -0
  125. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-radio-cards-field.mjs.map +1 -0
  126. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-radio-cards.mjs +74 -0
  127. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-radio-cards.mjs.map +1 -0
  128. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-select-field.mjs +258 -0
  129. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-select-field.mjs.map +1 -0
  130. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-sidebar.mjs +36 -0
  131. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-sidebar.mjs.map +1 -0
  132. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-slider-field.mjs +104 -0
  133. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-slider-field.mjs.map +1 -0
  134. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-statistic-card.mjs +21 -0
  135. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-statistic-card.mjs.map +1 -0
  136. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-table.mjs +583 -0
  137. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-table.mjs.map +1 -0
  138. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-tabs.mjs +44 -0
  139. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-tabs.mjs.map +1 -0
  140. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-text-field.mjs +159 -0
  141. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-text-field.mjs.map +1 -0
  142. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-textarea-field.mjs +92 -0
  143. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-textarea-field.mjs.map +1 -0
  144. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-toast.mjs +75 -0
  145. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-toast.mjs.map +1 -0
  146. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-toggle-field.mjs +104 -0
  147. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-toggle-field.mjs.map +1 -0
  148. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-tooltip.mjs +45 -0
  149. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-tooltip.mjs.map +1 -0
  150. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-topbar.mjs +28 -0
  151. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-topbar.mjs.map +1 -0
  152. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-tree.mjs +219 -0
  153. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-tree.mjs.map +1 -0
  154. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-upload-field.mjs +480 -0
  155. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-upload-field.mjs.map +1 -0
  156. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-user-search-field.mjs +153 -0
  157. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components-user-search-field.mjs.map +1 -0
  158. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components.mjs +1338 -0
  159. package/.codex-tmp-pack/extract/package/fesm2022/masterteam-components.mjs.map +1 -0
  160. package/.codex-tmp-pack/extract/package/types/masterteam-components-avatar-text.d.ts +23 -0
  161. package/.codex-tmp-pack/extract/package/types/masterteam-components-avatar.d.ts +21 -0
  162. package/.codex-tmp-pack/extract/package/types/masterteam-components-breadcrumb.d.ts +18 -0
  163. package/.codex-tmp-pack/extract/package/types/masterteam-components-business-fields.d.ts +114 -0
  164. package/.codex-tmp-pack/extract/package/types/masterteam-components-button-group.d.ts +8 -0
  165. package/.codex-tmp-pack/extract/package/types/masterteam-components-button.d.ts +36 -0
  166. package/.codex-tmp-pack/extract/package/types/masterteam-components-card.d.ts +14 -0
  167. package/.codex-tmp-pack/extract/package/types/masterteam-components-checkbox-field.d.ts +34 -0
  168. package/.codex-tmp-pack/extract/package/types/masterteam-components-chip.d.ts +19 -0
  169. package/.codex-tmp-pack/extract/package/types/masterteam-components-client-page-menu.d.ts +35 -0
  170. package/.codex-tmp-pack/extract/package/types/masterteam-components-client-page.d.ts +42 -0
  171. package/.codex-tmp-pack/extract/package/types/masterteam-components-color-picker-field.d.ts +35 -0
  172. package/.codex-tmp-pack/extract/package/types/masterteam-components-confirmation.d.ts +41 -0
  173. package/.codex-tmp-pack/extract/package/types/masterteam-components-date-field.d.ts +41 -0
  174. package/.codex-tmp-pack/extract/package/types/masterteam-components-dialog.d.ts +12 -0
  175. package/.codex-tmp-pack/extract/package/types/masterteam-components-drawer.d.ts +30 -0
  176. package/.codex-tmp-pack/extract/package/types/masterteam-components-dynamic-drawer.d.ts +93 -0
  177. package/.codex-tmp-pack/extract/package/types/masterteam-components-editor-field.d.ts +34 -0
  178. package/.codex-tmp-pack/extract/package/types/masterteam-components-entities.d.ts +326 -0
  179. package/.codex-tmp-pack/extract/package/types/masterteam-components-field-validation.d.ts +13 -0
  180. package/.codex-tmp-pack/extract/package/types/masterteam-components-formula.d.ts +651 -0
  181. package/.codex-tmp-pack/extract/package/types/masterteam-components-icon-field.d.ts +27 -0
  182. package/.codex-tmp-pack/extract/package/types/masterteam-components-list.d.ts +18 -0
  183. package/.codex-tmp-pack/extract/package/types/masterteam-components-menu.d.ts +55 -0
  184. package/.codex-tmp-pack/extract/package/types/masterteam-components-modal.d.ts +18 -0
  185. package/.codex-tmp-pack/extract/package/types/masterteam-components-module-summary-card.d.ts +17 -0
  186. package/.codex-tmp-pack/extract/package/types/masterteam-components-multi-select-field.d.ts +74 -0
  187. package/.codex-tmp-pack/extract/package/types/masterteam-components-number-field.d.ts +42 -0
  188. package/.codex-tmp-pack/extract/package/types/masterteam-components-page-header.d.ts +30 -0
  189. package/.codex-tmp-pack/extract/package/types/masterteam-components-page.d.ts +26 -0
  190. package/.codex-tmp-pack/extract/package/types/masterteam-components-paginator.d.ts +20 -0
  191. package/.codex-tmp-pack/extract/package/types/masterteam-components-pick-list-field.d.ts +60 -0
  192. package/.codex-tmp-pack/extract/package/types/masterteam-components-progress.d.ts +20 -0
  193. package/.codex-tmp-pack/extract/package/types/masterteam-components-property-filter-builder.d.ts +90 -0
  194. package/.codex-tmp-pack/extract/package/types/masterteam-components-radio-button-field.d.ts +41 -0
  195. package/.codex-tmp-pack/extract/package/types/masterteam-components-radio-cards-field.d.ts +30 -0
  196. package/.codex-tmp-pack/extract/package/types/masterteam-components-radio-cards.d.ts +33 -0
  197. package/.codex-tmp-pack/extract/package/types/masterteam-components-select-field.d.ts +84 -0
  198. package/.codex-tmp-pack/extract/package/types/masterteam-components-sidebar.d.ts +28 -0
  199. package/.codex-tmp-pack/extract/package/types/masterteam-components-slider-field.d.ts +45 -0
  200. package/.codex-tmp-pack/extract/package/types/masterteam-components-statistic-card.d.ts +17 -0
  201. package/.codex-tmp-pack/extract/package/types/masterteam-components-table.d.ts +207 -0
  202. package/.codex-tmp-pack/extract/package/types/masterteam-components-tabs.d.ts +23 -0
  203. package/.codex-tmp-pack/extract/package/types/masterteam-components-text-field.d.ts +44 -0
  204. package/.codex-tmp-pack/extract/package/types/masterteam-components-textarea-field.d.ts +38 -0
  205. package/.codex-tmp-pack/extract/package/types/masterteam-components-toast.d.ts +26 -0
  206. package/.codex-tmp-pack/extract/package/types/masterteam-components-toggle-field.d.ts +41 -0
  207. package/.codex-tmp-pack/extract/package/types/masterteam-components-tooltip.d.ts +9 -0
  208. package/.codex-tmp-pack/extract/package/types/masterteam-components-topbar.d.ts +17 -0
  209. package/.codex-tmp-pack/extract/package/types/masterteam-components-tree.d.ts +98 -0
  210. package/.codex-tmp-pack/extract/package/types/masterteam-components-upload-field.d.ts +77 -0
  211. package/.codex-tmp-pack/extract/package/types/masterteam-components-user-search-field.d.ts +61 -0
  212. package/.codex-tmp-pack/extract/package/types/masterteam-components.d.ts +780 -0
  213. package/.codex-tmp-pack/masterteam-components-0.0.108.tgz +0 -0
  214. package/fesm2022/masterteam-components-number-field.mjs +2 -2
  215. package/fesm2022/masterteam-components-number-field.mjs.map +1 -1
  216. package/fesm2022/masterteam-components-slider-field.mjs +2 -2
  217. package/fesm2022/masterteam-components-slider-field.mjs.map +1 -1
  218. package/fesm2022/masterteam-components.mjs.map +1 -1
  219. package/package.json +16 -16
@@ -0,0 +1,222 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, signal, inject, DestroyRef, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { Validators, NgControl, FormsModule } from '@angular/forms';
5
+ import { SelectField } from '@masterteam/components/select-field';
6
+ import { MultiSelectField } from '@masterteam/components/multi-select-field';
7
+ import { FieldValidation } from '@masterteam/components/field-validation';
8
+ import { HttpClient } from '@angular/common/http';
9
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
+ import { finalize, catchError, of } from 'rxjs';
11
+
12
+ class SchemaConnectionField {
13
+ // ============================================================================
14
+ // Inputs
15
+ // ============================================================================
16
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
17
+ placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
18
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
19
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
20
+ filter = input(true, ...(ngDevMode ? [{ debugName: "filter" }] : []));
21
+ /**
22
+ * Full connection configuration object from the API.
23
+ * Includes `targetLevelId`, `sourceLevels[]`, `payloadTemplate`, etc.
24
+ */
25
+ configuration = input.required(...(ngDevMode ? [{ debugName: "configuration" }] : []));
26
+ /**
27
+ * Optional HttpContext for API requests (e.g. to set base URL behavior).
28
+ */
29
+ context = input(undefined, ...(ngDevMode ? [{ debugName: "context" }] : []));
30
+ // ============================================================================
31
+ // Internal State
32
+ // ============================================================================
33
+ /** The full ConnectionPayload value */
34
+ value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
35
+ disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
36
+ /** Per-source-level state: options + loading */
37
+ sourceLevelStates = signal([], ...(ngDevMode ? [{ debugName: "sourceLevelStates" }] : []));
38
+ /** Mutable selections per source level: sourceLevelId -> selected value */
39
+ selections = {};
40
+ requiredValidator = Validators.required;
41
+ onTouched = () => { };
42
+ onModelChange = () => { };
43
+ ngControl = null;
44
+ http = inject(HttpClient);
45
+ destroyRef = inject(DestroyRef);
46
+ /**
47
+ * Source levels from configuration.
48
+ */
49
+ sourceLevels = computed(() => {
50
+ return this.configuration()?.sourceLevels ?? [];
51
+ }, ...(ngDevMode ? [{ debugName: "sourceLevels" }] : []));
52
+ /**
53
+ * Percentage width for each dropdown, evenly divided.
54
+ */
55
+ dropdownWidth = computed(() => {
56
+ const count = this.sourceLevels().length;
57
+ if (count <= 0)
58
+ return '100%';
59
+ return `${100 / count}%`;
60
+ }, ...(ngDevMode ? [{ debugName: "dropdownWidth" }] : []));
61
+ constructor() {
62
+ this.ngControl = inject(NgControl, { self: true, optional: true });
63
+ if (this.ngControl) {
64
+ this.ngControl.valueAccessor = this;
65
+ }
66
+ effect(() => {
67
+ if (this.ngControl?.control && this.required()) {
68
+ this.ngControl.control.addValidators(Validators.required);
69
+ this.ngControl.control.updateValueAndValidity();
70
+ }
71
+ });
72
+ // Load options for each source level when configuration changes
73
+ effect(() => {
74
+ const levels = this.sourceLevels();
75
+ if (!levels.length)
76
+ return;
77
+ // Everything below must NOT create signal dependencies,
78
+ // only sourceLevels() (→ configuration) should trigger this effect.
79
+ untracked(() => {
80
+ // Initialize per-source states + selections
81
+ this.sourceLevelStates.set(levels.map((source) => ({
82
+ source,
83
+ options: [],
84
+ loading: false,
85
+ })));
86
+ for (const source of levels) {
87
+ if (!(source.levelId in this.selections)) {
88
+ this.selections[source.levelId] = source.allowManyToMany
89
+ ? []
90
+ : null;
91
+ }
92
+ }
93
+ // Distribute existing value to selections
94
+ this.distributeToSelections(this.value());
95
+ // Load options for each source level
96
+ for (const source of levels) {
97
+ this.loadOptions(source);
98
+ }
99
+ });
100
+ });
101
+ }
102
+ // ============================================================================
103
+ // Option Loading (per source level)
104
+ // ============================================================================
105
+ loadOptions(source) {
106
+ this.updateSourceState(source.levelId, { loading: true });
107
+ const ctx = this.context();
108
+ const payload = {
109
+ contextKey: `level:${source.levelId}`,
110
+ projection: 'Flat',
111
+ propertyKeys: ['name'],
112
+ };
113
+ this.http
114
+ .post('fetch/query', payload, {
115
+ ...(ctx ? { context: ctx } : {}),
116
+ })
117
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.updateSourceState(source.levelId, { loading: false })), catchError((err) => {
118
+ console.error(`Connection options load failed for ${source.levelKey}:`, err);
119
+ return of({ data: { records: [] } });
120
+ }))
121
+ .subscribe((response) => {
122
+ const options = (response?.data?.records ?? [])
123
+ .filter((record) => record?.id != null)
124
+ .map((record) => ({
125
+ ...record,
126
+ id: record.id,
127
+ name: record.name,
128
+ }));
129
+ this.updateSourceState(source.levelId, {
130
+ options,
131
+ loading: false,
132
+ });
133
+ });
134
+ }
135
+ updateSourceState(levelId, patch) {
136
+ this.sourceLevelStates.update((states) => states.map((s) => s.source.levelId === levelId ? { ...s, ...patch } : s));
137
+ }
138
+ // ============================================================================
139
+ // Value Handling
140
+ // ============================================================================
141
+ /**
142
+ * Single handler — no params. Reads all selections, builds the combined payload.
143
+ */
144
+ syncValue() {
145
+ const cfg = this.configuration();
146
+ const states = this.sourceLevelStates();
147
+ const sources = [];
148
+ for (const state of states) {
149
+ const val = this.selections[state.source.levelId];
150
+ if (val == null)
151
+ continue;
152
+ if (state.source.allowManyToMany && Array.isArray(val)) {
153
+ for (const id of val) {
154
+ sources.push({
155
+ sourceLevelId: state.source.levelId,
156
+ sourceLevelDataId: id,
157
+ });
158
+ }
159
+ }
160
+ else if (typeof val === 'number') {
161
+ sources.push({
162
+ sourceLevelId: state.source.levelId,
163
+ sourceLevelDataId: val,
164
+ });
165
+ }
166
+ }
167
+ const payload = sources.length > 0 ? { levelId: cfg.targetLevelId, sources } : null;
168
+ this.value.set(payload);
169
+ this.onModelChange(payload);
170
+ this.onTouched();
171
+ }
172
+ distributeToSelections(payload) {
173
+ const states = this.sourceLevelStates();
174
+ for (const state of states) {
175
+ const ids = (payload?.sources ?? [])
176
+ .filter((s) => s.sourceLevelId === state.source.levelId)
177
+ .map((s) => s.sourceLevelDataId);
178
+ this.selections[state.source.levelId] = state.source.allowManyToMany
179
+ ? ids
180
+ : (ids[0] ?? null);
181
+ }
182
+ }
183
+ // ============================================================================
184
+ // ControlValueAccessor
185
+ // ============================================================================
186
+ writeValue(value) {
187
+ if (typeof value === 'string') {
188
+ try {
189
+ value = JSON.parse(value);
190
+ }
191
+ catch {
192
+ value = null;
193
+ }
194
+ }
195
+ this.value.set(value ?? null);
196
+ this.distributeToSelections(value ?? null);
197
+ }
198
+ registerOnChange(fn) {
199
+ this.onModelChange = fn;
200
+ }
201
+ registerOnTouched(fn) {
202
+ this.onTouched = fn;
203
+ }
204
+ setDisabledState(disabled) {
205
+ this.disabled.set(disabled);
206
+ }
207
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: SchemaConnectionField, deps: [], target: i0.ɵɵFactoryTarget.Component });
208
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: SchemaConnectionField, isStandalone: true, selector: "mt-schema-connection-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", 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 }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "grid gap-1" }, ngImport: i0, template: "<!-- @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n} -->\r\n\r\n<div class=\"flex gap-4 w-full\">\r\n @for (state of sourceLevelStates(); track state.source.levelId) {\r\n <div [style.width]=\"dropdownWidth()\" class=\"min-w-0\">\r\n @if (sourceLevelStates().length > 1) {\r\n <span class=\"text-sm text-muted-color mb-1 block truncate\">\r\n {{ state.source.name?.en || state.source.levelKey }}\r\n </span>\r\n }\r\n\r\n @if (state.source.allowManyToMany) {\r\n <mt-multi-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[state.source.levelId]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [showClear]=\"true\"\r\n display=\"chip\"\r\n />\r\n } @else {\r\n <mt-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[state.source.levelId]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [loading]=\"state.loading\"\r\n [showClear]=\"true\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: MultiSelectField, selector: "mt-multi-select-field", inputs: ["field", "label", "placeholder", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "display", "required", "maxSelectedLabels", "group", "optionGroupLabel", "optionGroupChildren", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
209
+ }
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: SchemaConnectionField, decorators: [{
211
+ type: Component,
212
+ args: [{ selector: 'mt-schema-connection-field', standalone: true, imports: [FormsModule, SelectField, MultiSelectField, FieldValidation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
213
+ class: 'grid gap-1',
214
+ }, template: "<!-- @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n} -->\r\n\r\n<div class=\"flex gap-4 w-full\">\r\n @for (state of sourceLevelStates(); track state.source.levelId) {\r\n <div [style.width]=\"dropdownWidth()\" class=\"min-w-0\">\r\n @if (sourceLevelStates().length > 1) {\r\n <span class=\"text-sm text-muted-color mb-1 block truncate\">\r\n {{ state.source.name?.en || state.source.levelKey }}\r\n </span>\r\n }\r\n\r\n @if (state.source.allowManyToMany) {\r\n <mt-multi-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[state.source.levelId]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [showClear]=\"true\"\r\n display=\"chip\"\r\n />\r\n } @else {\r\n <mt-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[state.source.levelId]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [loading]=\"state.loading\"\r\n [showClear]=\"true\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n" }]
215
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], configuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "configuration", required: true }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: false }] }] } });
216
+
217
+ /**
218
+ * Generated bundle index. Do not edit.
219
+ */
220
+
221
+ export { SchemaConnectionField };
222
+ //# sourceMappingURL=masterteam-components-business-fields.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-business-fields.mjs","sources":["../../../../packages/masterteam/components/business-fields/schema-connection-field/schema-connection-field.ts","../../../../packages/masterteam/components/business-fields/schema-connection-field/schema-connection-field.html","../../../../packages/masterteam/components/business-fields/masterteam-components-business-fields.ts"],"sourcesContent":["import {\r\n Component,\r\n signal,\r\n input,\r\n computed,\r\n inject,\r\n ChangeDetectionStrategy,\r\n effect,\r\n untracked,\r\n DestroyRef,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { MultiSelectField } from '@masterteam/components/multi-select-field';\r\nimport { FieldValidation } from '@masterteam/components/field-validation';\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { finalize, catchError, of } from 'rxjs';\r\n\r\n// ============================================================================\r\n// Types\r\n// ============================================================================\r\n\r\n/**\r\n * One source level inside connection configuration.\r\n * Comes from `field.propertyMetadata.configuration.sourceLevels[]`\r\n */\r\nexport interface ConnectionSourceLevel {\r\n levelId: number;\r\n levelKey: string;\r\n name: { en?: string; ar?: string; [k: string]: string | undefined };\r\n connectionId: number;\r\n isOptional: boolean;\r\n allowManyToMany: boolean;\r\n supportWeights: boolean;\r\n optionsQuery: {\r\n path: string;\r\n method?: string;\r\n query?: Record<string, unknown>;\r\n };\r\n}\r\n\r\n/**\r\n * Full connection configuration from `field.propertyMetadata.configuration`.\r\n * This is passed as a single input to the component.\r\n */\r\nexport interface SchemaConnectionConfig {\r\n targetLevelId: number;\r\n sourceLevelId?: number;\r\n propertyKey?: string;\r\n valueMode?: string;\r\n sourceLevels: ConnectionSourceLevel[];\r\n payloadTemplate?: { levelId: number; sources: any[] };\r\n sourceItemShape?: Record<string, string>;\r\n}\r\n\r\n/** One selected source in the connection payload */\r\nexport interface ConnectionSource {\r\n sourceLevelId: number;\r\n sourceLevelDataId: number;\r\n}\r\n\r\n/** The value shape for a connection field */\r\nexport interface ConnectionPayload {\r\n levelId: number;\r\n sources: ConnectionSource[];\r\n}\r\n\r\n/**\r\n * Internal state tracked per source level dropdown.\r\n */\r\nexport interface SourceLevelState {\r\n source: ConnectionSourceLevel;\r\n options: any[];\r\n loading: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-schema-connection-field',\r\n standalone: true,\r\n imports: [FormsModule, SelectField, MultiSelectField, FieldValidation],\r\n templateUrl: './schema-connection-field.html',\r\n styleUrls: ['./schema-connection-field.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'grid gap-1',\r\n },\r\n})\r\nexport class SchemaConnectionField implements ControlValueAccessor {\r\n // ============================================================================\r\n // Inputs\r\n // ============================================================================\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string>('');\r\n readonly readonly = input<boolean>(false);\r\n readonly required = input<boolean>(false);\r\n readonly filter = input<boolean>(true);\r\n\r\n /**\r\n * Full connection configuration object from the API.\r\n * Includes `targetLevelId`, `sourceLevels[]`, `payloadTemplate`, etc.\r\n */\r\n readonly configuration = input.required<SchemaConnectionConfig>();\r\n\r\n /**\r\n * Optional HttpContext for API requests (e.g. to set base URL behavior).\r\n */\r\n readonly context = input<HttpContext | undefined>(undefined);\r\n\r\n // ============================================================================\r\n // Internal State\r\n // ============================================================================\r\n\r\n /** The full ConnectionPayload value */\r\n value = signal<ConnectionPayload | null>(null);\r\n disabled = signal<boolean>(false);\r\n\r\n /** Per-source-level state: options + loading */\r\n sourceLevelStates = signal<SourceLevelState[]>([]);\r\n\r\n /** Mutable selections per source level: sourceLevelId -> selected value */\r\n selections: Record<number, any> = {};\r\n\r\n requiredValidator = Validators.required;\r\n onTouched: () => void = () => {};\r\n onModelChange: (value: ConnectionPayload | null) => void = () => {};\r\n\r\n public ngControl: NgControl | null = null;\r\n private http = inject(HttpClient);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n /**\r\n * Source levels from configuration.\r\n */\r\n readonly sourceLevels = computed<ConnectionSourceLevel[]>(() => {\r\n return this.configuration()?.sourceLevels ?? [];\r\n });\r\n\r\n /**\r\n * Percentage width for each dropdown, evenly divided.\r\n */\r\n readonly dropdownWidth = computed<string>(() => {\r\n const count = this.sourceLevels().length;\r\n if (count <= 0) return '100%';\r\n return `${100 / count}%`;\r\n });\r\n\r\n constructor() {\r\n this.ngControl = inject(NgControl, { self: true, optional: true });\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n effect(() => {\r\n if (this.ngControl?.control && this.required()) {\r\n this.ngControl.control.addValidators(Validators.required);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n });\r\n\r\n // Load options for each source level when configuration changes\r\n effect(() => {\r\n const levels = this.sourceLevels();\r\n if (!levels.length) return;\r\n\r\n // Everything below must NOT create signal dependencies,\r\n // only sourceLevels() (→ configuration) should trigger this effect.\r\n untracked(() => {\r\n // Initialize per-source states + selections\r\n this.sourceLevelStates.set(\r\n levels.map((source) => ({\r\n source,\r\n options: [],\r\n loading: false,\r\n })),\r\n );\r\n\r\n for (const source of levels) {\r\n if (!(source.levelId in this.selections)) {\r\n this.selections[source.levelId] = source.allowManyToMany\r\n ? []\r\n : null;\r\n }\r\n }\r\n\r\n // Distribute existing value to selections\r\n this.distributeToSelections(this.value());\r\n\r\n // Load options for each source level\r\n for (const source of levels) {\r\n this.loadOptions(source);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Option Loading (per source level)\r\n // ============================================================================\r\n\r\n private loadOptions(source: ConnectionSourceLevel): void {\r\n this.updateSourceState(source.levelId, { loading: true });\r\n\r\n const ctx = this.context();\r\n const payload = {\r\n contextKey: `level:${source.levelId}`,\r\n projection: 'Flat',\r\n propertyKeys: ['name'],\r\n };\r\n\r\n this.http\r\n .post<unknown>('fetch/query', payload, {\r\n ...(ctx ? { context: ctx } : {}),\r\n })\r\n .pipe(\r\n takeUntilDestroyed(this.destroyRef),\r\n finalize(() =>\r\n this.updateSourceState(source.levelId, { loading: false }),\r\n ),\r\n catchError((err) => {\r\n console.error(\r\n `Connection options load failed for ${source.levelKey}:`,\r\n err,\r\n );\r\n return of({ data: { records: [] } });\r\n }),\r\n )\r\n .subscribe((response: any) => {\r\n const options = (response?.data?.records ?? [])\r\n .filter((record: any) => record?.id != null)\r\n .map((record: any) => ({\r\n ...record,\r\n id: record.id,\r\n name: record.name,\r\n }));\r\n\r\n this.updateSourceState(source.levelId, {\r\n options,\r\n loading: false,\r\n });\r\n });\r\n }\r\n\r\n private updateSourceState(\r\n levelId: number,\r\n patch: Partial<Pick<SourceLevelState, 'options' | 'loading'>>,\r\n ): void {\r\n this.sourceLevelStates.update((states) =>\r\n states.map((s) =>\r\n s.source.levelId === levelId ? { ...s, ...patch } : s,\r\n ),\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // Value Handling\r\n // ============================================================================\r\n\r\n /**\r\n * Single handler — no params. Reads all selections, builds the combined payload.\r\n */\r\n syncValue(): void {\r\n const cfg = this.configuration();\r\n const states = this.sourceLevelStates();\r\n const sources: ConnectionSource[] = [];\r\n\r\n for (const state of states) {\r\n const val = this.selections[state.source.levelId];\r\n if (val == null) continue;\r\n\r\n if (state.source.allowManyToMany && Array.isArray(val)) {\r\n for (const id of val) {\r\n sources.push({\r\n sourceLevelId: state.source.levelId,\r\n sourceLevelDataId: id,\r\n });\r\n }\r\n } else if (typeof val === 'number') {\r\n sources.push({\r\n sourceLevelId: state.source.levelId,\r\n sourceLevelDataId: val,\r\n });\r\n }\r\n }\r\n\r\n const payload: ConnectionPayload | null =\r\n sources.length > 0 ? { levelId: cfg.targetLevelId, sources } : null;\r\n\r\n this.value.set(payload);\r\n this.onModelChange(payload);\r\n this.onTouched();\r\n }\r\n\r\n private distributeToSelections(payload: ConnectionPayload | null): void {\r\n const states = this.sourceLevelStates();\r\n for (const state of states) {\r\n const ids = (payload?.sources ?? [])\r\n .filter((s) => s.sourceLevelId === state.source.levelId)\r\n .map((s) => s.sourceLevelDataId);\r\n\r\n this.selections[state.source.levelId] = state.source.allowManyToMany\r\n ? ids\r\n : (ids[0] ?? null);\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // ControlValueAccessor\r\n // ============================================================================\r\n\r\n writeValue(value: ConnectionPayload | string | null): void {\r\n if (typeof value === 'string') {\r\n try {\r\n value = JSON.parse(value) as ConnectionPayload;\r\n } catch {\r\n value = null;\r\n }\r\n }\r\n this.value.set(value ?? null);\r\n this.distributeToSelections(value ?? null);\r\n }\r\n\r\n registerOnChange(fn: (value: ConnectionPayload | null) => void): void {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled.set(disabled);\r\n }\r\n}\r\n","<!-- @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n} -->\r\n\r\n<div class=\"flex gap-4 w-full\">\r\n @for (state of sourceLevelStates(); track state.source.levelId) {\r\n <div [style.width]=\"dropdownWidth()\" class=\"min-w-0\">\r\n @if (sourceLevelStates().length > 1) {\r\n <span class=\"text-sm text-muted-color mb-1 block truncate\">\r\n {{ state.source.name?.en || state.source.levelKey }}\r\n </span>\r\n }\r\n\r\n @if (state.source.allowManyToMany) {\r\n <mt-multi-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[state.source.levelId]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [showClear]=\"true\"\r\n display=\"chip\"\r\n />\r\n } @else {\r\n <mt-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[state.source.levelId]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [loading]=\"state.loading\"\r\n [showClear]=\"true\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from 'primeng/buttongroup';
4
+ import { ButtonGroupModule } from 'primeng/buttongroup';
5
+
6
+ class ButtonGroup {
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: ButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.3", type: ButtonGroup, isStandalone: true, selector: "mt-buttonGroup, mt-buttongroup, mt-button-group", ngImport: i0, template: "<p-buttongroup>\r\n <ng-content></ng-content>\r\n</p-buttongroup>\r\n", styles: [":host ::ng-deep .p-buttongroup mt-button:first-of-type:not(:only-of-type) p-button .p-button{border-start-end-radius:0;border-end-end-radius:0}:host ::ng-deep .p-buttongroup mt-button:last-of-type:not(:only-of-type) p-button .p-button{border-start-start-radius:0;border-end-start-radius:0}:host ::ng-deep .p-buttongroup mt-button:not(:first-of-type):not(:last-of-type) p-button .p-button{border-radius:0}:host ::ng-deep .p-buttongroup mt-button:not(:last-child) p-button .p-button,:host ::ng-deep .p-buttongroup mt-button:not(:last-child) p-button .p-button:hover{border-right:0 none}\n"], dependencies: [{ kind: "ngmodule", type: ButtonGroupModule }, { kind: "component", type: i1.ButtonGroup, selector: "p-buttonGroup, p-buttongroup, p-button-group" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: ButtonGroup, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'mt-buttonGroup, mt-buttongroup, mt-button-group', standalone: true, imports: [ButtonGroupModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-buttongroup>\r\n <ng-content></ng-content>\r\n</p-buttongroup>\r\n", styles: [":host ::ng-deep .p-buttongroup mt-button:first-of-type:not(:only-of-type) p-button .p-button{border-start-end-radius:0;border-end-end-radius:0}:host ::ng-deep .p-buttongroup mt-button:last-of-type:not(:only-of-type) p-button .p-button{border-start-start-radius:0;border-end-start-radius:0}:host ::ng-deep .p-buttongroup mt-button:not(:first-of-type):not(:last-of-type) p-button .p-button{border-radius:0}:host ::ng-deep .p-buttongroup mt-button:not(:last-child) p-button .p-button,:host ::ng-deep .p-buttongroup mt-button:not(:last-child) p-button .p-button:hover{border-right:0 none}\n"] }]
13
+ }] });
14
+
15
+ /**
16
+ * Generated bundle index. Do not edit.
17
+ */
18
+
19
+ export { ButtonGroup };
20
+ //# sourceMappingURL=masterteam-components-button-group.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-button-group.mjs","sources":["../../../../packages/masterteam/components/button-group/button-group.ts","../../../../packages/masterteam/components/button-group/button-group.html","../../../../packages/masterteam/components/button-group/masterteam-components-button-group.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { ButtonGroupModule } from 'primeng/buttongroup';\r\n\r\n@Component({\r\n selector: 'mt-buttonGroup, mt-buttongroup, mt-button-group',\r\n standalone: true,\r\n imports: [ButtonGroupModule],\r\n templateUrl: './button-group.html',\r\n styleUrls: ['./button-group.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ButtonGroup {}\r\n","<p-buttongroup>\r\n <ng-content></ng-content>\r\n</p-buttongroup>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXxB,wEAGA,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGY,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKhB,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;+BACE,iDAAiD,EAAA,UAAA,EAC/C,IAAI,EAAA,OAAA,EACP,CAAC,iBAAiB,CAAC,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wEAAA,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA;;;AETjD;;AAEG;;;;"}
@@ -0,0 +1,52 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, output, Component } from '@angular/core';
3
+ import * as i1 from 'primeng/button';
4
+ import { ButtonModule } from 'primeng/button';
5
+ import { Icon } from '@masterteam/icons';
6
+ import { Tooltip } from '@masterteam/components/tooltip';
7
+
8
+ class Button {
9
+ // eslint-disable-next-line @angular-eslint/no-input-rename
10
+ iconText = input(undefined, { ...(ngDevMode ? { debugName: "iconText" } : {}), alias: 'icon' });
11
+ label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
12
+ tooltip = input(...(ngDevMode ? [undefined, { debugName: "tooltip" }] : []));
13
+ class = input('', ...(ngDevMode ? [{ debugName: "class" }] : []));
14
+ type = input('button', ...(ngDevMode ? [{ debugName: "type" }] : []));
15
+ styleClass = input('', ...(ngDevMode ? [{ debugName: "styleClass" }] : []));
16
+ severity = input(...(ngDevMode ? [undefined, { debugName: "severity" }] : []));
17
+ badge = input(...(ngDevMode ? [undefined, { debugName: "badge" }] : []));
18
+ variant = input(...(ngDevMode ? [undefined, { debugName: "variant" }] : []));
19
+ badgeSeverity = input('secondary', ...(ngDevMode ? [{ debugName: "badgeSeverity" }] : []));
20
+ size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : []));
21
+ iconPos = input(...(ngDevMode ? [undefined, { debugName: "iconPos" }] : []));
22
+ autofocus = input(false, { ...(ngDevMode ? { debugName: "autofocus" } : {}), transform: booleanAttribute });
23
+ fluid = input(false, { ...(ngDevMode ? { debugName: "fluid" } : {}), transform: booleanAttribute });
24
+ raised = input(false, { ...(ngDevMode ? { debugName: "raised" } : {}), transform: booleanAttribute });
25
+ rounded = input(false, { ...(ngDevMode ? { debugName: "rounded" } : {}), transform: booleanAttribute });
26
+ text = input(false, { ...(ngDevMode ? { debugName: "text" } : {}), transform: booleanAttribute });
27
+ plain = input(false, { ...(ngDevMode ? { debugName: "plain" } : {}), transform: booleanAttribute });
28
+ outlined = input(false, { ...(ngDevMode ? { debugName: "outlined" } : {}), transform: booleanAttribute });
29
+ link = input(false, { ...(ngDevMode ? { debugName: "link" } : {}), transform: booleanAttribute });
30
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
31
+ loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : {}), transform: booleanAttribute });
32
+ pInputs = input(...(ngDevMode ? [undefined, { debugName: "pInputs" }] : []));
33
+ onClick = output();
34
+ onFocus = output();
35
+ onBlur = output();
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: Button, isStandalone: true, selector: "mt-button", inputs: { iconText: { classPropertyName: "iconText", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, badgeSeverity: { classPropertyName: "badgeSeverity", publicName: "badgeSeverity", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconPos: { classPropertyName: "iconPos", publicName: "iconPos", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, plain: { classPropertyName: "plain", publicName: "plain", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, pInputs: { classPropertyName: "pInputs", publicName: "pInputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { properties: { "class.w-full": "fluid()" }, classAttribute: "grid gap-1" }, ngImport: i0, template: "<p-button\r\n [fluid]=\"fluid()\"\r\n [severity]=\"severity()\"\r\n [size]=\"size()\"\r\n [label]=\"label()\"\r\n [mtTooltip]=\"tooltip()\"\r\n tooltipPosition=\"top\"\r\n [iconPos]=\"iconPos()\"\r\n [type]=\"type()\"\r\n [badge]=\"badge()\"\r\n [badgeSeverity]=\"badgeSeverity()\"\r\n [variant]=\"variant()\"\r\n [loading]=\"loading()\"\r\n [disabled]=\"disabled()\"\r\n [link]=\"link()\"\r\n [plain]=\"plain()\"\r\n [text]=\"text()\"\r\n [raised]=\"raised()\"\r\n [outlined]=\"outlined()\"\r\n [rounded]=\"rounded()\"\r\n [autofocus]=\"autofocus()\"\r\n [styleClass]=\"styleClass()\"\r\n (onClick)=\"onClick.emit($event)\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onBlur)=\"onBlur.emit($event)\"\r\n>\r\n @if (iconText()) {\r\n <ng-template #icon>\r\n <mt-icon\r\n [class.order-1]=\"iconPos() === 'end' || iconPos() === 'bottom'\"\r\n [icon]=\"iconText()\"\r\n />\r\n </ng-template>\r\n }\r\n\r\n <!-- <ng-template #loadingicon> -->\r\n <!-- <mt-icon -->\r\n <!-- class=\"p-icon-spin\" -->\r\n <!-- [class.order-1]=\"iconPos() === 'end' || iconPos() === 'bottom'\" -->\r\n <!-- icon=\"general.loading-01\" -->\r\n <!-- /> -->\r\n <!-- </ng-template> -->\r\n</p-button>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }] });
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Button, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: 'mt-button', standalone: true, imports: [ButtonModule, Icon, Tooltip], host: {
42
+ class: 'grid gap-1',
43
+ '[class.w-full]': 'fluid()',
44
+ }, template: "<p-button\r\n [fluid]=\"fluid()\"\r\n [severity]=\"severity()\"\r\n [size]=\"size()\"\r\n [label]=\"label()\"\r\n [mtTooltip]=\"tooltip()\"\r\n tooltipPosition=\"top\"\r\n [iconPos]=\"iconPos()\"\r\n [type]=\"type()\"\r\n [badge]=\"badge()\"\r\n [badgeSeverity]=\"badgeSeverity()\"\r\n [variant]=\"variant()\"\r\n [loading]=\"loading()\"\r\n [disabled]=\"disabled()\"\r\n [link]=\"link()\"\r\n [plain]=\"plain()\"\r\n [text]=\"text()\"\r\n [raised]=\"raised()\"\r\n [outlined]=\"outlined()\"\r\n [rounded]=\"rounded()\"\r\n [autofocus]=\"autofocus()\"\r\n [styleClass]=\"styleClass()\"\r\n (onClick)=\"onClick.emit($event)\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onBlur)=\"onBlur.emit($event)\"\r\n>\r\n @if (iconText()) {\r\n <ng-template #icon>\r\n <mt-icon\r\n [class.order-1]=\"iconPos() === 'end' || iconPos() === 'bottom'\"\r\n [icon]=\"iconText()\"\r\n />\r\n </ng-template>\r\n }\r\n\r\n <!-- <ng-template #loadingicon> -->\r\n <!-- <mt-icon -->\r\n <!-- class=\"p-icon-spin\" -->\r\n <!-- [class.order-1]=\"iconPos() === 'end' || iconPos() === 'bottom'\" -->\r\n <!-- icon=\"general.loading-01\" -->\r\n <!-- /> -->\r\n <!-- </ng-template> -->\r\n</p-button>\r\n" }]
45
+ }], propDecorators: { iconText: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], badgeSeverity: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeSeverity", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], autofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autofocus", required: false }] }], fluid: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluid", required: false }] }], raised: [{ type: i0.Input, args: [{ isSignal: true, alias: "raised", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], plain: [{ type: i0.Input, args: [{ isSignal: true, alias: "plain", required: false }] }], outlined: [{ type: i0.Input, args: [{ isSignal: true, alias: "outlined", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], pInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "pInputs", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onFocus: [{ type: i0.Output, args: ["onFocus"] }], onBlur: [{ type: i0.Output, args: ["onBlur"] }] } });
46
+
47
+ /**
48
+ * Generated bundle index. Do not edit.
49
+ */
50
+
51
+ export { Button };
52
+ //# sourceMappingURL=masterteam-components-button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-button.mjs","sources":["../../../../packages/masterteam/components/button/button.ts","../../../../packages/masterteam/components/button/button.html","../../../../packages/masterteam/components/button/masterteam-components-button.ts"],"sourcesContent":["import { Component, input, booleanAttribute, output } from '@angular/core';\r\nimport { ButtonModule, ButtonProps, ButtonSeverity } from 'primeng/button';\r\nimport { Icon, MTIcon } from '@masterteam/icons';\r\nimport { Tooltip } from '@masterteam/components/tooltip';\r\n\r\n@Component({\r\n selector: 'mt-button',\r\n standalone: true,\r\n imports: [ButtonModule, Icon, Tooltip],\r\n templateUrl: './button.html',\r\n styleUrls: ['./button.scss'],\r\n host: {\r\n class: 'grid gap-1',\r\n '[class.w-full]': 'fluid()',\r\n },\r\n})\r\nexport class Button {\r\n // eslint-disable-next-line @angular-eslint/no-input-rename\r\n readonly iconText = input<MTIcon>(undefined, { alias: 'icon' });\r\n readonly label = input<string>();\r\n readonly tooltip = input<string>();\r\n readonly class = input<string>('');\r\n readonly type = input<string>('button');\r\n readonly styleClass = input<string>('');\r\n readonly severity = input<ButtonSeverity>();\r\n readonly badge = input<string>();\r\n readonly variant = input<'text' | 'outlined' | undefined>();\r\n readonly badgeSeverity = input<\r\n | 'info'\r\n | 'success'\r\n | 'warn'\r\n | 'danger'\r\n | 'secondary'\r\n | 'contrast'\r\n | 'help'\r\n | 'primary'\r\n >('secondary');\r\n readonly size = input<'small' | 'large' | undefined>();\r\n readonly iconPos = input<'top' | 'bottom' | 'end' | undefined>();\r\n readonly autofocus = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly fluid = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly raised = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly rounded = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly text = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly plain = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly outlined = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly link = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly disabled = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly loading = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly pInputs = input<Partial<ButtonProps>>();\r\n\r\n onClick = output<MouseEvent>();\r\n onFocus = output<FocusEvent>();\r\n onBlur = output<FocusEvent>();\r\n}\r\n","<p-button\r\n [fluid]=\"fluid()\"\r\n [severity]=\"severity()\"\r\n [size]=\"size()\"\r\n [label]=\"label()\"\r\n [mtTooltip]=\"tooltip()\"\r\n tooltipPosition=\"top\"\r\n [iconPos]=\"iconPos()\"\r\n [type]=\"type()\"\r\n [badge]=\"badge()\"\r\n [badgeSeverity]=\"badgeSeverity()\"\r\n [variant]=\"variant()\"\r\n [loading]=\"loading()\"\r\n [disabled]=\"disabled()\"\r\n [link]=\"link()\"\r\n [plain]=\"plain()\"\r\n [text]=\"text()\"\r\n [raised]=\"raised()\"\r\n [outlined]=\"outlined()\"\r\n [rounded]=\"rounded()\"\r\n [autofocus]=\"autofocus()\"\r\n [styleClass]=\"styleClass()\"\r\n (onClick)=\"onClick.emit($event)\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onBlur)=\"onBlur.emit($event)\"\r\n>\r\n @if (iconText()) {\r\n <ng-template #icon>\r\n <mt-icon\r\n [class.order-1]=\"iconPos() === 'end' || iconPos() === 'bottom'\"\r\n [icon]=\"iconText()\"\r\n />\r\n </ng-template>\r\n }\r\n\r\n <!-- <ng-template #loadingicon> -->\r\n <!-- <mt-icon -->\r\n <!-- class=\"p-icon-spin\" -->\r\n <!-- [class.order-1]=\"iconPos() === 'end' || iconPos() === 'bottom'\" -->\r\n <!-- icon=\"general.loading-01\" -->\r\n <!-- /> -->\r\n <!-- </ng-template> -->\r\n</p-button>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import * as i1 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { input, booleanAttribute, contentChild, Component } from '@angular/core';
5
+
6
+ class Card {
7
+ class = input('', ...(ngDevMode ? [{ debugName: "class" }] : []));
8
+ title = input('', ...(ngDevMode ? [{ debugName: "title" }] : []));
9
+ paddingless = input(false, { ...(ngDevMode ? { debugName: "paddingless" } : {}), transform: booleanAttribute });
10
+ // Content child to get the headless template
11
+ headless = contentChild('headless', ...(ngDevMode ? [{ debugName: "headless" }] : []));
12
+ cardEnd = contentChild('cardEnd', ...(ngDevMode ? [{ debugName: "cardEnd" }] : []));
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Card, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: Card, isStandalone: true, selector: "mt-card", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, paddingless: { classPropertyName: "paddingless", publicName: "paddingless", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block bg-content rounded-2xl border-1 border-surface" }, queries: [{ propertyName: "headless", first: true, predicate: ["headless"], descendants: true, isSignal: true }, { propertyName: "cardEnd", first: true, predicate: ["cardEnd"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"size-full flex flex-col\">\r\n @if (headless()) {\r\n <!-- Custom headless template -->\r\n <ng-container [ngTemplateOutlet]=\"headless()\"></ng-container>\r\n } @else {\r\n @if (title() || cardEnd()) {\r\n <!-- Default header with dynamic title -->\r\n <div\r\n class=\"flex items-center justify-between px-4 py-5 border-b border-surface\"\r\n >\r\n @if (title()) {\r\n <h3 class=\"text-xl font-semibold\">{{ title() }}</h3>\r\n }\r\n @if (cardEnd()) {\r\n <div class=\"flex\">\r\n <ng-container [ngTemplateOutlet]=\"cardEnd()\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"flex-1\" [class.p-4]=\"!paddingless()\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Card, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'mt-card', standalone: true, imports: [CommonModule], host: {
19
+ class: 'block bg-content rounded-2xl border-1 border-surface',
20
+ }, template: "<div class=\"size-full flex flex-col\">\r\n @if (headless()) {\r\n <!-- Custom headless template -->\r\n <ng-container [ngTemplateOutlet]=\"headless()\"></ng-container>\r\n } @else {\r\n @if (title() || cardEnd()) {\r\n <!-- Default header with dynamic title -->\r\n <div\r\n class=\"flex items-center justify-between px-4 py-5 border-b border-surface\"\r\n >\r\n @if (title()) {\r\n <h3 class=\"text-xl font-semibold\">{{ title() }}</h3>\r\n }\r\n @if (cardEnd()) {\r\n <div class=\"flex\">\r\n <ng-container [ngTemplateOutlet]=\"cardEnd()\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"flex-1\" [class.p-4]=\"!paddingless()\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n" }]
21
+ }], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], paddingless: [{ type: i0.Input, args: [{ isSignal: true, alias: "paddingless", required: false }] }], headless: [{ type: i0.ContentChild, args: ['headless', { isSignal: true }] }], cardEnd: [{ type: i0.ContentChild, args: ['cardEnd', { isSignal: true }] }] } });
22
+
23
+ /**
24
+ * Generated bundle index. Do not edit.
25
+ */
26
+
27
+ export { Card };
28
+ //# sourceMappingURL=masterteam-components-card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-card.mjs","sources":["../../../../packages/masterteam/components/card/card.ts","../../../../packages/masterteam/components/card/card.html","../../../../packages/masterteam/components/card/masterteam-components-card.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n contentChild,\r\n TemplateRef,\r\n booleanAttribute,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mt-card',\r\n standalone: true,\r\n templateUrl: './card.html',\r\n styleUrl: './card.scss',\r\n imports: [CommonModule],\r\n host: {\r\n class: 'block bg-content rounded-2xl border-1 border-surface',\r\n },\r\n})\r\nexport class Card {\r\n readonly class = input<string>('');\r\n readonly title = input<string>('');\r\n readonly paddingless = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n // Content child to get the headless template\r\n headless = contentChild<TemplateRef<any>>('headless');\r\n cardEnd = contentChild<TemplateRef<any>>('cardEnd');\r\n}\r\n","<div class=\"size-full flex flex-col\">\r\n @if (headless()) {\r\n <!-- Custom headless template -->\r\n <ng-container [ngTemplateOutlet]=\"headless()\"></ng-container>\r\n } @else {\r\n @if (title() || cardEnd()) {\r\n <!-- Default header with dynamic title -->\r\n <div\r\n class=\"flex items-center justify-between px-4 py-5 border-b border-surface\"\r\n >\r\n @if (title()) {\r\n <h3 class=\"text-xl font-semibold\">{{ title() }}</h3>\r\n }\r\n @if (cardEnd()) {\r\n <div class=\"flex\">\r\n <ng-container [ngTemplateOutlet]=\"cardEnd()\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"flex-1\" [class.p-4]=\"!paddingless()\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, inject, computed, signal, effect, ViewChild, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { NgControl, Validators, FormsModule } from '@angular/forms';
5
+ import * as i2 from 'primeng/checkbox';
6
+ import { CheckboxModule } from 'primeng/checkbox';
7
+ import { FieldValidation } from '@masterteam/components/field-validation';
8
+ import { isInvalid } from '@masterteam/components';
9
+
10
+ class CheckboxField {
11
+ checkbox;
12
+ label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
13
+ labelPosition = input('end', ...(ngDevMode ? [{ debugName: "labelPosition" }] : []));
14
+ placeholder = input(...(ngDevMode ? [undefined, { debugName: "placeholder" }] : []));
15
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
16
+ pInputs = input(...(ngDevMode ? [undefined, { debugName: "pInputs" }] : []));
17
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
18
+ onChange = output();
19
+ ngControl = inject(NgControl, { self: true });
20
+ isInvalid = isInvalid;
21
+ isVertical = computed(() => this.labelPosition() === 'top' || this.labelPosition() === 'bottom', ...(ngDevMode ? [{ debugName: "isVertical" }] : []));
22
+ requiredValidator = Validators.required;
23
+ value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
24
+ disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
25
+ onTouched = () => { };
26
+ onModelChange = () => { };
27
+ constructor() {
28
+ if (this.ngControl) {
29
+ this.ngControl.valueAccessor = this;
30
+ }
31
+ // Effect to apply pInputs reactively when the pInputs signal changes
32
+ effect(() => {
33
+ const currentPInputs = this.pInputs();
34
+ // Ensure checkbox ViewChild is initialized and pInputs has a value
35
+ // @ViewChild with static: true makes 'checkbox' available during construction/ngOnInit
36
+ if (this.checkbox && currentPInputs) {
37
+ this.applyInputsToCheckbox();
38
+ }
39
+ });
40
+ // Effect to add required validator if required input is true
41
+ effect(() => {
42
+ if (this.ngControl?.control && this.required()) {
43
+ this.ngControl.control.addValidators(Validators.required);
44
+ this.ngControl.control.updateValueAndValidity();
45
+ }
46
+ });
47
+ }
48
+ applyInputsToCheckbox() {
49
+ const currentPInputs = this.pInputs();
50
+ if (currentPInputs) {
51
+ Object.assign(this.checkbox, currentPInputs);
52
+ }
53
+ }
54
+ onValueChange(value) {
55
+ this.onModelChange(value);
56
+ this.value.set(value);
57
+ }
58
+ writeValue(value) {
59
+ this.value.set(value);
60
+ }
61
+ registerOnChange(fn) {
62
+ this.onModelChange = fn;
63
+ }
64
+ registerOnTouched(fn) {
65
+ this.onTouched = fn;
66
+ }
67
+ setDisabledState(disabled) {
68
+ this.disabled.set(disabled);
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: CheckboxField, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: CheckboxField, isStandalone: true, selector: "mt-checkbox-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, pInputs: { classPropertyName: "pInputs", publicName: "pInputs", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChange: "onChange" }, host: { classAttribute: "grid gap-1" }, viewQueries: [{ propertyName: "checkbox", first: true, predicate: ["checkbox"], descendants: true, static: true }], ngImport: i0, template: "<div\r\n class=\"flex gap-1\"\r\n [class.items-center]=\"!isVertical()\"\r\n [class.gap-2]=\"!isVertical()\"\r\n [class.flex-col]=\"isVertical()\"\r\n [class.flex-col-reverse]=\"labelPosition() === 'top'\"\r\n [class.flex-row-reverse]=\"labelPosition() === 'start'\"\r\n [class.justify-end]=\"labelPosition() === 'start'\"\r\n>\r\n <p-checkbox\r\n #checkbox\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (onChange)=\"onChange.emit($event)\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [binary]=\"true\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n class=\"leading-none\"\r\n ></p-checkbox>\r\n @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["hostName", "value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "styleClass", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: CheckboxField, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'mt-checkbox-field', standalone: true, imports: [FormsModule, CheckboxModule, FieldValidation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
76
+ class: 'grid gap-1',
77
+ }, template: "<div\r\n class=\"flex gap-1\"\r\n [class.items-center]=\"!isVertical()\"\r\n [class.gap-2]=\"!isVertical()\"\r\n [class.flex-col]=\"isVertical()\"\r\n [class.flex-col-reverse]=\"labelPosition() === 'top'\"\r\n [class.flex-row-reverse]=\"labelPosition() === 'start'\"\r\n [class.justify-end]=\"labelPosition() === 'start'\"\r\n>\r\n <p-checkbox\r\n #checkbox\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (onChange)=\"onChange.emit($event)\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [binary]=\"true\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n class=\"leading-none\"\r\n ></p-checkbox>\r\n @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n" }]
78
+ }], ctorParameters: () => [], propDecorators: { checkbox: [{
79
+ type: ViewChild,
80
+ args: ['checkbox', { static: true }]
81
+ }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], pInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "pInputs", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], onChange: [{ type: i0.Output, args: ["onChange"] }] } });
82
+
83
+ /**
84
+ * Generated bundle index. Do not edit.
85
+ */
86
+
87
+ export { CheckboxField };
88
+ //# sourceMappingURL=masterteam-components-checkbox-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-checkbox-field.mjs","sources":["../../../../packages/masterteam/components/checkbox-field/checkbox-field.ts","../../../../packages/masterteam/components/checkbox-field/checkbox-field.html","../../../../packages/masterteam/components/checkbox-field/masterteam-components-checkbox-field.ts"],"sourcesContent":["import {\r\n Component,\r\n ViewChild,\r\n signal,\r\n input,\r\n output,\r\n inject,\r\n ChangeDetectionStrategy,\r\n computed,\r\n effect,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n CheckboxModule,\r\n Checkbox,\r\n CheckboxChangeEvent,\r\n} from 'primeng/checkbox';\r\nimport { FieldValidation } from '@masterteam/components/field-validation';\r\nimport { isInvalid } from '@masterteam/components';\r\n\r\n@Component({\r\n selector: 'mt-checkbox-field',\r\n standalone: true,\r\n imports: [FormsModule, CheckboxModule, FieldValidation],\r\n templateUrl: './checkbox-field.html',\r\n styleUrls: ['./checkbox-field.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'grid gap-1',\r\n },\r\n})\r\nexport class CheckboxField implements ControlValueAccessor {\r\n @ViewChild('checkbox', { static: true })\r\n checkbox: Checkbox;\r\n\r\n label = input<string>();\r\n labelPosition = input<'top' | 'start' | 'end' | 'bottom'>('end');\r\n placeholder = input<string>();\r\n readonly = input<boolean>(false);\r\n pInputs = input<Partial<Checkbox>>();\r\n required = input<boolean>(false);\r\n\r\n onChange = output<CheckboxChangeEvent>();\r\n\r\n public ngControl = inject(NgControl, { self: true });\r\n\r\n isInvalid = isInvalid;\r\n\r\n isVertical = computed(\r\n () => this.labelPosition() === 'top' || this.labelPosition() === 'bottom',\r\n );\r\n\r\n requiredValidator = Validators.required;\r\n value = signal<boolean | null>(null);\r\n disabled = signal<boolean>(false);\r\n\r\n onTouched: () => void = () => {};\r\n onModelChange: (value: boolean | null) => void = () => {};\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n // Effect to apply pInputs reactively when the pInputs signal changes\r\n effect(() => {\r\n const currentPInputs = this.pInputs();\r\n // Ensure checkbox ViewChild is initialized and pInputs has a value\r\n // @ViewChild with static: true makes 'checkbox' available during construction/ngOnInit\r\n if (this.checkbox && currentPInputs) {\r\n this.applyInputsToCheckbox();\r\n }\r\n });\r\n\r\n // Effect to add required validator if required input is true\r\n effect(() => {\r\n if (this.ngControl?.control && this.required()) {\r\n this.ngControl.control.addValidators(Validators.required);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n applyInputsToCheckbox() {\r\n const currentPInputs = this.pInputs();\r\n if (currentPInputs) {\r\n Object.assign(this.checkbox, currentPInputs);\r\n }\r\n }\r\n\r\n onValueChange(value: boolean | null) {\r\n this.onModelChange(value);\r\n this.value.set(value);\r\n }\r\n\r\n writeValue(value: boolean | null) {\r\n this.value.set(value);\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean) {\r\n this.disabled.set(disabled);\r\n }\r\n}\r\n","<div\r\n class=\"flex gap-1\"\r\n [class.items-center]=\"!isVertical()\"\r\n [class.gap-2]=\"!isVertical()\"\r\n [class.flex-col]=\"isVertical()\"\r\n [class.flex-col-reverse]=\"labelPosition() === 'top'\"\r\n [class.flex-row-reverse]=\"labelPosition() === 'start'\"\r\n [class.justify-end]=\"labelPosition() === 'start'\"\r\n>\r\n <p-checkbox\r\n #checkbox\r\n [ngModel]=\"value()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (onChange)=\"onChange.emit($event)\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"ngControl?.name ? ngControl?.name?.toString() : label()\"\r\n [binary]=\"true\"\r\n [invalid]=\"isInvalid(ngControl?.control)\"\r\n class=\"leading-none\"\r\n ></p-checkbox>\r\n @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}