@gnggln/ng-ui-system 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (721) hide show
  1. package/accordion/entry-accordion.d.ts +4 -0
  2. package/accordion/index.d.ts +5 -0
  3. package/accordion/lib/components/accordion/accordion.component.d.ts +125 -0
  4. package/accordion/lib/components/accordion/accordion.types.d.ts +64 -0
  5. package/accordion/lib/components/accordion/index.d.ts +2 -0
  6. package/accordion/lib/core/types/index.d.ts +133 -0
  7. package/base-layout/entry-base-layout.d.ts +4 -0
  8. package/base-layout/index.d.ts +5 -0
  9. package/base-layout/lib/components/base-layout/base-layout.component.d.ts +108 -0
  10. package/base-layout/lib/components/base-layout/base-layout.types.d.ts +40 -0
  11. package/base-layout/lib/components/base-layout/index.d.ts +13 -0
  12. package/base-layout/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  13. package/base-layout/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  14. package/base-layout/lib/components/blackbox/blackbox.service.d.ts +144 -0
  15. package/base-layout/lib/components/blackbox/blackbox.types.d.ts +238 -0
  16. package/base-layout/lib/components/button/button-area.component.d.ts +93 -0
  17. package/base-layout/lib/components/button/button.component.d.ts +61 -0
  18. package/base-layout/lib/components/button/button.types.d.ts +75 -0
  19. package/base-layout/lib/components/page-header/breadcrumb.service.d.ts +96 -0
  20. package/base-layout/lib/components/page-header/page-header.component.d.ts +59 -0
  21. package/base-layout/lib/components/page-header/page-header.types.d.ts +96 -0
  22. package/base-layout/lib/core/types/index.d.ts +133 -0
  23. package/blackbox/entry-blackbox.d.ts +4 -0
  24. package/blackbox/index.d.ts +5 -0
  25. package/blackbox/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
  26. package/blackbox/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
  27. package/blackbox/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  28. package/blackbox/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
  29. package/blackbox/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  30. package/blackbox/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
  31. package/blackbox/lib/components/blackbox/blackbox.service.d.ts +144 -0
  32. package/blackbox/lib/components/blackbox/blackbox.types.d.ts +238 -0
  33. package/blackbox/lib/components/blackbox/index.d.ts +23 -0
  34. package/blackbox/lib/components/blackbox/ui-track.directive.d.ts +20 -0
  35. package/blackbox/lib/components/button/button-area.component.d.ts +93 -0
  36. package/blackbox/lib/components/button/button.component.d.ts +61 -0
  37. package/blackbox/lib/components/button/button.types.d.ts +75 -0
  38. package/blackbox/lib/components/button/index.d.ts +15 -0
  39. package/blackbox/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  40. package/blackbox/lib/components/modal/index.d.ts +4 -0
  41. package/blackbox/lib/components/modal/modal.component.d.ts +44 -0
  42. package/blackbox/lib/components/modal/modal.service.d.ts +93 -0
  43. package/blackbox/lib/components/modal/modal.types.d.ts +110 -0
  44. package/blackbox/lib/core/types/index.d.ts +133 -0
  45. package/button/entry-button.d.ts +4 -0
  46. package/button/index.d.ts +5 -0
  47. package/button/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  48. package/button/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  49. package/button/lib/components/blackbox/blackbox.service.d.ts +144 -0
  50. package/button/lib/components/blackbox/blackbox.types.d.ts +238 -0
  51. package/button/lib/components/button/button-area.component.d.ts +93 -0
  52. package/button/lib/components/button/button.component.d.ts +61 -0
  53. package/button/lib/components/button/button.types.d.ts +75 -0
  54. package/button/lib/components/button/index.d.ts +15 -0
  55. package/button/lib/core/types/index.d.ts +133 -0
  56. package/core/entry-core.d.ts +5 -0
  57. package/core/index.d.ts +5 -0
  58. package/core/lib/core/types/index.d.ts +133 -0
  59. package/core/lib/core/utils/index.d.ts +60 -0
  60. package/crud-table/entry-crud-table.d.ts +4 -0
  61. package/crud-table/index.d.ts +5 -0
  62. package/crud-table/lib/components/accordion/accordion.component.d.ts +125 -0
  63. package/crud-table/lib/components/accordion/accordion.types.d.ts +64 -0
  64. package/crud-table/lib/components/accordion/index.d.ts +2 -0
  65. package/crud-table/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  66. package/crud-table/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  67. package/crud-table/lib/components/blackbox/blackbox.service.d.ts +144 -0
  68. package/crud-table/lib/components/blackbox/blackbox.types.d.ts +238 -0
  69. package/crud-table/lib/components/button/button-area.component.d.ts +93 -0
  70. package/crud-table/lib/components/button/button.component.d.ts +61 -0
  71. package/crud-table/lib/components/button/button.types.d.ts +75 -0
  72. package/crud-table/lib/components/button/index.d.ts +15 -0
  73. package/crud-table/lib/components/crud-table/crud-table.component.d.ts +143 -0
  74. package/crud-table/lib/components/crud-table/crud-table.types.d.ts +207 -0
  75. package/crud-table/lib/components/crud-table/index.d.ts +15 -0
  76. package/crud-table/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  77. package/crud-table/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  78. package/crud-table/lib/components/form-builder/form-builder.component.d.ts +279 -0
  79. package/crud-table/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  80. package/crud-table/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  81. package/crud-table/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  82. package/crud-table/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  83. package/crud-table/lib/components/form-builder/services/location.service.d.ts +83 -0
  84. package/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  85. package/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  86. package/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  87. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  88. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  89. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  90. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  91. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  92. package/crud-table/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  93. package/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  94. package/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  95. package/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  96. package/crud-table/lib/components/form-builder/types/condition.types.d.ts +51 -0
  97. package/crud-table/lib/components/form-builder/types/field.types.d.ts +330 -0
  98. package/crud-table/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  99. package/crud-table/lib/components/form-builder/types/schema.types.d.ts +304 -0
  100. package/crud-table/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  101. package/crud-table/lib/components/form-builder/types/validation.types.d.ts +179 -0
  102. package/crud-table/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  103. package/crud-table/lib/components/modal/modal.service.d.ts +93 -0
  104. package/crud-table/lib/components/modal/modal.types.d.ts +110 -0
  105. package/crud-table/lib/core/logging/logger.config.d.ts +18 -0
  106. package/crud-table/lib/core/logging/logger.service.d.ts +75 -0
  107. package/crud-table/lib/core/logging/logger.types.d.ts +70 -0
  108. package/crud-table/lib/core/types/index.d.ts +133 -0
  109. package/esm2022/accordion/entry-accordion.mjs +5 -0
  110. package/esm2022/accordion/gnggln-ng-ui-system-accordion.mjs +5 -0
  111. package/esm2022/accordion/lib/components/accordion/accordion.component.mjs +398 -0
  112. package/esm2022/accordion/lib/components/accordion/accordion.types.mjs +6 -0
  113. package/esm2022/accordion/lib/components/accordion/index.mjs +2 -0
  114. package/esm2022/accordion/lib/core/types/index.mjs +6 -0
  115. package/esm2022/base-layout/entry-base-layout.mjs +5 -0
  116. package/esm2022/base-layout/gnggln-ng-ui-system-base-layout.mjs +5 -0
  117. package/esm2022/base-layout/lib/components/base-layout/base-layout.component.mjs +272 -0
  118. package/esm2022/base-layout/lib/components/base-layout/base-layout.types.mjs +6 -0
  119. package/esm2022/base-layout/lib/components/base-layout/index.mjs +14 -0
  120. package/esm2022/base-layout/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  121. package/esm2022/base-layout/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  122. package/esm2022/base-layout/lib/components/blackbox/blackbox.service.mjs +323 -0
  123. package/esm2022/base-layout/lib/components/blackbox/blackbox.types.mjs +25 -0
  124. package/esm2022/base-layout/lib/components/button/button-area.component.mjs +210 -0
  125. package/esm2022/base-layout/lib/components/button/button.component.mjs +180 -0
  126. package/esm2022/base-layout/lib/components/button/button.types.mjs +6 -0
  127. package/esm2022/base-layout/lib/components/page-header/breadcrumb.service.mjs +243 -0
  128. package/esm2022/base-layout/lib/components/page-header/page-header.component.mjs +243 -0
  129. package/esm2022/base-layout/lib/components/page-header/page-header.types.mjs +21 -0
  130. package/esm2022/base-layout/lib/core/types/index.mjs +6 -0
  131. package/esm2022/blackbox/entry-blackbox.mjs +5 -0
  132. package/esm2022/blackbox/gnggln-ng-ui-system-blackbox.mjs +5 -0
  133. package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
  134. package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
  135. package/esm2022/blackbox/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  136. package/esm2022/blackbox/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
  137. package/esm2022/blackbox/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  138. package/esm2022/blackbox/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
  139. package/esm2022/blackbox/lib/components/blackbox/blackbox.service.mjs +323 -0
  140. package/esm2022/blackbox/lib/components/blackbox/blackbox.types.mjs +25 -0
  141. package/esm2022/blackbox/lib/components/blackbox/index.mjs +27 -0
  142. package/esm2022/blackbox/lib/components/blackbox/ui-track.directive.mjs +69 -0
  143. package/esm2022/blackbox/lib/components/button/button-area.component.mjs +210 -0
  144. package/esm2022/blackbox/lib/components/button/button.component.mjs +180 -0
  145. package/esm2022/blackbox/lib/components/button/button.types.mjs +6 -0
  146. package/esm2022/blackbox/lib/components/button/index.mjs +16 -0
  147. package/esm2022/blackbox/lib/components/modal/confirm-dialog.component.mjs +151 -0
  148. package/esm2022/blackbox/lib/components/modal/index.mjs +4 -0
  149. package/esm2022/blackbox/lib/components/modal/modal.component.mjs +139 -0
  150. package/esm2022/blackbox/lib/components/modal/modal.service.mjs +197 -0
  151. package/esm2022/blackbox/lib/components/modal/modal.types.mjs +6 -0
  152. package/esm2022/blackbox/lib/core/types/index.mjs +6 -0
  153. package/esm2022/button/entry-button.mjs +5 -0
  154. package/esm2022/button/gnggln-ng-ui-system-button.mjs +5 -0
  155. package/esm2022/button/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  156. package/esm2022/button/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  157. package/esm2022/button/lib/components/blackbox/blackbox.service.mjs +323 -0
  158. package/esm2022/button/lib/components/blackbox/blackbox.types.mjs +25 -0
  159. package/esm2022/button/lib/components/button/button-area.component.mjs +210 -0
  160. package/esm2022/button/lib/components/button/button.component.mjs +180 -0
  161. package/esm2022/button/lib/components/button/button.types.mjs +6 -0
  162. package/esm2022/button/lib/components/button/index.mjs +16 -0
  163. package/esm2022/button/lib/core/types/index.mjs +6 -0
  164. package/esm2022/core/entry-core.mjs +6 -0
  165. package/esm2022/core/gnggln-ng-ui-system-core.mjs +5 -0
  166. package/esm2022/core/lib/core/types/index.mjs +6 -0
  167. package/esm2022/core/lib/core/utils/index.mjs +102 -0
  168. package/esm2022/crud-table/entry-crud-table.mjs +5 -0
  169. package/esm2022/crud-table/gnggln-ng-ui-system-crud-table.mjs +5 -0
  170. package/esm2022/crud-table/lib/components/accordion/accordion.component.mjs +398 -0
  171. package/esm2022/crud-table/lib/components/accordion/accordion.types.mjs +6 -0
  172. package/esm2022/crud-table/lib/components/accordion/index.mjs +2 -0
  173. package/esm2022/crud-table/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  174. package/esm2022/crud-table/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  175. package/esm2022/crud-table/lib/components/blackbox/blackbox.service.mjs +323 -0
  176. package/esm2022/crud-table/lib/components/blackbox/blackbox.types.mjs +25 -0
  177. package/esm2022/crud-table/lib/components/button/button-area.component.mjs +210 -0
  178. package/esm2022/crud-table/lib/components/button/button.component.mjs +180 -0
  179. package/esm2022/crud-table/lib/components/button/button.types.mjs +6 -0
  180. package/esm2022/crud-table/lib/components/button/index.mjs +16 -0
  181. package/esm2022/crud-table/lib/components/crud-table/crud-table.component.mjs +789 -0
  182. package/esm2022/crud-table/lib/components/crud-table/crud-table.types.mjs +6 -0
  183. package/esm2022/crud-table/lib/components/crud-table/index.mjs +16 -0
  184. package/esm2022/crud-table/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  185. package/esm2022/crud-table/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  186. package/esm2022/crud-table/lib/components/form-builder/form-builder.component.mjs +1351 -0
  187. package/esm2022/crud-table/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  188. package/esm2022/crud-table/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  189. package/esm2022/crud-table/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  190. package/esm2022/crud-table/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  191. package/esm2022/crud-table/lib/components/form-builder/services/location.service.mjs +141 -0
  192. package/esm2022/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  193. package/esm2022/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  194. package/esm2022/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  195. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  196. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  197. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  198. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  199. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  200. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  201. package/esm2022/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  202. package/esm2022/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  203. package/esm2022/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  204. package/esm2022/crud-table/lib/components/form-builder/types/condition.types.mjs +6 -0
  205. package/esm2022/crud-table/lib/components/form-builder/types/field.types.mjs +6 -0
  206. package/esm2022/crud-table/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  207. package/esm2022/crud-table/lib/components/form-builder/types/schema.types.mjs +6 -0
  208. package/esm2022/crud-table/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  209. package/esm2022/crud-table/lib/components/form-builder/types/validation.types.mjs +10 -0
  210. package/esm2022/crud-table/lib/components/modal/confirm-dialog.component.mjs +151 -0
  211. package/esm2022/crud-table/lib/components/modal/modal.service.mjs +197 -0
  212. package/esm2022/crud-table/lib/components/modal/modal.types.mjs +6 -0
  213. package/esm2022/crud-table/lib/core/logging/logger.config.mjs +18 -0
  214. package/esm2022/crud-table/lib/core/logging/logger.service.mjs +295 -0
  215. package/esm2022/crud-table/lib/core/logging/logger.types.mjs +7 -0
  216. package/esm2022/crud-table/lib/core/types/index.mjs +6 -0
  217. package/esm2022/crud-table/lib/sources/location-data.opt.json +8942 -0
  218. package/esm2022/crud-table/lib/sources/nazioni.opt.json +215 -0
  219. package/esm2022/form-builder/entry-form-builder.mjs +5 -0
  220. package/esm2022/form-builder/gnggln-ng-ui-system-form-builder.mjs +5 -0
  221. package/esm2022/form-builder/lib/components/accordion/accordion.component.mjs +398 -0
  222. package/esm2022/form-builder/lib/components/accordion/accordion.types.mjs +6 -0
  223. package/esm2022/form-builder/lib/components/accordion/index.mjs +2 -0
  224. package/esm2022/form-builder/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  225. package/esm2022/form-builder/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  226. package/esm2022/form-builder/lib/components/blackbox/blackbox.service.mjs +323 -0
  227. package/esm2022/form-builder/lib/components/blackbox/blackbox.types.mjs +25 -0
  228. package/esm2022/form-builder/lib/components/button/button-area.component.mjs +210 -0
  229. package/esm2022/form-builder/lib/components/button/button.component.mjs +180 -0
  230. package/esm2022/form-builder/lib/components/button/button.types.mjs +6 -0
  231. package/esm2022/form-builder/lib/components/button/index.mjs +16 -0
  232. package/esm2022/form-builder/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  233. package/esm2022/form-builder/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  234. package/esm2022/form-builder/lib/components/form-builder/form-builder.component.mjs +1351 -0
  235. package/esm2022/form-builder/lib/components/form-builder/form-wizard.component.mjs +1064 -0
  236. package/esm2022/form-builder/lib/components/form-builder/index.mjs +24 -0
  237. package/esm2022/form-builder/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  238. package/esm2022/form-builder/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  239. package/esm2022/form-builder/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  240. package/esm2022/form-builder/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  241. package/esm2022/form-builder/lib/components/form-builder/services/location.service.mjs +141 -0
  242. package/esm2022/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  243. package/esm2022/form-builder/lib/components/form-builder/services/wizard-sync.service.mjs +84 -0
  244. package/esm2022/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  245. package/esm2022/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  246. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  247. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  248. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  249. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  250. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  251. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  252. package/esm2022/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  253. package/esm2022/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  254. package/esm2022/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  255. package/esm2022/form-builder/lib/components/form-builder/types/condition.types.mjs +6 -0
  256. package/esm2022/form-builder/lib/components/form-builder/types/field.types.mjs +6 -0
  257. package/esm2022/form-builder/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  258. package/esm2022/form-builder/lib/components/form-builder/types/index.mjs +3 -0
  259. package/esm2022/form-builder/lib/components/form-builder/types/schema.types.mjs +6 -0
  260. package/esm2022/form-builder/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  261. package/esm2022/form-builder/lib/components/form-builder/types/validation.types.mjs +10 -0
  262. package/esm2022/form-builder/lib/core/logging/logger.config.mjs +18 -0
  263. package/esm2022/form-builder/lib/core/logging/logger.service.mjs +295 -0
  264. package/esm2022/form-builder/lib/core/logging/logger.types.mjs +7 -0
  265. package/esm2022/form-builder/lib/core/types/index.mjs +6 -0
  266. package/esm2022/form-builder/lib/sources/location-data.opt.json +8942 -0
  267. package/esm2022/form-builder/lib/sources/nazioni.opt.json +215 -0
  268. package/esm2022/form-builder-editor/entry-form-builder-editor.mjs +5 -0
  269. package/esm2022/form-builder-editor/gnggln-ng-ui-system-form-builder-editor.mjs +5 -0
  270. package/esm2022/form-builder-editor/lib/components/accordion/accordion.component.mjs +398 -0
  271. package/esm2022/form-builder-editor/lib/components/accordion/accordion.types.mjs +6 -0
  272. package/esm2022/form-builder-editor/lib/components/accordion/index.mjs +2 -0
  273. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  274. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  275. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.service.mjs +323 -0
  276. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.types.mjs +25 -0
  277. package/esm2022/form-builder-editor/lib/components/button/button-area.component.mjs +210 -0
  278. package/esm2022/form-builder-editor/lib/components/button/button.component.mjs +180 -0
  279. package/esm2022/form-builder-editor/lib/components/button/button.types.mjs +6 -0
  280. package/esm2022/form-builder-editor/lib/components/button/index.mjs +16 -0
  281. package/esm2022/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  282. package/esm2022/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  283. package/esm2022/form-builder-editor/lib/components/form-builder/form-builder.component.mjs +1351 -0
  284. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  285. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  286. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  287. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  288. package/esm2022/form-builder-editor/lib/components/form-builder/services/location.service.mjs +141 -0
  289. package/esm2022/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  290. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  291. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  292. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  293. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  294. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  295. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  296. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  297. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  298. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  299. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  300. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  301. package/esm2022/form-builder-editor/lib/components/form-builder/types/condition.types.mjs +6 -0
  302. package/esm2022/form-builder-editor/lib/components/form-builder/types/field.types.mjs +6 -0
  303. package/esm2022/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  304. package/esm2022/form-builder-editor/lib/components/form-builder/types/index.mjs +3 -0
  305. package/esm2022/form-builder-editor/lib/components/form-builder/types/schema.types.mjs +6 -0
  306. package/esm2022/form-builder-editor/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  307. package/esm2022/form-builder-editor/lib/components/form-builder/types/validation.types.mjs +10 -0
  308. package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.mjs +730 -0
  309. package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.mjs +56 -0
  310. package/esm2022/form-builder-editor/lib/components/form-builder-editor/index.mjs +23 -0
  311. package/esm2022/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
  312. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.mjs +190 -0
  313. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.mjs +324 -0
  314. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.mjs +188 -0
  315. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.mjs +667 -0
  316. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.mjs +317 -0
  317. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.mjs +611 -0
  318. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.mjs +267 -0
  319. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.mjs +276 -0
  320. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.mjs +323 -0
  321. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +238 -0
  322. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +473 -0
  323. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.mjs +473 -0
  324. package/esm2022/form-builder-editor/lib/components/form-builder-editor/types/editor.types.mjs +6 -0
  325. package/esm2022/form-builder-editor/lib/components/modal/confirm-dialog.component.mjs +151 -0
  326. package/esm2022/form-builder-editor/lib/components/modal/index.mjs +4 -0
  327. package/esm2022/form-builder-editor/lib/components/modal/modal.component.mjs +139 -0
  328. package/esm2022/form-builder-editor/lib/components/modal/modal.service.mjs +197 -0
  329. package/esm2022/form-builder-editor/lib/components/modal/modal.types.mjs +6 -0
  330. package/esm2022/form-builder-editor/lib/core/logging/logger.config.mjs +18 -0
  331. package/esm2022/form-builder-editor/lib/core/logging/logger.service.mjs +295 -0
  332. package/esm2022/form-builder-editor/lib/core/logging/logger.types.mjs +7 -0
  333. package/esm2022/form-builder-editor/lib/core/types/index.mjs +6 -0
  334. package/esm2022/form-builder-editor/lib/sources/location-data.opt.json +8942 -0
  335. package/esm2022/form-builder-editor/lib/sources/nazioni.opt.json +215 -0
  336. package/esm2022/http/entry-http.mjs +5 -0
  337. package/esm2022/http/gnggln-ng-ui-system-http.mjs +5 -0
  338. package/esm2022/http/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  339. package/esm2022/http/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  340. package/esm2022/http/lib/components/blackbox/blackbox.service.mjs +323 -0
  341. package/esm2022/http/lib/components/blackbox/blackbox.types.mjs +25 -0
  342. package/esm2022/http/lib/components/http/http-message.handler.mjs +143 -0
  343. package/esm2022/http/lib/components/http/http.service.mjs +228 -0
  344. package/esm2022/http/lib/components/http/http.tokens.mjs +29 -0
  345. package/esm2022/http/lib/components/http/http.types.mjs +6 -0
  346. package/esm2022/http/lib/components/http/index.mjs +19 -0
  347. package/esm2022/http/lib/components/layout-builder/layout-builder.types.mjs +9 -0
  348. package/esm2022/http/lib/components/layout-builder/layout.service.mjs +239 -0
  349. package/esm2022/http/lib/components/toast/toast-container.component.mjs +80 -0
  350. package/esm2022/http/lib/components/toast/toast.component.mjs +151 -0
  351. package/esm2022/http/lib/components/toast/toast.service.mjs +156 -0
  352. package/esm2022/http/lib/components/toast/toast.types.mjs +12 -0
  353. package/esm2022/http/lib/core/types/index.mjs +6 -0
  354. package/esm2022/http/lib/core/utils/index.mjs +102 -0
  355. package/esm2022/layout-builder/entry-layout-builder.mjs +5 -0
  356. package/esm2022/layout-builder/gnggln-ng-ui-system-layout-builder.mjs +5 -0
  357. package/esm2022/layout-builder/lib/components/layout-builder/index.mjs +18 -0
  358. package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.component.mjs +1804 -0
  359. package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.types.mjs +9 -0
  360. package/esm2022/layout-builder/lib/components/layout-builder/layout.service.mjs +239 -0
  361. package/esm2022/layout-builder/lib/core/types/index.mjs +6 -0
  362. package/esm2022/lib/components/accordion/accordion.component.mjs +106 -61
  363. package/esm2022/lib/components/accordion/accordion.types.mjs +1 -1
  364. package/esm2022/lib/components/base-layout/base-layout.component.mjs +88 -34
  365. package/esm2022/lib/components/base-layout/base-layout.types.mjs +1 -1
  366. package/esm2022/lib/components/base-layout/index.mjs +1 -1
  367. package/esm2022/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
  368. package/esm2022/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
  369. package/esm2022/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  370. package/esm2022/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
  371. package/esm2022/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  372. package/esm2022/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
  373. package/esm2022/lib/components/blackbox/blackbox.service.mjs +323 -0
  374. package/esm2022/lib/components/blackbox/blackbox.types.mjs +25 -0
  375. package/esm2022/lib/components/blackbox/index.mjs +27 -0
  376. package/esm2022/lib/components/blackbox/ui-track.directive.mjs +69 -0
  377. package/esm2022/lib/components/button/button-area.component.mjs +16 -2
  378. package/esm2022/lib/components/button/button.component.mjs +23 -7
  379. package/esm2022/lib/components/button/button.types.mjs +1 -1
  380. package/esm2022/lib/components/crud-table/crud-table.component.mjs +14 -14
  381. package/esm2022/lib/components/form-builder/form-builder.component.mjs +710 -183
  382. package/esm2022/lib/components/form-builder/form-wizard.component.mjs +789 -235
  383. package/esm2022/lib/components/form-builder/index.mjs +7 -2
  384. package/esm2022/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  385. package/esm2022/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  386. package/esm2022/lib/components/form-builder/services/location.service.mjs +4 -3
  387. package/esm2022/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  388. package/esm2022/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +142 -113
  389. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  390. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  391. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  392. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  393. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  394. package/esm2022/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  395. package/esm2022/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  396. package/esm2022/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +3 -3
  397. package/esm2022/lib/components/form-builder/types/field.types.mjs +1 -1
  398. package/esm2022/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  399. package/esm2022/lib/components/form-builder/types/index.mjs +3 -2
  400. package/esm2022/lib/components/form-builder/types/schema.types.mjs +1 -1
  401. package/esm2022/lib/components/form-builder/types/validation.types.mjs +6 -2
  402. package/esm2022/lib/components/form-builder-editor/form-builder-editor.component.mjs +3 -3
  403. package/esm2022/lib/components/form-builder-editor/index.mjs +3 -1
  404. package/esm2022/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
  405. package/esm2022/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +2 -2
  406. package/esm2022/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +2 -1
  407. package/esm2022/lib/components/http/http-message.handler.mjs +143 -0
  408. package/esm2022/lib/components/http/http.service.mjs +228 -0
  409. package/esm2022/lib/components/http/http.tokens.mjs +29 -0
  410. package/esm2022/lib/components/http/http.types.mjs +6 -0
  411. package/esm2022/lib/components/http/index.mjs +19 -0
  412. package/esm2022/lib/components/layout-builder/layout-builder.component.mjs +27 -15
  413. package/esm2022/lib/components/modal/confirm-dialog.component.mjs +3 -3
  414. package/esm2022/lib/components/modal/modal.service.mjs +5 -2
  415. package/esm2022/lib/components/page-header/breadcrumb.service.mjs +5 -4
  416. package/esm2022/lib/components/table/paginated-table.component.mjs +17 -3
  417. package/esm2022/lib/components/table/table.types.mjs +1 -1
  418. package/esm2022/lib/components/toast/index.mjs +18 -0
  419. package/esm2022/lib/components/toast/toast-container.component.mjs +80 -0
  420. package/esm2022/lib/components/toast/toast.component.mjs +151 -0
  421. package/esm2022/lib/components/toast/toast.service.mjs +156 -0
  422. package/esm2022/lib/components/toast/toast.types.mjs +12 -0
  423. package/esm2022/lib/core/logging/index.mjs +10 -0
  424. package/esm2022/lib/core/logging/logger.config.mjs +18 -0
  425. package/esm2022/lib/core/logging/logger.service.mjs +295 -0
  426. package/esm2022/lib/core/logging/logger.types.mjs +7 -0
  427. package/esm2022/lib/core/types/index.mjs +1 -1
  428. package/esm2022/lib/core/utils/index.mjs +50 -1
  429. package/esm2022/lib/version/ng-ui-system-version.mjs +12 -0
  430. package/esm2022/modal/entry-modal.mjs +5 -0
  431. package/esm2022/modal/gnggln-ng-ui-system-modal.mjs +5 -0
  432. package/esm2022/modal/lib/components/button/button.component.mjs +180 -0
  433. package/esm2022/modal/lib/components/button/button.types.mjs +6 -0
  434. package/esm2022/modal/lib/components/modal/confirm-dialog.component.mjs +151 -0
  435. package/esm2022/modal/lib/components/modal/index.mjs +4 -0
  436. package/esm2022/modal/lib/components/modal/modal.component.mjs +139 -0
  437. package/esm2022/modal/lib/components/modal/modal.service.mjs +197 -0
  438. package/esm2022/modal/lib/components/modal/modal.types.mjs +6 -0
  439. package/esm2022/modal/lib/core/types/index.mjs +6 -0
  440. package/esm2022/page-header/entry-page-header.mjs +5 -0
  441. package/esm2022/page-header/gnggln-ng-ui-system-page-header.mjs +5 -0
  442. package/esm2022/page-header/lib/components/page-header/breadcrumb.service.mjs +243 -0
  443. package/esm2022/page-header/lib/components/page-header/index.mjs +20 -0
  444. package/esm2022/page-header/lib/components/page-header/page-header.component.mjs +243 -0
  445. package/esm2022/page-header/lib/components/page-header/page-header.types.mjs +21 -0
  446. package/esm2022/public-api.mjs +17 -8
  447. package/esm2022/table/entry-table.mjs +5 -0
  448. package/esm2022/table/gnggln-ng-ui-system-table.mjs +5 -0
  449. package/esm2022/table/lib/components/table/index.mjs +2 -0
  450. package/esm2022/table/lib/components/table/paginated-table.component.mjs +421 -0
  451. package/esm2022/table/lib/components/table/table.types.mjs +6 -0
  452. package/esm2022/table/lib/core/utils/index.mjs +102 -0
  453. package/esm2022/toast/entry-toast.mjs +5 -0
  454. package/esm2022/toast/gnggln-ng-ui-system-toast.mjs +5 -0
  455. package/esm2022/toast/lib/components/toast/index.mjs +18 -0
  456. package/esm2022/toast/lib/components/toast/toast-container.component.mjs +80 -0
  457. package/esm2022/toast/lib/components/toast/toast.component.mjs +151 -0
  458. package/esm2022/toast/lib/components/toast/toast.service.mjs +156 -0
  459. package/esm2022/toast/lib/components/toast/toast.types.mjs +12 -0
  460. package/esm2022/toast/lib/core/types/index.mjs +6 -0
  461. package/esm2022/toast/lib/core/utils/index.mjs +102 -0
  462. package/fesm2022/gnggln-ng-ui-system-accordion.mjs +409 -0
  463. package/fesm2022/gnggln-ng-ui-system-accordion.mjs.map +1 -0
  464. package/fesm2022/gnggln-ng-ui-system-base-layout.mjs +1905 -0
  465. package/fesm2022/gnggln-ng-ui-system-base-layout.mjs.map +1 -0
  466. package/fesm2022/gnggln-ng-ui-system-blackbox.mjs +2829 -0
  467. package/fesm2022/gnggln-ng-ui-system-blackbox.mjs.map +1 -0
  468. package/fesm2022/gnggln-ng-ui-system-button.mjs +1148 -0
  469. package/fesm2022/gnggln-ng-ui-system-button.mjs.map +1 -0
  470. package/fesm2022/gnggln-ng-ui-system-core.mjs +117 -0
  471. package/fesm2022/gnggln-ng-ui-system-core.mjs.map +1 -0
  472. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +49600 -0
  473. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -0
  474. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +54332 -0
  475. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -0
  476. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +49609 -0
  477. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -0
  478. package/fesm2022/gnggln-ng-ui-system-http.mjs +1878 -0
  479. package/fesm2022/gnggln-ng-ui-system-http.mjs.map +1 -0
  480. package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs +2064 -0
  481. package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs.map +1 -0
  482. package/fesm2022/gnggln-ng-ui-system-modal.mjs +664 -0
  483. package/fesm2022/gnggln-ng-ui-system-modal.mjs.map +1 -0
  484. package/fesm2022/gnggln-ng-ui-system-page-header.mjs +526 -0
  485. package/fesm2022/gnggln-ng-ui-system-page-header.mjs.map +1 -0
  486. package/fesm2022/gnggln-ng-ui-system-table.mjs +533 -0
  487. package/fesm2022/gnggln-ng-ui-system-table.mjs.map +1 -0
  488. package/fesm2022/gnggln-ng-ui-system-toast.mjs +516 -0
  489. package/fesm2022/gnggln-ng-ui-system-toast.mjs.map +1 -0
  490. package/fesm2022/gnggln-ng-ui-system.mjs +10068 -4234
  491. package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
  492. package/form-builder/entry-form-builder.d.ts +4 -0
  493. package/form-builder/index.d.ts +5 -0
  494. package/form-builder/lib/components/accordion/accordion.component.d.ts +125 -0
  495. package/form-builder/lib/components/accordion/accordion.types.d.ts +64 -0
  496. package/form-builder/lib/components/accordion/index.d.ts +2 -0
  497. package/form-builder/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  498. package/form-builder/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  499. package/form-builder/lib/components/blackbox/blackbox.service.d.ts +144 -0
  500. package/form-builder/lib/components/blackbox/blackbox.types.d.ts +238 -0
  501. package/form-builder/lib/components/button/button-area.component.d.ts +93 -0
  502. package/form-builder/lib/components/button/button.component.d.ts +61 -0
  503. package/form-builder/lib/components/button/button.types.d.ts +75 -0
  504. package/form-builder/lib/components/button/index.d.ts +15 -0
  505. package/form-builder/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  506. package/form-builder/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  507. package/form-builder/lib/components/form-builder/form-builder.component.d.ts +279 -0
  508. package/form-builder/lib/components/form-builder/form-wizard.component.d.ts +172 -0
  509. package/form-builder/lib/components/form-builder/index.d.ts +19 -0
  510. package/form-builder/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  511. package/form-builder/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  512. package/form-builder/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  513. package/form-builder/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  514. package/form-builder/lib/components/form-builder/services/location.service.d.ts +83 -0
  515. package/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  516. package/form-builder/lib/components/form-builder/services/wizard-sync.service.d.ts +63 -0
  517. package/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  518. package/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  519. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  520. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  521. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  522. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  523. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  524. package/form-builder/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  525. package/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  526. package/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  527. package/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  528. package/form-builder/lib/components/form-builder/types/condition.types.d.ts +51 -0
  529. package/form-builder/lib/components/form-builder/types/field.types.d.ts +330 -0
  530. package/form-builder/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  531. package/form-builder/lib/components/form-builder/types/index.d.ts +6 -0
  532. package/form-builder/lib/components/form-builder/types/schema.types.d.ts +304 -0
  533. package/form-builder/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  534. package/form-builder/lib/components/form-builder/types/validation.types.d.ts +179 -0
  535. package/form-builder/lib/core/logging/logger.config.d.ts +18 -0
  536. package/form-builder/lib/core/logging/logger.service.d.ts +75 -0
  537. package/form-builder/lib/core/logging/logger.types.d.ts +70 -0
  538. package/form-builder/lib/core/types/index.d.ts +133 -0
  539. package/form-builder-editor/entry-form-builder-editor.d.ts +4 -0
  540. package/form-builder-editor/index.d.ts +5 -0
  541. package/form-builder-editor/lib/components/accordion/accordion.component.d.ts +125 -0
  542. package/form-builder-editor/lib/components/accordion/accordion.types.d.ts +64 -0
  543. package/form-builder-editor/lib/components/accordion/index.d.ts +2 -0
  544. package/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  545. package/form-builder-editor/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  546. package/form-builder-editor/lib/components/blackbox/blackbox.service.d.ts +144 -0
  547. package/form-builder-editor/lib/components/blackbox/blackbox.types.d.ts +238 -0
  548. package/form-builder-editor/lib/components/button/button-area.component.d.ts +93 -0
  549. package/form-builder-editor/lib/components/button/button.component.d.ts +61 -0
  550. package/form-builder-editor/lib/components/button/button.types.d.ts +75 -0
  551. package/form-builder-editor/lib/components/button/index.d.ts +15 -0
  552. package/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  553. package/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  554. package/form-builder-editor/lib/components/form-builder/form-builder.component.d.ts +279 -0
  555. package/form-builder-editor/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  556. package/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  557. package/form-builder-editor/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  558. package/form-builder-editor/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  559. package/form-builder-editor/lib/components/form-builder/services/location.service.d.ts +83 -0
  560. package/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  561. package/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  562. package/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  563. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  564. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  565. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  566. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  567. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  568. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  569. package/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  570. package/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  571. package/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  572. package/form-builder-editor/lib/components/form-builder/types/condition.types.d.ts +51 -0
  573. package/form-builder-editor/lib/components/form-builder/types/field.types.d.ts +330 -0
  574. package/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  575. package/form-builder-editor/lib/components/form-builder/types/index.d.ts +6 -0
  576. package/form-builder-editor/lib/components/form-builder/types/schema.types.d.ts +304 -0
  577. package/form-builder-editor/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  578. package/form-builder-editor/lib/components/form-builder/types/validation.types.d.ts +179 -0
  579. package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.d.ts +117 -0
  580. package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.d.ts +38 -0
  581. package/form-builder-editor/lib/components/form-builder-editor/index.d.ts +17 -0
  582. package/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
  583. package/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.d.ts +42 -0
  584. package/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.d.ts +66 -0
  585. package/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.d.ts +28 -0
  586. package/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.d.ts +139 -0
  587. package/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.d.ts +43 -0
  588. package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.d.ts +83 -0
  589. package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.d.ts +40 -0
  590. package/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.d.ts +51 -0
  591. package/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.d.ts +63 -0
  592. package/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.d.ts +68 -0
  593. package/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.d.ts +82 -0
  594. package/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.d.ts +112 -0
  595. package/form-builder-editor/lib/components/form-builder-editor/types/editor.types.d.ts +124 -0
  596. package/form-builder-editor/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  597. package/form-builder-editor/lib/components/modal/index.d.ts +4 -0
  598. package/form-builder-editor/lib/components/modal/modal.component.d.ts +44 -0
  599. package/form-builder-editor/lib/components/modal/modal.service.d.ts +93 -0
  600. package/form-builder-editor/lib/components/modal/modal.types.d.ts +110 -0
  601. package/form-builder-editor/lib/core/logging/logger.config.d.ts +18 -0
  602. package/form-builder-editor/lib/core/logging/logger.service.d.ts +75 -0
  603. package/form-builder-editor/lib/core/logging/logger.types.d.ts +70 -0
  604. package/form-builder-editor/lib/core/types/index.d.ts +133 -0
  605. package/http/entry-http.d.ts +4 -0
  606. package/http/index.d.ts +5 -0
  607. package/http/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  608. package/http/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  609. package/http/lib/components/blackbox/blackbox.service.d.ts +144 -0
  610. package/http/lib/components/blackbox/blackbox.types.d.ts +238 -0
  611. package/http/lib/components/http/http-message.handler.d.ts +59 -0
  612. package/http/lib/components/http/http.service.d.ts +98 -0
  613. package/http/lib/components/http/http.tokens.d.ts +29 -0
  614. package/http/lib/components/http/http.types.d.ts +50 -0
  615. package/http/lib/components/http/index.d.ts +17 -0
  616. package/http/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
  617. package/http/lib/components/layout-builder/layout.service.d.ts +100 -0
  618. package/http/lib/components/toast/toast-container.component.d.ts +27 -0
  619. package/http/lib/components/toast/toast.component.d.ts +37 -0
  620. package/http/lib/components/toast/toast.service.d.ts +39 -0
  621. package/http/lib/components/toast/toast.types.d.ts +52 -0
  622. package/http/lib/core/types/index.d.ts +133 -0
  623. package/http/lib/core/utils/index.d.ts +60 -0
  624. package/layout-builder/entry-layout-builder.d.ts +4 -0
  625. package/layout-builder/index.d.ts +5 -0
  626. package/layout-builder/lib/components/layout-builder/index.d.ts +16 -0
  627. package/layout-builder/lib/components/layout-builder/layout-builder.component.d.ts +85 -0
  628. package/layout-builder/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
  629. package/layout-builder/lib/components/layout-builder/layout.service.d.ts +100 -0
  630. package/layout-builder/lib/core/types/index.d.ts +133 -0
  631. package/lib/components/accordion/accordion.component.d.ts +10 -3
  632. package/lib/components/accordion/accordion.types.d.ts +2 -0
  633. package/lib/components/base-layout/base-layout.component.d.ts +36 -11
  634. package/lib/components/base-layout/base-layout.types.d.ts +14 -0
  635. package/lib/components/base-layout/index.d.ts +1 -1
  636. package/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
  637. package/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
  638. package/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  639. package/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
  640. package/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  641. package/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
  642. package/lib/components/blackbox/blackbox.service.d.ts +144 -0
  643. package/lib/components/blackbox/blackbox.types.d.ts +238 -0
  644. package/lib/components/blackbox/index.d.ts +23 -0
  645. package/lib/components/blackbox/ui-track.directive.d.ts +20 -0
  646. package/lib/components/button/button-area.component.d.ts +6 -1
  647. package/lib/components/button/button.component.d.ts +8 -2
  648. package/lib/components/button/button.types.d.ts +5 -0
  649. package/lib/components/form-builder/form-builder.component.d.ts +125 -29
  650. package/lib/components/form-builder/form-wizard.component.d.ts +89 -4
  651. package/lib/components/form-builder/index.d.ts +7 -1
  652. package/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  653. package/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  654. package/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  655. package/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +9 -6
  656. package/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  657. package/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  658. package/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  659. package/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  660. package/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  661. package/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  662. package/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  663. package/lib/components/form-builder/types/field.types.d.ts +48 -6
  664. package/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  665. package/lib/components/form-builder/types/index.d.ts +4 -3
  666. package/lib/components/form-builder/types/schema.types.d.ts +83 -6
  667. package/lib/components/form-builder/types/validation.types.d.ts +5 -0
  668. package/lib/components/form-builder-editor/index.d.ts +2 -0
  669. package/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
  670. package/lib/components/http/http-message.handler.d.ts +59 -0
  671. package/lib/components/http/http.service.d.ts +98 -0
  672. package/lib/components/http/http.tokens.d.ts +29 -0
  673. package/lib/components/http/http.types.d.ts +50 -0
  674. package/lib/components/http/index.d.ts +17 -0
  675. package/lib/components/page-header/breadcrumb.service.d.ts +2 -2
  676. package/lib/components/table/table.types.d.ts +5 -0
  677. package/lib/components/toast/index.d.ts +17 -0
  678. package/lib/components/toast/toast-container.component.d.ts +27 -0
  679. package/lib/components/toast/toast.component.d.ts +37 -0
  680. package/lib/components/toast/toast.service.d.ts +39 -0
  681. package/lib/components/toast/toast.types.d.ts +52 -0
  682. package/lib/core/logging/index.d.ts +8 -0
  683. package/lib/core/logging/logger.config.d.ts +18 -0
  684. package/lib/core/logging/logger.service.d.ts +75 -0
  685. package/lib/core/logging/logger.types.d.ts +70 -0
  686. package/lib/core/types/index.d.ts +76 -0
  687. package/lib/core/utils/index.d.ts +31 -0
  688. package/lib/version/ng-ui-system-version.d.ts +9 -0
  689. package/modal/entry-modal.d.ts +4 -0
  690. package/modal/index.d.ts +5 -0
  691. package/modal/lib/components/button/button.component.d.ts +61 -0
  692. package/modal/lib/components/button/button.types.d.ts +75 -0
  693. package/modal/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  694. package/modal/lib/components/modal/index.d.ts +4 -0
  695. package/modal/lib/components/modal/modal.component.d.ts +44 -0
  696. package/modal/lib/components/modal/modal.service.d.ts +93 -0
  697. package/modal/lib/components/modal/modal.types.d.ts +110 -0
  698. package/modal/lib/core/types/index.d.ts +133 -0
  699. package/package.json +93 -8
  700. package/page-header/entry-page-header.d.ts +4 -0
  701. package/page-header/index.d.ts +5 -0
  702. package/page-header/lib/components/page-header/breadcrumb.service.d.ts +96 -0
  703. package/page-header/lib/components/page-header/index.d.ts +16 -0
  704. package/page-header/lib/components/page-header/page-header.component.d.ts +59 -0
  705. package/page-header/lib/components/page-header/page-header.types.d.ts +96 -0
  706. package/public-api.d.ts +11 -6
  707. package/table/entry-table.d.ts +4 -0
  708. package/table/index.d.ts +5 -0
  709. package/table/lib/components/table/index.d.ts +2 -0
  710. package/table/lib/components/table/paginated-table.component.d.ts +85 -0
  711. package/table/lib/components/table/table.types.d.ts +86 -0
  712. package/table/lib/core/utils/index.d.ts +60 -0
  713. package/toast/entry-toast.d.ts +4 -0
  714. package/toast/index.d.ts +5 -0
  715. package/toast/lib/components/toast/index.d.ts +17 -0
  716. package/toast/lib/components/toast/toast-container.component.d.ts +27 -0
  717. package/toast/lib/components/toast/toast.component.d.ts +37 -0
  718. package/toast/lib/components/toast/toast.service.d.ts +39 -0
  719. package/toast/lib/components/toast/toast.types.d.ts +52 -0
  720. package/toast/lib/core/types/index.d.ts +133 -0
  721. package/toast/lib/core/utils/index.d.ts +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gnggln-ng-ui-system-modal.mjs","sources":["../../../packages/ng-ui-system/src/lib/components/modal/modal.component.ts","../../../packages/ng-ui-system/src/lib/components/button/button.component.ts","../../../packages/ng-ui-system/src/lib/components/modal/confirm-dialog.component.ts","../../../packages/ng-ui-system/src/lib/components/modal/modal.service.ts","../../../packages/ng-ui-system/src/entry-modal.ts","../../../packages/ng-ui-system/src/gnggln-ng-ui-system-modal.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n inject,\r\n} from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { UiModalConfig } from './modal.types';\r\n\r\n/**\r\n * Componente modale standalone con struttura header/body/footer.\r\n *\r\n * Da utilizzare come wrapper all'interno di componenti aperti\r\n * tramite `UiModalService.open()`. Fornisce la struttura visuale\r\n * e gestisce la chiusura programmatica.\r\n *\r\n * **Content projection:**\r\n * - Contenuto di default: va nel body\r\n * - `[uiModalHeader]`: sostituisce il titolo nell'header\r\n * - `[uiModalFooter]`: azioni nel footer\r\n *\r\n * @selector ui-modal\r\n *\r\n * @example\r\n * ```html\r\n * <ui-modal [config]=\"{ title: 'Dettagli', size: 'md' }\">\r\n * <p>Contenuto del body della modale.</p>\r\n * <div uiModalFooter>\r\n * <ui-button label=\"Chiudi\" variant=\"ghost\" (click)=\"close()\" />\r\n * <ui-button label=\"Salva\" variant=\"primary\" (click)=\"save()\" />\r\n * </div>\r\n * </ui-modal>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'ui-modal',\r\n standalone: true,\r\n imports: [LucideAngularModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'ui-modal-host',\r\n role: 'dialog',\r\n 'aria-modal': 'true',\r\n '[attr.aria-label]': 'config.title || null',\r\n },\r\n template: `\r\n <!-- Header -->\r\n @if (config.title || config.showCloseButton !== false) {\r\n <div class=\"ui-modal__header\">\r\n <div class=\"ui-modal__header-content\">\r\n <ng-content select=\"[uiModalHeader]\">\r\n @if (config.title) {\r\n <h2 class=\"ui-modal__title\">{{ config.title }}</h2>\r\n }\r\n </ng-content>\r\n </div>\r\n @if (config.showCloseButton !== false) {\r\n <button\r\n class=\"ui-modal__close\"\r\n (click)=\"close()\"\r\n aria-label=\"Chiudi modale\"\r\n type=\"button\"\r\n >\r\n <lucide-icon name=\"x\" [size]=\"18\" aria-hidden=\"true\" />\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Body -->\r\n <div class=\"ui-modal__body\">\r\n <ng-content />\r\n </div>\r\n\r\n <!-- Footer -->\r\n @if (!config.hideFooter) {\r\n <div class=\"ui-modal__footer\">\r\n <ng-content select=\"[uiModalFooter]\" />\r\n </div>\r\n }\r\n `,\r\n styleUrl: './modal.component.scss',\r\n})\r\nexport class UiModalComponent {\r\n /** Configurazione strutturale della modale. */\r\n @Input() config: UiModalConfig = {};\r\n\r\n /**\r\n * Emesso quando la modale viene chiusa.\r\n * Utile se il componente e usato direttamente nel template\r\n * senza UiModalService.\r\n */\r\n @Output() closed = new EventEmitter<unknown>();\r\n\r\n /** @internal Riferimento al dialogo Material per la chiusura. */\r\n private dialogRef = inject(MatDialogRef, { optional: true });\r\n\r\n /** Chiude la modale con un risultato opzionale. */\r\n close(result?: unknown): void {\r\n if (this.dialogRef) {\r\n this.dialogRef.close(result);\r\n } else {\r\n this.closed.emit(result);\r\n }\r\n }\r\n}\r\n","import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { UiVariant, UiSize, UiIconName } from '../../core/types';\r\nimport { UiIconPosition } from './button.types';\r\n\r\n/** @internal Size-to-icon-pixel mapping for consistent icon sizing. */\r\nconst ICON_SIZE_MAP: Record<UiSize, number> = {\r\n xs: 14,\r\n sm: 16,\r\n md: 18,\r\n lg: 20,\r\n xl: 22,\r\n};\r\n\r\n/**\r\n * Standalone button component with design-token-driven theming,\r\n * variant/size system, Lucide icon support, loading states, and WCAG 2.1 AA accessibility.\r\n *\r\n * Uses native `<button>` click events — listen with `(click)` on the host element.\r\n *\r\n * @selector ui-button\r\n *\r\n * @example\r\n * ```html\r\n * <!-- Basic -->\r\n * <ui-button label=\"Save\" variant=\"primary\" icon=\"save\" (click)=\"save()\" />\r\n *\r\n * <!-- Loading -->\r\n * <ui-button label=\"Submitting...\" variant=\"primary\" [loading]=\"true\" />\r\n *\r\n * <!-- Icon-only: tooltip o ariaLabel forniscono il nome accessibile -->\r\n * <ui-button icon=\"trash-2\" variant=\"warn\" tooltip=\"Elimina\" (click)=\"delete()\" />\r\n * ```\r\n */\r\n@Component({\r\n selector: 'ui-button',\r\n standalone: true,\r\n imports: [MatTooltipModule, LucideAngularModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'ui-button-host',\r\n '[class.ui-button-host--full-width]': 'fullWidth',\r\n },\r\n template: `\r\n <button\r\n [type]=\"type\"\r\n [class]=\"buttonClasses\"\r\n [disabled]=\"disabled || loading\"\r\n [attr.aria-label]=\"effectiveAriaLabel || null\"\r\n [attr.aria-busy]=\"loading || null\"\r\n [matTooltip]=\"tooltip\"\r\n >\r\n <span class=\"ui-button__content\" [class.ui-button__content--hidden]=\"loading\">\r\n @if (icon && iconPosition === 'leading') {\r\n <lucide-icon [name]=\"icon!\" [size]=\"iconSize\" aria-hidden=\"true\" />\r\n }\r\n @if (label) {\r\n <span class=\"ui-button__label\">{{ label }}</span>\r\n }\r\n <ng-content />\r\n @if (icon && iconPosition === 'trailing') {\r\n <lucide-icon [name]=\"icon!\" [size]=\"iconSize\" aria-hidden=\"true\" />\r\n }\r\n </span>\r\n @if (loading) {\r\n <span class=\"ui-button__spinner-overlay\">\r\n <span class=\"ui-button__spinner\" aria-hidden=\"true\"></span>\r\n <span class=\"ui-button__sr-only\">Loading</span>\r\n </span>\r\n }\r\n </button>\r\n `,\r\n styleUrl: './button.component.scss',\r\n})\r\nexport class UiButtonComponent {\r\n /** Button label text. */\r\n @Input() label = '';\r\n\r\n /** Tooltip text shown on hover (uses Angular Material tooltip). */\r\n @Input() tooltip = '';\r\n\r\n /** Visual style variant. */\r\n @Input() variant: UiVariant = 'primary';\r\n\r\n /** Size variant. */\r\n @Input() size: UiSize = 'md';\r\n\r\n /** Lucide icon name. @see https://lucide.dev/icons */\r\n @Input() icon?: UiIconName;\r\n\r\n /** Icon position relative to the label. */\r\n @Input() iconPosition: UiIconPosition = 'trailing';\r\n\r\n /** Whether the button is in a loading state. Disables interaction and shows spinner. */\r\n @Input() loading = false;\r\n\r\n /** Whether the button is disabled. */\r\n @Input() disabled = false;\r\n\r\n /** Expand button to full container width. */\r\n @Input() fullWidth = false;\r\n\r\n /** HTML button type attribute. */\r\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\r\n\r\n /** Accessible label override (required for icon-only buttons). */\r\n @Input() ariaLabel?: string;\r\n\r\n /** Additional CSS class for edge cases. */\r\n @Input() customClass?: string;\r\n\r\n /**\r\n * Nome accessibile risolto per il pulsante nativo.\r\n * Usa `ariaLabel` se impostato; per pulsanti solo icona senza testo visibile\r\n * ricade sul `tooltip` (il tooltip Material non sostituisce il nome accessibile).\r\n */\r\n get effectiveAriaLabel(): string | undefined {\r\n const explicit = this.ariaLabel?.trim();\r\n if (explicit) return explicit;\r\n\r\n if (this.label?.trim()) return undefined;\r\n\r\n const tip = this.tooltip?.trim();\r\n if (this.icon && tip) return tip;\r\n\r\n return undefined;\r\n }\r\n\r\n /** Computed icon pixel size based on button size. */\r\n get iconSize(): number {\r\n return ICON_SIZE_MAP[this.size] ?? 18;\r\n }\r\n\r\n /** Assembled CSS class string for the native button element. */\r\n get buttonClasses(): string {\r\n return [\r\n 'ui-button',\r\n `ui-button--${this.variant}`,\r\n `ui-button--${this.size}`,\r\n this.loading ? 'ui-button--loading' : '',\r\n this.fullWidth ? 'ui-button--full-width' : '',\r\n !this.label && this.icon ? 'ui-button--icon-only' : '',\r\n this.customClass ?? '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport { UiButtonComponent } from '../button/button.component';\r\nimport { UiConfirmDialogData, UiConfirmVariant, UiIconName, UiVariant } from './modal.types';\r\n\r\n/** @internal Mappatura variante -> icona Lucide di default. */\r\nconst VARIANT_ICON_MAP: Record<UiConfirmVariant, UiIconName> = {\r\n confirm: 'check-circle',\r\n delete: 'trash-2',\r\n warn: 'alert-triangle',\r\n info: 'info',\r\n};\r\n\r\n/** @internal Mappatura variante -> colore pulsante di conferma. */\r\nconst VARIANT_BUTTON_MAP: Record<UiConfirmVariant, UiVariant> = {\r\n confirm: 'primary',\r\n delete: 'warn',\r\n warn: 'warn',\r\n info: 'primary',\r\n};\r\n\r\n/**\r\n * Dialogo di conferma leggero per azioni condizionali.\r\n *\r\n * Non va utilizzato direttamente nel template: viene aperto\r\n * programmaticamente tramite `UiModalService.confirm()` e i suoi\r\n * metodi scorciatoia (`confirmDelete`, `confirmDiscard`, `confirmSave`).\r\n *\r\n * Supporta quattro varianti semantiche — confirm, delete, warn, info —\r\n * ciascuna con icona e colore preconfigurati.\r\n *\r\n * @selector ui-confirm-dialog\r\n *\r\n * @example\r\n * ```typescript\r\n * // Apertura tramite servizio\r\n * this.modalService.confirm({\r\n * title: 'Conferma eliminazione',\r\n * message: 'Questa azione non puo essere annullata.',\r\n * variant: 'delete',\r\n * }).subscribe(confirmed => {\r\n * if (confirmed) this.deleteItem();\r\n * });\r\n * ```\r\n */\r\n@Component({\r\n selector: 'ui-confirm-dialog',\r\n standalone: true,\r\n imports: [LucideAngularModule, UiButtonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'ui-confirm-dialog-host',\r\n role: 'alertdialog',\r\n 'aria-modal': 'true',\r\n '[attr.aria-labelledby]': '\"ui-confirm-title\"',\r\n '[attr.aria-describedby]': '\"ui-confirm-message\"',\r\n },\r\n template: `\r\n <div class=\"ui-confirm-dialog\">\r\n <!-- Icona -->\r\n <div [class]=\"iconClasses\">\r\n <lucide-icon [name]=\"iconName\" [size]=\"32\" aria-hidden=\"true\" />\r\n </div>\r\n\r\n <!-- Contenuto -->\r\n <div class=\"ui-confirm-dialog__content\">\r\n @if (data.title) {\r\n <h3 class=\"ui-confirm-dialog__title\" id=\"ui-confirm-title\">{{ data.title }}</h3>\r\n }\r\n <p class=\"ui-confirm-dialog__message\" id=\"ui-confirm-message\">{{ data.message }}</p>\r\n </div>\r\n\r\n <!-- Azioni -->\r\n <div class=\"ui-confirm-dialog__actions\">\r\n <ui-button\r\n [label]=\"data.cancelText || 'Annulla'\"\r\n variant=\"ghost\"\r\n size=\"md\"\r\n (click)=\"cancel()\"\r\n />\r\n <ui-button\r\n [label]=\"data.confirmText || 'Conferma'\"\r\n [variant]=\"confirmButtonVariant\"\r\n size=\"md\"\r\n (click)=\"confirm()\"\r\n />\r\n </div>\r\n </div>\r\n `,\r\n styleUrl: './confirm-dialog.component.scss',\r\n})\r\nexport class UiConfirmDialogComponent {\r\n /** @internal Dati iniettati dal servizio modale. */\r\n readonly data: UiConfirmDialogData = inject(MAT_DIALOG_DATA);\r\n\r\n /** @internal Riferimento al dialogo per la chiusura. */\r\n private readonly dialogRef = inject(MatDialogRef);\r\n\r\n /** Variante semantica corrente. */\r\n get variant(): UiConfirmVariant {\r\n return this.data.variant || 'confirm';\r\n }\r\n\r\n /** Nome icona Lucide da visualizzare. */\r\n get iconName(): UiIconName {\r\n return this.data.icon || VARIANT_ICON_MAP[this.variant];\r\n }\r\n\r\n /** Variante del pulsante di conferma. */\r\n get confirmButtonVariant(): UiVariant {\r\n return VARIANT_BUTTON_MAP[this.variant];\r\n }\r\n\r\n /** Classi CSS per il contenitore icona. */\r\n get iconClasses(): string {\r\n return `ui-confirm-dialog__icon ui-confirm-dialog__icon--${this.variant}`;\r\n }\r\n\r\n /** Conferma e chiude il dialogo con `true`. */\r\n confirm(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n /** Annulla e chiude il dialogo con `false`. */\r\n cancel(): void {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n","import { Injectable, inject, Type } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable, map } from 'rxjs';\r\nimport { UiConfirmDialogComponent } from './confirm-dialog.component';\r\nimport { UiConfirmDialogData, UiModalOpenConfig, UiModalSize } from './modal.types';\r\n\r\n/** @internal Mappatura dimensione -> larghezza CSS per il pannello overlay. */\r\nconst SIZE_WIDTH_MAP: Record<UiModalSize, string> = {\r\n sm: '400px',\r\n md: '560px',\r\n lg: '720px',\r\n xl: '900px',\r\n fullscreen: '95vw',\r\n};\r\n\r\n/**\r\n * Servizio per aprire modali e dialoghi di conferma.\r\n *\r\n * Gestisce lo stacking intelligente: una modale regolare puo\r\n * ospitare al massimo un dialogo di conferma sopra di se.\r\n * Non e possibile stackare due modali regolari.\r\n *\r\n * @usageNotes\r\n *\r\n * ### Aprire una modale personalizzata\r\n * ```typescript\r\n * const ref = this.modalService.open(MyDialogComponent, {\r\n * size: 'lg',\r\n * data: { userId: 123 },\r\n * });\r\n *\r\n * ref.afterClosed().subscribe(result => {\r\n * console.log('Risultato:', result);\r\n * });\r\n * ```\r\n *\r\n * ### Conferma rapida\r\n * ```typescript\r\n * this.modalService.confirm('Confermi questa azione?')\r\n * .subscribe(ok => { if (ok) this.procedi(); });\r\n * ```\r\n *\r\n * ### Preset di conferma\r\n * ```typescript\r\n * this.modalService.confirmDelete('Progetto Alpha')\r\n * .subscribe(ok => { if (ok) this.elimina(); });\r\n * ```\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class UiModalService {\r\n /** @internal Istanza MatDialog per la gestione overlay. */\r\n private readonly dialog = inject(MatDialog);\r\n\r\n /** @internal Stack delle modali regolari aperte. */\r\n private _modalStack: MatDialogRef<unknown>[] = [];\r\n\r\n /** @internal Traccia se un dialogo di conferma e attualmente aperto. */\r\n private _confirmOpen = false;\r\n\r\n /**\r\n * Apre una modale con un componente personalizzato.\r\n *\r\n * Il componente aperto puo iniettare `MAT_DIALOG_DATA` per accedere\r\n * ai dati e `MatDialogRef` per chiudere la modale.\r\n *\r\n * @param component - Componente standalone da renderizzare nella modale\r\n * @param config - Configurazione (dimensione, dati, comportamento)\r\n * @returns Riferimento alla modale aperta\r\n */\r\n open<T, D = unknown, R = unknown>(component: Type<T>, config?: UiModalOpenConfig<D>): MatDialogRef<T, R> {\r\n // Regola di stacking: non stackare due modali regolari\r\n if (this._modalStack.length > 0) {\r\n console.warn(\r\n '[UiModalService] Una modale e gia aperta. ' +\r\n 'Usa confirm() per aprire un dialogo di conferma sopra la modale corrente.',\r\n );\r\n }\r\n\r\n const size = config?.size || 'md';\r\n\r\n const dialogConfig: MatDialogConfig<D> = {\r\n width: SIZE_WIDTH_MAP[size],\r\n maxWidth: size === 'fullscreen' ? '95vw' : '90vw',\r\n maxHeight: size === 'fullscreen' ? '95vh' : '90vh',\r\n height: size === 'fullscreen' ? '95vh' : undefined,\r\n disableClose: config?.disableClose ?? false,\r\n autoFocus: true,\r\n restoreFocus: true,\r\n data: config?.data as D,\r\n panelClass: ['ui-modal-panel', `ui-modal-panel--${size}`, ...(config?.panelClass ? [config.panelClass] : [])],\r\n hasBackdrop: true,\r\n backdropClass: ['cdk-overlay-dark-backdrop', 'ui-modal-backdrop'],\r\n };\r\n\r\n const ref = this.dialog.open(component, dialogConfig) as MatDialogRef<T, R>;\r\n\r\n this._modalStack.push(ref as MatDialogRef<unknown>);\r\n ref.afterClosed().subscribe(() => {\r\n this._modalStack = this._modalStack.filter((r) => r !== (ref as MatDialogRef<unknown>));\r\n });\r\n\r\n return ref;\r\n }\r\n\r\n /**\r\n * Apre un dialogo di conferma.\r\n *\r\n * Accetta una stringa semplice (messaggio) o un oggetto di\r\n * configurazione completo. Puo essere aperto sopra una modale\r\n * esistente (stacking consentito).\r\n *\r\n * @param messageOrConfig - Messaggio o configurazione completa\r\n * @returns Observable che emette `true` se confermato, `false` se annullato\r\n */\r\n confirm(messageOrConfig: string | UiConfirmDialogData): Observable<boolean> {\r\n const data: UiConfirmDialogData =\r\n typeof messageOrConfig === 'string' ? { message: messageOrConfig } : messageOrConfig;\r\n\r\n // Un solo dialogo di conferma alla volta\r\n if (this._confirmOpen) {\r\n console.warn('[UiModalService] Un dialogo di conferma e gia aperto.');\r\n return new Observable((subscriber) => {\r\n subscriber.next(false);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n this._confirmOpen = true;\r\n\r\n const dialogConfig: MatDialogConfig<UiConfirmDialogData> = {\r\n width: '420px',\r\n maxWidth: '90vw',\r\n disableClose: false,\r\n autoFocus: false,\r\n restoreFocus: true,\r\n data,\r\n panelClass: ['ui-confirm-panel'],\r\n hasBackdrop: true,\r\n backdropClass:\r\n this._modalStack.length > 0\r\n ? ['cdk-overlay-dark-backdrop', 'ui-confirm-backdrop--stacked']\r\n : ['cdk-overlay-dark-backdrop', 'ui-modal-backdrop'],\r\n };\r\n\r\n const ref = this.dialog.open(UiConfirmDialogComponent, dialogConfig);\r\n\r\n return ref.afterClosed().pipe(\r\n map((result) => {\r\n this._confirmOpen = false;\r\n return !!result;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Scorciatoia: conferma eliminazione.\r\n * Variante `delete` con icona cestino e pulsante warn.\r\n *\r\n * @param itemName - Nome opzionale dell'elemento da eliminare\r\n */\r\n confirmDelete(itemName?: string): Observable<boolean> {\r\n return this.confirm({\r\n title: 'Conferma eliminazione',\r\n message: itemName\r\n ? `Sei sicuro di voler eliminare \"${itemName}\"? Questa azione non puo essere annullata.`\r\n : 'Sei sicuro di voler eliminare questo elemento? Questa azione non puo essere annullata.',\r\n confirmText: 'Elimina',\r\n cancelText: 'Annulla',\r\n variant: 'delete',\r\n });\r\n }\r\n\r\n /**\r\n * Scorciatoia: conferma abbandono modifiche.\r\n * Variante `warn` con icona avviso.\r\n */\r\n confirmDiscard(): Observable<boolean> {\r\n return this.confirm({\r\n title: 'Modifiche non salvate',\r\n message: 'Ci sono modifiche non salvate. Sei sicuro di voler uscire senza salvare?',\r\n confirmText: 'Esci senza salvare',\r\n cancelText: 'Rimani',\r\n variant: 'warn',\r\n });\r\n }\r\n\r\n /**\r\n * Scorciatoia: conferma salvataggio.\r\n * Variante `confirm` con icona check.\r\n */\r\n confirmSave(): Observable<boolean> {\r\n return this.confirm({\r\n title: 'Conferma salvataggio',\r\n message: 'Sei sicuro di voler salvare le modifiche?',\r\n confirmText: 'Salva',\r\n cancelText: 'Annulla',\r\n variant: 'confirm',\r\n });\r\n }\r\n\r\n /** Chiude tutte le modali e dialoghi aperti. */\r\n closeAll(): void {\r\n this.dialog.closeAll();\r\n this._modalStack = [];\r\n this._confirmOpen = false;\r\n }\r\n\r\n /** Indica se ci sono modali o dialoghi attualmente aperti. */\r\n get hasOpenDialogs(): boolean {\r\n return this.dialog.openDialogs.length > 0;\r\n }\r\n\r\n /** Numero di modali regolari attualmente aperte. */\r\n get openModalCount(): number {\r\n return this._modalStack.length;\r\n }\r\n}\r\n","/**\n * Bootstrap del secondary entry `@gnggln/ng-ui-system/modal`. Modal e Confirm Dialog.\n */\nexport * from './lib/components/modal/index';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entry-modal';\n"],"names":["i2"],"mappings":"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"}
@@ -0,0 +1,526 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, DestroyRef, ChangeDetectorRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { Router, NavigationEnd, ActivatedRoute, RouterLink } from '@angular/router';
5
+ import { Title } from '@angular/platform-browser';
6
+ import { filter } from 'rxjs/operators';
7
+ import * as i1 from 'lucide-angular';
8
+ import { LucideAngularModule } from 'lucide-angular';
9
+
10
+ /**
11
+ * @module ng-ui-system/page-header
12
+ * Types and interfaces for UiPageHeader and UiBreadcrumbService.
13
+ */
14
+ /**
15
+ * Injection token for providing a custom label resolver to UiBreadcrumbService.
16
+ *
17
+ * When not provided, parameters are displayed as-is (identity function).
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // In your app.config.ts or module providers:
22
+ * { provide: UI_BREADCRUMB_LABEL_RESOLVER, useValue: myLabelResolver }
23
+ * ```
24
+ */
25
+ const UI_BREADCRUMB_LABEL_RESOLVER = new InjectionToken('UI_BREADCRUMB_LABEL_RESOLVER', {
26
+ providedIn: 'root',
27
+ factory: () => (_name, value) => value,
28
+ });
29
+
30
+ /** biome-ignore-all lint/complexity/useLiteralKeys: <explanation> */
31
+ /**
32
+ * Service that builds a nested breadcrumb trail from Angular route configuration.
33
+ *
34
+ * Routes must define `data.id`, `data.title`, and optionally `data.breadcrumbs`
35
+ * (an array of parent route IDs) for the chain to resolve correctly.
36
+ *
37
+ * Supports lazy-loaded routes: the internal route map is rebuilt automatically
38
+ * whenever new routes are loaded via `NavigationEnd`.
39
+ *
40
+ * Label resolution for route parameters (`:param`) is delegated to an injectable
41
+ * `UiLabelResolverFn` via the `UI_BREADCRUMB_LABEL_RESOLVER` token.
42
+ *
43
+ * @usageNotes
44
+ * ### Route configuration
45
+ * ```typescript
46
+ * const routes: Routes = [
47
+ * {
48
+ * path: 'users',
49
+ * data: { id: 'users', title: 'Utenti' },
50
+ * children: [
51
+ * {
52
+ * path: ':userId',
53
+ * data: { id: 'user-detail', title: ':userId', breadcrumbs: ['users'] },
54
+ * component: UserDetailComponent,
55
+ * },
56
+ * ],
57
+ * },
58
+ * ];
59
+ * ```
60
+ *
61
+ * ### Custom label resolver
62
+ * ```typescript
63
+ * providers: [
64
+ * {
65
+ * provide: UI_BREADCRUMB_LABEL_RESOLVER,
66
+ * useValue: (name: string, value: string) =>
67
+ * name === 'userId' ? `User #${value}` : value,
68
+ * },
69
+ * ]
70
+ * ```
71
+ */
72
+ class UiBreadcrumbService {
73
+ constructor() {
74
+ this.router = inject(Router);
75
+ this.labelResolver = inject(UI_BREADCRUMB_LABEL_RESOLVER);
76
+ /** @internal Map of route ID → breadcrumb configuration. */
77
+ this.breadcrumbMap = new Map();
78
+ /** @internal Tracks route count to detect lazy-loaded route additions. */
79
+ this.lastRouteConfigLength = 0;
80
+ /** @internal Last computed breadcrumbs for navigateBack. */
81
+ this.lastBreadcrumbs = [];
82
+ this.rebuildRouteMap();
83
+ this.router.events
84
+ .pipe(filter((event) => event instanceof NavigationEnd))
85
+ .subscribe(() => this.rebuildRouteMapIfNeeded());
86
+ }
87
+ /**
88
+ * Computes the breadcrumb trail for the currently active route.
89
+ *
90
+ * @param route - The root `ActivatedRoute` (typically injected in the component).
91
+ * @returns Ordered array of breadcrumb items from root to current route.
92
+ */
93
+ getBreadcrumbsForRoute(route) {
94
+ let deepestRoute = route;
95
+ while (deepestRoute.firstChild) {
96
+ deepestRoute = deepestRoute.firstChild;
97
+ }
98
+ let routeWithId = deepestRoute;
99
+ while (routeWithId && !routeWithId.snapshot.data['id']) {
100
+ routeWithId = routeWithId.parent;
101
+ }
102
+ const routeId = routeWithId?.snapshot.data['id'];
103
+ if (!routeId) {
104
+ this.lastBreadcrumbs = [];
105
+ return [];
106
+ }
107
+ const params = this.collectParamsFromPath(deepestRoute);
108
+ const breadcrumbs = this.buildBreadcrumbChain(routeId, params);
109
+ this.lastBreadcrumbs = breadcrumbs;
110
+ return breadcrumbs;
111
+ }
112
+ /**
113
+ * Navigates to the previous breadcrumb (parent route).
114
+ * Falls back to `fallbackUrl` (default: `/`) when no parent exists.
115
+ */
116
+ navigateBack(fallbackUrl = '/') {
117
+ const prev = this.lastBreadcrumbs.length > 1 ? this.lastBreadcrumbs[this.lastBreadcrumbs.length - 2] : null;
118
+ const target = prev?.url ?? fallbackUrl;
119
+ this.router.navigateByUrl(target);
120
+ }
121
+ /** @internal Collects all route params from the full path (including parents). */
122
+ collectParamsFromPath(route) {
123
+ const params = {};
124
+ for (const r of route.pathFromRoot) {
125
+ Object.assign(params, r.snapshot.params);
126
+ }
127
+ return params;
128
+ }
129
+ // ─── Private helpers ─────────────────────────────────────────────
130
+ /** @internal Rebuilds the map only when new lazy routes appear. */
131
+ rebuildRouteMapIfNeeded() {
132
+ const currentLength = this.countRoutes(this.router.config);
133
+ if (currentLength !== this.lastRouteConfigLength) {
134
+ this.rebuildRouteMap();
135
+ }
136
+ }
137
+ /** @internal Recursively counts routes including lazy-loaded children. */
138
+ countRoutes(routes) {
139
+ let count = routes.length;
140
+ for (const route of routes) {
141
+ if (route.children) {
142
+ count += this.countRoutes(route.children);
143
+ }
144
+ if (route._loadedRoutes) {
145
+ count += this.countRoutes(route._loadedRoutes);
146
+ }
147
+ }
148
+ return count;
149
+ }
150
+ /** @internal Clears and rebuilds the full route → breadcrumb map. */
151
+ rebuildRouteMap() {
152
+ this.breadcrumbMap.clear();
153
+ this.buildRouteMap(this.router.config);
154
+ this.lastRouteConfigLength = this.countRoutes(this.router.config);
155
+ }
156
+ /** @internal Recursively walks route tree to build the breadcrumb map. */
157
+ buildRouteMap(routes, parentPath = '') {
158
+ for (const route of routes) {
159
+ const currentPath = `${parentPath}/${route.path || ''}`;
160
+ if (route.data?.['id']) {
161
+ const fullPath = this.normalizePath(currentPath);
162
+ this.breadcrumbMap.set(route.data['id'], {
163
+ id: route.data['id'],
164
+ path: fullPath,
165
+ label: route.data['title'] || route.path || route.data['id'],
166
+ parentIds: route.data['breadcrumbs'] || [],
167
+ metadata: route.data,
168
+ });
169
+ }
170
+ if (route.children) {
171
+ this.buildRouteMap(route.children, currentPath);
172
+ }
173
+ if (route._loadedRoutes) {
174
+ this.buildRouteMap(route._loadedRoutes, currentPath);
175
+ }
176
+ }
177
+ }
178
+ /** @internal Builds the full breadcrumb chain for a route by its ID. */
179
+ buildBreadcrumbChain(routeId, params) {
180
+ const config = this.breadcrumbMap.get(routeId);
181
+ if (!config)
182
+ return [];
183
+ this.saveFullPath(routeId, this.router.url);
184
+ const parentChain = this.getParentChain(config.parentIds, params);
185
+ const breadcrumbs = [...parentChain];
186
+ breadcrumbs.push({
187
+ label: this.resolveLabel(config.label, params),
188
+ url: this.stripQueryParams(this.router.url),
189
+ isLast: true,
190
+ });
191
+ return breadcrumbs;
192
+ }
193
+ /** @internal Resolves parent breadcrumbs from ordered parent IDs. */
194
+ getParentChain(parentIds, params) {
195
+ if (!parentIds?.length)
196
+ return [];
197
+ return parentIds
198
+ .map((id) => {
199
+ const config = this.breadcrumbMap.get(id);
200
+ if (!config)
201
+ return null;
202
+ return {
203
+ label: this.resolveLabel(config.label, params),
204
+ url: this.resolveUrl(config.path, params),
205
+ isLast: false,
206
+ };
207
+ })
208
+ .filter(Boolean);
209
+ }
210
+ /**
211
+ * @internal Resolves `:param` placeholders in a label using
212
+ * the injected label resolver function.
213
+ */
214
+ resolveLabel(label, params) {
215
+ if (!label.includes(':'))
216
+ return label;
217
+ let resolved = label;
218
+ for (const [key, value] of Object.entries(params)) {
219
+ const readableValue = this.labelResolver(key, value);
220
+ resolved = resolved.replace(`:${key}`, readableValue);
221
+ }
222
+ return resolved;
223
+ }
224
+ /** @internal Resolves `:param` placeholders in a path and creates a URL. */
225
+ resolveUrl(path, params) {
226
+ let processedPath = path;
227
+ if (path.includes(':')) {
228
+ const segments = path.split('/');
229
+ const processedSegments = segments.map((segment) => {
230
+ if (segment.startsWith(':')) {
231
+ const paramName = segment.substring(1);
232
+ return params[paramName] || segment;
233
+ }
234
+ return segment;
235
+ });
236
+ processedPath = processedSegments.join('/');
237
+ }
238
+ try {
239
+ return this.router.createUrlTree([processedPath]).toString();
240
+ }
241
+ catch {
242
+ return processedPath;
243
+ }
244
+ }
245
+ /** @internal Normalizes path by collapsing double slashes and trimming trailing slash. */
246
+ normalizePath(path) {
247
+ return path.replace(/\/+/g, '/').replace(/\/$/, '');
248
+ }
249
+ /** @internal Removes query parameters from a URL. */
250
+ stripQueryParams(url) {
251
+ return url.split('?')[0];
252
+ }
253
+ /** @internal Caches the fully resolved URL for a route ID. */
254
+ saveFullPath(routeId, fullPath) {
255
+ const config = this.breadcrumbMap.get(routeId);
256
+ if (config) {
257
+ config.fullPath = this.stripQueryParams(fullPath);
258
+ }
259
+ }
260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiBreadcrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
261
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiBreadcrumbService, providedIn: 'root' }); }
262
+ }
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiBreadcrumbService, decorators: [{
264
+ type: Injectable,
265
+ args: [{ providedIn: 'root' }]
266
+ }], ctorParameters: () => [] });
267
+
268
+ /**
269
+ * Page header component that renders a breadcrumb navigation trail
270
+ * and a page title. Integrates with `UiBreadcrumbService` to
271
+ * automatically derive breadcrumbs from Angular route configuration.
272
+ *
273
+ * The breadcrumb trail is generated from route `data` properties:
274
+ * - `data.id` — unique route identifier
275
+ * - `data.title` — display label
276
+ * - `data.breadcrumbs` — ordered array of parent route IDs
277
+ *
278
+ * @selector ui-page-header
279
+ *
280
+ * @example
281
+ * ```html
282
+ * <!-- Auto breadcrumbs from route data -->
283
+ * <ui-page-header />
284
+ *
285
+ * <!-- With explicit title override -->
286
+ * <ui-page-header title="Custom Title" />
287
+ *
288
+ * <!-- With document title update -->
289
+ * <ui-page-header [updateDocumentTitle]="true" titleSuffix=" | My App" />
290
+ * ```
291
+ */
292
+ class UiPageHeaderComponent {
293
+ constructor() {
294
+ /** Override the auto-detected page title. When empty, title is derived from the last breadcrumb. */
295
+ this.title = '';
296
+ /** Route path for the Home breadcrumb link. */
297
+ this.homeRoute = '/';
298
+ /** Whether to display the Home link at the start of the trail. */
299
+ this.showHome = true;
300
+ /** When `true`, updates `document.title` on each navigation. */
301
+ this.updateDocumentTitle = false;
302
+ /** Suffix appended to `document.title` (e.g. `' | My App'`). Only used when `updateDocumentTitle` is `true`. */
303
+ this.titleSuffix = '';
304
+ /** @internal */
305
+ this.breadcrumbs = [];
306
+ this.router = inject(Router);
307
+ this.activatedRoute = inject(ActivatedRoute);
308
+ this.titleService = inject(Title);
309
+ this.breadcrumbService = inject(UiBreadcrumbService);
310
+ this.destroyRef = inject(DestroyRef);
311
+ this.cdr = inject(ChangeDetectorRef);
312
+ }
313
+ /** Resolved page title: explicit `title` input wins, otherwise last breadcrumb label. */
314
+ get displayTitle() {
315
+ if (this.title)
316
+ return this.title;
317
+ if (this.breadcrumbs.length > 0) {
318
+ return this.breadcrumbs[this.breadcrumbs.length - 1].label;
319
+ }
320
+ return '';
321
+ }
322
+ ngOnInit() {
323
+ this.refresh();
324
+ this.router.events
325
+ .pipe(filter((event) => event instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))
326
+ .subscribe(() => this.refresh());
327
+ }
328
+ /**
329
+ * Navigates to the previous breadcrumb (parent route).
330
+ * @param fallbackUrl - URL to navigate to when no parent exists (default: homeRoute).
331
+ */
332
+ navigateBack(fallbackUrl) {
333
+ this.breadcrumbService.navigateBack(fallbackUrl ?? this.homeRoute);
334
+ }
335
+ /** @internal */
336
+ refresh() {
337
+ this.breadcrumbs = this.breadcrumbService.getBreadcrumbsForRoute(this.activatedRoute);
338
+ if (this.updateDocumentTitle) {
339
+ const title = this.displayTitle;
340
+ if (title) {
341
+ this.titleService.setTitle(`${title}${this.titleSuffix}`);
342
+ }
343
+ }
344
+ this.cdr.markForCheck();
345
+ }
346
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiPageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
347
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UiPageHeaderComponent, isStandalone: true, selector: "ui-page-header", inputs: { title: "title", homeRoute: "homeRoute", showHome: "showHome", updateDocumentTitle: "updateDocumentTitle", titleSuffix: "titleSuffix" }, host: { classAttribute: "ui-page-header-host" }, ngImport: i0, template: `
348
+ <header class="ui-page-header">
349
+ <nav aria-label="Breadcrumb" class="ui-page-header__nav">
350
+ <ol
351
+ class="ui-page-header__breadcrumb"
352
+ itemscope
353
+ itemtype="https://schema.org/BreadcrumbList"
354
+ >
355
+ @if (showHome) {
356
+ <li
357
+ class="ui-page-header__item"
358
+ itemprop="itemListElement"
359
+ itemscope
360
+ itemtype="https://schema.org/ListItem"
361
+ >
362
+ <a
363
+ itemprop="item"
364
+ [routerLink]="homeRoute"
365
+ class="ui-page-header__link"
366
+ aria-label="Home"
367
+ >
368
+ <lucide-icon name="home" [size]="14" aria-hidden="true" />
369
+ <span itemprop="name" class="ui-page-header__text">Home</span>
370
+ </a>
371
+ <meta itemprop="position" content="1" />
372
+ <span class="ui-page-header__separator" aria-hidden="true">
373
+ <lucide-icon name="chevron-right" [size]="14" />
374
+ </span>
375
+ </li>
376
+ }
377
+ @for (crumb of breadcrumbs; track crumb.url; let i = $index) {
378
+ <li
379
+ class="ui-page-header__item"
380
+ [class.ui-page-header__item--current]="crumb.isLast"
381
+ itemprop="itemListElement"
382
+ itemscope
383
+ itemtype="https://schema.org/ListItem"
384
+ >
385
+ @if (!crumb.isLast) {
386
+ <a
387
+ itemprop="item"
388
+ [routerLink]="crumb.url"
389
+ class="ui-page-header__link"
390
+ >
391
+ <span itemprop="name" class="ui-page-header__text">{{ crumb.label }}</span>
392
+ </a>
393
+ <span class="ui-page-header__separator" aria-hidden="true">
394
+ <lucide-icon name="chevron-right" [size]="14" />
395
+ </span>
396
+ } @else {
397
+ <span
398
+ itemprop="name"
399
+ class="ui-page-header__text ui-page-header__text--current"
400
+ aria-current="page"
401
+ >
402
+ {{ crumb.label }}
403
+ </span>
404
+ }
405
+ <meta itemprop="position" [attr.content]="showHome ? i + 2 : i + 1" />
406
+ </li>
407
+ }
408
+ </ol>
409
+ </nav>
410
+
411
+ <h1 class="ui-page-header__title" id="page-title">
412
+ {{ displayTitle }}
413
+ </h1>
414
+ </header>
415
+ `, isInline: true, styles: [".ui-page-header-host{display:block}.ui-page-header{margin-bottom:var(--ui-spacing-5)}.ui-page-header__nav{margin-bottom:var(--ui-spacing-2)}.ui-page-header__breadcrumb{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);line-height:var(--ui-line-height-normal);gap:var(--ui-spacing-1)}.ui-page-header__item{display:inline-flex;align-items:center;gap:var(--ui-spacing-1)}a.ui-page-header__link lucide-icon{transform:translateY(2px)!important}span.ui-page-header__separator lucide-icon{transform:translateY(3px)!important}.ui-page-header__link{display:inline-flex;align-items:center;gap:4px;text-decoration:none;color:var(--ui-color-primary);border-radius:var(--ui-radius-sm);padding:2px 4px;margin:-2px -4px;transition:color var(--ui-transition-fast),background-color var(--ui-transition-fast)}.ui-page-header__link:hover{color:var(--ui-color-primary-hover);text-decoration:underline}.ui-page-header__link:focus{outline:none}.ui-page-header__link:focus-visible{outline:var(--ui-focus-ring-width) solid var(--ui-focus-ring-color);outline-offset:var(--ui-focus-ring-offset)}.ui-page-header__text{white-space:nowrap}.ui-page-header__text--current{font-weight:var(--ui-font-weight-medium);color:var(--ui-color-text)}.ui-page-header__separator{display:inline-flex;align-items:center;color:var(--ui-color-text-muted);flex-shrink:0}.ui-page-header__title{margin:0;font-family:var(--ui-font-family);font-size:var(--ui-font-size-2xl);font-weight:var(--ui-font-weight-bold);color:var(--ui-color-text);line-height:var(--ui-line-height-tight)}.ui-page-header__title:focus{outline:none}@media (min-width: 640px){.ui-page-header__title{font-size:var(--ui-font-size-xl)}.ui-page-header__breadcrumb{font-size:var(--ui-font-size-xs)}}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i1.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
416
+ }
417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiPageHeaderComponent, decorators: [{
418
+ type: Component,
419
+ args: [{ selector: 'ui-page-header', standalone: true, imports: [RouterLink, LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
420
+ class: 'ui-page-header-host',
421
+ }, template: `
422
+ <header class="ui-page-header">
423
+ <nav aria-label="Breadcrumb" class="ui-page-header__nav">
424
+ <ol
425
+ class="ui-page-header__breadcrumb"
426
+ itemscope
427
+ itemtype="https://schema.org/BreadcrumbList"
428
+ >
429
+ @if (showHome) {
430
+ <li
431
+ class="ui-page-header__item"
432
+ itemprop="itemListElement"
433
+ itemscope
434
+ itemtype="https://schema.org/ListItem"
435
+ >
436
+ <a
437
+ itemprop="item"
438
+ [routerLink]="homeRoute"
439
+ class="ui-page-header__link"
440
+ aria-label="Home"
441
+ >
442
+ <lucide-icon name="home" [size]="14" aria-hidden="true" />
443
+ <span itemprop="name" class="ui-page-header__text">Home</span>
444
+ </a>
445
+ <meta itemprop="position" content="1" />
446
+ <span class="ui-page-header__separator" aria-hidden="true">
447
+ <lucide-icon name="chevron-right" [size]="14" />
448
+ </span>
449
+ </li>
450
+ }
451
+ @for (crumb of breadcrumbs; track crumb.url; let i = $index) {
452
+ <li
453
+ class="ui-page-header__item"
454
+ [class.ui-page-header__item--current]="crumb.isLast"
455
+ itemprop="itemListElement"
456
+ itemscope
457
+ itemtype="https://schema.org/ListItem"
458
+ >
459
+ @if (!crumb.isLast) {
460
+ <a
461
+ itemprop="item"
462
+ [routerLink]="crumb.url"
463
+ class="ui-page-header__link"
464
+ >
465
+ <span itemprop="name" class="ui-page-header__text">{{ crumb.label }}</span>
466
+ </a>
467
+ <span class="ui-page-header__separator" aria-hidden="true">
468
+ <lucide-icon name="chevron-right" [size]="14" />
469
+ </span>
470
+ } @else {
471
+ <span
472
+ itemprop="name"
473
+ class="ui-page-header__text ui-page-header__text--current"
474
+ aria-current="page"
475
+ >
476
+ {{ crumb.label }}
477
+ </span>
478
+ }
479
+ <meta itemprop="position" [attr.content]="showHome ? i + 2 : i + 1" />
480
+ </li>
481
+ }
482
+ </ol>
483
+ </nav>
484
+
485
+ <h1 class="ui-page-header__title" id="page-title">
486
+ {{ displayTitle }}
487
+ </h1>
488
+ </header>
489
+ `, styles: [".ui-page-header-host{display:block}.ui-page-header{margin-bottom:var(--ui-spacing-5)}.ui-page-header__nav{margin-bottom:var(--ui-spacing-2)}.ui-page-header__breadcrumb{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);line-height:var(--ui-line-height-normal);gap:var(--ui-spacing-1)}.ui-page-header__item{display:inline-flex;align-items:center;gap:var(--ui-spacing-1)}a.ui-page-header__link lucide-icon{transform:translateY(2px)!important}span.ui-page-header__separator lucide-icon{transform:translateY(3px)!important}.ui-page-header__link{display:inline-flex;align-items:center;gap:4px;text-decoration:none;color:var(--ui-color-primary);border-radius:var(--ui-radius-sm);padding:2px 4px;margin:-2px -4px;transition:color var(--ui-transition-fast),background-color var(--ui-transition-fast)}.ui-page-header__link:hover{color:var(--ui-color-primary-hover);text-decoration:underline}.ui-page-header__link:focus{outline:none}.ui-page-header__link:focus-visible{outline:var(--ui-focus-ring-width) solid var(--ui-focus-ring-color);outline-offset:var(--ui-focus-ring-offset)}.ui-page-header__text{white-space:nowrap}.ui-page-header__text--current{font-weight:var(--ui-font-weight-medium);color:var(--ui-color-text)}.ui-page-header__separator{display:inline-flex;align-items:center;color:var(--ui-color-text-muted);flex-shrink:0}.ui-page-header__title{margin:0;font-family:var(--ui-font-family);font-size:var(--ui-font-size-2xl);font-weight:var(--ui-font-weight-bold);color:var(--ui-color-text);line-height:var(--ui-line-height-tight)}.ui-page-header__title:focus{outline:none}@media (min-width: 640px){.ui-page-header__title{font-size:var(--ui-font-size-xl)}.ui-page-header__breadcrumb{font-size:var(--ui-font-size-xs)}}\n"] }]
490
+ }], propDecorators: { title: [{
491
+ type: Input
492
+ }], homeRoute: [{
493
+ type: Input
494
+ }], showHome: [{
495
+ type: Input
496
+ }], updateDocumentTitle: [{
497
+ type: Input
498
+ }], titleSuffix: [{
499
+ type: Input
500
+ }] } });
501
+
502
+ /**
503
+ * ng-ui-system — Page Header entry point.
504
+ *
505
+ * @example
506
+ * ```typescript
507
+ * import {
508
+ * UiPageHeaderComponent,
509
+ * UiBreadcrumbService,
510
+ * UiBreadcrumbItem,
511
+ * UI_BREADCRUMB_LABEL_RESOLVER,
512
+ * } from 'ng-ui-system';
513
+ * ```
514
+ */
515
+ // Components
516
+
517
+ /**
518
+ * Bootstrap del secondary entry `@gnggln/ng-ui-system/page-header`. Page Header e breadcrumb.
519
+ */
520
+
521
+ /**
522
+ * Generated bundle index. Do not edit.
523
+ */
524
+
525
+ export { UI_BREADCRUMB_LABEL_RESOLVER, UiBreadcrumbService, UiPageHeaderComponent };
526
+ //# sourceMappingURL=gnggln-ng-ui-system-page-header.mjs.map