@unipin/angular-applet 18.9.7 → 21.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/README.md +49 -10
  2. package/common/assets/sprites/flagGlobal.png +0 -0
  3. package/common/assets/sprites/flagSprite42.webp +0 -0
  4. package/common/assets/styles/freakflags.scss +263 -0
  5. package/common/assets/styles/theme.css +69 -0
  6. package/fesm2022/unipin-angular-applet-accordion.mjs +242 -0
  7. package/fesm2022/unipin-angular-applet-accordion.mjs.map +1 -0
  8. package/fesm2022/unipin-angular-applet-alert-dialog.mjs +267 -0
  9. package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -0
  10. package/fesm2022/unipin-angular-applet-alert.mjs +94 -0
  11. package/fesm2022/unipin-angular-applet-alert.mjs.map +1 -0
  12. package/fesm2022/unipin-angular-applet-auth.mjs +707 -0
  13. package/fesm2022/unipin-angular-applet-auth.mjs.map +1 -0
  14. package/fesm2022/unipin-angular-applet-avatar.mjs +41 -0
  15. package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -0
  16. package/fesm2022/unipin-angular-applet-badge.mjs +50 -0
  17. package/fesm2022/unipin-angular-applet-badge.mjs.map +1 -0
  18. package/fesm2022/unipin-angular-applet-buttons.mjs +263 -0
  19. package/fesm2022/unipin-angular-applet-buttons.mjs.map +1 -0
  20. package/fesm2022/unipin-angular-applet-calendar.mjs +492 -0
  21. package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -0
  22. package/fesm2022/unipin-angular-applet-collapsible.mjs +97 -0
  23. package/fesm2022/unipin-angular-applet-collapsible.mjs.map +1 -0
  24. package/fesm2022/unipin-angular-applet-common.mjs +342 -0
  25. package/fesm2022/unipin-angular-applet-common.mjs.map +1 -0
  26. package/fesm2022/unipin-angular-applet-containers.mjs +472 -0
  27. package/fesm2022/unipin-angular-applet-containers.mjs.map +1 -0
  28. package/fesm2022/unipin-angular-applet-dialog.mjs +535 -0
  29. package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -0
  30. package/fesm2022/unipin-angular-applet-forms.mjs +1699 -0
  31. package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -0
  32. package/fesm2022/unipin-angular-applet-froala.mjs +298 -0
  33. package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -0
  34. package/fesm2022/unipin-angular-applet-grids.mjs +105 -0
  35. package/fesm2022/unipin-angular-applet-grids.mjs.map +1 -0
  36. package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +86 -0
  37. package/fesm2022/unipin-angular-applet-infinite-scroll.mjs.map +1 -0
  38. package/fesm2022/unipin-angular-applet-json-viewer.mjs +71 -0
  39. package/fesm2022/unipin-angular-applet-json-viewer.mjs.map +1 -0
  40. package/fesm2022/unipin-angular-applet-loading-dialog.mjs +252 -0
  41. package/fesm2022/unipin-angular-applet-loading-dialog.mjs.map +1 -0
  42. package/fesm2022/unipin-angular-applet-markdown.mjs +703 -0
  43. package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -0
  44. package/fesm2022/unipin-angular-applet-micro-frontend.mjs +75 -0
  45. package/fesm2022/unipin-angular-applet-micro-frontend.mjs.map +1 -0
  46. package/fesm2022/unipin-angular-applet-popover.mjs +333 -0
  47. package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -0
  48. package/fesm2022/unipin-angular-applet-progress-bar.mjs +38 -0
  49. package/fesm2022/unipin-angular-applet-progress-bar.mjs.map +1 -0
  50. package/fesm2022/unipin-angular-applet-skeleton.mjs +32 -0
  51. package/fesm2022/unipin-angular-applet-skeleton.mjs.map +1 -0
  52. package/fesm2022/unipin-angular-applet-spinner.mjs +144 -0
  53. package/fesm2022/unipin-angular-applet-spinner.mjs.map +1 -0
  54. package/fesm2022/unipin-angular-applet-swipeable.mjs +270 -0
  55. package/fesm2022/unipin-angular-applet-swipeable.mjs.map +1 -0
  56. package/fesm2022/unipin-angular-applet-tabs.mjs +142 -0
  57. package/fesm2022/unipin-angular-applet-tabs.mjs.map +1 -0
  58. package/fesm2022/unipin-angular-applet-tooltip.mjs +118 -0
  59. package/fesm2022/unipin-angular-applet-tooltip.mjs.map +1 -0
  60. package/fesm2022/unipin-angular-applet.mjs +5 -4617
  61. package/fesm2022/unipin-angular-applet.mjs.map +1 -1
  62. package/package.json +132 -29
  63. package/types/unipin-angular-applet-accordion.d.ts +60 -0
  64. package/types/unipin-angular-applet-alert-dialog.d.ts +35 -0
  65. package/types/unipin-angular-applet-alert.d.ts +34 -0
  66. package/types/unipin-angular-applet-auth.d.ts +225 -0
  67. package/types/unipin-angular-applet-avatar.d.ts +16 -0
  68. package/types/unipin-angular-applet-badge.d.ts +20 -0
  69. package/types/unipin-angular-applet-buttons.d.ts +37 -0
  70. package/types/unipin-angular-applet-calendar.d.ts +44 -0
  71. package/types/unipin-angular-applet-collapsible.d.ts +35 -0
  72. package/types/unipin-angular-applet-common.d.ts +94 -0
  73. package/types/unipin-angular-applet-containers.d.ts +179 -0
  74. package/types/unipin-angular-applet-dialog.d.ts +180 -0
  75. package/types/unipin-angular-applet-forms.d.ts +412 -0
  76. package/types/unipin-angular-applet-froala.d.ts +85 -0
  77. package/types/unipin-angular-applet-grids.d.ts +22 -0
  78. package/types/unipin-angular-applet-infinite-scroll.d.ts +51 -0
  79. package/types/unipin-angular-applet-json-viewer.d.ts +30 -0
  80. package/types/unipin-angular-applet-loading-dialog.d.ts +19 -0
  81. package/types/unipin-angular-applet-markdown.d.ts +119 -0
  82. package/types/unipin-angular-applet-micro-frontend.d.ts +11 -0
  83. package/types/unipin-angular-applet-popover.d.ts +58 -0
  84. package/types/unipin-angular-applet-progress-bar.d.ts +14 -0
  85. package/types/unipin-angular-applet-skeleton.d.ts +11 -0
  86. package/types/unipin-angular-applet-spinner.d.ts +12 -0
  87. package/types/unipin-angular-applet-swipeable.d.ts +66 -0
  88. package/types/unipin-angular-applet-tabs.d.ts +40 -0
  89. package/types/unipin-angular-applet-tooltip.d.ts +32 -0
  90. package/types/unipin-angular-applet.d.ts +3 -0
  91. package/esm2022/graphql/generated.mjs +0 -938
  92. package/esm2022/lib/components/approval/detail/approval-detail.component.mjs +0 -78
  93. package/esm2022/lib/components/approval/form/approval-form.component.mjs +0 -128
  94. package/esm2022/lib/components/approval/index.mjs +0 -5
  95. package/esm2022/lib/components/approval/list/approval-list.component.mjs +0 -114
  96. package/esm2022/lib/components/approval/list/provide-approval-entities.util.mjs +0 -9
  97. package/esm2022/lib/components/approval/services/approval.service.mjs +0 -46
  98. package/esm2022/lib/components/audit/detail/audit-detail.component.mjs +0 -123
  99. package/esm2022/lib/components/audit/index.mjs +0 -3
  100. package/esm2022/lib/components/audit/list/audit-list.component.mjs +0 -81
  101. package/esm2022/lib/components/audit/service/audit.service.mjs +0 -49
  102. package/esm2022/lib/components/audit/types/audit-detail-form.type.mjs +0 -2
  103. package/esm2022/lib/components/buttons/group/btn-group.component.mjs +0 -43
  104. package/esm2022/lib/components/buttons/group/interfaces/btn-group-config.interface.mjs +0 -2
  105. package/esm2022/lib/components/buttons/index.mjs +0 -3
  106. package/esm2022/lib/components/buttons/loading/btn-loading.component.mjs +0 -48
  107. package/esm2022/lib/components/containers/applet-container/applet-container.component.mjs +0 -55
  108. package/esm2022/lib/components/containers/applet-container/provide-applet-config.util.mjs +0 -9
  109. package/esm2022/lib/components/containers/colum-header-container/column-header-container.component.mjs +0 -23
  110. package/esm2022/lib/components/containers/column-container/column-container.component.mjs +0 -79
  111. package/esm2022/lib/components/containers/column-container/directives/lazy-route.directive.mjs +0 -57
  112. package/esm2022/lib/components/containers/index.mjs +0 -7
  113. package/esm2022/lib/components/containers/list-container/index.mjs +0 -3
  114. package/esm2022/lib/components/containers/list-container/interfaces/list-container-config.interface.mjs +0 -2
  115. package/esm2022/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.mjs +0 -58
  116. package/esm2022/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.mjs +0 -57
  117. package/esm2022/lib/components/containers/modal-container/modal-container.component.mjs +0 -40
  118. package/esm2022/lib/components/filter/filter.component.mjs +0 -222
  119. package/esm2022/lib/components/filter/index.mjs +0 -2
  120. package/esm2022/lib/components/filter/interfaces/filter-config.interface.mjs +0 -2
  121. package/esm2022/lib/components/filter/interfaces/filter-field.interface.mjs +0 -2
  122. package/esm2022/lib/components/filter/interfaces/filter-search-event.interface.mjs +0 -2
  123. package/esm2022/lib/components/forms/country-input/form-country-input.component.mjs +0 -122
  124. package/esm2022/lib/components/forms/currency-input/form-currency-input.component.mjs +0 -157
  125. package/esm2022/lib/components/forms/date/form-date.component.mjs +0 -117
  126. package/esm2022/lib/components/forms/image-picker/directives/drag-n-drop.directive.mjs +0 -49
  127. package/esm2022/lib/components/forms/image-picker/form-image-picker.component.mjs +0 -68
  128. package/esm2022/lib/components/forms/index.mjs +0 -12
  129. package/esm2022/lib/components/forms/input/form-input.component.mjs +0 -98
  130. package/esm2022/lib/components/forms/number/form-number.component.mjs +0 -97
  131. package/esm2022/lib/components/forms/number/pipes/locale-number.pipe.mjs +0 -33
  132. package/esm2022/lib/components/forms/password/form-password.component.mjs +0 -100
  133. package/esm2022/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.mjs +0 -135
  134. package/esm2022/lib/components/forms/searchable-select/form-searchable-select.component.mjs +0 -138
  135. package/esm2022/lib/components/forms/select/form-select.component.mjs +0 -119
  136. package/esm2022/lib/components/forms/textarea/form-textarea.component.mjs +0 -88
  137. package/esm2022/lib/components/grids/grid-pagination/grid-pagination.component.mjs +0 -111
  138. package/esm2022/lib/components/grids/grid-snapshot/grid-snapshot.component.mjs +0 -109
  139. package/esm2022/lib/components/grids/index.mjs +0 -4
  140. package/esm2022/lib/components/grids/interfaces/grid-config.interface.mjs +0 -2
  141. package/esm2022/lib/components/grids/services/grid.service.mjs +0 -25
  142. package/esm2022/lib/components/index.mjs +0 -9
  143. package/esm2022/lib/components/infinite-scroll/directive/infinite-scroll.directive.mjs +0 -43
  144. package/esm2022/lib/components/infinite-scroll/index.mjs +0 -3
  145. package/esm2022/lib/components/infinite-scroll/infinite-scroll.component.mjs +0 -36
  146. package/esm2022/lib/components/tabs/index.mjs +0 -3
  147. package/esm2022/lib/components/tabs/tab-content/tab-content.component.mjs +0 -37
  148. package/esm2022/lib/components/tabs/tab-group/tab-group.component.mjs +0 -47
  149. package/esm2022/lib/guards/auth/auth.guard.mjs +0 -10
  150. package/esm2022/lib/guards/index.mjs +0 -2
  151. package/esm2022/lib/interceptors/header/header.interceptor.mjs +0 -29
  152. package/esm2022/lib/interceptors/index.mjs +0 -3
  153. package/esm2022/lib/interceptors/refresh-token/refresh-token.interceptor.mjs +0 -83
  154. package/esm2022/lib/interfaces/index.mjs +0 -2
  155. package/esm2022/lib/interfaces/user/user.interface.mjs +0 -2
  156. package/esm2022/lib/modules/index.mjs +0 -3
  157. package/esm2022/lib/modules/micro-frontend/index.mjs +0 -2
  158. package/esm2022/lib/modules/micro-frontend/utils/mf-bootstrap.util.mjs +0 -55
  159. package/esm2022/lib/modules/micro-frontend/utils/mf-global-state.util.mjs +0 -14
  160. package/esm2022/lib/modules/permission/directive/permission.directive.mjs +0 -41
  161. package/esm2022/lib/modules/permission/guards/permission.guard.mjs +0 -26
  162. package/esm2022/lib/modules/permission/index.mjs +0 -7
  163. package/esm2022/lib/modules/permission/pages/401/unauthorized.page.mjs +0 -15
  164. package/esm2022/lib/modules/permission/pages/loading/loading.page.mjs +0 -65
  165. package/esm2022/lib/modules/permission/pages/loading/provide-loading-config.util.mjs +0 -9
  166. package/esm2022/lib/modules/permission/services/permission.service.mjs +0 -50
  167. package/esm2022/lib/resolvers/auth/auth.resolver.mjs +0 -87
  168. package/esm2022/lib/resolvers/index.mjs +0 -2
  169. package/esm2022/lib/services/auth/auth.service.mjs +0 -171
  170. package/esm2022/lib/services/country/country.service.mjs +0 -43
  171. package/esm2022/lib/services/currency/currency.service.mjs +0 -40
  172. package/esm2022/lib/services/index.mjs +0 -6
  173. package/esm2022/lib/services/profile/profile.service.mjs +0 -82
  174. package/esm2022/lib/services/rate-group-code/rate-group-code.service.mjs +0 -31
  175. package/esm2022/lib/utils/contrast-color-generator/contrast-color-generator.util.mjs +0 -16
  176. package/esm2022/lib/utils/form-error-message/form-error-message.util.mjs +0 -21
  177. package/esm2022/lib/utils/format-capitalize/format-capitalize.util.mjs +0 -18
  178. package/esm2022/lib/utils/index.mjs +0 -5
  179. package/esm2022/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.mjs +0 -9
  180. package/esm2022/public-api.mjs +0 -10
  181. package/esm2022/unipin-angular-applet.mjs +0 -2
  182. package/graphql/generated.d.ts +0 -16225
  183. package/index.d.ts +0 -2
  184. package/lib/components/approval/detail/approval-detail.component.d.ts +0 -26
  185. package/lib/components/approval/form/approval-form.component.d.ts +0 -33
  186. package/lib/components/approval/index.d.ts +0 -4
  187. package/lib/components/approval/list/approval-list.component.d.ts +0 -33
  188. package/lib/components/approval/list/provide-approval-entities.util.d.ts +0 -3
  189. package/lib/components/approval/services/approval.service.d.ts +0 -18
  190. package/lib/components/audit/detail/audit-detail.component.d.ts +0 -33
  191. package/lib/components/audit/index.d.ts +0 -2
  192. package/lib/components/audit/list/audit-list.component.d.ts +0 -31
  193. package/lib/components/audit/service/audit.service.d.ts +0 -15
  194. package/lib/components/audit/types/audit-detail-form.type.d.ts +0 -12
  195. package/lib/components/buttons/group/btn-group.component.d.ts +0 -18
  196. package/lib/components/buttons/group/interfaces/btn-group-config.interface.d.ts +0 -11
  197. package/lib/components/buttons/index.d.ts +0 -3
  198. package/lib/components/buttons/loading/btn-loading.component.d.ts +0 -19
  199. package/lib/components/containers/applet-container/applet-container.component.d.ts +0 -22
  200. package/lib/components/containers/applet-container/provide-applet-config.util.d.ts +0 -15
  201. package/lib/components/containers/colum-header-container/column-header-container.component.d.ts +0 -7
  202. package/lib/components/containers/column-container/column-container.component.d.ts +0 -26
  203. package/lib/components/containers/column-container/directives/lazy-route.directive.d.ts +0 -17
  204. package/lib/components/containers/index.d.ts +0 -6
  205. package/lib/components/containers/list-container/index.d.ts +0 -3
  206. package/lib/components/containers/list-container/interfaces/list-container-config.interface.d.ts +0 -9
  207. package/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.d.ts +0 -23
  208. package/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.d.ts +0 -23
  209. package/lib/components/containers/modal-container/modal-container.component.d.ts +0 -16
  210. package/lib/components/filter/filter.component.d.ts +0 -44
  211. package/lib/components/filter/index.d.ts +0 -4
  212. package/lib/components/filter/interfaces/filter-config.interface.d.ts +0 -5
  213. package/lib/components/filter/interfaces/filter-field.interface.d.ts +0 -24
  214. package/lib/components/filter/interfaces/filter-search-event.interface.d.ts +0 -4
  215. package/lib/components/forms/country-input/form-country-input.component.d.ts +0 -41
  216. package/lib/components/forms/currency-input/form-currency-input.component.d.ts +0 -52
  217. package/lib/components/forms/date/form-date.component.d.ts +0 -33
  218. package/lib/components/forms/image-picker/directives/drag-n-drop.directive.d.ts +0 -10
  219. package/lib/components/forms/image-picker/form-image-picker.component.d.ts +0 -21
  220. package/lib/components/forms/index.d.ts +0 -11
  221. package/lib/components/forms/input/form-input.component.d.ts +0 -31
  222. package/lib/components/forms/number/form-number.component.d.ts +0 -27
  223. package/lib/components/forms/number/pipes/locale-number.pipe.d.ts +0 -8
  224. package/lib/components/forms/password/form-password.component.d.ts +0 -27
  225. package/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.d.ts +0 -41
  226. package/lib/components/forms/searchable-select/form-searchable-select.component.d.ts +0 -42
  227. package/lib/components/forms/select/form-select.component.d.ts +0 -34
  228. package/lib/components/forms/textarea/form-textarea.component.d.ts +0 -26
  229. package/lib/components/grids/grid-pagination/grid-pagination.component.d.ts +0 -33
  230. package/lib/components/grids/grid-snapshot/grid-snapshot.component.d.ts +0 -36
  231. package/lib/components/grids/index.d.ts +0 -4
  232. package/lib/components/grids/interfaces/grid-config.interface.d.ts +0 -16
  233. package/lib/components/grids/services/grid.service.d.ts +0 -12
  234. package/lib/components/index.d.ts +0 -8
  235. package/lib/components/infinite-scroll/directive/infinite-scroll.directive.d.ts +0 -15
  236. package/lib/components/infinite-scroll/index.d.ts +0 -2
  237. package/lib/components/infinite-scroll/infinite-scroll.component.d.ts +0 -12
  238. package/lib/components/tabs/index.d.ts +0 -6
  239. package/lib/components/tabs/tab-content/tab-content.component.d.ts +0 -14
  240. package/lib/components/tabs/tab-group/tab-group.component.d.ts +0 -18
  241. package/lib/guards/auth/auth.guard.d.ts +0 -1
  242. package/lib/guards/index.d.ts +0 -1
  243. package/lib/interceptors/header/header.interceptor.d.ts +0 -9
  244. package/lib/interceptors/index.d.ts +0 -2
  245. package/lib/interceptors/refresh-token/refresh-token.interceptor.d.ts +0 -14
  246. package/lib/interfaces/index.d.ts +0 -1
  247. package/lib/interfaces/user/user.interface.d.ts +0 -27
  248. package/lib/modules/index.d.ts +0 -2
  249. package/lib/modules/micro-frontend/index.d.ts +0 -1
  250. package/lib/modules/micro-frontend/utils/mf-bootstrap.util.d.ts +0 -9
  251. package/lib/modules/micro-frontend/utils/mf-global-state.util.d.ts +0 -4
  252. package/lib/modules/permission/directive/permission.directive.d.ts +0 -16
  253. package/lib/modules/permission/guards/permission.guard.d.ts +0 -2
  254. package/lib/modules/permission/index.d.ts +0 -6
  255. package/lib/modules/permission/pages/401/unauthorized.page.d.ts +0 -5
  256. package/lib/modules/permission/pages/loading/loading.page.d.ts +0 -18
  257. package/lib/modules/permission/pages/loading/provide-loading-config.util.d.ts +0 -10
  258. package/lib/modules/permission/services/permission.service.d.ts +0 -21
  259. package/lib/resolvers/auth/auth.resolver.d.ts +0 -14
  260. package/lib/resolvers/index.d.ts +0 -1
  261. package/lib/services/auth/auth.service.d.ts +0 -39
  262. package/lib/services/country/country.service.d.ts +0 -16
  263. package/lib/services/currency/currency.service.d.ts +0 -16
  264. package/lib/services/index.d.ts +0 -5
  265. package/lib/services/profile/profile.service.d.ts +0 -12
  266. package/lib/services/rate-group-code/rate-group-code.service.d.ts +0 -14
  267. package/lib/utils/contrast-color-generator/contrast-color-generator.util.d.ts +0 -4
  268. package/lib/utils/form-error-message/form-error-message.util.d.ts +0 -2
  269. package/lib/utils/format-capitalize/format-capitalize.util.d.ts +0 -1
  270. package/lib/utils/index.d.ts +0 -4
  271. package/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.d.ts +0 -2
  272. package/public-api.d.ts +0 -11
  273. package/src/assets/scss/forms.scss +0 -65
  274. package/src/assets/scss/grid.scss +0 -7505
  275. package/src/assets/scss/select.scss +0 -328
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unipin-angular-applet-froala.mjs","sources":["../../../projects/unipin-angular/froala/froala.component.ts","../../../projects/unipin-angular/froala/unipin-angular-applet-froala.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, forwardRef, WritableSignal, signal, OnInit, computed, input, booleanAttribute } from '@angular/core';\nimport { ControlValueAccessor, ReactiveFormsModule } from '@angular/forms';\nimport { ClassValue } from 'clsx';\nimport { FroalaEditorModule, FroalaViewModule } from 'angular-froala-wysiwyg';\nimport FroalaEditor from 'froala-editor';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpFieldControl, UpFieldControlComponent } from '@unipin/angular-applet/forms';\n\nimport 'froala-editor/js/plugins.pkgd.min.js';\nimport 'froala-editor/js/plugins/align.min.js';\nimport 'froala-editor/js/third_party/embedly.min';\nimport 'froala-editor/js/third_party/image_tui.min';\nimport 'froala-editor/js/third_party/font_awesome.min';\n\n@Component({\n standalone: true,\n selector: 'up-froala',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '_computedClass()',\n },\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpFroalaComponent)\n },\n ],\n imports: [\n ReactiveFormsModule,\n FroalaViewModule,\n FroalaEditorModule\n ],\n template: `\n <div \n [froalaModel]=\"value()\" \n [froalaEditor]=\"froalaOptions()\"\n >\n </div>\n `\n})\nexport class UpFroalaComponent extends UpFieldControlComponent implements OnInit, ControlValueAccessor {\n\n public readonly froalaKey = input.required<string>();\n \n public readonly froalaEvents = input<any>({ });\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n public readonly useCustomSocialEmbed = input(\n false,\n {\n transform: booleanAttribute\n }\n );\n\n public readonly value: WritableSignal<string> = signal('');\n\n public readonly froalaOptions = computed(\n () => {\n return { \n fullPage: true,\n toolbarSticky: false,\n videoResponsive: true,\n imageMaxSize: 5242880,\n imageDefaultWidth: 100,\n videoMaxSize: 52428800,\n imageDefaultAlign: 'left',\n key: this.froalaKey(),\n imageResizeWithPercent: true,\n imageAllowedTypes: ['jpeg', 'jpg', 'png'],\n placeholderText: 'Add Page Content Here!',\n videoAllowedTypes: ['quicktime', 'webm', 'jpg', 'ogg'],\n pasteAllowedStyleProps: ['font-size', 'font-family', 'font-style', 'text-decoration', 'text-align', 'font-weight'],\n htmlAllowedTags: ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'queue', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'style', 'section', 'select', 'small', 'source', 'span', 'strike', 'strong', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr'],\n events: {\n ...this.froalaEvents(),\n 'initialized': (e: any) => {\n const styleTag = document.createElement('style');\n styleTag.innerHTML = `\n .adsense { \n width: 100%;\n height: 50px;\n padding: 5px;\n position: relative;\n background-color: #D3D3D3;\n &::after{\n content: 'Google Ads';\n position: absolute;\n top: 0;\n left: 0;\n margin-left: 50%;\n margin-top: 13px;\n transform: translate(-50%);\n }\n }\n .fr-view {\n font-family: Roboto, sans-serif !important;\n font-weight: 400 !important;\n font-size: 18px !important;\n line-height: 27px !important;\n text-align: justify !important;\n p {\n margin: 0 0 14px !important;\n }\n }`;\n \n const iframeDocument = e._editor.$el.get(0).ownerDocument;\n iframeDocument.head.appendChild(styleTag);\n },\n 'paste.afterCleanup': function (html: string) {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n \n doc.querySelectorAll('iframe[src*=\"youtube.com\"]').forEach((video: any) => {\n video.setAttribute('style', 'width: 100%; height: 500px;');\n });\n \n doc.querySelectorAll('table').forEach((table) => {\n table.querySelectorAll('tr').forEach((row) => {\n row.querySelectorAll('td, th').forEach((cell: any) => cell.style.border = '1px solid #000');\n });\n });\n return doc.documentElement.innerHTML;\n },\n 'video.inserted': function (vid: any) {\n vid.attr('contentEditable', 'true');\n vid.css('width', '100%'); \n vid.css('height', '500px'); \n },\n 'window.copy': function () {\n localStorage.removeItem('fr-copied-html');\n localStorage.removeItem('fr-copied-text');\n },\n 'window.cut': function () {\n localStorage.removeItem('fr-copied-html');\n localStorage.removeItem('fr-copied-text');\n },\n 'contentChanged': () => this._onChange(this.value)\n },\n toolbarButtons: {\n moreText: {\n buttons: ['adsense', 'bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'fontFamily', 'fontSize', 'textColor', 'backgroundColor', 'inlineClass', 'inlineStyle', 'clearFormatting'],\n align: 'left',\n buttonsVisible: 3\n },\n moreParagraph: {\n buttons: ['alignCenter', 'formatOLSimple', 'alignLeft', 'alignRight', 'alignJustify', 'formatOL', 'formatUL', 'paragraphFormat', 'paragraphStyle', 'lineHeight', 'outdent', 'indent', 'quote'],\n align: 'left',\n buttonsVisible: 2\n },\n moreRich: {\n buttons: ['insertLink', 'insertImage', 'customEmbed', 'insertVideo', 'insertTable', 'emoticons', 'specialCharacters', 'insertHR'],\n align: 'left',\n buttonsVisible: 4\n },\n moreMisc: {\n buttons: ['undo', 'redo', 'fullscreen', 'print', 'getPDF', 'spellChecker', 'selectAll', 'html', 'help'],\n align: 'right',\n buttonsVisible: 2\n }\n }\n };\n }\n );\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n 'peer placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex flex-col min-h-48 size-full min-w-0 rounded-md border bg-transparent text-base shadow-xs transition-[color,box-shadow] outline-none md:text-sm overflow-hidden bg-white',\n this.error()? 'ring-destructive/20 dark:ring-destructive/40 border-destructive has-[textarea:focus-visible]:ring-destructive/50' : '',\n this.inlineClass(),\n );\n }\n );\n\n /**\n * Callback function to handle value changes in the password input.\n * @type {(_val: any) => void}\n */\n protected _onChange: (_val: any) => void = (_val: any): void => {};\n\n /**\n * Callback function to handle touch events in the password input.\n * @type {() => void}\n */\n protected _onTouched: () => void = (): void => {};\n\n constructor() {\n super();\n\n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void{\n if (this.useCustomSocialEmbed()) {\n this.customSocialEmbed();\n }\n\n FroalaEditor.DefineIcon('adsense', { NAME: 'plus', SVG_KEY: 'tags' });\n FroalaEditor.RegisterCommand('adsense', {\n title: 'Adsense',\n focus: false, undo: false,\n refreshAfterCallback: true,\n callback() { this.html.insert('<div class=\"adsense\"></div>'); }\n });\n }\n\n /**\n * Registers a callback function to be called when the password input value changes.\n * @param {(_val: any) => void} fn - Callback function for value changes.\n */\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the password input is touched.\n * @param {() => void} fn - Callback function for touch events.\n */\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n /**\n * Writes a new value to the password input.\n * @param {*} val - The new value to be set.\n */\n public writeValue(val: any): void{\n this.value.set(val?? '');\n }\n\n protected customSocialEmbed(): void{\n FroalaEditor.POPUP_TEMPLATES['customPlugin.popup'] = '[_BUTTONS_][_CUSTOM_LAYER_]';\n Object.assign(\n FroalaEditor.DEFAULTS, \n { popupButtons: ['popupClose'] }\n );\n\n FroalaEditor.PLUGINS.customPlugin = function (editor: any) {\n function initPopup() {\n let tabidx = 0;\n\n const popupButtons = `<div class=\"fr-buttons fr-tabs\">${ editor.button.buildList(editor.opts.popupButtons) }</div>`;\n const inputLayer = `\n <div class=\"fr-link-insert-layer fr-layer fr-active\" id=\"fr-link-insert-layer-${ editor.id }\">\n <div class=\"errorlist\"></div>\n <div class=\"fr-input-line\"><input name=\"href\" type=\"text\" placeholder=\"Paste in embed code\" tabIndex=\"${ (++tabidx) }\"></div>\n <div class=\"fr-action-buttons\"><button class=\"fr-command fr-submit\" data-cmd=\"linkCustomInsert\" href=\"#\" tabIndex=\"${ (++tabidx) }\" type=\"button\">${ editor.language.translate('Insert') }</button></div>\n </div>\n `;\n return editor.popups.create('customPlugin.popup', { buttons: popupButtons, custom_layer: inputLayer });\n }\n\n function showPopup() {\n let popup = editor.popups.get('customPlugin.popup');\n if (!popup) {\n popup = initPopup();\n }\n editor.popups.setContainer('customPlugin.popup', editor.$tb);\n const btn = editor.$tb.find('.fr-command[data-cmd=\"customEmbed\"]');\n\n editor.popups.show('customPlugin.popup', (btn.offset().left + btn.outerWidth() / 2), (btn.offset().top + (editor.opts.toolbarBottom ? 10 : btn.outerHeight() - 10)), btn.outerHeight());\n }\n\n function hidePopup() {\n editor.popups.hide('customPlugin.popup');\n editor.popups.get('customPlugin.popup').find('input[type=\"text\"][name=\"href\"]').val('');\n }\n\n function showError(error: string) {\n const popup = editor.popups.get('customPlugin.popup');\n const errors = popup.find('div.errorlist');\n\n errors.html('<small>' + error + '</small>');\n popup.find('input[type=\"text\"][name=\"href\"]').on('keyup', function(){ errors.html(''); });\n }\n\n function insert(url: string) {\n editor.events.focus(true);\n editor.selection.restore();\n if (url.includes('<script')){\n showError('Oops, can not insert script!');\n return false;\n }\n\n editor.html.insert('<center>' + url + '</center>');\n editor.popups.hide('customPlugin.popup');\n return false;\n } \n\n function insertCallback() {\n insert(editor.popups.get('customPlugin.popup').find('input[type=\"text\"][name=\"href\"]').val());\n }\n\n return { showPopup, hidePopup, insertCallback };\n };\n\n FroalaEditor.DefineIcon('socialEmbed', { NAME: 'star', SVG_KEY: 'insertEmbed'});\n FroalaEditor.RegisterCommand('customEmbed', {\n title: 'Embed Social',\n icon: 'socialEmbed',\n undo: false,\n focus: false,\n plugin: 'customPlugin',\n callback: function () { this['customPlugin'].showPopup(); }\n });\n\n FroalaEditor.DefineIcon('popupClose', { NAME: 'times', SVG_KEY: 'back' });\n FroalaEditor.RegisterCommand('popupClose', {\n title: 'Close',\n undo: false,\n focus: false,\n callback: function () { this['customPlugin'].hidePopup(); }\n });\n\n FroalaEditor.RegisterCommand('linkCustomInsert', {\n focus: false,\n refreshAfterCallback: false,\n callback: function () { this['customPlugin'].insertCallback(); }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { up, generateContrastColor } from '@unipin/angular-applet/common';
2
+ import { badgeVariants } from '@unipin/angular-applet/badge';
3
+
4
+ function renderFlag(value) {
5
+ if (!value ||
6
+ !value.length) {
7
+ return '';
8
+ }
9
+ const values = Array.isArray(value) ? value : [value];
10
+ return `
11
+ <div class="d-flex align-items-center gap-2 h-100 fw-medium">
12
+ ${values.map((v) => {
13
+ return `
14
+ <div class="d-flex align-items-center gap-1 size-full">
15
+ <div title="${v}" class="fflag-up border rounded fflag-${v}"></div>
16
+ </div>
17
+ `;
18
+ }).join('')}
19
+ </div>
20
+ `;
21
+ }
22
+
23
+ function renderGridBadge(value, { additionalClass = '', variant = 'default', isAutoGenerateColor = true, }) {
24
+ if (!value) {
25
+ return '';
26
+ }
27
+ const badgeClass = up(badgeVariants({
28
+ variant: variant
29
+ }), 'w-full', additionalClass);
30
+ let style = '';
31
+ if (isAutoGenerateColor) {
32
+ const { background, foreground } = generateContrastColor(value.substring(0, 3));
33
+ style = `background-color: ${background} !important; color: ${foreground} !important;`;
34
+ }
35
+ return `
36
+ <span
37
+ style="${style}"
38
+ class="${badgeClass}"
39
+ >
40
+ ${value}
41
+ </span>
42
+ `;
43
+ }
44
+
45
+ const statusVariant = {
46
+ ACTIVE: {
47
+ class: '',
48
+ variant: 'default'
49
+ },
50
+ SUCCESS: {
51
+ variant: 'default',
52
+ class: 'bg-green-700'
53
+ },
54
+ APPROVED: {
55
+ variant: 'default',
56
+ class: 'bg-green-700'
57
+ },
58
+ FAIL: {
59
+ class: '',
60
+ variant: 'destructive'
61
+ },
62
+ FAILED: {
63
+ class: '',
64
+ variant: 'destructive'
65
+ },
66
+ DELETED: {
67
+ class: '',
68
+ variant: 'destructive'
69
+ },
70
+ INACTIVE: {
71
+ variant: 'default',
72
+ class: 'bg-yellow-500 text-black',
73
+ },
74
+ IN_PROGRESS: {
75
+ variant: 'default',
76
+ class: 'bg-yellow-500 text-black',
77
+ },
78
+ PENDING: {
79
+ variant: 'default',
80
+ class: 'bg-yellow-500 text-black',
81
+ },
82
+ };
83
+ function renderStatusBadge(value, { additionalStatus, additionalClass = '' }) {
84
+ if (!value) {
85
+ return '';
86
+ }
87
+ let used = statusVariant[value] || additionalStatus?.[value];
88
+ if (!used) {
89
+ return renderGridBadge(value, {
90
+ additionalClass
91
+ });
92
+ }
93
+ return renderGridBadge(value, {
94
+ isAutoGenerateColor: true,
95
+ variant: used.variant,
96
+ additionalClass: up(used.class, additionalClass)
97
+ });
98
+ }
99
+
100
+ /**
101
+ * Generated bundle index. Do not edit.
102
+ */
103
+
104
+ export { renderFlag, renderGridBadge, renderStatusBadge };
105
+ //# sourceMappingURL=unipin-angular-applet-grids.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unipin-angular-applet-grids.mjs","sources":["../../../projects/unipin-angular/grids/utils/render-flag/render-flag.util.ts","../../../projects/unipin-angular/grids/utils/render-grid-badge/render-grid-badge.util.ts","../../../projects/unipin-angular/grids/utils/render-status-badge/render-status-badge.util.ts","../../../projects/unipin-angular/grids/unipin-angular-applet-grids.ts"],"sourcesContent":["export function renderFlag(value: string | string[]): string{\n \n if (\n !value ||\n !value.length\n ) {\n return '';\n }\n\n const values = Array.isArray(value)? value : [ value ];\n return `\n <div class=\"d-flex align-items-center gap-2 h-100 fw-medium\">\n ${\n values.map(\n (v) => {\n return `\n <div class=\"d-flex align-items-center gap-1 size-full\">\n <div title=\"${ v }\" class=\"fflag-up border rounded fflag-${ v }\"></div>\n </div>\n `;\n }\n ).join('')\n }\n </div>\n `;\n}\n","import { generateContrastColor, up } from '@unipin/angular-applet/common';\nimport { BadgeVariants, badgeVariants } from '@unipin/angular-applet/badge';\n\n\nexport type RenderGridBadgeOptions = {\n additionalClass?: string;\n isAutoGenerateColor?: boolean;\n variant?: BadgeVariants['variant'];\n};\n\nexport function renderGridBadge(\n value: string,\n { \n additionalClass = '', \n variant = 'default',\n isAutoGenerateColor = true,\n }: RenderGridBadgeOptions\n): string{\n \n if (!value) {\n return '';\n }\n\n const badgeClass = up(\n badgeVariants(\n {\n variant: variant\n }\n ),\n 'w-full',\n additionalClass\n );\n\n let style = ''\n if (isAutoGenerateColor) {\n const { background, foreground } = generateContrastColor(value.substring(0,3));\n style = `background-color: ${ background } !important; color: ${ foreground } !important;`;\n }\n\n return `\n <span \n style=\"${ style }\" \n class=\"${ badgeClass }\"\n >\n ${ value }\n </span>\n `;\n}\n","import { up } from '@unipin/angular-applet/common';\nimport { BadgeVariants } from '@unipin/angular-applet/badge';\nimport { renderGridBadge, RenderGridBadgeOptions } from './../render-grid-badge/render-grid-badge.util';\n\n\ntype RenderStatusBadgeOptions = Omit<RenderGridBadgeOptions, 'isAutoGenerateColor' | 'variant'> & {\n additionalStatus?: {\n [key: string]: {\n class: string;\n variant: BadgeVariants['variant'];\n }\n };\n};\n\nconst statusVariant = {\n ACTIVE: {\n class: '',\n variant: 'default'\n },\n \n SUCCESS: {\n variant: 'default',\n class: 'bg-green-700'\n },\n APPROVED: {\n variant: 'default',\n class: 'bg-green-700'\n },\n\n FAIL: {\n class: '',\n variant: 'destructive'\n },\n FAILED: {\n class: '',\n variant: 'destructive'\n },\n DELETED: {\n class: '',\n variant: 'destructive'\n },\n\n INACTIVE: {\n variant: 'default',\n class: 'bg-yellow-500 text-black',\n },\n IN_PROGRESS: {\n variant: 'default',\n class: 'bg-yellow-500 text-black',\n },\n PENDING: {\n variant: 'default',\n class: 'bg-yellow-500 text-black',\n },\n};\n\nexport function renderStatusBadge(\n value: string,\n {\n additionalStatus,\n additionalClass = ''\n }: RenderStatusBadgeOptions\n): string{\n \n if (!value) {\n return '';\n }\n\n let used = statusVariant[value as keyof typeof statusVariant] || additionalStatus?.[value];\n if (!used) {\n return renderGridBadge(\n value, \n { \n additionalClass \n }\n );\n }\n\n return renderGridBadge(\n value,\n {\n isAutoGenerateColor: true,\n variant: used.variant as BadgeVariants['variant'],\n additionalClass: up(\n used.class,\n additionalClass\n )\n }\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, Directive } from '@angular/core';
3
+
4
+ class UpInfiniteScrollDirective {
5
+ constructor(elementRef) {
6
+ this.elementRef = elementRef;
7
+ /**
8
+ * Threshold at which to trigger the callback. A value of 0.0 means that the callback
9
+ * will be triggered as soon as a single pixel is visible. 1.0 means that the callback will only be triggered when the entire element is visible.
10
+ * @type {InputSignal<number>}
11
+ */
12
+ this.threshold = input(0.5, ...(ngDevMode ? [{ debugName: "threshold" }] : []));
13
+ /**
14
+ * Margin around the root. This can be used to grow or shrink the area used to
15
+ * determine intersections. It follows the same syntax as the CSS margin property.
16
+ * Example values: '10px', '10px 20px', '10%', '10% 20% 30% 40%'.
17
+ * @type {InputSignal<string>}
18
+ */
19
+ this.rootMargin = input('10%', ...(ngDevMode ? [{ debugName: "rootMargin" }] : []));
20
+ /**
21
+ * Event emitted when the user has scrolled to the threshold.
22
+ * Used for triggering the component to load more data.
23
+ * @type {OutputEmitterRef<void>}
24
+ */
25
+ this.scrolled = output();
26
+ }
27
+ ngOnInit() {
28
+ this.createIntersectionObserver();
29
+ }
30
+ ngOnDestroy() {
31
+ this.destroyIntersectionObserver();
32
+ }
33
+ /**
34
+ * Updates the observer configuration when inputs change.
35
+ * Call this method if you need to update threshold or rootMargin dynamically.
36
+ */
37
+ updateObserver() {
38
+ this.destroyIntersectionObserver();
39
+ this.createIntersectionObserver();
40
+ }
41
+ /**
42
+ * Cleans up the Intersection Observer when the directive is destroyed.
43
+ */
44
+ destroyIntersectionObserver() {
45
+ if (this.intersectionObserver) {
46
+ this.intersectionObserver.disconnect();
47
+ this.intersectionObserver = undefined;
48
+ }
49
+ }
50
+ /**
51
+ * Creates and configures the Intersection Observer to monitor when the element
52
+ * comes into view based on the specified threshold and root margin.
53
+ */
54
+ createIntersectionObserver() {
55
+ const options = {
56
+ root: null, // Use the viewport as the root
57
+ rootMargin: this.rootMargin(),
58
+ threshold: this.threshold()
59
+ };
60
+ this.intersectionObserver = new IntersectionObserver((entries) => {
61
+ entries.forEach((entry) => {
62
+ if (entry.isIntersecting) {
63
+ this.scrolled.emit();
64
+ }
65
+ });
66
+ }, options);
67
+ this.intersectionObserver.observe(this.elementRef.nativeElement);
68
+ }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpInfiniteScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
70
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.0", type: UpInfiniteScrollDirective, isStandalone: true, selector: "[upInfiniteScroll]", inputs: { threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null }, rootMargin: { classPropertyName: "rootMargin", publicName: "rootMargin", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scrolled: "scrolled" }, exportAs: ["upInfiniteScroll"], ngImport: i0 }); }
71
+ }
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpInfiniteScrollDirective, decorators: [{
73
+ type: Directive,
74
+ args: [{
75
+ standalone: true,
76
+ exportAs: 'upInfiniteScroll',
77
+ selector: '[upInfiniteScroll]'
78
+ }]
79
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { threshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "threshold", required: false }] }], rootMargin: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootMargin", required: false }] }], scrolled: [{ type: i0.Output, args: ["scrolled"] }] } });
80
+
81
+ /**
82
+ * Generated bundle index. Do not edit.
83
+ */
84
+
85
+ export { UpInfiniteScrollDirective };
86
+ //# sourceMappingURL=unipin-angular-applet-infinite-scroll.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unipin-angular-applet-infinite-scroll.mjs","sources":["../../../projects/unipin-angular/infinite-scroll/infinite-scroll.directive.ts","../../../projects/unipin-angular/infinite-scroll/unipin-angular-applet-infinite-scroll.ts"],"sourcesContent":["import { Directive, ElementRef, InputSignal, OnDestroy, OnInit, OutputEmitterRef, input, output } from '@angular/core';\n\n@Directive({\n standalone: true,\n exportAs: 'upInfiniteScroll',\n selector: '[upInfiniteScroll]'\n})\nexport class UpInfiniteScrollDirective implements OnInit, OnDestroy {\n \n /**\n * Threshold at which to trigger the callback. A value of 0.0 means that the callback\n * will be triggered as soon as a single pixel is visible. 1.0 means that the callback will only be triggered when the entire element is visible.\n * @type {InputSignal<number>}\n */\n public readonly threshold: InputSignal<number> = input<number>(0.5);\n\n /**\n * Margin around the root. This can be used to grow or shrink the area used to\n * determine intersections. It follows the same syntax as the CSS margin property.\n * Example values: '10px', '10px 20px', '10%', '10% 20% 30% 40%'.\n * @type {InputSignal<string>}\n */\n public readonly rootMargin: InputSignal<string> = input<string>('10%');\n\n /**\n * Event emitted when the user has scrolled to the threshold.\n * Used for triggering the component to load more data.\n * @type {OutputEmitterRef<void>}\n */\n public readonly scrolled: OutputEmitterRef<void> = output<void>();\n\n /**\n * IntersectionObserver instance used to observe the element.\n * @type {IntersectionObserver}\n */\n protected intersectionObserver?: IntersectionObserver;\n\n constructor(\n protected readonly elementRef: ElementRef\n ) { }\n\n public ngOnInit(): void{\n this.createIntersectionObserver();\n }\n\n public ngOnDestroy(): void{\n this.destroyIntersectionObserver();\n }\n\n /**\n * Updates the observer configuration when inputs change.\n * Call this method if you need to update threshold or rootMargin dynamically.\n */\n public updateObserver(): void{\n this.destroyIntersectionObserver();\n this.createIntersectionObserver();\n }\n\n /**\n * Cleans up the Intersection Observer when the directive is destroyed.\n */\n protected destroyIntersectionObserver(): void{\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n this.intersectionObserver = undefined;\n }\n }\n\n /**\n * Creates and configures the Intersection Observer to monitor when the element\n * comes into view based on the specified threshold and root margin.\n */\n protected createIntersectionObserver(): void{\n const options: IntersectionObserverInit = {\n root: null, // Use the viewport as the root\n rootMargin: this.rootMargin(),\n threshold: this.threshold()\n };\n\n this.intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach(\n (entry) => {\n if (entry.isIntersecting) {\n this.scrolled.emit();\n }\n }\n );\n },\n options\n );\n this.intersectionObserver.observe(this.elementRef.nativeElement);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,yBAAyB,CAAA;AA8BpC,IAAA,WAAA,CACqB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;AA7B/B;;;;AAIG;AACa,QAAA,IAAA,CAAA,SAAS,GAAwB,KAAK,CAAS,GAAG,qDAAC;AAEnE;;;;;AAKG;AACa,QAAA,IAAA,CAAA,UAAU,GAAwB,KAAK,CAAS,KAAK,sDAAC;AAEtE;;;;AAIG;QACa,IAAA,CAAA,QAAQ,GAA2B,MAAM,EAAQ;IAU7D;IAEG,QAAQ,GAAA;QACb,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,2BAA2B,EAAE;IACpC;AAEA;;;AAGG;IACI,cAAc,GAAA;QACnB,IAAI,CAAC,2BAA2B,EAAE;QAClC,IAAI,CAAC,0BAA0B,EAAE;IACnC;AAEA;;AAEG;IACO,2BAA2B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE;AACtC,YAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS;QACvC;IACF;AAEA;;;AAGG;IACO,0BAA0B,GAAA;AAClC,QAAA,MAAM,OAAO,GAA6B;YACxC,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAClD,CAAC,OAAO,KAAI;AACV,YAAA,OAAO,CAAC,OAAO,CACb,CAAC,KAAK,KAAI;AACR,gBAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACtB;AACF,YAAA,CAAC,CACF;QACH,CAAC,EACD,OAAO,CACR;QACD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IAClE;8GArFW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACND;;AAEG;;;;"}
@@ -0,0 +1,71 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, Component } from '@angular/core';
3
+ import * as i1 from 'ngx-json-viewer';
4
+ import { NgxJsonViewerModule } from 'ngx-json-viewer';
5
+ import { up } from '@unipin/angular-applet/common';
6
+
7
+ class JsonViewerComponent {
8
+ constructor() {
9
+ /**
10
+ * Input for the JSON data to be displayed.
11
+ *
12
+ * @type {InputSignal<Record<string, any>>}
13
+ */
14
+ this.json = input.required(...(ngDevMode ? [{ debugName: "json" }] : []));
15
+ /**
16
+ * Input for if the JSON data should be expanded by default.
17
+ *
18
+ * @type {InputSignal<boolean>}
19
+ */
20
+ this.expanded = input(false, ...(ngDevMode ? [{ debugName: "expanded" }] : []));
21
+ /**
22
+ * Input for the depth of the JSON data to be displayed.
23
+ *
24
+ * @type {InputSignal<number>}
25
+ */
26
+ this.depth = input(2, ...(ngDevMode ? [{ debugName: "depth" }] : []));
27
+ this.inlineClass = input('', ...(ngDevMode ? [{ debugName: "inlineClass", alias: 'class' }] : [{ alias: 'class' }]));
28
+ this._computedClass = computed(() => {
29
+ return up('block overflow-hidden', this.inlineClass());
30
+ }, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: JsonViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: JsonViewerComponent, isStandalone: true, selector: "up-json-viewer", inputs: { json: { classPropertyName: "json", publicName: "json", isSignal: true, isRequired: true, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, depth: { classPropertyName: "depth", publicName: "depth", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0, template: `
34
+ <div class="w-full selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none">
35
+ <ngx-json-viewer
36
+ [json]="json()"
37
+ [depth]="depth()"
38
+ [expanded]="expanded()"
39
+ />
40
+ </div>
41
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: NgxJsonViewerModule }, { kind: "component", type: i1.NgxJsonViewerComponent, selector: "ngx-json-viewer", inputs: ["json", "expanded", "depth", "_currentDepth"] }] }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: JsonViewerComponent, decorators: [{
44
+ type: Component,
45
+ args: [{
46
+ standalone: true,
47
+ selector: 'up-json-viewer',
48
+ imports: [
49
+ NgxJsonViewerModule
50
+ ],
51
+ host: {
52
+ '[class]': '_computedClass()',
53
+ },
54
+ template: `
55
+ <div class="w-full selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none">
56
+ <ngx-json-viewer
57
+ [json]="json()"
58
+ [depth]="depth()"
59
+ [expanded]="expanded()"
60
+ />
61
+ </div>
62
+ `
63
+ }]
64
+ }], propDecorators: { json: [{ type: i0.Input, args: [{ isSignal: true, alias: "json", required: true }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], depth: [{ type: i0.Input, args: [{ isSignal: true, alias: "depth", required: false }] }], inlineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
65
+
66
+ /**
67
+ * Generated bundle index. Do not edit.
68
+ */
69
+
70
+ export { JsonViewerComponent };
71
+ //# sourceMappingURL=unipin-angular-applet-json-viewer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unipin-angular-applet-json-viewer.mjs","sources":["../../../projects/unipin-angular/json-viewer/json-viewer.component.ts","../../../projects/unipin-angular/json-viewer/unipin-angular-applet-json-viewer.ts"],"sourcesContent":["import { Component, computed, input, InputSignal } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { NgxJsonViewerModule } from 'ngx-json-viewer';\nimport { up } from '@unipin/angular-applet/common';\n\n@Component({\n standalone: true,\n selector: 'up-json-viewer',\n imports: [\n NgxJsonViewerModule\n ],\n host: {\n '[class]': '_computedClass()',\n },\n template: `\n <div class=\"w-full selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] focus-visible:outline-none\">\n <ngx-json-viewer\n [json]=\"json()\"\n [depth]=\"depth()\"\n [expanded]=\"expanded()\"\n />\n </div>\n `\n})\nexport class JsonViewerComponent {\n \n /**\n * Input for the JSON data to be displayed.\n *\n * @type {InputSignal<Record<string, any>>}\n */\n public readonly json: InputSignal<Record<string, any>> = input.required<Record<string, any>>();\n\n /**\n * Input for if the JSON data should be expanded by default.\n *\n * @type {InputSignal<boolean>}\n */\n public readonly expanded: InputSignal<boolean> = input<boolean>(false);\n\n /**\n * Input for the depth of the JSON data to be displayed.\n *\n * @type {InputSignal<number>}\n */\n public readonly depth: InputSignal<number> = input<number>(2);\n\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n 'block overflow-hidden',\n this.inlineClass(),\n );\n }\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAwBa,mBAAmB,CAAA;AAnBhC,IAAA,WAAA,GAAA;AAqBE;;;;AAIG;AACa,QAAA,IAAA,CAAA,IAAI,GAAqC,KAAK,CAAC,QAAQ,+CAAuB;AAE9F;;;;AAIG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAyB,KAAK,CAAU,KAAK,oDAAC;AAEtE;;;;AAIG;AACa,QAAA,IAAA,CAAA,KAAK,GAAwB,KAAK,CAAS,CAAC,iDAAC;AAE7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAa,EAAE,+CAAI,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AAEpD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAC1C,MAAK;YACH,OAAO,EAAE,CACP,uBAAuB,EACvB,IAAI,CAAC,WAAW,EAAE,CACnB;AACH,QAAA,CAAC,0DACF;AACF,IAAA;8GAjCY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVpB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAbC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAeV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC9B,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA;AACF,iBAAA;;;ACvBD;;AAEG;;;;"}
@@ -0,0 +1,252 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, signal, computed, ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
3
+ import { firstValueFrom } from 'rxjs';
4
+ import { NgIcon, provideIcons } from '@ng-icons/core';
5
+ import { matWarningRound } from '@ng-icons/material-icons/round';
6
+ import { UpButtonDirective } from '@unipin/angular-applet/buttons';
7
+ import { UpProgressBarDirective } from '@unipin/angular-applet/progress-bar';
8
+ import * as i1 from '@unipin/angular-applet/dialog';
9
+ import { UpDialogRef, injectDialogContext } from '@unipin/angular-applet/dialog';
10
+
11
+ class UpLoadingDialogComponent {
12
+ constructor() {
13
+ this.dialogRef = inject(UpDialogRef);
14
+ this.opts = injectDialogContext();
15
+ this.requestState = signal({
16
+ progress: 0,
17
+ isDone: false,
18
+ totalProgress: 0,
19
+ errorMessages: [],
20
+ }, ...(ngDevMode ? [{ debugName: "requestState" }] : []));
21
+ this.state = computed(() => this.dialogRef?.state() ?? 'closed', ...(ngDevMode ? [{ debugName: "state" }] : []));
22
+ }
23
+ ngOnInit() {
24
+ this.executeTasks();
25
+ }
26
+ async executeTasks() {
27
+ const { serviceCalls } = this.opts;
28
+ this.requestState.set({
29
+ progress: 0,
30
+ isDone: false,
31
+ errorMessages: [],
32
+ totalProgress: serviceCalls.length,
33
+ });
34
+ for (const [i, service] of serviceCalls.entries()) {
35
+ try {
36
+ await firstValueFrom(service);
37
+ }
38
+ catch (err) {
39
+ this.handleError(i, err);
40
+ }
41
+ finally {
42
+ this.requestState.update((s) => ({ ...s, progress: s.progress + 1 }));
43
+ }
44
+ }
45
+ this.requestState.update((s) => ({ ...s, isDone: true }));
46
+ }
47
+ handleError(i, err) {
48
+ const message = err instanceof Error ? err.message : String(err);
49
+ this.requestState.update((s) => {
50
+ return {
51
+ ...s,
52
+ errorMessages: [
53
+ ...s.errorMessages,
54
+ `Request #${i + 1} failed: ${message}`
55
+ ]
56
+ };
57
+ });
58
+ }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpLoadingDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
60
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: UpLoadingDialogComponent, isStandalone: true, selector: "up-loading-dialog", host: { properties: { "attr.data-state": "state()" }, classAttribute: "\n grid relative gap-6 bg-white rounded-xl shadow-lg \n [animation-duration:200] data-[state=open]:animate-in data-[state=closed]:animate-out \n data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 \n data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 \n data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%] \n w-full p-6 max-w-[calc(100%-2rem)] mx-auto\n md:w-full md:min-w-120 md:max-w-130\n overflow-hidden border border-border\n " }, providers: [
61
+ provideIcons({
62
+ matWarningRound
63
+ })
64
+ ], ngImport: i0, template: `
65
+ <div class="border-b border-border pb-4">
66
+ <h3 class="text-lg font-semibold text-gray-900 flex items-center gap-3">
67
+ Processing Request
68
+ </h3>
69
+ </div>
70
+
71
+ <div class="space-y-2">
72
+ <div class="flex items-center justify-between text-sm">
73
+ <span class="font-medium">Progress</span>
74
+
75
+ <span class="font-semibold">
76
+ {{ requestState().progress }}/{{ requestState().totalProgress }}
77
+ </span>
78
+ </div>
79
+
80
+ <span
81
+ upProgressBar
82
+ class="h-2.5 w-full bg-gray-200 rounded-full overflow-hidden"
83
+ [max]="requestState().totalProgress"
84
+ [progress]="requestState().progress"
85
+ >
86
+ </span>
87
+ </div>
88
+
89
+ @if (
90
+ opts.showError &&
91
+ requestState().errorMessages.length > 0 &&
92
+ requestState().isDone
93
+ ) {
94
+ <div class="space-y-3 mt-4">
95
+ <div class="flex items-center gap-2 text-yellow-500">
96
+ <ng-icon name="matWarningRound"/>
97
+
98
+ <h4 class="text-sm font-medium text-gray-700">
99
+ Issues ({{ requestState().errorMessages.length }})
100
+ </h4>
101
+ </div>
102
+
103
+ <div class="max-h-24 overflow-y-auto bg-gray-50 rounded-md border border-border">
104
+ <ul>
105
+ @for (err of requestState().errorMessages; track $index) {
106
+ <li class="px-3 py-2 text-xs bg-red-50 border-l-4 border-red-400 text-destructive">
107
+ {{err}}
108
+ </li>
109
+ }
110
+ </ul>
111
+ </div>
112
+ </div>
113
+ }
114
+
115
+ <div class="flex flex-col-reverse gap-3 sm:flex-row sm:justify-end pt-2">
116
+ <button
117
+ upButton
118
+ class="flex-1 sm:flex-none sm:min-w-[120px] px-4 py-2.5 text-sm font-medium"
119
+ [disabled]="!requestState().isDone"
120
+ (click)="dialogRef.close()"
121
+ >
122
+ {{ requestState().isDone? 'Done' : 'Processing...' }}
123
+ </button>
124
+ </div>
125
+ `, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: UpButtonDirective, selector: "[upButton]", inputs: ["size", "variant", "class"], exportAs: ["upButton"] }, { kind: "directive", type: UpProgressBarDirective, selector: "[upProgressBar]", inputs: ["max", "progress", "class"], exportAs: ["upProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpLoadingDialogComponent, decorators: [{
128
+ type: Component,
129
+ args: [{
130
+ standalone: true,
131
+ selector: 'up-loading-dialog',
132
+ changeDetection: ChangeDetectionStrategy.OnPush,
133
+ host: {
134
+ '[attr.data-state]': 'state()',
135
+ 'class': `
136
+ grid relative gap-6 bg-white rounded-xl shadow-lg
137
+ [animation-duration:200] data-[state=open]:animate-in data-[state=closed]:animate-out
138
+ data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0
139
+ data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95
140
+ data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%]
141
+ w-full p-6 max-w-[calc(100%-2rem)] mx-auto
142
+ md:w-full md:min-w-120 md:max-w-130
143
+ overflow-hidden border border-border
144
+ `,
145
+ },
146
+ providers: [
147
+ provideIcons({
148
+ matWarningRound
149
+ })
150
+ ],
151
+ imports: [
152
+ NgIcon,
153
+ UpButtonDirective,
154
+ UpProgressBarDirective,
155
+ ],
156
+ template: `
157
+ <div class="border-b border-border pb-4">
158
+ <h3 class="text-lg font-semibold text-gray-900 flex items-center gap-3">
159
+ Processing Request
160
+ </h3>
161
+ </div>
162
+
163
+ <div class="space-y-2">
164
+ <div class="flex items-center justify-between text-sm">
165
+ <span class="font-medium">Progress</span>
166
+
167
+ <span class="font-semibold">
168
+ {{ requestState().progress }}/{{ requestState().totalProgress }}
169
+ </span>
170
+ </div>
171
+
172
+ <span
173
+ upProgressBar
174
+ class="h-2.5 w-full bg-gray-200 rounded-full overflow-hidden"
175
+ [max]="requestState().totalProgress"
176
+ [progress]="requestState().progress"
177
+ >
178
+ </span>
179
+ </div>
180
+
181
+ @if (
182
+ opts.showError &&
183
+ requestState().errorMessages.length > 0 &&
184
+ requestState().isDone
185
+ ) {
186
+ <div class="space-y-3 mt-4">
187
+ <div class="flex items-center gap-2 text-yellow-500">
188
+ <ng-icon name="matWarningRound"/>
189
+
190
+ <h4 class="text-sm font-medium text-gray-700">
191
+ Issues ({{ requestState().errorMessages.length }})
192
+ </h4>
193
+ </div>
194
+
195
+ <div class="max-h-24 overflow-y-auto bg-gray-50 rounded-md border border-border">
196
+ <ul>
197
+ @for (err of requestState().errorMessages; track $index) {
198
+ <li class="px-3 py-2 text-xs bg-red-50 border-l-4 border-red-400 text-destructive">
199
+ {{err}}
200
+ </li>
201
+ }
202
+ </ul>
203
+ </div>
204
+ </div>
205
+ }
206
+
207
+ <div class="flex flex-col-reverse gap-3 sm:flex-row sm:justify-end pt-2">
208
+ <button
209
+ upButton
210
+ class="flex-1 sm:flex-none sm:min-w-[120px] px-4 py-2.5 text-sm font-medium"
211
+ [disabled]="!requestState().isDone"
212
+ (click)="dialogRef.close()"
213
+ >
214
+ {{ requestState().isDone? 'Done' : 'Processing...' }}
215
+ </button>
216
+ </div>
217
+ `
218
+ }]
219
+ }] });
220
+
221
+ class UpLoadingDialogController {
222
+ constructor(dialog) {
223
+ this.dialog = dialog;
224
+ }
225
+ show(options) {
226
+ return this.dialog.open({
227
+ context: options,
228
+ content: UpLoadingDialogComponent,
229
+ options: {
230
+ hasBackdrop: true,
231
+ disableClose: true,
232
+ closeOnBackdropClick: false,
233
+ closeOnOutsidePointerEvents: false
234
+ }
235
+ });
236
+ }
237
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpLoadingDialogController, deps: [{ token: i1.UpDialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
238
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpLoadingDialogController, providedIn: 'root' }); }
239
+ }
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpLoadingDialogController, decorators: [{
241
+ type: Injectable,
242
+ args: [{
243
+ providedIn: 'root'
244
+ }]
245
+ }], ctorParameters: () => [{ type: i1.UpDialogService }] });
246
+
247
+ /**
248
+ * Generated bundle index. Do not edit.
249
+ */
250
+
251
+ export { UpLoadingDialogController };
252
+ //# sourceMappingURL=unipin-angular-applet-loading-dialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unipin-angular-applet-loading-dialog.mjs","sources":["../../../projects/unipin-angular/loading-dialog/components/loading-dialog.component.ts","../../../projects/unipin-angular/loading-dialog/services/loading-dialog-controller.service.ts","../../../projects/unipin-angular/loading-dialog/unipin-angular-applet-loading-dialog.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, OnInit, signal } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matWarningRound } from '@ng-icons/material-icons/round';\nimport { UpButtonDirective } from '@unipin/angular-applet/buttons';\nimport { UpProgressBarDirective } from '@unipin/angular-applet/progress-bar';\nimport { injectDialogContext, UpDialogRef } from '@unipin/angular-applet/dialog';\nimport { LoadingDialogOptions } from '../types/loading-dialog-options.type';\n\n@Component({\n standalone: true,\n selector: 'up-loading-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-state]': 'state()',\n 'class': `\n grid relative gap-6 bg-white rounded-xl shadow-lg \n [animation-duration:200] data-[state=open]:animate-in data-[state=closed]:animate-out \n data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 \n data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 \n data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%] \n w-full p-6 max-w-[calc(100%-2rem)] mx-auto\n md:w-full md:min-w-120 md:max-w-130\n overflow-hidden border border-border\n `,\n },\n providers: [\n provideIcons(\n {\n matWarningRound\n }\n )\n ],\n imports: [\n NgIcon,\n UpButtonDirective,\n UpProgressBarDirective,\n ],\n template: `\n <div class=\"border-b border-border pb-4\">\n <h3 class=\"text-lg font-semibold text-gray-900 flex items-center gap-3\">\n Processing Request\n </h3>\n </div>\n\n <div class=\"space-y-2\">\n <div class=\"flex items-center justify-between text-sm\">\n <span class=\"font-medium\">Progress</span>\n \n <span class=\"font-semibold\">\n {{ requestState().progress }}/{{ requestState().totalProgress }}\n </span>\n </div>\n \n <span \n upProgressBar \n class=\"h-2.5 w-full bg-gray-200 rounded-full overflow-hidden\"\n [max]=\"requestState().totalProgress\" \n [progress]=\"requestState().progress\"\n >\n </span>\n </div>\n\n @if (\n opts.showError && \n requestState().errorMessages.length > 0 && \n requestState().isDone\n ) {\n <div class=\"space-y-3 mt-4\">\n <div class=\"flex items-center gap-2 text-yellow-500\">\n <ng-icon name=\"matWarningRound\"/>\n \n <h4 class=\"text-sm font-medium text-gray-700\">\n Issues ({{ requestState().errorMessages.length }})\n </h4>\n </div>\n \n <div class=\"max-h-24 overflow-y-auto bg-gray-50 rounded-md border border-border\">\n <ul>\n @for (err of requestState().errorMessages; track $index) {\n <li class=\"px-3 py-2 text-xs bg-red-50 border-l-4 border-red-400 text-destructive\">\n {{err}}\n </li>\n }\n </ul>\n </div>\n </div>\n }\n\n <div class=\"flex flex-col-reverse gap-3 sm:flex-row sm:justify-end pt-2\">\n <button\n upButton\n class=\"flex-1 sm:flex-none sm:min-w-[120px] px-4 py-2.5 text-sm font-medium\"\n [disabled]=\"!requestState().isDone\"\n (click)=\"dialogRef.close()\"\n >\n {{ requestState().isDone? 'Done' : 'Processing...' }}\n </button>\n </div>\n `\n})\nexport class UpLoadingDialogComponent implements OnInit {\n \n public readonly dialogRef = inject(UpDialogRef);\n public readonly opts = injectDialogContext<LoadingDialogOptions>();\n \n public readonly requestState = signal(\n {\n progress: 0,\n isDone: false,\n totalProgress: 0,\n errorMessages: [] as string[],\n }\n );\n public readonly state = computed(() => this.dialogRef?.state()?? 'closed');\n \n public ngOnInit(): void{\n this.executeTasks();\n }\n\n protected async executeTasks(): Promise<void>{\n const { serviceCalls } = this.opts;\n\n this.requestState.set(\n {\n progress: 0,\n isDone: false,\n errorMessages: [],\n totalProgress: serviceCalls.length,\n }\n );\n\n for (const [i, service] of serviceCalls.entries()) {\n try {\n await firstValueFrom(service);\n } catch (err: unknown) {\n this.handleError(i, err);\n } finally {\n this.requestState.update((s) => ({ ...s, progress: s.progress + 1 }));\n }\n }\n this.requestState.update((s) => ({ ...s, isDone: true }));\n }\n\n protected handleError(i: number, err: unknown): void{\n const message = err instanceof Error? err.message : String(err);\n this.requestState.update(\n (s) => {\n return {\n ...s,\n errorMessages: [\n ...s.errorMessages, \n `Request #${i + 1} failed: ${message}`\n ]\n };\n }\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UpDialogRef, UpDialogService } from '@unipin/angular-applet/dialog';\nimport { LoadingDialogOptions } from '../types/loading-dialog-options.type';\nimport { UpLoadingDialogComponent } from '../components/loading-dialog.component';\n\n@Injectable({ \n providedIn: 'root' \n})\nexport class UpLoadingDialogController {\n\n constructor(\n protected readonly dialog: UpDialogService\n ) { }\n\n public show(options: LoadingDialogOptions): UpDialogRef{\n return this.dialog.open(\n {\n context: options,\n content: UpLoadingDialogComponent,\n options: {\n hasBackdrop: true,\n disableClose: true,\n closeOnBackdropClick: false,\n closeOnOutsidePointerEvents: false\n }\n }\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;MAqGa,wBAAwB,CAAA;AA5FrC,IAAA,WAAA,GAAA;AA8FkB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;QAC/B,IAAA,CAAA,IAAI,GAAG,mBAAmB,EAAwB;QAElD,IAAA,CAAA,YAAY,GAAG,MAAM,CACnC;AACE,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,aAAa,EAAE,EAAc;AAC9B,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;AACe,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAG,QAAQ,iDAAC;AA4C3E,IAAA;IA1CQ,QAAQ,GAAA;QACb,IAAI,CAAC,YAAY,EAAE;IACrB;AAEU,IAAA,MAAM,YAAY,GAAA;AAC1B,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI;AAElC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB;AACE,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,aAAa,EAAE,EAAE;YACjB,aAAa,EAAE,YAAY,CAAC,MAAM;AACnC,SAAA,CACF;AAED,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE;AACjD,YAAA,IAAI;AACF,gBAAA,MAAM,cAAc,CAAC,OAAO,CAAC;YAC/B;YAAE,OAAO,GAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC;YAC1B;oBAAU;gBACR,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE;QACF;QACA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D;IAEU,WAAW,CAAC,CAAS,EAAE,GAAY,EAAA;AAC3C,QAAA,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,GAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;QAC/D,IAAI,CAAC,YAAY,CAAC,MAAM,CACtB,CAAC,CAAC,KAAI;YACJ,OAAO;AACL,gBAAA,GAAG,CAAC;AACJ,gBAAA,aAAa,EAAE;oBACb,GAAG,CAAC,CAAC,aAAa;AAClB,oBAAA,CAAA,SAAA,EAAY,CAAC,GAAG,CAAC,CAAA,SAAA,EAAY,OAAO,CAAA;AACrC;aACF;AACH,QAAA,CAAC,CACF;IACH;8GAxDW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,4gBAAA,EAAA,EAAA,SAAA,EA3ExB;AACT,YAAA,YAAY,CACV;gBACE;aACD;SAEJ,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAMS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjEC,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAiEb,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBA5FpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,OAAO,EAAE;;;;;;;;;AASR,IAAA,CAAA;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,CACV;4BACE;yBACD;AAEJ,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,MAAM;wBACN,iBAAiB;wBACjB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DT,EAAA;AACF,iBAAA;;;MC5FY,yBAAyB,CAAA;AAEpC,IAAA,WAAA,CACqB,MAAuB,EAAA;QAAvB,IAAA,CAAA,MAAM,GAAN,MAAM;IACvB;AAEG,IAAA,IAAI,CAAC,OAA6B,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,OAAO,EAAE;AACP,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,oBAAoB,EAAE,KAAK;AAC3B,gBAAA,2BAA2B,EAAE;AAC9B;AACF,SAAA,CACF;IACH;8GAnBW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA,CAAA;;2FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPD;;AAEG;;;;"}