@fundamental-ngx/ui5-webcomponents 0.63.1 → 0.63.2-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/fesm2022/fundamental-ngx-ui5-webcomponents-avatar-badge.mjs +5 -0
  2. package/fesm2022/fundamental-ngx-ui5-webcomponents-avatar-badge.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-ui5-webcomponents-avatar-group.mjs +5 -0
  4. package/fesm2022/fundamental-ngx-ui5-webcomponents-avatar-group.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-ui5-webcomponents-avatar.mjs +5 -0
  6. package/fesm2022/fundamental-ngx-ui5-webcomponents-avatar.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-ui5-webcomponents-bar.mjs +5 -0
  8. package/fesm2022/fundamental-ngx-ui5-webcomponents-bar.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-ui5-webcomponents-breadcrumbs-item.mjs +5 -0
  10. package/fesm2022/fundamental-ngx-ui5-webcomponents-breadcrumbs-item.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-ui5-webcomponents-breadcrumbs.mjs +5 -0
  12. package/fesm2022/fundamental-ngx-ui5-webcomponents-breadcrumbs.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-ui5-webcomponents-busy-indicator.mjs +5 -0
  14. package/fesm2022/fundamental-ngx-ui5-webcomponents-busy-indicator.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-ui5-webcomponents-button-badge.mjs +5 -0
  16. package/fesm2022/fundamental-ngx-ui5-webcomponents-button-badge.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-ui5-webcomponents-button.mjs +5 -0
  18. package/fesm2022/fundamental-ngx-ui5-webcomponents-button.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar-date-range.mjs +5 -0
  20. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar-date-range.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar-date.mjs +5 -0
  22. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar-date.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar-legend-item.mjs +5 -0
  24. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar-legend-item.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar-legend.mjs +5 -0
  26. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar-legend.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar.mjs +5 -0
  28. package/fesm2022/fundamental-ngx-ui5-webcomponents-calendar.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-ui5-webcomponents-card-header.mjs +5 -0
  30. package/fesm2022/fundamental-ngx-ui5-webcomponents-card-header.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-ui5-webcomponents-card.mjs +5 -0
  32. package/fesm2022/fundamental-ngx-ui5-webcomponents-card.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-ui5-webcomponents-carousel.mjs +5 -0
  34. package/fesm2022/fundamental-ngx-ui5-webcomponents-carousel.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-ui5-webcomponents-check-box.mjs +5 -0
  36. package/fesm2022/fundamental-ngx-ui5-webcomponents-check-box.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-ui5-webcomponents-color-palette-item.mjs +5 -0
  38. package/fesm2022/fundamental-ngx-ui5-webcomponents-color-palette-item.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-ui5-webcomponents-color-palette-popover.mjs +5 -0
  40. package/fesm2022/fundamental-ngx-ui5-webcomponents-color-palette-popover.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-ui5-webcomponents-color-palette.mjs +5 -0
  42. package/fesm2022/fundamental-ngx-ui5-webcomponents-color-palette.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-ui5-webcomponents-color-picker.mjs +5 -0
  44. package/fesm2022/fundamental-ngx-ui5-webcomponents-color-picker.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box-item-custom.mjs +5 -0
  46. package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box-item-custom.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box-item-group.mjs +5 -0
  48. package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box-item-group.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box-item.mjs +5 -0
  50. package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box-item.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box.mjs +5 -0
  52. package/fesm2022/fundamental-ngx-ui5-webcomponents-combo-box.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-ui5-webcomponents-date-picker.mjs +5 -0
  54. package/fesm2022/fundamental-ngx-ui5-webcomponents-date-picker.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-ui5-webcomponents-date-range-picker.mjs +5 -0
  56. package/fesm2022/fundamental-ngx-ui5-webcomponents-date-range-picker.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-ui5-webcomponents-date-time-input.mjs +5 -0
  58. package/fesm2022/fundamental-ngx-ui5-webcomponents-date-time-input.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-ui5-webcomponents-date-time-picker.mjs +5 -0
  60. package/fesm2022/fundamental-ngx-ui5-webcomponents-date-time-picker.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-ui5-webcomponents-day-picker.mjs +5 -0
  62. package/fesm2022/fundamental-ngx-ui5-webcomponents-day-picker.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-ui5-webcomponents-dialog.mjs +5 -0
  64. package/fesm2022/fundamental-ngx-ui5-webcomponents-dialog.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-ui5-webcomponents-drop-indicator.mjs +5 -0
  66. package/fesm2022/fundamental-ngx-ui5-webcomponents-drop-indicator.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-ui5-webcomponents-dynamic-date-range.mjs +5 -0
  68. package/fesm2022/fundamental-ngx-ui5-webcomponents-dynamic-date-range.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-ui5-webcomponents-expandable-text.mjs +5 -0
  70. package/fesm2022/fundamental-ngx-ui5-webcomponents-expandable-text.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-ui5-webcomponents-file-uploader.mjs +5 -0
  72. package/fesm2022/fundamental-ngx-ui5-webcomponents-file-uploader.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-ui5-webcomponents-form-group.mjs +5 -0
  74. package/fesm2022/fundamental-ngx-ui5-webcomponents-form-group.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-ui5-webcomponents-form-item.mjs +5 -0
  76. package/fesm2022/fundamental-ngx-ui5-webcomponents-form-item.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-ui5-webcomponents-form.mjs +5 -0
  78. package/fesm2022/fundamental-ngx-ui5-webcomponents-form.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-ui5-webcomponents-icon.mjs +5 -0
  80. package/fesm2022/fundamental-ngx-ui5-webcomponents-icon.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-ui5-webcomponents-input.mjs +5 -0
  82. package/fesm2022/fundamental-ngx-ui5-webcomponents-input.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-ui5-webcomponents-label.mjs +5 -0
  84. package/fesm2022/fundamental-ngx-ui5-webcomponents-label.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-ui5-webcomponents-link.mjs +5 -0
  86. package/fesm2022/fundamental-ngx-ui5-webcomponents-link.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-custom.mjs +5 -0
  88. package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-custom.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-group-header.mjs +5 -0
  90. package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-group-header.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-group.mjs +5 -0
  92. package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-group.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-standard.mjs +5 -0
  94. package/fesm2022/fundamental-ngx-ui5-webcomponents-list-item-standard.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-ui5-webcomponents-list.mjs +5 -0
  96. package/fesm2022/fundamental-ngx-ui5-webcomponents-list.mjs.map +1 -1
  97. package/fesm2022/fundamental-ngx-ui5-webcomponents-menu-item-group.mjs +5 -0
  98. package/fesm2022/fundamental-ngx-ui5-webcomponents-menu-item-group.mjs.map +1 -1
  99. package/fesm2022/fundamental-ngx-ui5-webcomponents-menu-item.mjs +5 -0
  100. package/fesm2022/fundamental-ngx-ui5-webcomponents-menu-item.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-ui5-webcomponents-menu.mjs +5 -0
  102. package/fesm2022/fundamental-ngx-ui5-webcomponents-menu.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-ui5-webcomponents-message-strip.mjs +5 -0
  104. package/fesm2022/fundamental-ngx-ui5-webcomponents-message-strip.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-ui5-webcomponents-month-picker.mjs +5 -0
  106. package/fesm2022/fundamental-ngx-ui5-webcomponents-month-picker.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-custom.mjs +5 -0
  108. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-custom.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.mjs +5 -0
  110. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box-item-group.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box-item.mjs +5 -0
  112. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box-item.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box.mjs +5 -0
  114. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-combo-box.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-input.mjs +5 -0
  116. package/fesm2022/fundamental-ngx-ui5-webcomponents-multi-input.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-ui5-webcomponents-option-custom.mjs +5 -0
  118. package/fesm2022/fundamental-ngx-ui5-webcomponents-option-custom.mjs.map +1 -1
  119. package/fesm2022/fundamental-ngx-ui5-webcomponents-option.mjs +5 -0
  120. package/fesm2022/fundamental-ngx-ui5-webcomponents-option.mjs.map +1 -1
  121. package/fesm2022/fundamental-ngx-ui5-webcomponents-panel.mjs +5 -0
  122. package/fesm2022/fundamental-ngx-ui5-webcomponents-panel.mjs.map +1 -1
  123. package/fesm2022/fundamental-ngx-ui5-webcomponents-popover.mjs +5 -0
  124. package/fesm2022/fundamental-ngx-ui5-webcomponents-popover.mjs.map +1 -1
  125. package/fesm2022/fundamental-ngx-ui5-webcomponents-progress-indicator.mjs +5 -0
  126. package/fesm2022/fundamental-ngx-ui5-webcomponents-progress-indicator.mjs.map +1 -1
  127. package/fesm2022/fundamental-ngx-ui5-webcomponents-radio-button.mjs +5 -0
  128. package/fesm2022/fundamental-ngx-ui5-webcomponents-radio-button.mjs.map +1 -1
  129. package/fesm2022/fundamental-ngx-ui5-webcomponents-range-slider.mjs +5 -0
  130. package/fesm2022/fundamental-ngx-ui5-webcomponents-range-slider.mjs.map +1 -1
  131. package/fesm2022/fundamental-ngx-ui5-webcomponents-rating-indicator.mjs +5 -0
  132. package/fesm2022/fundamental-ngx-ui5-webcomponents-rating-indicator.mjs.map +1 -1
  133. package/fesm2022/fundamental-ngx-ui5-webcomponents-responsive-popover.mjs +5 -0
  134. package/fesm2022/fundamental-ngx-ui5-webcomponents-responsive-popover.mjs.map +1 -1
  135. package/fesm2022/fundamental-ngx-ui5-webcomponents-segmented-button-item.mjs +5 -0
  136. package/fesm2022/fundamental-ngx-ui5-webcomponents-segmented-button-item.mjs.map +1 -1
  137. package/fesm2022/fundamental-ngx-ui5-webcomponents-segmented-button.mjs +5 -0
  138. package/fesm2022/fundamental-ngx-ui5-webcomponents-segmented-button.mjs.map +1 -1
  139. package/fesm2022/fundamental-ngx-ui5-webcomponents-select.mjs +5 -0
  140. package/fesm2022/fundamental-ngx-ui5-webcomponents-select.mjs.map +1 -1
  141. package/fesm2022/fundamental-ngx-ui5-webcomponents-slider.mjs +5 -0
  142. package/fesm2022/fundamental-ngx-ui5-webcomponents-slider.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-ui5-webcomponents-special-calendar-date.mjs +5 -0
  144. package/fesm2022/fundamental-ngx-ui5-webcomponents-special-calendar-date.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-ui5-webcomponents-split-button.mjs +5 -0
  146. package/fesm2022/fundamental-ngx-ui5-webcomponents-split-button.mjs.map +1 -1
  147. package/fesm2022/fundamental-ngx-ui5-webcomponents-step-input.mjs +5 -0
  148. package/fesm2022/fundamental-ngx-ui5-webcomponents-step-input.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-item-custom.mjs +5 -0
  150. package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-item-custom.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-item-group.mjs +5 -0
  152. package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-item-group.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-item.mjs +5 -0
  154. package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-item.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-list-item.mjs +5 -0
  156. package/fesm2022/fundamental-ngx-ui5-webcomponents-suggestion-list-item.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-ui5-webcomponents-switch.mjs +5 -0
  158. package/fesm2022/fundamental-ngx-ui5-webcomponents-switch.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-ui5-webcomponents-tab-container.mjs +5 -0
  160. package/fesm2022/fundamental-ngx-ui5-webcomponents-tab-container.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-ui5-webcomponents-tab.mjs +5 -0
  162. package/fesm2022/fundamental-ngx-ui5-webcomponents-tab.mjs.map +1 -1
  163. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-cell.mjs +5 -0
  164. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-cell.mjs.map +1 -1
  165. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-group-row.mjs +5 -0
  166. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-group-row.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-growing.mjs +5 -0
  168. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-growing.mjs.map +1 -1
  169. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-header-cell.mjs +5 -0
  170. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-header-cell.mjs.map +1 -1
  171. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-header-row.mjs +5 -0
  172. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-header-row.mjs.map +1 -1
  173. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-row-action-navigation.mjs +5 -0
  174. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-row-action-navigation.mjs.map +1 -1
  175. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-row-action.mjs +5 -0
  176. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-row-action.mjs.map +1 -1
  177. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-row.mjs +5 -0
  178. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-row.mjs.map +1 -1
  179. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-selection-multi.mjs +5 -0
  180. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-selection-multi.mjs.map +1 -1
  181. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-selection-single.mjs +5 -0
  182. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-selection-single.mjs.map +1 -1
  183. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-selection.mjs +5 -0
  184. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-selection.mjs.map +1 -1
  185. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-virtualizer.mjs +5 -0
  186. package/fesm2022/fundamental-ngx-ui5-webcomponents-table-virtualizer.mjs.map +1 -1
  187. package/fesm2022/fundamental-ngx-ui5-webcomponents-table.mjs +5 -0
  188. package/fesm2022/fundamental-ngx-ui5-webcomponents-table.mjs.map +1 -1
  189. package/fesm2022/fundamental-ngx-ui5-webcomponents-tag.mjs +5 -0
  190. package/fesm2022/fundamental-ngx-ui5-webcomponents-tag.mjs.map +1 -1
  191. package/fesm2022/fundamental-ngx-ui5-webcomponents-text-area.mjs +5 -0
  192. package/fesm2022/fundamental-ngx-ui5-webcomponents-text-area.mjs.map +1 -1
  193. package/fesm2022/fundamental-ngx-ui5-webcomponents-text.mjs +5 -0
  194. package/fesm2022/fundamental-ngx-ui5-webcomponents-text.mjs.map +1 -1
  195. package/fesm2022/fundamental-ngx-ui5-webcomponents-time-picker.mjs +5 -0
  196. package/fesm2022/fundamental-ngx-ui5-webcomponents-time-picker.mjs.map +1 -1
  197. package/fesm2022/fundamental-ngx-ui5-webcomponents-time-selection-clocks.mjs +5 -0
  198. package/fesm2022/fundamental-ngx-ui5-webcomponents-time-selection-clocks.mjs.map +1 -1
  199. package/fesm2022/fundamental-ngx-ui5-webcomponents-time-selection-inputs.mjs +5 -0
  200. package/fesm2022/fundamental-ngx-ui5-webcomponents-time-selection-inputs.mjs.map +1 -1
  201. package/fesm2022/fundamental-ngx-ui5-webcomponents-title.mjs +5 -0
  202. package/fesm2022/fundamental-ngx-ui5-webcomponents-title.mjs.map +1 -1
  203. package/fesm2022/fundamental-ngx-ui5-webcomponents-toast.mjs +5 -0
  204. package/fesm2022/fundamental-ngx-ui5-webcomponents-toast.mjs.map +1 -1
  205. package/fesm2022/fundamental-ngx-ui5-webcomponents-toggle-button.mjs +5 -0
  206. package/fesm2022/fundamental-ngx-ui5-webcomponents-toggle-button.mjs.map +1 -1
  207. package/fesm2022/fundamental-ngx-ui5-webcomponents-toggle-spin-button.mjs +5 -0
  208. package/fesm2022/fundamental-ngx-ui5-webcomponents-toggle-spin-button.mjs.map +1 -1
  209. package/fesm2022/fundamental-ngx-ui5-webcomponents-token.mjs +5 -0
  210. package/fesm2022/fundamental-ngx-ui5-webcomponents-token.mjs.map +1 -1
  211. package/fesm2022/fundamental-ngx-ui5-webcomponents-tokenizer.mjs +5 -0
  212. package/fesm2022/fundamental-ngx-ui5-webcomponents-tokenizer.mjs.map +1 -1
  213. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-button.mjs +5 -0
  214. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-button.mjs.map +1 -1
  215. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-item.mjs +5 -0
  216. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-item.mjs.map +1 -1
  217. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-select-option.mjs +5 -0
  218. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-select-option.mjs.map +1 -1
  219. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-select.mjs +5 -0
  220. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-select.mjs.map +1 -1
  221. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-separator.mjs +5 -0
  222. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-separator.mjs.map +1 -1
  223. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-spacer.mjs +5 -0
  224. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar-spacer.mjs.map +1 -1
  225. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar.mjs +5 -0
  226. package/fesm2022/fundamental-ngx-ui5-webcomponents-toolbar.mjs.map +1 -1
  227. package/fesm2022/fundamental-ngx-ui5-webcomponents-tree-item-custom.mjs +5 -0
  228. package/fesm2022/fundamental-ngx-ui5-webcomponents-tree-item-custom.mjs.map +1 -1
  229. package/fesm2022/fundamental-ngx-ui5-webcomponents-tree-item.mjs +5 -0
  230. package/fesm2022/fundamental-ngx-ui5-webcomponents-tree-item.mjs.map +1 -1
  231. package/fesm2022/fundamental-ngx-ui5-webcomponents-tree.mjs +5 -0
  232. package/fesm2022/fundamental-ngx-ui5-webcomponents-tree.mjs.map +1 -1
  233. package/fesm2022/fundamental-ngx-ui5-webcomponents-year-picker.mjs +5 -0
  234. package/fesm2022/fundamental-ngx-ui5-webcomponents-year-picker.mjs.map +1 -1
  235. package/fesm2022/fundamental-ngx-ui5-webcomponents-year-range-picker.mjs +5 -0
  236. package/fesm2022/fundamental-ngx-ui5-webcomponents-year-range-picker.mjs.map +1 -1
  237. package/fesm2022/fundamental-ngx-ui5-webcomponents.mjs +590 -0
  238. package/fesm2022/fundamental-ngx-ui5-webcomponents.mjs.map +1 -1
  239. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-ui5-webcomponents-responsive-popover.mjs","sources":["../../../../libs/ui5-webcomponents/responsive-popover/index.ts","../../../../libs/ui5-webcomponents/responsive-popover/fundamental-ngx-ui5-webcomponents-responsive-popover.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/ResponsivePopover.js';\nimport { default as _ResponsivePopover } from '@ui5/webcomponents/dist/ResponsivePopover.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\nimport { default as PopupAccessibleRole } from '@ui5/webcomponents/dist/types/PopupAccessibleRole.js';\nimport { default as PopoverHorizontalAlign } from '@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js';\nimport { default as PopoverPlacement } from '@ui5/webcomponents/dist/types/PopoverPlacement.js';\nimport { default as PopoverVerticalAlign } from '@ui5/webcomponents/dist/types/PopoverVerticalAlign.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-responsive-popover, [ui5-responsive-popover]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5ResponsivePopover',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResponsivePopover implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _ResponsivePopover.prototype.accessibleDescription | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that describe the component.\n */\n accessibleDescriptionRef = input<typeof _ResponsivePopover.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible name of the component.\n */\n accessibleName = input<typeof _ResponsivePopover.prototype.accessibleName | undefined>();\n\n /**\n * Defines the IDs of the elements that label the component.\n */\n accessibleNameRef = input<typeof _ResponsivePopover.prototype.accessibleNameRef | undefined>();\n\n /**\n * Allows setting a custom role.\n */\n accessibleRole = input<typeof _ResponsivePopover.prototype.accessibleRole | undefined>(\"Dialog\");\n\n /**\n * Determines if there is no enough space, the component can be placed\nover the target.\n */\n allowTargetOverlap = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the header text.\n\n**Note:** If `header` slot is provided, the `headerText` is ignored.\n */\n headerText = input<typeof _ResponsivePopover.prototype.headerText | undefined>();\n\n /**\n * Determines whether the component arrow is hidden.\n */\n hideArrow = input(false, { transform: booleanAttribute });\n\n /**\n * Determines the horizontal alignment of the component.\n */\n horizontalAlign = input<typeof _ResponsivePopover.prototype.horizontalAlign | undefined>(\"Center\");\n\n /**\n * Defines the ID of the HTML Element, which will get the initial focus.\n\n**Note:** If an element with `autofocus` attribute is added inside the component,\n`initialFocus` won't take effect.\n */\n initialFocus = input<typeof _ResponsivePopover.prototype.initialFocus | undefined>();\n\n /**\n * Defines whether the component should close when\nclicking/tapping outside the popover.\nIf enabled, it blocks any interaction with the background.\n */\n modal = input(false, { transform: booleanAttribute });\n\n /**\n * Indicates if the element is open\n */\n open = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the ID or DOM Reference of the element at which the popover is shown.\nWhen using this attribute in a declarative way, you must only use the `id` (as a string) of the element at which you want to show the popover.\nYou can only set the `opener` attribute to a DOM Reference when using JavaScript.\n */\n opener = input<typeof _ResponsivePopover.prototype.opener | undefined>();\n\n /**\n * Determines on which side the component is placed at.\n */\n placement = input<typeof _ResponsivePopover.prototype.placement | undefined>(\"End\");\n\n /**\n * Defines if the focus should be returned to the previously focused element,\nwhen the popup closes.\n */\n preventFocusRestore = input(false, { transform: booleanAttribute });\n\n /**\n * Indicates whether initial focus should be prevented.\n */\n preventInitialFocus = input(false, { transform: booleanAttribute });\n\n /**\n * Determines whether the component is resizable.\n**Note:** This property is effective only on desktop devices.\n */\n resizable = input(false, { transform: booleanAttribute });\n\n /**\n * Determines the vertical alignment of the component.\n */\n verticalAlign = input<typeof _ResponsivePopover.prototype.verticalAlign | undefined>(\"Center\"); // className is now passed\n\n\n\n /**\n * Fired before the component is closed. This event can be cancelled, which will prevent the popup from closing.\n */\n ui5BeforeClose = output<UI5CustomEvent<_ResponsivePopover, 'before-close'>>();\n\n /**\n * Fired before the component is opened. This event can be cancelled, which will prevent the popup from opening.\n */\n ui5BeforeOpen = output<UI5CustomEvent<_ResponsivePopover, 'before-open'>>();\n\n /**\n * Fired after the component is closed.\n */\n ui5Close = output<UI5CustomEvent<_ResponsivePopover, 'close'>>();\n\n /**\n * Fired after the component is opened.\n */\n ui5Open = output<UI5CustomEvent<_ResponsivePopover, 'open'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the content of the Popup.\n * - **footer**: Defines the footer HTML Element.\n * - **header**: Defines the header HTML Element.\n *\n * @example\n * ```html\n * <ui5-responsive-popover>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-responsive-popover>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the content of the Popup.\"\n },\n {\n \"name\": \"footer\",\n \"description\": \"Defines the footer HTML Element.\"\n },\n {\n \"name\": \"header\",\n \"description\": \"Defines the header HTML Element.\"\n }\n ];\n\n\n public elementRef: ElementRef<_ResponsivePopover> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _ResponsivePopover {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'accessibleRole',\n 'allowTargetOverlap',\n 'headerText',\n 'hideArrow',\n 'horizontalAlign',\n 'initialFocus',\n 'modal',\n 'open',\n 'opener',\n 'placement',\n 'preventFocusRestore',\n 'preventInitialFocus',\n 'resizable',\n 'verticalAlign',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5BeforeClose',\n 'ui5BeforeOpen',\n 'ui5Close',\n 'ui5Open',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-ui5-webcomponents-responsive-popover.mjs","sources":["../../../../libs/ui5-webcomponents/responsive-popover/index.ts","../../../../libs/ui5-webcomponents/responsive-popover/fundamental-ngx-ui5-webcomponents-responsive-popover.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/ResponsivePopover.js';\nimport { default as _ResponsivePopover } from '@ui5/webcomponents/dist/ResponsivePopover.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\nimport { default as PopupAccessibleRole } from '@ui5/webcomponents/dist/types/PopupAccessibleRole.js';\nimport { default as PopoverHorizontalAlign } from '@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js';\nimport { default as PopoverPlacement } from '@ui5/webcomponents/dist/types/PopoverPlacement.js';\nimport { default as PopoverVerticalAlign } from '@ui5/webcomponents/dist/types/PopoverVerticalAlign.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-responsive-popover, [ui5-responsive-popover]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5ResponsivePopover',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResponsivePopover implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _ResponsivePopover.prototype.accessibleDescription | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that describe the component.\n */\n accessibleDescriptionRef = input<typeof _ResponsivePopover.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible name of the component.\n */\n accessibleName = input<typeof _ResponsivePopover.prototype.accessibleName | undefined>();\n\n /**\n * Defines the IDs of the elements that label the component.\n */\n accessibleNameRef = input<typeof _ResponsivePopover.prototype.accessibleNameRef | undefined>();\n\n /**\n * Allows setting a custom role.\n */\n accessibleRole = input<typeof _ResponsivePopover.prototype.accessibleRole | undefined>(\"Dialog\");\n\n /**\n * Determines if there is no enough space, the component can be placed\nover the target.\n */\n allowTargetOverlap = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the header text.\n\n**Note:** If `header` slot is provided, the `headerText` is ignored.\n */\n headerText = input<typeof _ResponsivePopover.prototype.headerText | undefined>();\n\n /**\n * Determines whether the component arrow is hidden.\n */\n hideArrow = input(false, { transform: booleanAttribute });\n\n /**\n * Determines the horizontal alignment of the component.\n */\n horizontalAlign = input<typeof _ResponsivePopover.prototype.horizontalAlign | undefined>(\"Center\");\n\n /**\n * Defines the ID of the HTML Element, which will get the initial focus.\n\n**Note:** If an element with `autofocus` attribute is added inside the component,\n`initialFocus` won't take effect.\n */\n initialFocus = input<typeof _ResponsivePopover.prototype.initialFocus | undefined>();\n\n /**\n * Defines whether the component should close when\nclicking/tapping outside the popover.\nIf enabled, it blocks any interaction with the background.\n */\n modal = input(false, { transform: booleanAttribute });\n\n /**\n * Indicates if the element is open\n */\n open = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the ID or DOM Reference of the element at which the popover is shown.\nWhen using this attribute in a declarative way, you must only use the `id` (as a string) of the element at which you want to show the popover.\nYou can only set the `opener` attribute to a DOM Reference when using JavaScript.\n */\n opener = input<typeof _ResponsivePopover.prototype.opener | undefined>();\n\n /**\n * Determines on which side the component is placed at.\n */\n placement = input<typeof _ResponsivePopover.prototype.placement | undefined>(\"End\");\n\n /**\n * Defines if the focus should be returned to the previously focused element,\nwhen the popup closes.\n */\n preventFocusRestore = input(false, { transform: booleanAttribute });\n\n /**\n * Indicates whether initial focus should be prevented.\n */\n preventInitialFocus = input(false, { transform: booleanAttribute });\n\n /**\n * Determines whether the component is resizable.\n**Note:** This property is effective only on desktop devices.\n */\n resizable = input(false, { transform: booleanAttribute });\n\n /**\n * Determines the vertical alignment of the component.\n */\n verticalAlign = input<typeof _ResponsivePopover.prototype.verticalAlign | undefined>(\"Center\"); // className is now passed\n\n\n\n /**\n * Fired before the component is closed. This event can be cancelled, which will prevent the popup from closing.\n */\n ui5BeforeClose = output<UI5CustomEvent<_ResponsivePopover, 'before-close'>>();\n\n /**\n * Fired before the component is opened. This event can be cancelled, which will prevent the popup from opening.\n */\n ui5BeforeOpen = output<UI5CustomEvent<_ResponsivePopover, 'before-open'>>();\n\n /**\n * Fired after the component is closed.\n */\n ui5Close = output<UI5CustomEvent<_ResponsivePopover, 'close'>>();\n\n /**\n * Fired after the component is opened.\n */\n ui5Open = output<UI5CustomEvent<_ResponsivePopover, 'open'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the content of the Popup.\n * - **footer**: Defines the footer HTML Element.\n * - **header**: Defines the header HTML Element.\n *\n * @example\n * ```html\n * <ui5-responsive-popover>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-responsive-popover>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the content of the Popup.\"\n },\n {\n \"name\": \"footer\",\n \"description\": \"Defines the footer HTML Element.\"\n },\n {\n \"name\": \"header\",\n \"description\": \"Defines the header HTML Element.\"\n }\n ];\n\n\n public elementRef: ElementRef<_ResponsivePopover> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _ResponsivePopover {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'accessibleRole',\n 'allowTargetOverlap',\n 'headerText',\n 'hideArrow',\n 'horizontalAlign',\n 'initialFocus',\n 'modal',\n 'open',\n 'opener',\n 'placement',\n 'preventFocusRestore',\n 'preventInitialFocus',\n 'resizable',\n 'verticalAlign',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5BeforeClose',\n 'ui5BeforeOpen',\n 'ui5Close',\n 'ui5Open',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -113,6 +113,11 @@ class SegmentedButtonItem {
113
113
  // Read the signal value
114
114
  const value = this[signalName]();
115
115
  if (wcElement) {
116
+ // Skip writes when the signal is undefined and the property is already truthy
117
+ // This prevents clobbering imperatively-set values (e.g., from RouterLink)
118
+ if (value === undefined && wcElement[inputName]) {
119
+ return;
120
+ }
116
121
  // Write the value to the Web Component's property
117
122
  wcElement[inputName] = value;
118
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-ui5-webcomponents-segmented-button-item.mjs","sources":["../../../../libs/ui5-webcomponents/segmented-button-item/index.ts","../../../../libs/ui5-webcomponents/segmented-button-item/fundamental-ngx-ui5-webcomponents-segmented-button-item.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/SegmentedButtonItem.js';\nimport { default as _SegmentedButtonItem } from '@ui5/webcomponents/dist/SegmentedButtonItem.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\n\n\n@Component({\n standalone: true,\n selector: 'ui5-segmented-button-item, [ui5-segmented-button-item]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5SegmentedButtonItem',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SegmentedButtonItem implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _SegmentedButtonItem.prototype.accessibleDescription | undefined>();\n\n /**\n * Defines the IDs of the HTML Elements that describe the component.\n */\n accessibleDescriptionRef = input<typeof _SegmentedButtonItem.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _SegmentedButtonItem.prototype.accessibleName | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that label the component.\n */\n accessibleNameRef = input<typeof _SegmentedButtonItem.prototype.accessibleNameRef | undefined>();\n\n /**\n * Defines whether the component is disabled.\nA disabled component can't be selected or\nfocused, and it is not in the tab chain.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the icon, displayed as graphical element within the component.\nThe SAP-icons font provides numerous options.\n\nExample:\nSee all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n */\n icon = input<typeof _SegmentedButtonItem.prototype.icon | undefined>();\n\n /**\n * Determines whether the component is displayed as selected.\n */\n selected = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the tooltip of the component.\n\n**Note:** A tooltip attribute should be provided for icon-only buttons, in order to represent their exact meaning/function.\n */\n tooltip = input<typeof _SegmentedButtonItem.prototype.tooltip | undefined>(); // className is now passed\n\n\n\n /**\n * Fired when the component is activated either with a mouse/tap or by using the Enter or Space key.\n\n**Note:** The event will not be fired if the `disabled` property is set to `true`.\n */\n ui5Click = output<UI5CustomEvent<_SegmentedButtonItem, 'click'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the text of the component.\n\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\n *\n * @example\n * ```html\n * <ui5-segmented-button-item>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-segmented-button-item>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the text of the component.\\n\\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\"\n }\n ];\n\n\n public elementRef: ElementRef<_SegmentedButtonItem> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _SegmentedButtonItem {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'disabled',\n 'icon',\n 'selected',\n 'tooltip',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Click',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-ui5-webcomponents-segmented-button-item.mjs","sources":["../../../../libs/ui5-webcomponents/segmented-button-item/index.ts","../../../../libs/ui5-webcomponents/segmented-button-item/fundamental-ngx-ui5-webcomponents-segmented-button-item.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/SegmentedButtonItem.js';\nimport { default as _SegmentedButtonItem } from '@ui5/webcomponents/dist/SegmentedButtonItem.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\n\n\n@Component({\n standalone: true,\n selector: 'ui5-segmented-button-item, [ui5-segmented-button-item]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5SegmentedButtonItem',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SegmentedButtonItem implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _SegmentedButtonItem.prototype.accessibleDescription | undefined>();\n\n /**\n * Defines the IDs of the HTML Elements that describe the component.\n */\n accessibleDescriptionRef = input<typeof _SegmentedButtonItem.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _SegmentedButtonItem.prototype.accessibleName | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that label the component.\n */\n accessibleNameRef = input<typeof _SegmentedButtonItem.prototype.accessibleNameRef | undefined>();\n\n /**\n * Defines whether the component is disabled.\nA disabled component can't be selected or\nfocused, and it is not in the tab chain.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the icon, displayed as graphical element within the component.\nThe SAP-icons font provides numerous options.\n\nExample:\nSee all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n */\n icon = input<typeof _SegmentedButtonItem.prototype.icon | undefined>();\n\n /**\n * Determines whether the component is displayed as selected.\n */\n selected = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the tooltip of the component.\n\n**Note:** A tooltip attribute should be provided for icon-only buttons, in order to represent their exact meaning/function.\n */\n tooltip = input<typeof _SegmentedButtonItem.prototype.tooltip | undefined>(); // className is now passed\n\n\n\n /**\n * Fired when the component is activated either with a mouse/tap or by using the Enter or Space key.\n\n**Note:** The event will not be fired if the `disabled` property is set to `true`.\n */\n ui5Click = output<UI5CustomEvent<_SegmentedButtonItem, 'click'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the text of the component.\n\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\n *\n * @example\n * ```html\n * <ui5-segmented-button-item>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-segmented-button-item>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the text of the component.\\n\\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\"\n }\n ];\n\n\n public elementRef: ElementRef<_SegmentedButtonItem> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _SegmentedButtonItem {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'disabled',\n 'icon',\n 'selected',\n 'tooltip',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Click',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -106,6 +106,11 @@ class SegmentedButton {
106
106
  // Read the signal value
107
107
  const value = this[signalName]();
108
108
  if (wcElement) {
109
+ // Skip writes when the signal is undefined and the property is already truthy
110
+ // This prevents clobbering imperatively-set values (e.g., from RouterLink)
111
+ if (value === undefined && wcElement[inputName]) {
112
+ return;
113
+ }
109
114
  // Write the value to the Web Component's property
110
115
  wcElement[inputName] = value;
111
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-ui5-webcomponents-segmented-button.mjs","sources":["../../../../libs/ui5-webcomponents/segmented-button/index.ts","../../../../libs/ui5-webcomponents/segmented-button/fundamental-ngx-ui5-webcomponents-segmented-button.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/SegmentedButton.js';\nimport { default as _SegmentedButton } from '@ui5/webcomponents/dist/SegmentedButton.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\nimport { ISegmentedButtonItem } from '@ui5/webcomponents/dist/SegmentedButton.js';\nimport { default as SegmentedButtonSelectionMode } from '@ui5/webcomponents/dist/types/SegmentedButtonSelectionMode.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-segmented-button, [ui5-segmented-button]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5SegmentedButton',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SegmentedButton implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _SegmentedButton.prototype.accessibleDescription | undefined>();\n\n /**\n * Defines the IDs of the HTML Elements that describe the component.\n */\n accessibleDescriptionRef = input<typeof _SegmentedButton.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _SegmentedButton.prototype.accessibleName | undefined>();\n\n /**\n * Defines the IDs of the HTML Elements that label the component.\n */\n accessibleNameRef = input<typeof _SegmentedButton.prototype.accessibleNameRef | undefined>();\n\n /**\n * Determines whether the segmented button items should be sized to fit their content.\n\nIf set to `true`, each item will be sized to fit its content, with any extra space distributed after the last item.\nIf set to `false` (the default), all items will be equally sized to fill the available space.\n */\n itemsFitContent = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the component selection mode.\n */\n selectionMode = input<typeof _SegmentedButton.prototype.selectionMode | undefined>(\"Single\"); // className is now passed\n\n /**\n * Returns an array of the currently selected items.\n * @readonly This property is managed by the web component and updates reactively.\n * Based on schema: readonly field that updates via selection-change event parameters.\n */\n selectedItems = computed(() => this._selectedItemsSignal());\n\n\n /**\n * Fired when the selected item changes.\n */\n ui5SelectionChange = output<UI5CustomEvent<_SegmentedButton, 'selection-change'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the items of `ui5-segmented-button`.\n\n**Note:** Multiple items are allowed.\n\n**Note:** Use the `ui5-segmented-button-item` for the intended design.\n *\n * @example\n * ```html\n * <ui5-segmented-button>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-segmented-button>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the items of `ui5-segmented-button`.\\n\\n**Note:** Multiple items are allowed.\\n\\n**Note:** Use the `ui5-segmented-button-item` for the intended design.\"\n }\n ];\n\n\n public elementRef: ElementRef<_SegmentedButton> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n // Internal signal to track selectedItems from selection-change events\n private _selectedItemsSignal = signal<Array<ISegmentedButtonItem>>([]);\n\n get element(): _SegmentedButton {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'itemsFitContent',\n 'selectionMode',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5SelectionChange',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n // Update selectedItems signal when selection-change event fires\n if (eventName === 'selection-change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedItems from event detail, fallback to web component property\n const selectedItemsValue = customEvent.detail?.selectedItems || wcElement.selectedItems || [];\n this._selectedItemsSignal.set(selectedItemsValue);\n }\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n // Initialize selectedItems signal with current state using delayed initialization\n // to handle web component timing properly\n const initializeSelectedItems = (): void => {\n const currentValue = wcElement.selectedItems || [];\n if (JSON.stringify(currentValue) !== JSON.stringify(this._selectedItemsSignal())) {\n this._selectedItemsSignal.set(currentValue);\n }\n };\n\n // Try immediate initialization\n initializeSelectedItems();\n\n // Fallback delayed initialization if web component needs more time\n // Use requestAnimationFrame for zoneless compatibility\n requestAnimationFrame(() => initializeSelectedItems());\n }\n}\n\n// Re-export types for convenience\nexport { ISegmentedButtonItem } from '@ui5/webcomponents/dist/SegmentedButton.js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-ui5-webcomponents-segmented-button.mjs","sources":["../../../../libs/ui5-webcomponents/segmented-button/index.ts","../../../../libs/ui5-webcomponents/segmented-button/fundamental-ngx-ui5-webcomponents-segmented-button.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/SegmentedButton.js';\nimport { default as _SegmentedButton } from '@ui5/webcomponents/dist/SegmentedButton.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\nimport { ISegmentedButtonItem } from '@ui5/webcomponents/dist/SegmentedButton.js';\nimport { default as SegmentedButtonSelectionMode } from '@ui5/webcomponents/dist/types/SegmentedButtonSelectionMode.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-segmented-button, [ui5-segmented-button]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5SegmentedButton',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SegmentedButton implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _SegmentedButton.prototype.accessibleDescription | undefined>();\n\n /**\n * Defines the IDs of the HTML Elements that describe the component.\n */\n accessibleDescriptionRef = input<typeof _SegmentedButton.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _SegmentedButton.prototype.accessibleName | undefined>();\n\n /**\n * Defines the IDs of the HTML Elements that label the component.\n */\n accessibleNameRef = input<typeof _SegmentedButton.prototype.accessibleNameRef | undefined>();\n\n /**\n * Determines whether the segmented button items should be sized to fit their content.\n\nIf set to `true`, each item will be sized to fit its content, with any extra space distributed after the last item.\nIf set to `false` (the default), all items will be equally sized to fill the available space.\n */\n itemsFitContent = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the component selection mode.\n */\n selectionMode = input<typeof _SegmentedButton.prototype.selectionMode | undefined>(\"Single\"); // className is now passed\n\n /**\n * Returns an array of the currently selected items.\n * @readonly This property is managed by the web component and updates reactively.\n * Based on schema: readonly field that updates via selection-change event parameters.\n */\n selectedItems = computed(() => this._selectedItemsSignal());\n\n\n /**\n * Fired when the selected item changes.\n */\n ui5SelectionChange = output<UI5CustomEvent<_SegmentedButton, 'selection-change'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the items of `ui5-segmented-button`.\n\n**Note:** Multiple items are allowed.\n\n**Note:** Use the `ui5-segmented-button-item` for the intended design.\n *\n * @example\n * ```html\n * <ui5-segmented-button>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-segmented-button>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the items of `ui5-segmented-button`.\\n\\n**Note:** Multiple items are allowed.\\n\\n**Note:** Use the `ui5-segmented-button-item` for the intended design.\"\n }\n ];\n\n\n public elementRef: ElementRef<_SegmentedButton> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n // Internal signal to track selectedItems from selection-change events\n private _selectedItemsSignal = signal<Array<ISegmentedButtonItem>>([]);\n\n get element(): _SegmentedButton {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'itemsFitContent',\n 'selectionMode',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5SelectionChange',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n // Update selectedItems signal when selection-change event fires\n if (eventName === 'selection-change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedItems from event detail, fallback to web component property\n const selectedItemsValue = customEvent.detail?.selectedItems || wcElement.selectedItems || [];\n this._selectedItemsSignal.set(selectedItemsValue);\n }\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n // Initialize selectedItems signal with current state using delayed initialization\n // to handle web component timing properly\n const initializeSelectedItems = (): void => {\n const currentValue = wcElement.selectedItems || [];\n if (JSON.stringify(currentValue) !== JSON.stringify(this._selectedItemsSignal())) {\n this._selectedItemsSignal.set(currentValue);\n }\n };\n\n // Try immediate initialization\n initializeSelectedItems();\n\n // Fallback delayed initialization if web component needs more time\n // Use requestAnimationFrame for zoneless compatibility\n requestAnimationFrame(() => initializeSelectedItems());\n }\n}\n\n// Re-export types for convenience\nexport { ISegmentedButtonItem } from '@ui5/webcomponents/dist/SegmentedButton.js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -191,6 +191,11 @@ class Select {
191
191
  // Read the signal value
192
192
  const value = this[signalName]();
193
193
  if (wcElement) {
194
+ // Skip writes when the signal is undefined and the property is already truthy
195
+ // This prevents clobbering imperatively-set values (e.g., from RouterLink)
196
+ if (value === undefined && wcElement[inputName]) {
197
+ return;
198
+ }
194
199
  // Write the value to the Web Component's property
195
200
  wcElement[inputName] = value;
196
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-ui5-webcomponents-select.mjs","sources":["../../../../libs/ui5-webcomponents/select/index.ts","../../../../libs/ui5-webcomponents/select/fundamental-ngx-ui5-webcomponents-select.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/Select.js';\nimport { default as _Select } from '@ui5/webcomponents/dist/Select.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\nimport { GenericControlValueAccessor, CVA_CONFIG } from '@fundamental-ngx/ui5-webcomponents/utils';\nimport { IOption } from '@ui5/webcomponents/dist/Select.js';\nimport { default as SelectTextSeparator } from '@ui5/webcomponents/dist/types/SelectTextSeparator.js';\nimport { default as ValueState } from '@ui5/webcomponents-base/dist/types/ValueState.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-select, [ui5-select]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5Select',\n hostDirectives: [GenericControlValueAccessor],\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n }),\n {\n provide: CVA_CONFIG,\n useValue: {\n property: 'value',\n events: ['change', 'liveChange'],\n transformValue: (v) => v || ''\n }\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Select implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _Select.prototype.accessibleDescription | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that describe the select.\n */\n accessibleDescriptionRef = input<typeof _Select.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _Select.prototype.accessibleName | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that label the select.\n */\n accessibleNameRef = input<typeof _Select.prototype.accessibleNameRef | undefined>();\n\n /**\n * Defines whether the component is in disabled state.\n\n**Note:** A disabled component is noninteractive.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Determines the name by which the component will be identified upon submission in an HTML form.\n\n**Note:** This property is only applicable within the context of an HTML Form element.\n */\n name = input<typeof _Select.prototype.name | undefined>();\n\n /**\n * Defines whether the component is read-only.\n\n**Note:** A read-only component is not editable,\nbut still provides visual feedback upon user interaction.\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Defines whether the component is required.\n */\n required = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the separator type for the two columns layout when Select is in read-only mode.\n */\n textSeparator = input<typeof _Select.prototype.textSeparator | undefined>(\"Dash\");\n\n /**\n * Defines the tooltip of the select.\n */\n tooltip = input<typeof _Select.prototype.tooltip | undefined>();\n\n /**\n * Defines the value of the component:\n\n- when get - returns the value of the component or the value/text content of the selected option.\n- when set - selects the option with matching `value` property or text content.\n\n**Note:** Use either the Select's value or the Options' selected property.\nMixed usage could result in unexpected behavior.\n\n**Note:** If the given value does not match any existing option,\nno option will be selected and the Select component will be displayed as empty.\n */\n value = input<typeof _Select.prototype.value | undefined>(\"\");\n\n /**\n * Defines the value state of the component.\n */\n valueState = input<typeof _Select.prototype.valueState | undefined>(\"None\"); // className is now passed\n\n /**\n * Currently selected `ui5-option` element.\n * @readonly This property is managed by the web component and updates reactively.\n * Based on schema: readonly field that updates via change event parameters.\n */\n selectedOption = computed(() => this._selectedOptionSignal());\n\n\n /**\n * Fired when the selected option changes.\n */\n ui5Change = output<UI5CustomEvent<_Select, 'change'>>();\n\n /**\n * Fired after the component's dropdown menu closes.\n */\n ui5Close = output<UI5CustomEvent<_Select, 'close'>>();\n\n /**\n * Fired when the user navigates through the options, but the selection is not finalized,\nor when pressing the ESC key to revert the current selection.\n */\n ui5LiveChange = output<UI5CustomEvent<_Select, 'live-change'>>();\n\n /**\n * Fired after the component's dropdown menu opens.\n */\n ui5Open = output<UI5CustomEvent<_Select, 'open'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the component options.\n\n**Note:** Only one selected option is allowed.\nIf more than one option is defined as selected, the last one would be considered as the selected one.\n\n**Note:** Use the `ui5-option` component to define the desired options.\n * - **label**: Defines the HTML element that will be displayed in the component input part,\nrepresenting the selected option.\n\n**Note:** If not specified and `ui5-option-custom` is used,\neither the option's `display-text` or its textContent will be displayed.\n\n**Note:** If not specified and `ui5-option` is used,\nthe option's textContent will be displayed.\n * - **valueStateMessage**: Defines the value state message that will be displayed as pop up under the component.\n\n**Note:** If not specified, a default text (in the respective language) will be displayed.\n\n**Note:** The `valueStateMessage` would be displayed,\nwhen the component is in `Information`, `Critical` or `Negative` value state.\n\n**Note:** If the component has `suggestionItems`,\nthe `valueStateMessage` would be displayed as part of the same popover, if used on desktop, or dialog - on phone.\n *\n * @example\n * ```html\n * <ui5-select>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-select>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the component options.\\n\\n**Note:** Only one selected option is allowed.\\nIf more than one option is defined as selected, the last one would be considered as the selected one.\\n\\n**Note:** Use the `ui5-option` component to define the desired options.\"\n },\n {\n \"name\": \"label\",\n \"description\": \"Defines the HTML element that will be displayed in the component input part,\\nrepresenting the selected option.\\n\\n**Note:** If not specified and `ui5-option-custom` is used,\\neither the option's `display-text` or its textContent will be displayed.\\n\\n**Note:** If not specified and `ui5-option` is used,\\nthe option's textContent will be displayed.\",\n \"since\": \"1.17.0\"\n },\n {\n \"name\": \"valueStateMessage\",\n \"description\": \"Defines the value state message that will be displayed as pop up under the component.\\n\\n**Note:** If not specified, a default text (in the respective language) will be displayed.\\n\\n**Note:** The `valueStateMessage` would be displayed,\\nwhen the component is in `Information`, `Critical` or `Negative` value state.\\n\\n**Note:** If the component has `suggestionItems`,\\nthe `valueStateMessage` would be displayed as part of the same popover, if used on desktop, or dialog - on phone.\"\n }\n ];\n\n\n public elementRef: ElementRef<_Select> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n // Internal signal to track selectedOption from change events\n private _selectedOptionSignal = signal<IOption | undefined>(undefined);\n\n get element(): _Select {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'disabled',\n 'name',\n 'readonly',\n 'required',\n 'textSeparator',\n 'tooltip',\n 'value',\n 'valueState',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Change',\n 'ui5Close',\n 'ui5LiveChange',\n 'ui5Open',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n // Update selectedOption signal when change event fires\n if (eventName === 'change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedOption from event detail, fallback to web component property\n const selectedOptionValue = customEvent.detail?.selectedOption || wcElement.selectedOption || undefined;\n this._selectedOptionSignal.set(selectedOptionValue);\n }\n // Update selectedOption signal when live-change event fires\n if (eventName === 'live-change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedOption from event detail, fallback to web component property\n const selectedOptionValue = customEvent.detail?.selectedOption || wcElement.selectedOption || undefined;\n this._selectedOptionSignal.set(selectedOptionValue);\n }\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n // Initialize selectedOption signal with current state using delayed initialization\n // to handle web component timing properly\n const initializeSelectedOption = (): void => {\n const currentValue = wcElement.selectedOption || undefined;\n if (JSON.stringify(currentValue) !== JSON.stringify(this._selectedOptionSignal())) {\n this._selectedOptionSignal.set(currentValue);\n }\n };\n\n // Try immediate initialization\n initializeSelectedOption();\n\n // Fallback delayed initialization if web component needs more time\n // Use requestAnimationFrame for zoneless compatibility\n requestAnimationFrame(() => initializeSelectedOption());\n }\n}\n\n// Re-export types for convenience\nexport { IOption } from '@ui5/webcomponents/dist/Select.js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-ui5-webcomponents-select.mjs","sources":["../../../../libs/ui5-webcomponents/select/index.ts","../../../../libs/ui5-webcomponents/select/fundamental-ngx-ui5-webcomponents-select.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/Select.js';\nimport { default as _Select } from '@ui5/webcomponents/dist/Select.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\nimport { GenericControlValueAccessor, CVA_CONFIG } from '@fundamental-ngx/ui5-webcomponents/utils';\nimport { IOption } from '@ui5/webcomponents/dist/Select.js';\nimport { default as SelectTextSeparator } from '@ui5/webcomponents/dist/types/SelectTextSeparator.js';\nimport { default as ValueState } from '@ui5/webcomponents-base/dist/types/ValueState.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-select, [ui5-select]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5Select',\n hostDirectives: [GenericControlValueAccessor],\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n }),\n {\n provide: CVA_CONFIG,\n useValue: {\n property: 'value',\n events: ['change', 'liveChange'],\n transformValue: (v) => v || ''\n }\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Select implements AfterViewInit {\n\n /**\n * Defines the accessible description of the component.\n */\n accessibleDescription = input<typeof _Select.prototype.accessibleDescription | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that describe the select.\n */\n accessibleDescriptionRef = input<typeof _Select.prototype.accessibleDescriptionRef | undefined>();\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _Select.prototype.accessibleName | undefined>();\n\n /**\n * Receives id(or many ids) of the elements that label the select.\n */\n accessibleNameRef = input<typeof _Select.prototype.accessibleNameRef | undefined>();\n\n /**\n * Defines whether the component is in disabled state.\n\n**Note:** A disabled component is noninteractive.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Determines the name by which the component will be identified upon submission in an HTML form.\n\n**Note:** This property is only applicable within the context of an HTML Form element.\n */\n name = input<typeof _Select.prototype.name | undefined>();\n\n /**\n * Defines whether the component is read-only.\n\n**Note:** A read-only component is not editable,\nbut still provides visual feedback upon user interaction.\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Defines whether the component is required.\n */\n required = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the separator type for the two columns layout when Select is in read-only mode.\n */\n textSeparator = input<typeof _Select.prototype.textSeparator | undefined>(\"Dash\");\n\n /**\n * Defines the tooltip of the select.\n */\n tooltip = input<typeof _Select.prototype.tooltip | undefined>();\n\n /**\n * Defines the value of the component:\n\n- when get - returns the value of the component or the value/text content of the selected option.\n- when set - selects the option with matching `value` property or text content.\n\n**Note:** Use either the Select's value or the Options' selected property.\nMixed usage could result in unexpected behavior.\n\n**Note:** If the given value does not match any existing option,\nno option will be selected and the Select component will be displayed as empty.\n */\n value = input<typeof _Select.prototype.value | undefined>(\"\");\n\n /**\n * Defines the value state of the component.\n */\n valueState = input<typeof _Select.prototype.valueState | undefined>(\"None\"); // className is now passed\n\n /**\n * Currently selected `ui5-option` element.\n * @readonly This property is managed by the web component and updates reactively.\n * Based on schema: readonly field that updates via change event parameters.\n */\n selectedOption = computed(() => this._selectedOptionSignal());\n\n\n /**\n * Fired when the selected option changes.\n */\n ui5Change = output<UI5CustomEvent<_Select, 'change'>>();\n\n /**\n * Fired after the component's dropdown menu closes.\n */\n ui5Close = output<UI5CustomEvent<_Select, 'close'>>();\n\n /**\n * Fired when the user navigates through the options, but the selection is not finalized,\nor when pressing the ESC key to revert the current selection.\n */\n ui5LiveChange = output<UI5CustomEvent<_Select, 'live-change'>>();\n\n /**\n * Fired after the component's dropdown menu opens.\n */\n ui5Open = output<UI5CustomEvent<_Select, 'open'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the component options.\n\n**Note:** Only one selected option is allowed.\nIf more than one option is defined as selected, the last one would be considered as the selected one.\n\n**Note:** Use the `ui5-option` component to define the desired options.\n * - **label**: Defines the HTML element that will be displayed in the component input part,\nrepresenting the selected option.\n\n**Note:** If not specified and `ui5-option-custom` is used,\neither the option's `display-text` or its textContent will be displayed.\n\n**Note:** If not specified and `ui5-option` is used,\nthe option's textContent will be displayed.\n * - **valueStateMessage**: Defines the value state message that will be displayed as pop up under the component.\n\n**Note:** If not specified, a default text (in the respective language) will be displayed.\n\n**Note:** The `valueStateMessage` would be displayed,\nwhen the component is in `Information`, `Critical` or `Negative` value state.\n\n**Note:** If the component has `suggestionItems`,\nthe `valueStateMessage` would be displayed as part of the same popover, if used on desktop, or dialog - on phone.\n *\n * @example\n * ```html\n * <ui5-select>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-select>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the component options.\\n\\n**Note:** Only one selected option is allowed.\\nIf more than one option is defined as selected, the last one would be considered as the selected one.\\n\\n**Note:** Use the `ui5-option` component to define the desired options.\"\n },\n {\n \"name\": \"label\",\n \"description\": \"Defines the HTML element that will be displayed in the component input part,\\nrepresenting the selected option.\\n\\n**Note:** If not specified and `ui5-option-custom` is used,\\neither the option's `display-text` or its textContent will be displayed.\\n\\n**Note:** If not specified and `ui5-option` is used,\\nthe option's textContent will be displayed.\",\n \"since\": \"1.17.0\"\n },\n {\n \"name\": \"valueStateMessage\",\n \"description\": \"Defines the value state message that will be displayed as pop up under the component.\\n\\n**Note:** If not specified, a default text (in the respective language) will be displayed.\\n\\n**Note:** The `valueStateMessage` would be displayed,\\nwhen the component is in `Information`, `Critical` or `Negative` value state.\\n\\n**Note:** If the component has `suggestionItems`,\\nthe `valueStateMessage` would be displayed as part of the same popover, if used on desktop, or dialog - on phone.\"\n }\n ];\n\n\n public elementRef: ElementRef<_Select> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n // Internal signal to track selectedOption from change events\n private _selectedOptionSignal = signal<IOption | undefined>(undefined);\n\n get element(): _Select {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleDescription',\n 'accessibleDescriptionRef',\n 'accessibleName',\n 'accessibleNameRef',\n 'disabled',\n 'name',\n 'readonly',\n 'required',\n 'textSeparator',\n 'tooltip',\n 'value',\n 'valueState',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Change',\n 'ui5Close',\n 'ui5LiveChange',\n 'ui5Open',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n // Update selectedOption signal when change event fires\n if (eventName === 'change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedOption from event detail, fallback to web component property\n const selectedOptionValue = customEvent.detail?.selectedOption || wcElement.selectedOption || undefined;\n this._selectedOptionSignal.set(selectedOptionValue);\n }\n // Update selectedOption signal when live-change event fires\n if (eventName === 'live-change') {\n const customEvent = e as CustomEvent<any>;\n // Use selectedOption from event detail, fallback to web component property\n const selectedOptionValue = customEvent.detail?.selectedOption || wcElement.selectedOption || undefined;\n this._selectedOptionSignal.set(selectedOptionValue);\n }\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n // Initialize selectedOption signal with current state using delayed initialization\n // to handle web component timing properly\n const initializeSelectedOption = (): void => {\n const currentValue = wcElement.selectedOption || undefined;\n if (JSON.stringify(currentValue) !== JSON.stringify(this._selectedOptionSignal())) {\n this._selectedOptionSignal.set(currentValue);\n }\n };\n\n // Try immediate initialization\n initializeSelectedOption();\n\n // Fallback delayed initialization if web component needs more time\n // Use requestAnimationFrame for zoneless compatibility\n requestAnimationFrame(() => initializeSelectedOption());\n }\n}\n\n// Re-export types for convenience\nexport { IOption } from '@ui5/webcomponents/dist/Select.js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -130,6 +130,11 @@ class Slider {
130
130
  // Read the signal value
131
131
  const value = this[signalName]();
132
132
  if (wcElement) {
133
+ // Skip writes when the signal is undefined and the property is already truthy
134
+ // This prevents clobbering imperatively-set values (e.g., from RouterLink)
135
+ if (value === undefined && wcElement[inputName]) {
136
+ return;
137
+ }
133
138
  // Write the value to the Web Component's property
134
139
  wcElement[inputName] = value;
135
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-ui5-webcomponents-slider.mjs","sources":["../../../../libs/ui5-webcomponents/slider/index.ts","../../../../libs/ui5-webcomponents/slider/fundamental-ngx-ui5-webcomponents-slider.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/Slider.js';\nimport { default as _Slider } from '@ui5/webcomponents/dist/Slider.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\nimport { GenericControlValueAccessor, CVA_CONFIG } from '@fundamental-ngx/ui5-webcomponents/utils';\nimport { Tickmark } from '@ui5/webcomponents/dist/SliderScale.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-slider, [ui5-slider]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5Slider',\n hostDirectives: [GenericControlValueAccessor],\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n }),\n {\n provide: CVA_CONFIG,\n useValue: {\n property: 'value',\n events: ['change', 'input'],\n transformValue: (v) => v || ''\n }\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Slider implements AfterViewInit {\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _Slider.prototype.accessibleName | undefined>();\n\n /**\n * Defines whether the slider is in disabled state.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * \nIndicates whether input fields should be used as tooltips for the handles.\n\n**Note:** Setting this option to true will only work if showTooltip is set to true.\n**Note:** In order for the component to comply with the accessibility standard, it is recommended to set the editableTooltip property to true.\n */\n editableTooltip = input(false, { transform: booleanAttribute });\n\n /**\n * Displays a label with a value on every N-th step.\n\n**Note:** The step and tickmarks properties must be enabled.\nExample - if the step value is set to 2 and the label interval is also specified to 2 - then every second\ntickmark will be labelled, which means every 4th value number.\n\n**Note:** This property is ignored when the `tickmarks` property is used.\nIn that case every custom tickmark is labelled with its own `label`.\n */\n labelInterval = input<typeof _Slider.prototype.labelInterval | undefined>(0);\n\n /**\n * Defines the maximum value of the slider.\n */\n max = input<typeof _Slider.prototype.max | undefined>(100);\n\n /**\n * Defines the minimum value of the slider.\n */\n min = input<typeof _Slider.prototype.min | undefined>(0);\n\n /**\n * Determines the name by which the component will be identified upon submission in an HTML form.\n\n**Note:** This property is only applicable within the context of an HTML Form element.\n */\n name = input<typeof _Slider.prototype.name | undefined>();\n\n /**\n * Enables tickmarks visualization for each step.\n\n**Note:** The step must be a positive number.\n */\n showTickmarks = input(false, { transform: booleanAttribute });\n\n /**\n * Enables handle tooltip displaying the current value.\n */\n showTooltip = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the size of the slider's selection intervals (e.g. min = 0, max = 10, step = 5 would result in possible selection of the values 0, 5, 10).\n\n**Note:** If set to 0 the slider handle movement is disabled.\n */\n step = input<typeof _Slider.prototype.step | undefined>(1);\n\n /**\n * Defines custom tickmarks with labels on the slider scale.\nEach tickmark object has a numeric `value` and an optional `label` string.\nTickmarks are purely visual — they display labeled markers at specific positions\nbut do not affect the slider's movement behavior. The slider still moves\naccording to `min`, `max`, and `step`.\n\nWhen the current value matches a tickmark value, the tickmark's label\nis shown in the tooltip and announced via `aria-valuetext`.\n\n**Note:** When `tickmarks` is provided, the scale is automatically shown\n(equivalent to `showTickmarks`), and `labelInterval` is ignored - every\ncustom tickmark is rendered with its own `label`.\n */\n tickmarks = input<Array<Tickmark>>([]);\n\n /**\n * Current value of the slider\n */\n value = input<typeof _Slider.prototype.value | undefined>(0); // className is now passed\n\n\n\n /**\n * Fired when the value changes and the user has finished interacting with the slider.\n */\n ui5Change = output<UI5CustomEvent<_Slider, 'change'>>();\n\n /**\n * Fired when the value changes due to user interaction that is not yet finished - during mouse/touch dragging.\n */\n ui5Input = output<UI5CustomEvent<_Slider, 'input'>>();\n\n\n public elementRef: ElementRef<_Slider> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _Slider {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleName',\n 'disabled',\n 'editableTooltip',\n 'labelInterval',\n 'max',\n 'min',\n 'name',\n 'showTickmarks',\n 'showTooltip',\n 'step',\n 'tickmarks',\n 'value',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Change',\n 'ui5Input',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-ui5-webcomponents-slider.mjs","sources":["../../../../libs/ui5-webcomponents/slider/index.ts","../../../../libs/ui5-webcomponents/slider/fundamental-ngx-ui5-webcomponents-slider.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/Slider.js';\nimport { default as _Slider } from '@ui5/webcomponents/dist/Slider.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\nimport { GenericControlValueAccessor, CVA_CONFIG } from '@fundamental-ngx/ui5-webcomponents/utils';\nimport { Tickmark } from '@ui5/webcomponents/dist/SliderScale.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-slider, [ui5-slider]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5Slider',\n hostDirectives: [GenericControlValueAccessor],\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n }),\n {\n provide: CVA_CONFIG,\n useValue: {\n property: 'value',\n events: ['change', 'input'],\n transformValue: (v) => v || ''\n }\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Slider implements AfterViewInit {\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _Slider.prototype.accessibleName | undefined>();\n\n /**\n * Defines whether the slider is in disabled state.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * \nIndicates whether input fields should be used as tooltips for the handles.\n\n**Note:** Setting this option to true will only work if showTooltip is set to true.\n**Note:** In order for the component to comply with the accessibility standard, it is recommended to set the editableTooltip property to true.\n */\n editableTooltip = input(false, { transform: booleanAttribute });\n\n /**\n * Displays a label with a value on every N-th step.\n\n**Note:** The step and tickmarks properties must be enabled.\nExample - if the step value is set to 2 and the label interval is also specified to 2 - then every second\ntickmark will be labelled, which means every 4th value number.\n\n**Note:** This property is ignored when the `tickmarks` property is used.\nIn that case every custom tickmark is labelled with its own `label`.\n */\n labelInterval = input<typeof _Slider.prototype.labelInterval | undefined>(0);\n\n /**\n * Defines the maximum value of the slider.\n */\n max = input<typeof _Slider.prototype.max | undefined>(100);\n\n /**\n * Defines the minimum value of the slider.\n */\n min = input<typeof _Slider.prototype.min | undefined>(0);\n\n /**\n * Determines the name by which the component will be identified upon submission in an HTML form.\n\n**Note:** This property is only applicable within the context of an HTML Form element.\n */\n name = input<typeof _Slider.prototype.name | undefined>();\n\n /**\n * Enables tickmarks visualization for each step.\n\n**Note:** The step must be a positive number.\n */\n showTickmarks = input(false, { transform: booleanAttribute });\n\n /**\n * Enables handle tooltip displaying the current value.\n */\n showTooltip = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the size of the slider's selection intervals (e.g. min = 0, max = 10, step = 5 would result in possible selection of the values 0, 5, 10).\n\n**Note:** If set to 0 the slider handle movement is disabled.\n */\n step = input<typeof _Slider.prototype.step | undefined>(1);\n\n /**\n * Defines custom tickmarks with labels on the slider scale.\nEach tickmark object has a numeric `value` and an optional `label` string.\nTickmarks are purely visual — they display labeled markers at specific positions\nbut do not affect the slider's movement behavior. The slider still moves\naccording to `min`, `max`, and `step`.\n\nWhen the current value matches a tickmark value, the tickmark's label\nis shown in the tooltip and announced via `aria-valuetext`.\n\n**Note:** When `tickmarks` is provided, the scale is automatically shown\n(equivalent to `showTickmarks`), and `labelInterval` is ignored - every\ncustom tickmark is rendered with its own `label`.\n */\n tickmarks = input<Array<Tickmark>>([]);\n\n /**\n * Current value of the slider\n */\n value = input<typeof _Slider.prototype.value | undefined>(0); // className is now passed\n\n\n\n /**\n * Fired when the value changes and the user has finished interacting with the slider.\n */\n ui5Change = output<UI5CustomEvent<_Slider, 'change'>>();\n\n /**\n * Fired when the value changes due to user interaction that is not yet finished - during mouse/touch dragging.\n */\n ui5Input = output<UI5CustomEvent<_Slider, 'input'>>();\n\n\n public elementRef: ElementRef<_Slider> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _Slider {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibleName',\n 'disabled',\n 'editableTooltip',\n 'labelInterval',\n 'max',\n 'min',\n 'name',\n 'showTickmarks',\n 'showTooltip',\n 'step',\n 'tickmarks',\n 'value',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5Change',\n 'ui5Input',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -43,6 +43,11 @@ class SpecialCalendarDate {
43
43
  // Read the signal value
44
44
  const value = this[signalName]();
45
45
  if (wcElement) {
46
+ // Skip writes when the signal is undefined and the property is already truthy
47
+ // This prevents clobbering imperatively-set values (e.g., from RouterLink)
48
+ if (value === undefined && wcElement[inputName]) {
49
+ return;
50
+ }
46
51
  // Write the value to the Web Component's property
47
52
  wcElement[inputName] = value;
48
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-ui5-webcomponents-special-calendar-date.mjs","sources":["../../../../libs/ui5-webcomponents/special-calendar-date/index.ts","../../../../libs/ui5-webcomponents/special-calendar-date/fundamental-ngx-ui5-webcomponents-special-calendar-date.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/SpecialCalendarDate.js';\nimport { default as _SpecialCalendarDate } from '@ui5/webcomponents/dist/SpecialCalendarDate.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\nimport { default as CalendarLegendItemType } from '@ui5/webcomponents/dist/types/CalendarLegendItemType.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-special-date, [ui5-special-date]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5SpecialCalendarDate',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialCalendarDate implements AfterViewInit {\n\n /**\n * Defines the type of the special date.\n */\n type = input<typeof _SpecialCalendarDate.prototype.type | undefined>(\"None\");\n\n /**\n * The date formatted according to the `formatPattern` property\nof the `ui5-calendar` that hosts the component.\n */\n value = input<typeof _SpecialCalendarDate.prototype.value | undefined>(\"\"); // className is now passed\n\n\n\n\n\n public elementRef: ElementRef<_SpecialCalendarDate> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _SpecialCalendarDate {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'type',\n 'value',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-ui5-webcomponents-special-calendar-date.mjs","sources":["../../../../libs/ui5-webcomponents/special-calendar-date/index.ts","../../../../libs/ui5-webcomponents/special-calendar-date/fundamental-ngx-ui5-webcomponents-special-calendar-date.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/SpecialCalendarDate.js';\nimport { default as _SpecialCalendarDate } from '@ui5/webcomponents/dist/SpecialCalendarDate.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\nimport { default as CalendarLegendItemType } from '@ui5/webcomponents/dist/types/CalendarLegendItemType.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-special-date, [ui5-special-date]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5SpecialCalendarDate',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialCalendarDate implements AfterViewInit {\n\n /**\n * Defines the type of the special date.\n */\n type = input<typeof _SpecialCalendarDate.prototype.type | undefined>(\"None\");\n\n /**\n * The date formatted according to the `formatPattern` property\nof the `ui5-calendar` that hosts the component.\n */\n value = input<typeof _SpecialCalendarDate.prototype.value | undefined>(\"\"); // className is now passed\n\n\n\n\n\n public elementRef: ElementRef<_SpecialCalendarDate> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _SpecialCalendarDate {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'type',\n 'value',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n \n\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -120,6 +120,11 @@ class SplitButton {
120
120
  // Read the signal value
121
121
  const value = this[signalName]();
122
122
  if (wcElement) {
123
+ // Skip writes when the signal is undefined and the property is already truthy
124
+ // This prevents clobbering imperatively-set values (e.g., from RouterLink)
125
+ if (value === undefined && wcElement[inputName]) {
126
+ return;
127
+ }
123
128
  // Write the value to the Web Component's property
124
129
  wcElement[inputName] = value;
125
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-ui5-webcomponents-split-button.mjs","sources":["../../../../libs/ui5-webcomponents/split-button/index.ts","../../../../libs/ui5-webcomponents/split-button/fundamental-ngx-ui5-webcomponents-split-button.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/SplitButton.js';\nimport { default as _SplitButton } from '@ui5/webcomponents/dist/SplitButton.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\nimport { SplitButtonAccessibilityAttributes } from '@ui5/webcomponents/dist/SplitButton.js';\nimport { default as ButtonDesign } from '@ui5/webcomponents/dist/types/ButtonDesign.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-split-button, [ui5-split-button]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5SplitButton',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SplitButton implements AfterViewInit {\n\n /**\n * Defines the additional accessibility attributes that will be applied to the component.\nThe `accessibilityAttributes` property accepts an object with the following optional fields:\n\n- **root**: Attributes that will be applied to the main (text) button.\n - **hasPopup**: Indicates the presence and type of popup triggered by the button.\n Accepts string values: `\"dialog\"`, `\"grid\"`, `\"listbox\"`, `\"menu\"`, or `\"tree\"`.\n - **roleDescription**: Provides a human-readable description for the role of the button.\n Accepts any string value.\n - **title**: Specifies a tooltip or description for screen readers.\n Accepts any string value.\n\t- **ariaKeyShortcuts**: Defines keyboard shortcuts that activate or give focus to the button.\n\n- **arrowButton**: Attributes applied specifically to the arrow (split) button.\n - **hasPopup**: Indicates the presence and type of popup triggered by the arrow button.\n Accepts string values: `\"dialog\"`, `\"grid\"`, `\"listbox\"`, `\"menu\"`, or `\"tree\"`.\n - **expanded**: Indicates whether the popup triggered by the arrow button is currently expanded.\n Accepts boolean values: `true` or `false`.\n */\n accessibilityAttributes = input<typeof _SplitButton.prototype.accessibilityAttributes | undefined>({});\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _SplitButton.prototype.accessibleName | undefined>();\n\n /**\n * Defines whether the arrow button should have the active state styles or not.\n */\n activeArrowButton = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the component design.\n */\n design = input<typeof _SplitButton.prototype.design | undefined>(\"Default\");\n\n /**\n * Defines whether the component is disabled.\nA disabled component can't be pressed or\nfocused, and it is not in the tab chain.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the icon to be displayed as graphical element within the component.\nThe SAP-icons font provides numerous options.\n\nExample:\n\nSee all available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n */\n icon = input<typeof _SplitButton.prototype.icon | undefined>(); // className is now passed\n\n\n\n /**\n * Fired when the user clicks on the arrow action.\n */\n ui5ArrowClick = output<UI5CustomEvent<_SplitButton, 'arrow-click'>>();\n\n /**\n * Fired when the user clicks on the default action.\n */\n ui5Click = output<UI5CustomEvent<_SplitButton, 'click'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the text of the component.\n\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\n *\n * @example\n * ```html\n * <ui5-split-button>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-split-button>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the text of the component.\\n\\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\"\n }\n ];\n\n\n public elementRef: ElementRef<_SplitButton> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _SplitButton {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibilityAttributes',\n 'accessibleName',\n 'activeArrowButton',\n 'design',\n 'disabled',\n 'icon',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5ArrowClick',\n 'ui5Click',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n }\n}\n\n// Re-export types for convenience\nexport { SplitButtonAccessibilityAttributes } from '@ui5/webcomponents/dist/SplitButton.js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-ui5-webcomponents-split-button.mjs","sources":["../../../../libs/ui5-webcomponents/split-button/index.ts","../../../../libs/ui5-webcomponents/split-button/fundamental-ngx-ui5-webcomponents-split-button.ts"],"sourcesContent":["\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n AfterViewInit,\n effect,\n runInInjectionContext,\n inject,\n Injector,\n booleanAttribute,\n computed,\n signal\n} from '@angular/core';\nimport '@ui5/webcomponents/dist/SplitButton.js';\nimport { default as _SplitButton } from '@ui5/webcomponents/dist/SplitButton.js';\nimport { UI5CustomEvent } from '@ui5/webcomponents-base';\nimport {\n ContentDensityObserver,\n contentDensityObserverProviders,\n ContentDensityMode\n} from '@fundamental-ngx/core/content-density';\n\nimport { SplitButtonAccessibilityAttributes } from '@ui5/webcomponents/dist/SplitButton.js';\nimport { default as ButtonDesign } from '@ui5/webcomponents/dist/types/ButtonDesign.js';\n\n@Component({\n standalone: true,\n selector: 'ui5-split-button, [ui5-split-button]',\n template: '<ng-content></ng-content>',\n exportAs: 'ui5SplitButton',\n providers: [\n contentDensityObserverProviders({\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY]\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SplitButton implements AfterViewInit {\n\n /**\n * Defines the additional accessibility attributes that will be applied to the component.\nThe `accessibilityAttributes` property accepts an object with the following optional fields:\n\n- **root**: Attributes that will be applied to the main (text) button.\n - **hasPopup**: Indicates the presence and type of popup triggered by the button.\n Accepts string values: `\"dialog\"`, `\"grid\"`, `\"listbox\"`, `\"menu\"`, or `\"tree\"`.\n - **roleDescription**: Provides a human-readable description for the role of the button.\n Accepts any string value.\n - **title**: Specifies a tooltip or description for screen readers.\n Accepts any string value.\n\t- **ariaKeyShortcuts**: Defines keyboard shortcuts that activate or give focus to the button.\n\n- **arrowButton**: Attributes applied specifically to the arrow (split) button.\n - **hasPopup**: Indicates the presence and type of popup triggered by the arrow button.\n Accepts string values: `\"dialog\"`, `\"grid\"`, `\"listbox\"`, `\"menu\"`, or `\"tree\"`.\n - **expanded**: Indicates whether the popup triggered by the arrow button is currently expanded.\n Accepts boolean values: `true` or `false`.\n */\n accessibilityAttributes = input<typeof _SplitButton.prototype.accessibilityAttributes | undefined>({});\n\n /**\n * Defines the accessible ARIA name of the component.\n */\n accessibleName = input<typeof _SplitButton.prototype.accessibleName | undefined>();\n\n /**\n * Defines whether the arrow button should have the active state styles or not.\n */\n activeArrowButton = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the component design.\n */\n design = input<typeof _SplitButton.prototype.design | undefined>(\"Default\");\n\n /**\n * Defines whether the component is disabled.\nA disabled component can't be pressed or\nfocused, and it is not in the tab chain.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Defines the icon to be displayed as graphical element within the component.\nThe SAP-icons font provides numerous options.\n\nExample:\n\nSee all available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n */\n icon = input<typeof _SplitButton.prototype.icon | undefined>(); // className is now passed\n\n\n\n /**\n * Fired when the user clicks on the arrow action.\n */\n ui5ArrowClick = output<UI5CustomEvent<_SplitButton, 'arrow-click'>>();\n\n /**\n * Fired when the user clicks on the default action.\n */\n ui5Click = output<UI5CustomEvent<_SplitButton, 'click'>>();\n\n /**\n * Available slots for content projection in this component.\n *\n * Slots allow you to insert custom content into predefined areas of the web component.\n * Use the `slot` attribute on child elements to target specific slots.\n *\n * - **(default)**: Defines the text of the component.\n\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\n *\n * @example\n * ```html\n * <ui5-split-button>\n * <div slot=\"header\">Custom header content</div>\n * <p>Default slot content</p>\n * </ui5-split-button>\n * ```\n *\n * @readonly\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}\n */\n readonly slots = [\n {\n \"name\": \"default\",\n \"description\": \"Defines the text of the component.\\n\\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\"\n }\n ];\n\n\n public elementRef: ElementRef<_SplitButton> = inject(ElementRef);\n public injector = inject(Injector);\n\n /**\n * Content density observer is injected to activate automatic CSS class and\n * UI5 attribute application. The observer self-initializes, no explicit subscribe() needed.\n * @private\n */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n get element(): _SplitButton {\n return this.elementRef.nativeElement;\n }\n\n ngAfterViewInit(): void {\n const wcElement = this.element;\n \n const inputsToSync = [\n 'accessibilityAttributes',\n 'accessibleName',\n 'activeArrowButton',\n 'design',\n 'disabled',\n 'icon',\n ];\n \n // Synchronize inputs (properties)\n for (const inputName of inputsToSync) {\n // Find the corresponding camelCase signal property on the Angular component\n const signalName = inputName.replace(/-./g, (x: string) => x[1].toUpperCase());\n\n // Use the Injector to run the effect in the correct context\n if (this[signalName] && typeof this[signalName] === 'function') {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n // Read the signal value\n const value = this[signalName]();\n if (wcElement) {\n // Skip writes when the signal is undefined and the property is already truthy\n // This prevents clobbering imperatively-set values (e.g., from RouterLink)\n if (value === undefined && wcElement[inputName]) {\n return;\n }\n // Write the value to the Web Component's property\n wcElement[inputName] = value;\n }\n });\n });\n }\n }\n \n \n const outputsToSync = [\n 'ui5ArrowClick',\n 'ui5Click',\n ];\n \n // Synchronize outputs (events)\n for (const outputName of outputsToSync) {\n // Map Angular output name to UI5 web component event name\n const eventName = outputName.replace('ui5', '').replace(/([A-Z])/g, '-$1').toLowerCase().substring(1);\n // Ensure the output property exists and has an emit function before adding listener\n if (this[outputName] && typeof this[outputName].emit === 'function' && wcElement.addEventListener) {\n // Cast the listener to the correct type to satisfy TypeScript\n wcElement.addEventListener(eventName, (e) => {\n\n this[outputName].emit(e as CustomEvent<any>);\n });\n }\n }\n \n\n }\n}\n\n// Re-export types for convenience\nexport { SplitButtonAccessibilityAttributes } from '@ui5/webcomponents/dist/SplitButton.js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAwCa,WAAW,CAAA;AAZxB,IAAA,WAAA,GAAA;AAcE;;;;;;;;;;;;;;;;;;AAkBG;AACH,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAoE,EAAE,mEAAC;AAEtG;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4D;AAElF;;AAEG;QACH,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,8DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjE;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAmD,SAAS,kDAAC;AAE3E;;;;AAIG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD;;;;;;;AAOG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAkD,CAAC;AAI/D;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,MAAM,EAA+C;AAErE;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAyC;AAE1D;;;;;;;;;;;;;;;;;;;;AAoBG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG;AACb,YAAA;AACI,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,aAAa,EAAE;AAClB;SACJ;AAGM,QAAA,IAAA,CAAA,UAAU,GAA6B,MAAM,CAAC,UAAU,CAAC;AACzD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAElC;;;;AAIG;AACc,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAiE1E,IAAA;AA/DC,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACtC;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO;AAE9B,QAAA,MAAM,YAAY,GAAG;YACnB,yBAAyB;YACzB,gBAAgB;YAChB,mBAAmB;YACnB,QAAQ;YACR,UAAU;YACV,MAAM;SACP;;AAGD,QAAA,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE;;YAEpC,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;AAG9E,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;AAC9D,gBAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;oBACxC,MAAM,CAAC,MAAK;;AAEV,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE;wBAChC,IAAI,SAAS,EAAE;;;4BAGb,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE;gCAC/C;4BACF;;AAEA,4BAAA,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK;wBAC9B;AACF,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;QACF;AAGA,QAAA,MAAM,aAAa,GAAG;YACpB,eAAe;YACf,UAAU;SACX;;AAGD,QAAA,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE;;YAEtC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;;AAErG,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,gBAAgB,EAAE;;gBAEjG,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,KAAI;oBAE1C,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAqB,CAAC;AAC9C,gBAAA,CAAC,CAAC;YACJ;QACF;IAGF;8GAxKW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAPX;AACT,YAAA,+BAA+B,CAAC;gBAC9B,uBAAuB,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI;aAC9E;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANS,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAS1B,WAAW,EAAA,UAAA,EAAA,CAAA;kBAZvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA,+BAA+B,CAAC;4BAC9B,uBAAuB,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI;yBAC9E;AACF,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACvCD;;AAEG;;;;"}
@@ -147,6 +147,11 @@ class StepInput {
147
147
  // Read the signal value
148
148
  const value = this[signalName]();
149
149
  if (wcElement) {
150
+ // Skip writes when the signal is undefined and the property is already truthy
151
+ // This prevents clobbering imperatively-set values (e.g., from RouterLink)
152
+ if (value === undefined && wcElement[inputName]) {
153
+ return;
154
+ }
150
155
  // Write the value to the Web Component's property
151
156
  wcElement[inputName] = value;
152
157
  }