verben-authentication-ui 1.0.13 → 1.0.15

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 (530) hide show
  1. package/esm2022/public-api.mjs +17 -35
  2. package/esm2022/src/lib/base/base-data.component.mjs +80 -0
  3. package/esm2022/src/lib/base/base-data.facade.mjs +130 -0
  4. package/esm2022/src/lib/base/base-data.service.mjs +21 -0
  5. package/esm2022/src/lib/base/base-data.state.mjs +74 -0
  6. package/esm2022/src/lib/base/index.mjs +2 -0
  7. package/esm2022/src/lib/base/models.mjs +2 -0
  8. package/esm2022/src/lib/base/public-api.mjs +6 -0
  9. package/esm2022/src/lib/base/verben-authentication-ui-src-lib-base.mjs +5 -0
  10. package/esm2022/src/lib/components/auth-callback/auth-callback.component.mjs +57 -0
  11. package/esm2022/{lib → src/lib}/components/auth-callback/auth-callback.module.mjs +1 -1
  12. package/esm2022/src/lib/components/auth-callback/index.mjs +2 -0
  13. package/esm2022/src/lib/components/auth-callback/public-api.mjs +3 -0
  14. package/esm2022/src/lib/components/auth-callback/verben-authentication-ui-src-lib-components-auth-callback.mjs +5 -0
  15. package/esm2022/{lib → src/lib}/components/button/button.component.mjs +1 -1
  16. package/esm2022/src/lib/components/button/button.module.mjs +20 -0
  17. package/esm2022/src/lib/components/button/index.mjs +2 -0
  18. package/esm2022/src/lib/components/button/public-api.mjs +3 -0
  19. package/esm2022/src/lib/components/button/verben-authentication-ui-src-lib-components-button.mjs +5 -0
  20. package/esm2022/src/lib/components/forgot-password/ForgotPasswordData.mjs +2 -0
  21. package/esm2022/{lib → src/lib}/components/forgot-password/forgot-password.component.mjs +8 -9
  22. package/esm2022/{lib → src/lib}/components/forgot-password/forgot-password.module.mjs +1 -1
  23. package/esm2022/src/lib/components/forgot-password/index.mjs +2 -0
  24. package/esm2022/src/lib/components/forgot-password/public-api.mjs +4 -0
  25. package/esm2022/src/lib/components/forgot-password/verben-authentication-ui-src-lib-components-forgot-password.mjs +5 -0
  26. package/esm2022/src/lib/components/mail/index.mjs +2 -0
  27. package/esm2022/src/lib/components/mail/mail.component.mjs +69 -0
  28. package/esm2022/src/lib/components/mail/mail.module.mjs +21 -0
  29. package/esm2022/src/lib/components/mail/public-api.mjs +3 -0
  30. package/esm2022/src/lib/components/mail/verben-authentication-ui-src-lib-components-mail.mjs +5 -0
  31. package/esm2022/src/lib/components/mail-validation/index.mjs +2 -0
  32. package/esm2022/{lib → src/lib}/components/mail-validation/mail-validation.component.mjs +1 -1
  33. package/esm2022/{lib → src/lib}/components/mail-validation/mail-validation.module.mjs +1 -1
  34. package/esm2022/src/lib/components/mail-validation/public-api.mjs +3 -0
  35. package/esm2022/src/lib/components/mail-validation/verben-authentication-ui-src-lib-components-mail-validation.mjs +5 -0
  36. package/esm2022/src/lib/components/o-auth/index.mjs +2 -0
  37. package/esm2022/src/lib/components/o-auth/o-auth.component.mjs +107 -0
  38. package/esm2022/{lib → src/lib}/components/o-auth/o-auth.module.mjs +1 -1
  39. package/esm2022/src/lib/components/o-auth/public-api.mjs +3 -0
  40. package/esm2022/src/lib/components/o-auth/verben-authentication-ui-src-lib-components-o-auth.mjs +5 -0
  41. package/esm2022/src/lib/components/otp-input/index.mjs +2 -0
  42. package/esm2022/src/lib/components/otp-input/otp-input.component.mjs +86 -0
  43. package/esm2022/src/lib/components/otp-input/otp-input.module.mjs +42 -0
  44. package/esm2022/src/lib/components/otp-input/public-api.mjs +3 -0
  45. package/esm2022/src/lib/components/otp-input/verben-authentication-ui-src-lib-components-otp-input.mjs +5 -0
  46. package/esm2022/src/lib/components/reset-password/ResetPasswordData.mjs +2 -0
  47. package/esm2022/src/lib/components/reset-password/index.mjs +2 -0
  48. package/esm2022/src/lib/components/reset-password/public-api.mjs +4 -0
  49. package/esm2022/{lib → src/lib}/components/reset-password/reset-password.component.mjs +8 -9
  50. package/esm2022/{lib → src/lib}/components/reset-password/reset-password.module.mjs +1 -1
  51. package/esm2022/src/lib/components/reset-password/verben-authentication-ui-src-lib-components-reset-password.mjs +5 -0
  52. package/esm2022/src/lib/components/role-control/ChildrenType.mjs +6 -0
  53. package/esm2022/src/lib/components/role-control/MappedRole.mjs +2 -0
  54. package/esm2022/src/lib/components/role-control/MappedRoleAction.mjs +2 -0
  55. package/esm2022/src/lib/components/role-control/MappedRoleContext.mjs +2 -0
  56. package/esm2022/src/lib/components/role-control/UIActions.mjs +7 -0
  57. package/esm2022/src/lib/components/role-control/UIs.mjs +40 -0
  58. package/esm2022/src/lib/components/role-control/base-table-style.mjs +53 -0
  59. package/esm2022/src/lib/components/role-control/index.mjs +2 -0
  60. package/esm2022/src/lib/components/role-control/public-api.mjs +3 -0
  61. package/esm2022/src/lib/components/role-control/role-control.component.mjs +1720 -0
  62. package/esm2022/src/lib/components/role-control/role-control.module.mjs +18 -0
  63. package/esm2022/src/lib/components/role-control/role-control.service.mjs +57 -0
  64. package/esm2022/src/lib/components/role-control/verben-authentication-ui-src-lib-components-role-control.mjs +5 -0
  65. package/esm2022/src/lib/components/sign-in/index.mjs +2 -0
  66. package/esm2022/src/lib/components/sign-in/public-api.mjs +3 -0
  67. package/esm2022/src/lib/components/sign-in/sign-in.component.mjs +316 -0
  68. package/esm2022/src/lib/components/sign-in/sign-in.module.mjs +46 -0
  69. package/esm2022/src/lib/components/sign-in/verben-authentication-ui-src-lib-components-sign-in.mjs +5 -0
  70. package/esm2022/src/lib/components/sign-up/index.mjs +2 -0
  71. package/esm2022/src/lib/components/sign-up/public-api.mjs +3 -0
  72. package/esm2022/src/lib/components/sign-up/sign-up.component.mjs +227 -0
  73. package/esm2022/src/lib/components/sign-up/sign-up.module.mjs +43 -0
  74. package/esm2022/src/lib/components/sign-up/verben-authentication-ui-src-lib-components-sign-up.mjs +5 -0
  75. package/esm2022/src/lib/components/sso/base-table-style.mjs +53 -0
  76. package/esm2022/src/lib/components/sso/helper.mjs +16 -0
  77. package/esm2022/src/lib/components/sso/index.mjs +2 -0
  78. package/esm2022/src/lib/components/sso/public-api.mjs +3 -0
  79. package/esm2022/{lib → src/lib}/components/sso/sso-form/sso-form.component.mjs +1 -1
  80. package/esm2022/src/lib/components/sso/sso.columns.mjs +29 -0
  81. package/esm2022/src/lib/components/sso/sso.component.mjs +234 -0
  82. package/esm2022/src/lib/components/sso/sso.module.mjs +63 -0
  83. package/esm2022/src/lib/components/sso/verben-authentication-ui-src-lib-components-sso.mjs +5 -0
  84. package/esm2022/src/lib/components/two-factor-auth-otp/index.mjs +2 -0
  85. package/esm2022/src/lib/components/two-factor-auth-otp/public-api.mjs +3 -0
  86. package/esm2022/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.mjs +208 -0
  87. package/esm2022/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.module.mjs +35 -0
  88. package/esm2022/src/lib/components/two-factor-auth-otp/verben-authentication-ui-src-lib-components-two-factor-auth-otp.mjs +5 -0
  89. package/esm2022/src/lib/components/two-factor-auth-setup/index.mjs +2 -0
  90. package/esm2022/src/lib/components/two-factor-auth-setup/public-api.mjs +3 -0
  91. package/esm2022/{lib → src/lib}/components/two-factor-auth-setup/two-factor-auth-setup.component.mjs +1 -1
  92. package/esm2022/src/lib/components/two-factor-auth-setup/two-factor-auth-setup.module.mjs +19 -0
  93. package/esm2022/src/lib/components/two-factor-auth-setup/verben-authentication-ui-src-lib-components-two-factor-auth-setup.mjs +5 -0
  94. package/esm2022/src/lib/components/user-management/base-table-style.mjs +53 -0
  95. package/esm2022/src/lib/components/user-management/index.mjs +2 -0
  96. package/esm2022/src/lib/components/user-management/public-api.mjs +3 -0
  97. package/esm2022/src/lib/components/user-management/services/user-management.service.mjs +88 -0
  98. package/esm2022/{lib/components/user-management/user-management-form/use-management-form.component.mjs → src/lib/components/user-management/user-management-form/user-management-form.component.mjs} +2 -2
  99. package/esm2022/src/lib/components/user-management/user-management.columns.mjs +53 -0
  100. package/esm2022/{lib → src/lib}/components/user-management/user-management.component.mjs +20 -23
  101. package/esm2022/src/lib/components/user-management/user-management.module.mjs +91 -0
  102. package/esm2022/src/lib/components/user-management/user-status-badge/user-status-badge.component.mjs +26 -0
  103. package/esm2022/src/lib/components/user-management/verben-authentication-ui-src-lib-components-user-management.mjs +5 -0
  104. package/esm2022/src/lib/components/user-request/index.mjs +2 -0
  105. package/esm2022/src/lib/components/user-request/public-api.mjs +3 -0
  106. package/esm2022/src/lib/components/user-request/user-request.component.mjs +318 -0
  107. package/esm2022/src/lib/components/user-request/user-request.module.mjs +38 -0
  108. package/esm2022/src/lib/components/user-request/verben-authentication-ui-src-lib-components-user-request.mjs +5 -0
  109. package/esm2022/src/lib/components/user-request-approval/access-request.columns.mjs +29 -0
  110. package/esm2022/src/lib/components/user-request-approval/base-table-style.mjs +53 -0
  111. package/esm2022/src/lib/components/user-request-approval/facades/user-access-request.facade.mjs +260 -0
  112. package/esm2022/src/lib/components/user-request-approval/helper.mjs +56 -0
  113. package/esm2022/src/lib/components/user-request-approval/index.mjs +2 -0
  114. package/esm2022/src/lib/components/user-request-approval/public-api.mjs +5 -0
  115. package/esm2022/src/lib/components/user-request-approval/services/user-access-request.service.mjs +93 -0
  116. package/esm2022/src/lib/components/user-request-approval/states/user-access-request.state.mjs +92 -0
  117. package/esm2022/src/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.mjs +26 -0
  118. package/esm2022/{lib → src/lib}/components/user-request-approval/user-request-approval.component.mjs +3 -3
  119. package/esm2022/src/lib/components/user-request-approval/user-request-approval.module.mjs +83 -0
  120. package/esm2022/{lib/components/user-request-approval/user-request-form/use-request-form.component.mjs → src/lib/components/user-request-approval/user-request-form/user-request-form.component.mjs} +2 -2
  121. package/esm2022/src/lib/components/user-request-approval/verben-authentication-ui-src-lib-components-user-request-approval.mjs +5 -0
  122. package/esm2022/src/lib/components/user-request-process/index.mjs +2 -0
  123. package/esm2022/src/lib/components/user-request-process/public-api.mjs +3 -0
  124. package/esm2022/src/lib/components/user-request-process/user-request-process.component.mjs +11 -0
  125. package/esm2022/src/lib/components/user-request-process/user-request-process.module.mjs +18 -0
  126. package/esm2022/src/lib/components/user-request-process/verben-authentication-ui-src-lib-components-user-request-process.mjs +5 -0
  127. package/esm2022/src/lib/models/ApplicationRoleAction.mjs +2 -0
  128. package/esm2022/src/lib/models/ApplicationRoleContext.mjs +2 -0
  129. package/esm2022/src/lib/models/ErrorResponse.mjs +11 -0
  130. package/esm2022/src/lib/models/FilterTypes.mjs +9 -0
  131. package/esm2022/src/lib/models/MailConfig.mjs +2 -0
  132. package/esm2022/src/lib/models/MessageConfig.mjs +2 -0
  133. package/esm2022/src/lib/models/MessageMedium.mjs +6 -0
  134. package/esm2022/src/lib/models/OAuthParam.mjs +2 -0
  135. package/esm2022/src/lib/models/OAuthType.mjs +9 -0
  136. package/esm2022/src/lib/models/PagedResult.mjs +2 -0
  137. package/esm2022/src/lib/models/PasswordRequestParam.mjs +2 -0
  138. package/esm2022/src/lib/models/PeriodMode.mjs +12 -0
  139. package/esm2022/src/lib/models/PermissionConfig.mjs +2 -0
  140. package/esm2022/src/lib/models/ReportSchedule.mjs +2 -0
  141. package/esm2022/src/lib/models/ReportType.mjs +7 -0
  142. package/esm2022/src/lib/models/ResponseKeyValue.mjs +2 -0
  143. package/esm2022/src/lib/models/Role.mjs +2 -0
  144. package/esm2022/src/lib/models/RoleAction.mjs +2 -0
  145. package/esm2022/src/lib/models/RoleContext.mjs +2 -0
  146. package/esm2022/src/lib/models/SMSConfig.mjs +2 -0
  147. package/esm2022/src/lib/models/SearchDynamicWrapper.mjs +2 -0
  148. package/esm2022/src/lib/models/SearchOperator.mjs +6 -0
  149. package/esm2022/src/lib/models/SearchPropertySign.mjs +11 -0
  150. package/esm2022/src/lib/models/SearchPropertyValue.mjs +2 -0
  151. package/esm2022/src/lib/models/SearchPropertyValueType.mjs +11 -0
  152. package/esm2022/src/lib/models/SortDirection.mjs +7 -0
  153. package/esm2022/src/lib/models/Tag.mjs +2 -0
  154. package/esm2022/src/lib/models/TaskNotification.mjs +2 -0
  155. package/esm2022/src/lib/models/TaskNotificationMessageType.mjs +6 -0
  156. package/esm2022/src/lib/models/TaskNotificationType.mjs +6 -0
  157. package/esm2022/src/lib/models/Tenant.mjs +2 -0
  158. package/esm2022/src/lib/models/TenantConfig.mjs +2 -0
  159. package/esm2022/src/lib/models/UserRequest.mjs +2 -0
  160. package/esm2022/src/lib/models/auth-mechanism.mjs +8 -0
  161. package/esm2022/src/lib/models/base.mjs +2 -0
  162. package/esm2022/src/lib/models/conditions.mjs +13 -0
  163. package/esm2022/src/lib/models/index.mjs +2 -0
  164. package/esm2022/src/lib/models/log-in.mjs +2 -0
  165. package/esm2022/src/lib/models/mainUser.mjs +2 -0
  166. package/esm2022/src/lib/models/oauth-resp.mjs +2 -0
  167. package/esm2022/src/lib/models/oauth-response.mjs +2 -0
  168. package/esm2022/src/lib/models/object-state.mjs +8 -0
  169. package/esm2022/src/lib/models/otpValue.mjs +2 -0
  170. package/esm2022/src/lib/models/paged.mjs +2 -0
  171. package/esm2022/src/lib/models/public-api.mjs +53 -0
  172. package/esm2022/src/lib/models/query-params.mjs +2 -0
  173. package/esm2022/src/lib/models/request-status.mjs +5 -0
  174. package/esm2022/src/lib/models/resend-otp-data.mjs +2 -0
  175. package/esm2022/src/lib/models/sign-up.mjs +2 -0
  176. package/esm2022/src/lib/models/single-sign-on.mjs +2 -0
  177. package/esm2022/src/lib/models/status.mjs +6 -0
  178. package/esm2022/src/lib/models/user-access-request-status.mjs +7 -0
  179. package/esm2022/src/lib/models/user-access-request.mjs +2 -0
  180. package/esm2022/src/lib/models/user.mjs +2 -0
  181. package/esm2022/src/lib/models/verben-authentication-ui-src-lib-models.mjs +5 -0
  182. package/esm2022/src/lib/pipes/async-label.pipe.mjs +25 -0
  183. package/esm2022/src/lib/pipes/index.mjs +2 -0
  184. package/esm2022/src/lib/pipes/public-api.mjs +2 -0
  185. package/esm2022/src/lib/pipes/verben-authentication-ui-src-lib-pipes.mjs +5 -0
  186. package/esm2022/src/lib/services/authorization.service.mjs +26 -0
  187. package/esm2022/src/lib/services/encryption.service.mjs +52 -0
  188. package/esm2022/src/lib/services/environment.service.mjs +26 -0
  189. package/esm2022/src/lib/services/http-web-request.service.mjs +85 -0
  190. package/esm2022/src/lib/services/import.service.mjs +248 -0
  191. package/esm2022/src/lib/services/index.mjs +2 -0
  192. package/esm2022/src/lib/services/label.service.mjs +134 -0
  193. package/esm2022/src/lib/services/public-api.mjs +8 -0
  194. package/esm2022/src/lib/services/util.service.mjs +55 -0
  195. package/esm2022/src/lib/services/verben-authentication-ui-src-lib-services.mjs +5 -0
  196. package/esm2022/src/lib/shared/index.mjs +2 -0
  197. package/esm2022/src/lib/shared/public-api.mjs +2 -0
  198. package/esm2022/src/lib/shared/shared.module.mjs +90 -0
  199. package/esm2022/src/lib/shared/verben-authentication-ui-src-lib-shared.mjs +5 -0
  200. package/esm2022/src/utils/components/base-data-view.component.mjs +111 -0
  201. package/esm2022/src/utils/index.mjs +2 -0
  202. package/esm2022/src/utils/models/DataViewConfig.mjs +2 -0
  203. package/esm2022/src/utils/public-api.mjs +3 -0
  204. package/esm2022/src/utils/verben-authentication-ui-src-utils.mjs +5 -0
  205. package/fesm2022/verben-authentication-ui-src-lib-base.mjs +305 -0
  206. package/fesm2022/verben-authentication-ui-src-lib-base.mjs.map +1 -0
  207. package/fesm2022/verben-authentication-ui-src-lib-components-auth-callback.mjs +79 -0
  208. package/fesm2022/verben-authentication-ui-src-lib-components-auth-callback.mjs.map +1 -0
  209. package/fesm2022/verben-authentication-ui-src-lib-components-button.mjs +70 -0
  210. package/fesm2022/verben-authentication-ui-src-lib-components-button.mjs.map +1 -0
  211. package/fesm2022/verben-authentication-ui-src-lib-components-forgot-password.mjs +128 -0
  212. package/fesm2022/verben-authentication-ui-src-lib-components-forgot-password.mjs.map +1 -0
  213. package/fesm2022/verben-authentication-ui-src-lib-components-mail-validation.mjs +146 -0
  214. package/fesm2022/verben-authentication-ui-src-lib-components-mail-validation.mjs.map +1 -0
  215. package/fesm2022/verben-authentication-ui-src-lib-components-mail.mjs +94 -0
  216. package/fesm2022/verben-authentication-ui-src-lib-components-mail.mjs.map +1 -0
  217. package/fesm2022/verben-authentication-ui-src-lib-components-o-auth.mjs +130 -0
  218. package/fesm2022/verben-authentication-ui-src-lib-components-o-auth.mjs.map +1 -0
  219. package/fesm2022/verben-authentication-ui-src-lib-components-otp-input.mjs +131 -0
  220. package/fesm2022/verben-authentication-ui-src-lib-components-otp-input.mjs.map +1 -0
  221. package/fesm2022/verben-authentication-ui-src-lib-components-reset-password.mjs +144 -0
  222. package/fesm2022/verben-authentication-ui-src-lib-components-reset-password.mjs.map +1 -0
  223. package/fesm2022/verben-authentication-ui-src-lib-components-role-control.mjs +1893 -0
  224. package/fesm2022/verben-authentication-ui-src-lib-components-role-control.mjs.map +1 -0
  225. package/fesm2022/verben-authentication-ui-src-lib-components-sign-in.mjs +363 -0
  226. package/fesm2022/verben-authentication-ui-src-lib-components-sign-in.mjs.map +1 -0
  227. package/fesm2022/verben-authentication-ui-src-lib-components-sign-up.mjs +271 -0
  228. package/fesm2022/verben-authentication-ui-src-lib-components-sign-up.mjs.map +1 -0
  229. package/fesm2022/verben-authentication-ui-src-lib-components-sso.mjs +462 -0
  230. package/fesm2022/verben-authentication-ui-src-lib-components-sso.mjs.map +1 -0
  231. package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-otp.mjs +245 -0
  232. package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-otp.mjs.map +1 -0
  233. package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-setup.mjs +113 -0
  234. package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-setup.mjs.map +1 -0
  235. package/fesm2022/verben-authentication-ui-src-lib-components-user-management.mjs +894 -0
  236. package/fesm2022/verben-authentication-ui-src-lib-components-user-management.mjs.map +1 -0
  237. package/fesm2022/verben-authentication-ui-src-lib-components-user-request-approval.mjs +1021 -0
  238. package/fesm2022/verben-authentication-ui-src-lib-components-user-request-approval.mjs.map +1 -0
  239. package/fesm2022/verben-authentication-ui-src-lib-components-user-request-process.mjs +34 -0
  240. package/fesm2022/verben-authentication-ui-src-lib-components-user-request-process.mjs.map +1 -0
  241. package/fesm2022/verben-authentication-ui-src-lib-components-user-request.mjs +355 -0
  242. package/fesm2022/verben-authentication-ui-src-lib-components-user-request.mjs.map +1 -0
  243. package/fesm2022/verben-authentication-ui-src-lib-models.mjs +153 -0
  244. package/fesm2022/verben-authentication-ui-src-lib-models.mjs.map +1 -0
  245. package/fesm2022/verben-authentication-ui-src-lib-pipes.mjs +32 -0
  246. package/fesm2022/verben-authentication-ui-src-lib-pipes.mjs.map +1 -0
  247. package/fesm2022/verben-authentication-ui-src-lib-services.mjs +610 -0
  248. package/fesm2022/verben-authentication-ui-src-lib-services.mjs.map +1 -0
  249. package/fesm2022/verben-authentication-ui-src-lib-shared.mjs +97 -0
  250. package/fesm2022/verben-authentication-ui-src-lib-shared.mjs.map +1 -0
  251. package/fesm2022/verben-authentication-ui-src-utils.mjs +118 -0
  252. package/fesm2022/verben-authentication-ui-src-utils.mjs.map +1 -0
  253. package/fesm2022/verben-authentication-ui.mjs +16 -6610
  254. package/fesm2022/verben-authentication-ui.mjs.map +1 -1
  255. package/package.json +146 -2
  256. package/public-api.d.ts +16 -34
  257. package/src/lib/base/base-data.component.d.ts +32 -0
  258. package/src/lib/base/base-data.facade.d.ts +27 -0
  259. package/src/lib/base/base-data.service.d.ts +14 -0
  260. package/src/lib/base/base-data.state.d.ts +28 -0
  261. package/src/lib/base/index.d.ts +1 -0
  262. package/src/lib/base/models.d.ts +11 -0
  263. package/src/lib/base/public-api.d.ts +5 -0
  264. package/src/lib/components/auth-callback/index.d.ts +1 -0
  265. package/src/lib/components/auth-callback/public-api.d.ts +2 -0
  266. package/src/lib/components/button/index.d.ts +1 -0
  267. package/src/lib/components/button/public-api.d.ts +2 -0
  268. package/{lib → src/lib}/components/forgot-password/forgot-password.component.d.ts +4 -4
  269. package/src/lib/components/forgot-password/index.d.ts +1 -0
  270. package/src/lib/components/forgot-password/public-api.d.ts +3 -0
  271. package/src/lib/components/mail/index.d.ts +1 -0
  272. package/{lib → src/lib}/components/mail/mail.module.d.ts +1 -1
  273. package/src/lib/components/mail/public-api.d.ts +2 -0
  274. package/src/lib/components/mail-validation/index.d.ts +1 -0
  275. package/src/lib/components/mail-validation/public-api.d.ts +2 -0
  276. package/src/lib/components/o-auth/index.d.ts +1 -0
  277. package/{lib → src/lib}/components/o-auth/o-auth.component.d.ts +1 -1
  278. package/src/lib/components/o-auth/public-api.d.ts +2 -0
  279. package/src/lib/components/otp-input/index.d.ts +1 -0
  280. package/{lib → src/lib}/components/otp-input/otp-input.module.d.ts +2 -2
  281. package/src/lib/components/otp-input/public-api.d.ts +2 -0
  282. package/src/lib/components/reset-password/index.d.ts +1 -0
  283. package/src/lib/components/reset-password/public-api.d.ts +3 -0
  284. package/{lib → src/lib}/components/reset-password/reset-password.component.d.ts +4 -4
  285. package/{lib → src/lib}/components/role-control/MappedRole.d.ts +1 -1
  286. package/{lib → src/lib}/components/role-control/MappedRoleAction.d.ts +1 -1
  287. package/{lib → src/lib}/components/role-control/MappedRoleContext.d.ts +1 -1
  288. package/src/lib/components/role-control/index.d.ts +1 -0
  289. package/src/lib/components/role-control/public-api.d.ts +2 -0
  290. package/{lib → src/lib}/components/role-control/role-control.component.d.ts +21 -13
  291. package/{lib → src/lib}/components/role-control/role-control.module.d.ts +1 -1
  292. package/src/lib/components/sign-in/index.d.ts +1 -0
  293. package/src/lib/components/sign-in/public-api.d.ts +2 -0
  294. package/{lib → src/lib}/components/sign-in/sign-in.component.d.ts +10 -10
  295. package/{lib → src/lib}/components/sign-in/sign-in.module.d.ts +2 -2
  296. package/src/lib/components/sign-up/index.d.ts +1 -0
  297. package/src/lib/components/sign-up/public-api.d.ts +2 -0
  298. package/{lib → src/lib}/components/sign-up/sign-up.component.d.ts +6 -6
  299. package/{lib → src/lib}/components/sign-up/sign-up.module.d.ts +2 -2
  300. package/src/lib/components/sso/helper.d.ts +2 -0
  301. package/src/lib/components/sso/index.d.ts +1 -0
  302. package/src/lib/components/sso/public-api.d.ts +2 -0
  303. package/{lib → src/lib}/components/sso/sso.columns.d.ts +1 -1
  304. package/{lib → src/lib}/components/sso/sso.component.d.ts +1 -1
  305. package/src/lib/components/two-factor-auth-otp/index.d.ts +1 -0
  306. package/src/lib/components/two-factor-auth-otp/public-api.d.ts +2 -0
  307. package/{lib → src/lib}/components/two-factor-auth-otp/two-factor-auth-otp.component.d.ts +6 -6
  308. package/{lib → src/lib}/components/two-factor-auth-otp/two-factor-auth-otp.module.d.ts +2 -2
  309. package/src/lib/components/two-factor-auth-setup/index.d.ts +1 -0
  310. package/src/lib/components/two-factor-auth-setup/public-api.d.ts +2 -0
  311. package/src/lib/components/user-management/index.d.ts +1 -0
  312. package/src/lib/components/user-management/public-api.d.ts +2 -0
  313. package/{lib → src/lib}/components/user-management/services/user-management.service.d.ts +4 -4
  314. package/{lib/components/user-management/user-management-form/use-management-form.component.d.ts → src/lib/components/user-management/user-management-form/user-management-form.component.d.ts} +4 -4
  315. package/{lib → src/lib}/components/user-management/user-management.columns.d.ts +1 -1
  316. package/{lib → src/lib}/components/user-management/user-management.component.d.ts +11 -11
  317. package/{lib → src/lib}/components/user-management/user-management.module.d.ts +2 -2
  318. package/{lib → src/lib}/components/user-management/user-status-badge/user-status-badge.component.d.ts +1 -1
  319. package/src/lib/components/user-request/index.d.ts +1 -0
  320. package/src/lib/components/user-request/public-api.d.ts +2 -0
  321. package/{lib → src/lib}/components/user-request/user-request.component.d.ts +7 -7
  322. package/{lib → src/lib}/components/user-request/user-request.module.d.ts +1 -1
  323. package/{lib → src/lib}/components/user-request-approval/access-request.columns.d.ts +1 -1
  324. package/{lib → src/lib}/components/user-request-approval/facades/user-access-request.facade.d.ts +4 -4
  325. package/{lib → src/lib}/components/user-request-approval/helper.d.ts +1 -1
  326. package/src/lib/components/user-request-approval/index.d.ts +1 -0
  327. package/src/lib/components/user-request-approval/public-api.d.ts +4 -0
  328. package/{lib → src/lib}/components/user-request-approval/services/user-access-request.service.d.ts +6 -6
  329. package/{lib → src/lib}/components/user-request-approval/states/user-access-request.state.d.ts +3 -3
  330. package/{lib → src/lib}/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.d.ts +1 -1
  331. package/{lib → src/lib}/components/user-request-approval/user-request-approval.component.d.ts +2 -2
  332. package/{lib → src/lib}/components/user-request-approval/user-request-approval.module.d.ts +1 -1
  333. package/{lib/components/user-request-approval/user-request-form/use-request-form.component.d.ts → src/lib/components/user-request-approval/user-request-form/user-request-form.component.d.ts} +1 -1
  334. package/src/lib/components/user-request-process/index.d.ts +1 -0
  335. package/src/lib/components/user-request-process/public-api.d.ts +2 -0
  336. package/src/lib/components/user-request-process/user-request-process.component.d.ts +5 -0
  337. package/src/lib/components/user-request-process/user-request-process.module.d.ts +7 -0
  338. package/src/lib/models/FilterTypes.d.ts +6 -0
  339. package/src/lib/models/MailConfig.d.ts +12 -0
  340. package/src/lib/models/MessageConfig.d.ts +3 -0
  341. package/src/lib/models/MessageMedium.d.ts +4 -0
  342. package/src/lib/models/PeriodMode.d.ts +10 -0
  343. package/src/lib/models/ReportSchedule.d.ts +22 -0
  344. package/src/lib/models/ReportType.d.ts +5 -0
  345. package/src/lib/models/SMSConfig.d.ts +10 -0
  346. package/src/lib/models/TaskNotification.d.ts +12 -0
  347. package/src/lib/models/TaskNotificationMessageType.d.ts +4 -0
  348. package/src/lib/models/TaskNotificationType.d.ts +4 -0
  349. package/src/lib/models/Tenant.d.ts +21 -0
  350. package/{lib → src/lib}/models/UserRequest.d.ts +6 -9
  351. package/src/lib/models/index.d.ts +1 -0
  352. package/src/lib/models/public-api.d.ts +52 -0
  353. package/{lib → src/lib}/pipes/async-label.pipe.d.ts +1 -1
  354. package/src/lib/pipes/index.d.ts +1 -0
  355. package/src/lib/pipes/public-api.d.ts +1 -0
  356. package/src/lib/services/import.service.d.ts +15 -0
  357. package/src/lib/services/index.d.ts +1 -0
  358. package/src/lib/services/public-api.d.ts +7 -0
  359. package/src/lib/shared/index.d.ts +1 -0
  360. package/src/lib/shared/public-api.d.ts +1 -0
  361. package/{lib → src/lib}/shared/shared.module.d.ts +2 -2
  362. package/src/utils/components/base-data-view.component.d.ts +34 -0
  363. package/src/utils/index.d.ts +1 -0
  364. package/src/utils/models/DataViewConfig.d.ts +11 -0
  365. package/src/utils/public-api.d.ts +2 -0
  366. package/esm2022/lib/components/auth-callback/auth-callback.component.mjs +0 -57
  367. package/esm2022/lib/components/button/button.module.mjs +0 -20
  368. package/esm2022/lib/components/forgot-password/ForgotPasswordData.mjs +0 -2
  369. package/esm2022/lib/components/mail/mail.component.mjs +0 -69
  370. package/esm2022/lib/components/mail/mail.module.mjs +0 -21
  371. package/esm2022/lib/components/o-auth/o-auth.component.mjs +0 -107
  372. package/esm2022/lib/components/otp-input/otp-input.component.mjs +0 -86
  373. package/esm2022/lib/components/otp-input/otp-input.module.mjs +0 -23
  374. package/esm2022/lib/components/reset-password/ResetPasswordData.mjs +0 -2
  375. package/esm2022/lib/components/role-control/ChildrenType.mjs +0 -6
  376. package/esm2022/lib/components/role-control/MappedRole.mjs +0 -2
  377. package/esm2022/lib/components/role-control/MappedRoleAction.mjs +0 -2
  378. package/esm2022/lib/components/role-control/MappedRoleContext.mjs +0 -2
  379. package/esm2022/lib/components/role-control/UIActions.mjs +0 -7
  380. package/esm2022/lib/components/role-control/UIs.mjs +0 -40
  381. package/esm2022/lib/components/role-control/base-table-style.mjs +0 -53
  382. package/esm2022/lib/components/role-control/role-control.component.mjs +0 -1608
  383. package/esm2022/lib/components/role-control/role-control.module.mjs +0 -18
  384. package/esm2022/lib/components/role-control/role-control.service.mjs +0 -54
  385. package/esm2022/lib/components/sign-in/sign-in.component.mjs +0 -318
  386. package/esm2022/lib/components/sign-in/sign-in.module.mjs +0 -24
  387. package/esm2022/lib/components/sign-up/sign-up.component.mjs +0 -229
  388. package/esm2022/lib/components/sign-up/sign-up.module.mjs +0 -24
  389. package/esm2022/lib/components/sso/base-table-style.mjs +0 -53
  390. package/esm2022/lib/components/sso/helper.mjs +0 -16
  391. package/esm2022/lib/components/sso/sso.columns.mjs +0 -29
  392. package/esm2022/lib/components/sso/sso.component.mjs +0 -236
  393. package/esm2022/lib/components/sso/sso.module.mjs +0 -63
  394. package/esm2022/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.mjs +0 -209
  395. package/esm2022/lib/components/two-factor-auth-otp/two-factor-auth-otp.module.mjs +0 -22
  396. package/esm2022/lib/components/two-factor-auth-setup/two-factor-auth-setup.module.mjs +0 -19
  397. package/esm2022/lib/components/user-management/base-table-style.mjs +0 -53
  398. package/esm2022/lib/components/user-management/services/user-management.service.mjs +0 -88
  399. package/esm2022/lib/components/user-management/user-management.columns.mjs +0 -53
  400. package/esm2022/lib/components/user-management/user-management.module.mjs +0 -85
  401. package/esm2022/lib/components/user-management/user-status-badge/user-status-badge.component.mjs +0 -26
  402. package/esm2022/lib/components/user-request/user-request.component.mjs +0 -320
  403. package/esm2022/lib/components/user-request/user-request.module.mjs +0 -38
  404. package/esm2022/lib/components/user-request-approval/access-request.columns.mjs +0 -29
  405. package/esm2022/lib/components/user-request-approval/base-table-style.mjs +0 -53
  406. package/esm2022/lib/components/user-request-approval/facades/user-access-request.facade.mjs +0 -260
  407. package/esm2022/lib/components/user-request-approval/helper.mjs +0 -56
  408. package/esm2022/lib/components/user-request-approval/services/user-access-request.service.mjs +0 -93
  409. package/esm2022/lib/components/user-request-approval/states/user-access-request.state.mjs +0 -92
  410. package/esm2022/lib/components/user-request-approval/user-access-request-status-badge/user-access-request-status-badge.component.mjs +0 -26
  411. package/esm2022/lib/components/user-request-approval/user-request-approval.module.mjs +0 -83
  412. package/esm2022/lib/models/ApplicationRoleAction.mjs +0 -2
  413. package/esm2022/lib/models/ApplicationRoleContext.mjs +0 -2
  414. package/esm2022/lib/models/ErrorResponse.mjs +0 -11
  415. package/esm2022/lib/models/OAuthParam.mjs +0 -2
  416. package/esm2022/lib/models/OAuthType.mjs +0 -9
  417. package/esm2022/lib/models/PagedResult.mjs +0 -2
  418. package/esm2022/lib/models/PasswordRequestParam.mjs +0 -2
  419. package/esm2022/lib/models/PermissionConfig.mjs +0 -2
  420. package/esm2022/lib/models/ResponseKeyValue.mjs +0 -2
  421. package/esm2022/lib/models/Role.mjs +0 -2
  422. package/esm2022/lib/models/RoleAction.mjs +0 -2
  423. package/esm2022/lib/models/RoleContext.mjs +0 -2
  424. package/esm2022/lib/models/SearchDynamicWrapper.mjs +0 -2
  425. package/esm2022/lib/models/SearchOperator.mjs +0 -6
  426. package/esm2022/lib/models/SearchPropertySign.mjs +0 -11
  427. package/esm2022/lib/models/SearchPropertyValue.mjs +0 -2
  428. package/esm2022/lib/models/SearchPropertyValueType.mjs +0 -11
  429. package/esm2022/lib/models/SortDirection.mjs +0 -7
  430. package/esm2022/lib/models/Tag.mjs +0 -2
  431. package/esm2022/lib/models/TenantConfig.mjs +0 -2
  432. package/esm2022/lib/models/UserRequest.mjs +0 -2
  433. package/esm2022/lib/models/auth-mechanism.mjs +0 -8
  434. package/esm2022/lib/models/base.mjs +0 -2
  435. package/esm2022/lib/models/conditions.mjs +0 -13
  436. package/esm2022/lib/models/log-in.mjs +0 -2
  437. package/esm2022/lib/models/mainUser.mjs +0 -2
  438. package/esm2022/lib/models/oauth-resp.mjs +0 -2
  439. package/esm2022/lib/models/oauth-response.mjs +0 -2
  440. package/esm2022/lib/models/object-state.mjs +0 -8
  441. package/esm2022/lib/models/otpValue.mjs +0 -2
  442. package/esm2022/lib/models/paged.mjs +0 -2
  443. package/esm2022/lib/models/query-params.mjs +0 -2
  444. package/esm2022/lib/models/request-status.mjs +0 -5
  445. package/esm2022/lib/models/resend-otp-data.mjs +0 -2
  446. package/esm2022/lib/models/sign-up.mjs +0 -2
  447. package/esm2022/lib/models/single-sign-on.mjs +0 -2
  448. package/esm2022/lib/models/status.mjs +0 -6
  449. package/esm2022/lib/models/user-access-request-status.mjs +0 -7
  450. package/esm2022/lib/models/user-access-request.mjs +0 -2
  451. package/esm2022/lib/models/user.mjs +0 -2
  452. package/esm2022/lib/pipes/async-label.pipe.mjs +0 -25
  453. package/esm2022/lib/services/authorization.service.mjs +0 -26
  454. package/esm2022/lib/services/encryption.service.mjs +0 -52
  455. package/esm2022/lib/services/environment.service.mjs +0 -26
  456. package/esm2022/lib/services/http-web-request.service.mjs +0 -85
  457. package/esm2022/lib/services/label.service.mjs +0 -134
  458. package/esm2022/lib/services/util.service.mjs +0 -55
  459. package/esm2022/lib/shared/shared.module.mjs +0 -84
  460. package/lib/components/sso/helper.d.ts +0 -2
  461. /package/{lib → src/lib}/components/auth-callback/auth-callback.component.d.ts +0 -0
  462. /package/{lib → src/lib}/components/auth-callback/auth-callback.module.d.ts +0 -0
  463. /package/{lib → src/lib}/components/button/button.component.d.ts +0 -0
  464. /package/{lib → src/lib}/components/button/button.module.d.ts +0 -0
  465. /package/{lib → src/lib}/components/forgot-password/ForgotPasswordData.d.ts +0 -0
  466. /package/{lib → src/lib}/components/forgot-password/forgot-password.module.d.ts +0 -0
  467. /package/{lib → src/lib}/components/mail/mail.component.d.ts +0 -0
  468. /package/{lib → src/lib}/components/mail-validation/mail-validation.component.d.ts +0 -0
  469. /package/{lib → src/lib}/components/mail-validation/mail-validation.module.d.ts +0 -0
  470. /package/{lib → src/lib}/components/o-auth/o-auth.module.d.ts +0 -0
  471. /package/{lib → src/lib}/components/otp-input/otp-input.component.d.ts +0 -0
  472. /package/{lib → src/lib}/components/reset-password/ResetPasswordData.d.ts +0 -0
  473. /package/{lib → src/lib}/components/reset-password/reset-password.module.d.ts +0 -0
  474. /package/{lib → src/lib}/components/role-control/ChildrenType.d.ts +0 -0
  475. /package/{lib → src/lib}/components/role-control/UIActions.d.ts +0 -0
  476. /package/{lib → src/lib}/components/role-control/UIs.d.ts +0 -0
  477. /package/{lib → src/lib}/components/role-control/base-table-style.d.ts +0 -0
  478. /package/{lib → src/lib}/components/role-control/role-control.service.d.ts +0 -0
  479. /package/{lib → src/lib}/components/sso/base-table-style.d.ts +0 -0
  480. /package/{lib → src/lib}/components/sso/sso-form/sso-form.component.d.ts +0 -0
  481. /package/{lib → src/lib}/components/sso/sso.module.d.ts +0 -0
  482. /package/{lib → src/lib}/components/two-factor-auth-setup/two-factor-auth-setup.component.d.ts +0 -0
  483. /package/{lib → src/lib}/components/two-factor-auth-setup/two-factor-auth-setup.module.d.ts +0 -0
  484. /package/{lib → src/lib}/components/user-management/base-table-style.d.ts +0 -0
  485. /package/{lib → src/lib}/components/user-request-approval/base-table-style.d.ts +0 -0
  486. /package/{lib → src/lib}/models/ApplicationRoleAction.d.ts +0 -0
  487. /package/{lib → src/lib}/models/ApplicationRoleContext.d.ts +0 -0
  488. /package/{lib → src/lib}/models/ErrorResponse.d.ts +0 -0
  489. /package/{lib → src/lib}/models/OAuthParam.d.ts +0 -0
  490. /package/{lib → src/lib}/models/OAuthType.d.ts +0 -0
  491. /package/{lib → src/lib}/models/PagedResult.d.ts +0 -0
  492. /package/{lib → src/lib}/models/PasswordRequestParam.d.ts +0 -0
  493. /package/{lib → src/lib}/models/PermissionConfig.d.ts +0 -0
  494. /package/{lib → src/lib}/models/ResponseKeyValue.d.ts +0 -0
  495. /package/{lib → src/lib}/models/Role.d.ts +0 -0
  496. /package/{lib → src/lib}/models/RoleAction.d.ts +0 -0
  497. /package/{lib → src/lib}/models/RoleContext.d.ts +0 -0
  498. /package/{lib → src/lib}/models/SearchDynamicWrapper.d.ts +0 -0
  499. /package/{lib → src/lib}/models/SearchOperator.d.ts +0 -0
  500. /package/{lib → src/lib}/models/SearchPropertySign.d.ts +0 -0
  501. /package/{lib → src/lib}/models/SearchPropertyValue.d.ts +0 -0
  502. /package/{lib → src/lib}/models/SearchPropertyValueType.d.ts +0 -0
  503. /package/{lib → src/lib}/models/SortDirection.d.ts +0 -0
  504. /package/{lib → src/lib}/models/Tag.d.ts +0 -0
  505. /package/{lib → src/lib}/models/TenantConfig.d.ts +0 -0
  506. /package/{lib → src/lib}/models/auth-mechanism.d.ts +0 -0
  507. /package/{lib → src/lib}/models/base.d.ts +0 -0
  508. /package/{lib → src/lib}/models/conditions.d.ts +0 -0
  509. /package/{lib → src/lib}/models/log-in.d.ts +0 -0
  510. /package/{lib → src/lib}/models/mainUser.d.ts +0 -0
  511. /package/{lib → src/lib}/models/oauth-resp.d.ts +0 -0
  512. /package/{lib → src/lib}/models/oauth-response.d.ts +0 -0
  513. /package/{lib → src/lib}/models/object-state.d.ts +0 -0
  514. /package/{lib → src/lib}/models/otpValue.d.ts +0 -0
  515. /package/{lib → src/lib}/models/paged.d.ts +0 -0
  516. /package/{lib → src/lib}/models/query-params.d.ts +0 -0
  517. /package/{lib → src/lib}/models/request-status.d.ts +0 -0
  518. /package/{lib → src/lib}/models/resend-otp-data.d.ts +0 -0
  519. /package/{lib → src/lib}/models/sign-up.d.ts +0 -0
  520. /package/{lib → src/lib}/models/single-sign-on.d.ts +0 -0
  521. /package/{lib → src/lib}/models/status.d.ts +0 -0
  522. /package/{lib → src/lib}/models/user-access-request-status.d.ts +0 -0
  523. /package/{lib → src/lib}/models/user-access-request.d.ts +0 -0
  524. /package/{lib → src/lib}/models/user.d.ts +0 -0
  525. /package/{lib → src/lib}/services/authorization.service.d.ts +0 -0
  526. /package/{lib → src/lib}/services/encryption.service.d.ts +0 -0
  527. /package/{lib → src/lib}/services/environment.service.d.ts +0 -0
  528. /package/{lib → src/lib}/services/http-web-request.service.d.ts +0 -0
  529. /package/{lib → src/lib}/services/label.service.d.ts +0 -0
  530. /package/{lib → src/lib}/services/util.service.d.ts +0 -0
@@ -0,0 +1,1021 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, EventEmitter, Component, Input, Output, signal, computed, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';
3
+ import * as i3 from 'verben-ng-ui';
4
+ import { DataFilterType, DataTableModule, CardModule, SvgModule, DataViewModule, CardDataViewModule, SortTableModule, VisibleColumnModule, TableFilterModule, DataExportModule, DataXportModule, VerbenaInputModule, VerbenaButtonModule, VerbenaBadgeModule, DropDownModule } from 'verben-ng-ui';
5
+ import { BehaviorSubject, Subject, debounceTime, distinctUntilChanged, takeUntil, lastValueFrom } from 'rxjs';
6
+ import { SearchPropertyValueType, SortDirection, SearchOperator, SearchPropertySign, UserAccessRequestStatus } from 'verben-authentication-ui/src/lib/models';
7
+ import * as i1 from 'verben-authentication-ui/src/lib/services';
8
+ import * as i2 from '@angular/common';
9
+ import { CommonModule } from '@angular/common';
10
+ import * as i1$1 from '@angular/forms';
11
+ import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
12
+
13
+ const columns = [
14
+ {
15
+ id: 'createdAt',
16
+ header: 'CREATED',
17
+ accessorKey: 'CreatedAt',
18
+ },
19
+ {
20
+ id: 'user',
21
+ header: 'NAME',
22
+ accessorFn: (row) => `${row.FirstName} ${row.LastName}`,
23
+ },
24
+ {
25
+ id: 'mail',
26
+ header: 'E-MAIL',
27
+ accessorKey: 'MailAddress',
28
+ },
29
+ {
30
+ id: 'role',
31
+ header: 'ROLE',
32
+ accessorFn: (row) => row.Role?.Name,
33
+ },
34
+ {
35
+ id: 'status',
36
+ header: 'STATUS',
37
+ accessorKey: 'RequestStatus',
38
+ },
39
+ { id: 'actions', header: 'Actions', accessorKey: 'MailAddress' },
40
+ ];
41
+
42
+ const baseStyle = {
43
+ width: '100%',
44
+ fontFamily: '"Fraunces", serif',
45
+ fontSize: '125%',
46
+ whiteSpace: 'nowrap',
47
+ margin: '0',
48
+ border: '1px solid #D4A007',
49
+ borderRadius: '16px',
50
+ borderCollapse: 'separate',
51
+ borderSpacing: '0',
52
+ // tableLayout: 'fixed',
53
+ overflow: 'hidden',
54
+ rows: {
55
+ even: {
56
+ backgroundColor: '#FDFDFD',
57
+ },
58
+ odd: {
59
+ backgroundColor: '#F1F4FB',
60
+ },
61
+ height: '68px',
62
+ },
63
+ cells: {
64
+ padding: '0.5rem 1rem',
65
+ },
66
+ header: {
67
+ // stickyTop: true,
68
+ // zIndex: 2,
69
+ backgroundColor: '#EFF2FB',
70
+ fontWeight: 'bold',
71
+ textAlign: 'left',
72
+ padding: '12px 16px',
73
+ height: '40px',
74
+ },
75
+ footer: {
76
+ // stickyBottom: true,
77
+ // zIndex: 2,
78
+ padding: '3px',
79
+ },
80
+ // body: {
81
+ // background: '#fff',
82
+ // padding: '4px 5px',
83
+ // textAlign: 'center',
84
+ // },
85
+ // firstColumn: {
86
+ // stickyLeft: true,
87
+ // zIndex: 1,
88
+ // },
89
+ lastColumn: {
90
+ // stickyRight: true,
91
+ // zIndex: 1,
92
+ },
93
+ };
94
+
95
+ const roles = [
96
+ { id: 'admin', name: 'Admin' },
97
+ { id: 'manager', name: 'Manager' },
98
+ { id: 'staff', name: 'Staff' },
99
+ ];
100
+ // export const mockData: UserAccessRequest[] = new Array(10)
101
+ // .fill(1)
102
+ // .map((id, i) => ({
103
+ // FirstName: `First ${id + i}`,
104
+ // LastName: `Last ${id + i}`,
105
+ // OtherName: `Other ${id + i}`,
106
+ // Id: id + i,
107
+ // id: (id + i).toString(),
108
+ // MailAddress: `user${id + i}@mail.com`,
109
+ // PhoneNumber: `+23480000000${id + i}`,
110
+ // RequestStatus: randomEnum(UserAccessRequestStatus),
111
+ // RoleID: roles[Math.floor(Math.random() * roles.length)].id,
112
+ // Password: '1234567',
113
+ // ExpireOn: new Date(),
114
+ // IsSeeded: false,
115
+ // OTPExpireOn: new Date(),
116
+ // Tenants: [],
117
+ // SignupType: OAuthType.InApp,
118
+ // CreatedAt: new Date(),
119
+ // UpdatedAt: new Date(),
120
+ // DataState: ObjectState.New,
121
+ // TenantId: `Tenant${id + i}`,
122
+ // Code: '',
123
+ // ServiceName: '',
124
+ // }));
125
+ function randomEnum(anEnum) {
126
+ const enumValues = Object.values(anEnum);
127
+ const randomIndex = Math.floor(Math.random() * enumValues.length);
128
+ return enumValues[randomIndex];
129
+ }
130
+ function convertDataFilterTypeToSearchPropertyValueType(type) {
131
+ switch (type) {
132
+ case DataFilterType.String:
133
+ return SearchPropertyValueType.String;
134
+ case DataFilterType.Integer:
135
+ return SearchPropertyValueType.Int;
136
+ case DataFilterType.Decimal:
137
+ return SearchPropertyValueType.Decimal;
138
+ case DataFilterType.Credit:
139
+ return SearchPropertyValueType.Float;
140
+ case DataFilterType.Date:
141
+ return SearchPropertyValueType.Date;
142
+ case DataFilterType.Bool:
143
+ return SearchPropertyValueType.Bool;
144
+ case DataFilterType.Number:
145
+ return SearchPropertyValueType.Int;
146
+ }
147
+ }
148
+
149
+ class UserAccessRequestService {
150
+ httpService;
151
+ BASE_URL = 'User';
152
+ constructor(httpService) {
153
+ this.httpService = httpService;
154
+ }
155
+ /**
156
+ * Get user access requests with pagination and sorting
157
+ * @param skip Number of records to skip
158
+ * @param limit Number of records to take
159
+ * @param sortParam Sort parameter
160
+ * @param sortOrder Sort order ('asc' or 'desc')
161
+ * @returns Promise containing the user access requests
162
+ */
163
+ getUserAccessRequests(skip, limit, sortParam, sortOrder) {
164
+ const url = `${this.BASE_URL}/GetUserAccessRequests/${skip}/${limit}/${sortParam}/${sortOrder}`;
165
+ return this.httpService.get(url);
166
+ }
167
+ getRoles() {
168
+ const url = `Role/GetRoles/0/0`;
169
+ return this.httpService.get(url);
170
+ }
171
+ getTags() {
172
+ const url = `User/GetTags/0/0`;
173
+ return this.httpService.get(url);
174
+ }
175
+ /**
176
+ * Get user access requests with additional parameter, pagination and sorting
177
+ * @param param Search parameter
178
+ * @param skip Number of records to skip
179
+ * @param limit Number of records to take
180
+ * @param sortParam Sort parameter
181
+ * @param sortOrder Sort order ('asc' or 'desc')
182
+ * @returns Promise containing the filtered user access requests
183
+ */
184
+ getUserAccessRequestWithParam(param, skip, limit, sortParam, sortOrder) {
185
+ const url = `${this.BASE_URL}/GetUserAccessRequestWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;
186
+ return this.httpService.get(url);
187
+ }
188
+ /**
189
+ * Get user access requests with additional parameter, pagination and sorting
190
+ * @param params Filter parameters
191
+ * @param skip Number of records to skip
192
+ * @param limit Number of records to take
193
+ * @param sortParam Sort parameter
194
+ * @param sortOrder Sort order ('asc' or 'desc')
195
+ * @returns Promise containing the filtered user access requests
196
+ */
197
+ getUserAccessRequestByFilterParams(params, skip, limit, sortParam, sortOrder) {
198
+ const url = `${this.BASE_URL}/SearchUserAccessRequest/${skip}/${limit}/${sortParam}/${sortOrder}`;
199
+ return this.httpService.post(url, params);
200
+ }
201
+ /**
202
+ * Save multiple user access requests
203
+ * @param requests Array of user access requests to save
204
+ * @returns Promise containing the save operation result
205
+ */
206
+ saveUserAccessRequests(requests) {
207
+ const url = `${this.BASE_URL}/SaveUserAccessRequests`;
208
+ return this.httpService.post(url, requests);
209
+ }
210
+ /**
211
+ * Approve or reject multiple user access requests
212
+ * @param requests Array of user access requests to save
213
+ * @param isApproval True for approval, false for decline
214
+ * @returns Promise containing the save operation result
215
+ */
216
+ processUserAccessRequests(requests, isApproval) {
217
+ const url = `${this.BASE_URL}/UserAccessRequestAction/${isApproval}`;
218
+ return this.httpService.post(url, requests);
219
+ }
220
+ /**
221
+ * Delete multiple user access requests
222
+ * @param requestIds Array of request IDs to delete
223
+ * @returns Observable containing the delete operation result
224
+ */
225
+ deleteUserAccessRequests(requestIds) {
226
+ const url = `${this.BASE_URL}/DeleteUserAccessRequests`;
227
+ return this.httpService.delete(`${url}?data=${requestIds.join(',')}`);
228
+ }
229
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestService, deps: [{ token: i1.HttpWebRequestService }], target: i0.ɵɵFactoryTarget.Injectable });
230
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestService, providedIn: 'root' });
231
+ }
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestService, decorators: [{
233
+ type: Injectable,
234
+ args: [{
235
+ providedIn: 'root',
236
+ }]
237
+ }], ctorParameters: () => [{ type: i1.HttpWebRequestService }] });
238
+
239
+ class UserAccessRequestState {
240
+ updating$ = new BehaviorSubject(false);
241
+ requests$ = new BehaviorSubject([]);
242
+ roles$ = new BehaviorSubject([]);
243
+ searchTerm$ = new BehaviorSubject('');
244
+ queryParams$ = new BehaviorSubject({
245
+ skip: 0,
246
+ limit: 20,
247
+ sortParam: 'CreatedAt',
248
+ sortOrder: SortDirection.Asc,
249
+ });
250
+ filterParams$ = new BehaviorSubject([]);
251
+ isUpdating$() {
252
+ return this.updating$.asObservable();
253
+ }
254
+ setUpdating(isUpdating) {
255
+ this.updating$.next(isUpdating);
256
+ }
257
+ getRequests$() {
258
+ return this.requests$.asObservable();
259
+ }
260
+ setRequests(requests) {
261
+ this.requests$.next(requests);
262
+ }
263
+ getFilterParams$() {
264
+ return this.filterParams$.asObservable();
265
+ }
266
+ setFilterParams(params) {
267
+ this.filterParams$.next(params);
268
+ }
269
+ getRoles$() {
270
+ return this.roles$.asObservable();
271
+ }
272
+ setRoles(roles) {
273
+ this.roles$.next(roles);
274
+ }
275
+ appendRequests(newRequests) {
276
+ const currentRequests = this.requests$.getValue();
277
+ this.requests$.next([...currentRequests, ...newRequests]);
278
+ }
279
+ getSearchTerm$() {
280
+ return this.searchTerm$.asObservable();
281
+ }
282
+ getSearchTermValue() {
283
+ return this.searchTerm$.getValue();
284
+ }
285
+ setSearchTerm(term) {
286
+ this.searchTerm$.next(term);
287
+ }
288
+ getQueryParams$() {
289
+ return this.queryParams$.asObservable();
290
+ }
291
+ getQueryParamsValue() {
292
+ return this.queryParams$.getValue();
293
+ }
294
+ updateQueryParams(params) {
295
+ this.queryParams$.next({ ...this.queryParams$.getValue(), ...params });
296
+ }
297
+ resetPagination() {
298
+ const currentParams = this.queryParams$.getValue();
299
+ this.queryParams$.next({ ...currentParams, skip: 0 });
300
+ }
301
+ addRequest(request) {
302
+ const currentValue = this.requests$.getValue();
303
+ this.requests$.next([...currentValue, request]);
304
+ }
305
+ updateRequest(updatedRequest) {
306
+ const requests = this.requests$.getValue();
307
+ const index = requests.findIndex((r) => r.Code === updatedRequest.Code);
308
+ if (index !== -1) {
309
+ requests[index] = updatedRequest;
310
+ this.requests$.next([...requests]);
311
+ }
312
+ }
313
+ removeRequest(requestId) {
314
+ const currentValue = this.requests$.getValue();
315
+ this.requests$.next(currentValue.filter((r) => r.Id !== requestId));
316
+ }
317
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
318
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestState, providedIn: 'root' });
319
+ }
320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestState, decorators: [{
321
+ type: Injectable,
322
+ args: [{
323
+ providedIn: 'root',
324
+ }]
325
+ }] });
326
+
327
+ class UserAccessRequestFacade {
328
+ userAccessRequestService;
329
+ userAccessRequestState;
330
+ utilService;
331
+ searchSubject = new Subject();
332
+ destroy$ = new Subject();
333
+ constructor(userAccessRequestService, userAccessRequestState, utilService) {
334
+ this.userAccessRequestService = userAccessRequestService;
335
+ this.userAccessRequestState = userAccessRequestState;
336
+ this.utilService = utilService;
337
+ // Set up debounced search handling
338
+ this.searchSubject
339
+ .pipe(debounceTime(1000), distinctUntilChanged(), takeUntil(this.destroy$))
340
+ .subscribe((searchTerm) => {
341
+ this.handleSearch(searchTerm);
342
+ });
343
+ this.isUpdating$().subscribe((loading) => {
344
+ this.utilService.sendBI(loading);
345
+ });
346
+ this.getFilterParams$().subscribe((params) => {
347
+ if (params.length) {
348
+ }
349
+ else {
350
+ this.loadRequests();
351
+ }
352
+ });
353
+ }
354
+ destroy() {
355
+ this.destroy$.next();
356
+ this.destroy$.complete();
357
+ }
358
+ isUpdating$() {
359
+ return this.userAccessRequestState.isUpdating$();
360
+ }
361
+ getRequests$() {
362
+ return this.userAccessRequestState.getRequests$();
363
+ }
364
+ getFilterParams$() {
365
+ return this.userAccessRequestState.getFilterParams$();
366
+ }
367
+ getRoles$() {
368
+ return this.userAccessRequestState.getRoles$();
369
+ }
370
+ getQueryParams$() {
371
+ return this.userAccessRequestState.getQueryParams$();
372
+ }
373
+ getSearchTerm$() {
374
+ return this.userAccessRequestState.getSearchTerm$();
375
+ }
376
+ // Search handling
377
+ search(term) {
378
+ this.searchSubject.next(term);
379
+ }
380
+ async handleSearch(searchTerm) {
381
+ this.userAccessRequestState.setSearchTerm(searchTerm);
382
+ this.userAccessRequestState.resetPagination();
383
+ try {
384
+ this.userAccessRequestState.setUpdating(true);
385
+ if (searchTerm.trim()) {
386
+ await this.loadRequestsWithParam(searchTerm);
387
+ }
388
+ else {
389
+ await this.loadRequests();
390
+ }
391
+ }
392
+ catch (error) {
393
+ console.error('Search failed:', error);
394
+ throw error;
395
+ }
396
+ finally {
397
+ this.userAccessRequestState.setUpdating(false);
398
+ }
399
+ }
400
+ async filter(filterParams) {
401
+ this.userAccessRequestState.resetPagination();
402
+ this.userAccessRequestState.setFilterParams(filterParams);
403
+ }
404
+ // Load more handling
405
+ async loadMore() {
406
+ try {
407
+ this.userAccessRequestState.setUpdating(true);
408
+ const currentParams = this.userAccessRequestState.getQueryParamsValue();
409
+ const searchTerm = this.userAccessRequestState.getSearchTermValue();
410
+ // Update skip value
411
+ const newSkip = currentParams.skip + currentParams.limit;
412
+ this.userAccessRequestState.updateQueryParams({ skip: newSkip });
413
+ // Load and append data
414
+ const response = searchTerm
415
+ ? await this.userAccessRequestService.getUserAccessRequestWithParam(searchTerm, newSkip, currentParams.limit, currentParams.sortParam || 'createdDate', currentParams.sortOrder)
416
+ : await this.userAccessRequestService.getUserAccessRequests(newSkip, currentParams.limit, currentParams.sortParam || 'createdDate', currentParams.sortOrder);
417
+ this.userAccessRequestState.appendRequests(response.Result);
418
+ }
419
+ catch (error) {
420
+ console.error('Load more failed:', error);
421
+ throw error;
422
+ }
423
+ finally {
424
+ this.userAccessRequestState.setUpdating(false);
425
+ }
426
+ }
427
+ async loadRequests() {
428
+ try {
429
+ this.userAccessRequestState.setUpdating(true);
430
+ const params = this.userAccessRequestState.getQueryParamsValue();
431
+ const requests = await this.userAccessRequestService.getUserAccessRequests(params.skip, params.limit, params.sortParam || 'createdDate', params.sortOrder);
432
+ this.userAccessRequestState.setRequests(requests.Result);
433
+ }
434
+ catch (error) {
435
+ console.error('Failed to load requests:', error);
436
+ throw error;
437
+ }
438
+ finally {
439
+ this.userAccessRequestState.setUpdating(false);
440
+ }
441
+ }
442
+ async loadRoles() {
443
+ try {
444
+ // this.userAccessRequestState.setUpdating(true);
445
+ // const params = this.userAccessRequestState.getQueryParamsValue();
446
+ const requests = await this.userAccessRequestService.getRoles();
447
+ this.userAccessRequestState.setRoles(requests.Result);
448
+ }
449
+ catch (error) {
450
+ console.error('Failed to load requests:', error);
451
+ throw error;
452
+ }
453
+ finally {
454
+ // this.userAccessRequestState.setUpdating(false);
455
+ }
456
+ }
457
+ async loadRequestsWithParam(param) {
458
+ try {
459
+ this.userAccessRequestState.setUpdating(true);
460
+ const params = this.userAccessRequestState.getQueryParamsValue();
461
+ const requests = await this.userAccessRequestService.getUserAccessRequestWithParam(param, params.skip, params.limit, params.sortParam || 'createdDate', params.sortOrder);
462
+ this.userAccessRequestState.setRequests(requests.Result);
463
+ }
464
+ catch (error) {
465
+ console.error('Failed to load requests with param:', error);
466
+ throw error;
467
+ }
468
+ finally {
469
+ this.userAccessRequestState.setUpdating(false);
470
+ }
471
+ }
472
+ async loadRequestsByFilterParams(filterParams) {
473
+ try {
474
+ this.userAccessRequestState.setUpdating(true);
475
+ const params = this.userAccessRequestState.getQueryParamsValue();
476
+ const requests = await this.userAccessRequestService.getUserAccessRequestByFilterParams(filterParams.map((filter) => ({
477
+ PropertyName: filter.name,
478
+ EntityValue: filter.value,
479
+ type: convertDataFilterTypeToSearchPropertyValueType(filter.type),
480
+ Operator: SearchOperator.And,
481
+ Sign: SearchPropertySign.EQ,
482
+ })), params.skip, params.limit, params.sortParam || 'createdDate', params.sortOrder);
483
+ this.userAccessRequestState.setRequests(requests.Result);
484
+ }
485
+ catch (error) {
486
+ console.error('Failed to load requests with param:', error);
487
+ throw error;
488
+ }
489
+ finally {
490
+ this.userAccessRequestState.setUpdating(false);
491
+ }
492
+ }
493
+ updateQueryParams(params) {
494
+ this.userAccessRequestState.updateQueryParams(params);
495
+ this.loadRequests();
496
+ }
497
+ async addRequest(request) {
498
+ try {
499
+ this.userAccessRequestState.setUpdating(true);
500
+ const newRequest = { ...request };
501
+ this.userAccessRequestState.addRequest(newRequest);
502
+ await this.userAccessRequestService.saveUserAccessRequests([newRequest]);
503
+ await this.loadRequests(); // Reload to get server-side changes
504
+ }
505
+ catch (error) {
506
+ console.error('Failed to add request:', error);
507
+ this.userAccessRequestState.removeRequest(request.Id);
508
+ throw error;
509
+ }
510
+ finally {
511
+ this.userAccessRequestState.setUpdating(false);
512
+ }
513
+ }
514
+ async updateRequest(request) {
515
+ try {
516
+ this.userAccessRequestState.setUpdating(true);
517
+ await this.userAccessRequestService.saveUserAccessRequests([request]);
518
+ this.userAccessRequestState.updateRequest(request);
519
+ this.utilService.showSuccess('Request updated successfully');
520
+ }
521
+ catch (error) {
522
+ console.error('Failed to update request:', error);
523
+ throw error;
524
+ }
525
+ finally {
526
+ this.userAccessRequestState.setUpdating(false);
527
+ }
528
+ }
529
+ async deleteRequest(requestId) {
530
+ try {
531
+ this.userAccessRequestState.setUpdating(true);
532
+ await lastValueFrom(this.userAccessRequestService.deleteUserAccessRequests([requestId]));
533
+ this.userAccessRequestState.removeRequest(requestId);
534
+ }
535
+ catch (error) {
536
+ console.error('Failed to delete request:', error);
537
+ throw error;
538
+ }
539
+ finally {
540
+ this.userAccessRequestState.setUpdating(false);
541
+ }
542
+ }
543
+ async approveRequest(request) {
544
+ try {
545
+ this.userAccessRequestState.setUpdating(true);
546
+ const response = await this.userAccessRequestService.processUserAccessRequests([request], true);
547
+ // console.log(response);
548
+ const data = response?.[0];
549
+ if (data) {
550
+ this.userAccessRequestState.updateRequest(data);
551
+ this.utilService.showSuccess('Request approved successfully');
552
+ }
553
+ }
554
+ catch (error) {
555
+ console.error('Failed to update request:', error);
556
+ throw error;
557
+ }
558
+ finally {
559
+ this.userAccessRequestState.setUpdating(false);
560
+ }
561
+ }
562
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestFacade, deps: [{ token: UserAccessRequestService }, { token: UserAccessRequestState }, { token: i1.UtilService }], target: i0.ɵɵFactoryTarget.Injectable });
563
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestFacade, providedIn: 'root' });
564
+ }
565
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestFacade, decorators: [{
566
+ type: Injectable,
567
+ args: [{
568
+ providedIn: 'root',
569
+ }]
570
+ }], ctorParameters: () => [{ type: UserAccessRequestService }, { type: UserAccessRequestState }, { type: i1.UtilService }] });
571
+ var DateFilterTypes;
572
+ (function (DateFilterTypes) {
573
+ DateFilterTypes["Before"] = "LT";
574
+ DateFilterTypes["On"] = "EQ";
575
+ DateFilterTypes["After"] = "GT";
576
+ })(DateFilterTypes || (DateFilterTypes = {}));
577
+
578
+ class UserRequestFormComponent {
579
+ fb;
580
+ roles = [];
581
+ get currentData() {
582
+ return this._currentData;
583
+ }
584
+ set currentData(value) {
585
+ this._currentData = value;
586
+ console.log(value?.data);
587
+ if (value?.data) {
588
+ this.form.patchValue({
589
+ MailAddress: value.data.MailAddress || '',
590
+ FirstName: value.data.FirstName || '',
591
+ LastName: value.data.LastName || '',
592
+ OtherName: value.data.OtherName || '',
593
+ PhoneNumber: value.data.PhoneNumber || '',
594
+ RoleID: value.data.RoleID || '',
595
+ });
596
+ }
597
+ else {
598
+ this.form.reset();
599
+ }
600
+ }
601
+ _currentData = null;
602
+ switchView = new EventEmitter();
603
+ onApproval = new EventEmitter();
604
+ form;
605
+ // roles: WritableSignal<Role[]> = signal([]);
606
+ constructor(fb) {
607
+ this.fb = fb;
608
+ this.form = this.fb.group({
609
+ MailAddress: ['', { readonly: true }],
610
+ FirstName: ['', { readonly: true }],
611
+ LastName: ['', { readonly: true }],
612
+ OtherName: ['', { readonly: true }],
613
+ PhoneNumber: ['', { readonly: true }],
614
+ RoleID: ['', { validators: [Validators.required] }],
615
+ });
616
+ }
617
+ ngOnInit() {
618
+ // this.userAccessRequestFacade.getRoles$().subscribe((data) => {
619
+ // this.roles.set(data);
620
+ // });
621
+ // try {
622
+ // this.userAccessRequestFacade.loadRoles();
623
+ // } catch (error) {
624
+ // // Handle error
625
+ // }
626
+ console.log(this.currentData?.data);
627
+ }
628
+ onSave() {
629
+ if (this.form.valid) {
630
+ // Emit save event with form value
631
+ console.log('Form saved:', this.form.value);
632
+ }
633
+ }
634
+ onDelete() {
635
+ // Emit delete event
636
+ console.log('Delete requested');
637
+ }
638
+ disableProcessing() {
639
+ return (this.currentData?.data?.RequestStatus !==
640
+ UserAccessRequestStatus.Pending || !this.form.valid);
641
+ }
642
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestFormComponent, deps: [{ token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
643
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestFormComponent, selector: "lib-user-request-form", inputs: { roles: "roles", currentData: "currentData" }, outputs: { switchView: "switchView", onApproval: "onApproval" }, ngImport: i0, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n>\n <verbena-input\n name=\"MailAddress\"\n label=\"Mail Address:\"\n formControlName=\"MailAddress\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"First Name:\"\n name=\"FirstName\"\n type=\"text\"\n formControlName=\"FirstName\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"Last Name:\"\n name=\"LastName\"\n type=\"text\"\n formControlName=\"LastName\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"OtherName:\"\n name=\"OtherName\"\n type=\"text\"\n formControlName=\"OtherName\"\n [readOnly]=\"true\"\n />\n <!-- <verbena-input\n label=\"Phone Number:\"\n name=\"PhoneNumber\"\n type=\"tel\"\n formControlName=\"PhoneNumber\"\n [readOnly]=\"true\"\n /> -->\n\n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n\n <verben-drop-down\n label=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n formControlName=\"RoleID\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between my-2\">\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Reject\"\n styleType=\"danger\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n (click)=\"\n onApproval.emit({\n email: form.get('MailAddress')?.value,\n role: form.get('RoleID')?.value\n })\n \"\n text=\"Approve\"\n bgColor=\"#28a745\"\n textColor=\"white\"\n border=\"1px solid #28a745\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i3.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i3.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }] });
644
+ }
645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestFormComponent, decorators: [{
646
+ type: Component,
647
+ args: [{ selector: 'lib-user-request-form', template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n>\n <verbena-input\n name=\"MailAddress\"\n label=\"Mail Address:\"\n formControlName=\"MailAddress\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"First Name:\"\n name=\"FirstName\"\n type=\"text\"\n formControlName=\"FirstName\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"Last Name:\"\n name=\"LastName\"\n type=\"text\"\n formControlName=\"LastName\"\n [readOnly]=\"true\"\n />\n <verbena-input\n label=\"OtherName:\"\n name=\"OtherName\"\n type=\"text\"\n formControlName=\"OtherName\"\n [readOnly]=\"true\"\n />\n <!-- <verbena-input\n label=\"Phone Number:\"\n name=\"PhoneNumber\"\n type=\"tel\"\n formControlName=\"PhoneNumber\"\n [readOnly]=\"true\"\n /> -->\n\n <div class=\"space-y-1\">\n <label for=\"role\">Role</label>\n\n <verben-drop-down\n label=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n formControlName=\"RoleID\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between my-2\">\n <verbena-button\n width=\"114px\"\n height=\"39px\"\n text=\"Reject\"\n styleType=\"danger\"\n borderRadius=\"10px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n <verbena-button\n (click)=\"switchView.emit()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n (click)=\"\n onApproval.emit({\n email: form.get('MailAddress')?.value,\n role: form.get('RoleID')?.value\n })\n \"\n text=\"Approve\"\n bgColor=\"#28a745\"\n textColor=\"white\"\n border=\"1px solid #28a745\"\n borderRadius=\"10px\"\n pd=\"10px 20px\"\n width=\"114px\"\n height=\"39px\"\n [disable]=\"disableProcessing()\"\n ></verbena-button>\n </div>\n</form>\n" }]
648
+ }], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { roles: [{
649
+ type: Input
650
+ }], currentData: [{
651
+ type: Input
652
+ }], switchView: [{
653
+ type: Output
654
+ }], onApproval: [{
655
+ type: Output
656
+ }] } });
657
+
658
+ class UserAccessRequestStatusBadgeComponent {
659
+ status = UserAccessRequestStatus.Pending;
660
+ badgeConfig() {
661
+ switch (this.status) {
662
+ case UserAccessRequestStatus.Approved:
663
+ return { bgColor: '#CAE1CC', textColor: '#4ABB54', label: 'Approved' };
664
+ case UserAccessRequestStatus.Declined:
665
+ return { bgColor: '#FFDFDF', textColor: '#EB5757', label: 'Rejected' };
666
+ default:
667
+ return { bgColor: '#827C7C', textColor: '#C3C3C3', label: 'Pending' };
668
+ }
669
+ }
670
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestStatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
671
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserAccessRequestStatusBadgeComponent, selector: "lib-user-access-request-status-badge", inputs: { status: "status" }, ngImport: i0, template: "<verbena-badge\n borderRadius=\"9px\"\n [bgColor]=\"badgeConfig().bgColor\"\n [textColor]=\"badgeConfig().textColor\"\n fontSize=\"12px\"\n [text]=\"badgeConfig().label\"\n [pd]=\"'2px 6px'\"\n></verbena-badge>\n", styles: [""], dependencies: [{ kind: "component", type: i3.VerbenaBadgeComponent, selector: "verbena-badge", inputs: ["text", "bgColor", "textColor", "borderRadius", "pd", "fontSize", "width", "height"] }] });
672
+ }
673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserAccessRequestStatusBadgeComponent, decorators: [{
674
+ type: Component,
675
+ args: [{ selector: 'lib-user-access-request-status-badge', template: "<verbena-badge\n borderRadius=\"9px\"\n [bgColor]=\"badgeConfig().bgColor\"\n [textColor]=\"badgeConfig().textColor\"\n fontSize=\"12px\"\n [text]=\"badgeConfig().label\"\n [pd]=\"'2px 6px'\"\n></verbena-badge>\n" }]
676
+ }], propDecorators: { status: [{
677
+ type: Input
678
+ }] } });
679
+
680
+ class UserRequestApprovalComponent {
681
+ cdr;
682
+ userAccessRequestFacade;
683
+ cardDataView;
684
+ dataView;
685
+ columns = columns;
686
+ // visibleColumnDef: WritableSignal<ColumnDefinition<UserAccessRequest>[]> =
687
+ // signal(columns);
688
+ visibleColumnDef = this.columns;
689
+ data = signal([]);
690
+ styles = baseStyle;
691
+ currentData = null;
692
+ isGridView = true;
693
+ selected = null;
694
+ cardData = computed(() => this.data()?.map(({ FirstName, LastName, MailAddress, PhoneNumber, RoleID, RequestStatus, Role, SignupType, }) => ({
695
+ selected: false,
696
+ title: `${FirstName} ${LastName}`,
697
+ data: {
698
+ FirstName,
699
+ LastName,
700
+ MailAddress,
701
+ PhoneNumber,
702
+ RoleID,
703
+ RequestStatus,
704
+ Role,
705
+ SignupType,
706
+ },
707
+ body: [{ title: 'Role', value: Role?.Name ?? '' }],
708
+ children: [],
709
+ })));
710
+ roles = signal([]);
711
+ constructor(cdr,
712
+ // private service: UserRequestApprovalService,
713
+ userAccessRequestFacade) {
714
+ this.cdr = cdr;
715
+ this.userAccessRequestFacade = userAccessRequestFacade;
716
+ }
717
+ async ngOnInit() {
718
+ // this.data = this.service.getMockUserRequests();
719
+ this.userAccessRequestFacade.getRequests$().subscribe((data) => {
720
+ this.data.set(data);
721
+ });
722
+ this.userAccessRequestFacade.getRoles$().subscribe((data) => {
723
+ this.roles.set(data);
724
+ });
725
+ try {
726
+ this.userAccessRequestFacade.loadRequests();
727
+ this.userAccessRequestFacade.loadRoles();
728
+ }
729
+ catch (error) {
730
+ // Handle error
731
+ }
732
+ }
733
+ ngOnDestroy() {
734
+ this.userAccessRequestFacade.destroy();
735
+ }
736
+ handleSearch(event) {
737
+ this.userAccessRequestFacade.search(event.value);
738
+ }
739
+ async loadMore() {
740
+ try {
741
+ await this.userAccessRequestFacade.loadMore();
742
+ }
743
+ catch (error) {
744
+ // Handle error
745
+ }
746
+ }
747
+ // To search with parameter:
748
+ async searchRequests(param) {
749
+ try {
750
+ await this.userAccessRequestFacade.loadRequestsWithParam(param);
751
+ }
752
+ catch (error) {
753
+ // Handle error
754
+ }
755
+ }
756
+ async onApprove(approvalData) {
757
+ const data = this.data().find(({ MailAddress }) => MailAddress === approvalData.email);
758
+ if (data) {
759
+ await this.userAccessRequestFacade.approveRequest({
760
+ ...data,
761
+ RoleID: approvalData.role,
762
+ });
763
+ }
764
+ }
765
+ openDetailView(mailAddress) {
766
+ const cardItem = this.getCardDataByMailAddress(mailAddress);
767
+ if (cardItem && this.cardDataView) {
768
+ this.dataView.toggleView();
769
+ // First reset all selections
770
+ this.cardData().forEach((item) => {
771
+ item.selected = false;
772
+ if (item.children) {
773
+ item.children.forEach((child) => (child.selected = false));
774
+ }
775
+ });
776
+ // Set the selected item
777
+ cardItem.selected = true;
778
+ this.currentData = this.cardDataView.onItemClick(cardItem);
779
+ // Force change detection if needed
780
+ // this.changeDetectorRef.detectChanges();
781
+ }
782
+ }
783
+ getCardDataByMailAddress(mailAddress) {
784
+ return this.cardData().find(({ data }) => data.MailAddress === mailAddress);
785
+ }
786
+ onViewChange(isGridView) {
787
+ this.isGridView = isGridView;
788
+ // Reset selection when switching views
789
+ if (this.currentData) {
790
+ this.cardDataView?.clearData();
791
+ this.currentData = null;
792
+ }
793
+ console.log('SELECTED', this.selected);
794
+ if (this.selected) {
795
+ this.cardDataView.onItemClick(this.selected);
796
+ }
797
+ }
798
+ openFormView(index) {
799
+ const item = this.cardData()[index];
800
+ console.log('ITEM = ', item);
801
+ }
802
+ handleExport(exportedData) {
803
+ console.log('Exported data:', exportedData);
804
+ this.downloadCSV(exportedData);
805
+ }
806
+ /**
807
+ * @param data Simple csv export for testing
808
+ */
809
+ downloadCSV(data) {
810
+ const headers = Object.keys(data[0]);
811
+ const csvContent = [
812
+ headers.join(','),
813
+ ...data.map((row) => headers.map((header) => row[header]).join(',')),
814
+ ].join('\n');
815
+ const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
816
+ const link = document.createElement('a');
817
+ if (link.download !== undefined) {
818
+ const url = URL.createObjectURL(blob);
819
+ link.setAttribute('href', url);
820
+ link.setAttribute('download', 'export.csv');
821
+ link.style.visibility = 'hidden';
822
+ document.body.appendChild(link);
823
+ link.click();
824
+ document.body.removeChild(link);
825
+ }
826
+ }
827
+ onSelectionChange(selectedRows) {
828
+ console.log('Selection changed:', selectedRows);
829
+ // Handle the selection change
830
+ }
831
+ /**
832
+ * Copied over from card view doc until I understand usage
833
+ */
834
+ selectedColumnCount = 0;
835
+ selectedFilterTableCount = 0;
836
+ isOPen = true;
837
+ selectedSortCount = 0;
838
+ showColumn = false;
839
+ showSort = false;
840
+ selectedAll = false;
841
+ visibleColumns = columns.map((col) => ({
842
+ checked: true,
843
+ name: typeof col.header === 'string' ? col.header : col.id,
844
+ type: DataFilterType.Bool,
845
+ }));
846
+ filterArray = [
847
+ {
848
+ name: 'Name',
849
+ type: DataFilterType.String,
850
+ checked: false,
851
+ },
852
+ {
853
+ name: 'MailAddress',
854
+ type: DataFilterType.String,
855
+ checked: false,
856
+ },
857
+ {
858
+ name: 'PhoneNumber',
859
+ type: DataFilterType.String,
860
+ checked: false,
861
+ },
862
+ {
863
+ name: 'CreatedAt',
864
+ type: DataFilterType.Date,
865
+ checked: false,
866
+ },
867
+ ];
868
+ sortOptions = [
869
+ {
870
+ name: 'Name',
871
+ type: DataFilterType.String,
872
+ checked: false,
873
+ },
874
+ {
875
+ name: 'MailAddress',
876
+ type: DataFilterType.String,
877
+ checked: false,
878
+ },
879
+ {
880
+ name: 'PhoneNumber',
881
+ type: DataFilterType.String,
882
+ checked: false,
883
+ },
884
+ {
885
+ name: 'CreatedAt',
886
+ type: DataFilterType.Date,
887
+ checked: true,
888
+ },
889
+ ];
890
+ clearData() {
891
+ this.currentData = {};
892
+ }
893
+ onColumnChange(event) {
894
+ this.showColumn = event;
895
+ }
896
+ onSortChange(event) {
897
+ this.showSort = event;
898
+ console.log(event);
899
+ }
900
+ onColumnsUpdated(updatedColumns) {
901
+ console.log(updatedColumns);
902
+ const updatedColumnDef = [];
903
+ updatedColumns.forEach((col) => {
904
+ const matchingCol = this.columns.find((column) => column.header === col.name || column.id === col.name);
905
+ if (matchingCol) {
906
+ updatedColumnDef.push(matchingCol);
907
+ }
908
+ });
909
+ console.log(updatedColumnDef);
910
+ this.visibleColumnDef = [...updatedColumnDef];
911
+ this.cdr.markForCheck();
912
+ this.onColumnChange(false);
913
+ this.selectedColumnCount = updatedColumns.length;
914
+ }
915
+ onSortUpdated(updatedSorts) {
916
+ this.onSortChange(false);
917
+ this.selectedSortCount = updatedSorts.length;
918
+ console.log(updatedSorts);
919
+ }
920
+ onStateChange(event) {
921
+ console.log(`State changed for ${event.key}:`, event.value);
922
+ }
923
+ onFilterSet(event) {
924
+ console.log(event);
925
+ this.userAccessRequestFacade.filter(event);
926
+ }
927
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestApprovalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: UserAccessRequestFacade }], target: i0.ɵɵFactoryTarget.Component });
928
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestApprovalComponent, selector: "lib-user-request-approval", viewQueries: [{ propertyName: "cardDataView", first: true, predicate: ["vdcv"], descendants: true }, { propertyName: "dataView", first: true, predicate: ["vdv"], descendants: true }], ngImport: i0, template: "<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: false,\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"0\"\n [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"visibleColumnDef\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"status\">\n <ng-template #cell let-value>\n <lib-user-access-request-status-badge\n [status]=\"value\"\n ></lib-user-access-request-status-badge>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-deleteRow>\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"openDetailView(value)\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n <!-- <button (click)=\"openDetailView(value)\">Open</button>\n <button (click)=\"selected = cardData[rowIndex]; vdv.toggleView()\">\n Switch\n </button> -->\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <!-- <ng-template #header>\n <strong>Actions</strong>\n </ng-template> -->\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"MailAddress\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex items-end gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate\"\n >{{ item.title }}</span\n >\n\n <p class=\"flex items-center my-1 gap-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Medium:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.SignupType\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <!-- <p class=\"grid\">\n <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Medium:</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.SignupType\n }}</span>\n </p> -->\n\n <lib-user-access-request-status-badge\n [status]=\"item.data.RequestStatus\"\n ></lib-user-access-request-status-badge>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-user-request-form\n [roles]=\"roles()\"\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true,\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterSet($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"visibleColumnDef\"\n [data]=\"data()\"\n (exportDataEvent)=\"handleExport($event)\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: ["*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-8{bottom:2rem}.left-0{left:0}.right-0{right:0}.float-right{float:right}.m-0{margin:0}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\\[100\\%\\]{height:100%}.h-\\[max-content\\]{height:-moz-max-content;height:max-content}.h-full{height:100%}.w-3{width:.75rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-br-none{border-bottom-right-radius:0}.rounded-tr-none{border-top-right-radius:0}.border,.border-\\[1px\\]{border-width:1px}.border-primary{--tw-border-opacity: 1;border-color:rgb(212 160 7 / var(--tw-border-opacity, 1))}.border-secondary-200{border-color:#d7dbe6}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(212 160 7 / var(--tw-bg-opacity, 1))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(232 234 241 / var(--tw-bg-opacity, 1))}.bg-secondary-100{--tw-bg-opacity: 1;background-color:rgb(245 246 249 / var(--tw-bg-opacity, 1))}.bg-secondary-200{background-color:#d7dbe6}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pr-1{padding-right:.25rem}.\\!text-\\[10px\\]{font-size:10px!important}.text-\\[10px\\]{font-size:10px}.text-\\[12px\\]{font-size:12px}.text-\\[22px\\]{font-size:22px}.text-\\[24px\\]{font-size:24px}.text-\\[2rem\\]{font-size:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.leading-6{line-height:1.5rem}.leading-\\[12\\.1px\\]{line-height:12.1px}.leading-\\[16\\.6px\\]{line-height:16.6px}.leading-\\[19\\.5px\\]{line-height:19.5px}.leading-\\[29\\.05px\\]{line-height:29.05px}.leading-\\[33px\\]{line-height:33px}.leading-\\[48px\\]{line-height:48px}.text-\\[\\#333\\]{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.text-\\[\\#3479E9\\]{--tw-text-opacity: 1;color:rgb(52 121 233 / var(--tw-text-opacity, 1))}.text-\\[\\#404040\\]{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-\\[black\\]{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-muted{color:#0009}.underline{text-decoration-line:underline}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.view-links{color:#3479e9;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "useVirtualScroll", "virtualScrollItemSize", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i3.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i3.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "extendCustomClass", "exportCustomClass", "selectCustomClass", "importCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "importTemplate", "columnTemplate", "extendTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "milliseconds", "showColumnChild", "showSortChild", "showFilterChild", "showImportChild", "showExportChild", "showExtendChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i3.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "showEditIcon", "onItemClick", "onCardChildClick"], outputs: ["editClicked", "loadMoreClick"] }, { kind: "component", type: i3.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i3.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i3.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i3.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i3.SortTableComponent, selector: "verben-sort-table", inputs: ["enableDragAndDrop", "sortOptions", "resetText", "displayedOptions", "propertyText", "showMoreText", "sortButtonText", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "containerHeight"], outputs: ["selectedOptions", "resetSortData"] }, { kind: "component", type: i3.VisibleColumnComponent, selector: "verben-visible-column", inputs: ["columns", "items", "enableDragAndDrop", "displayedColumns", "showMore", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "closeColumn"], outputs: ["columnsUpdated", "resetFilter"] }, { kind: "component", type: i3.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied", "resetSortData"] }, { kind: "component", type: i3.DataXportComponent, selector: "lib-data-xport", inputs: ["data", "columns", "useImportKey", "dataFetchUrl", "dataQueryParameters", "dataQueryFunction"], outputs: ["exportDataEvent", "exportDataRangeEvent"] }, { kind: "component", type: UserRequestFormComponent, selector: "lib-user-request-form", inputs: ["roles", "currentData"], outputs: ["switchView", "onApproval"] }, { kind: "component", type: UserAccessRequestStatusBadgeComponent, selector: "lib-user-access-request-status-badge", inputs: ["status"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
929
+ }
930
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestApprovalComponent, decorators: [{
931
+ type: Component,
932
+ args: [{ selector: 'lib-user-request-approval', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"space-y-8\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: false,\n isToggle: true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"0\"\n [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div table-content>\n <lib-data-table\n [data]=\"data()\"\n [columns]=\"visibleColumnDef\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"status\">\n <ng-template #cell let-value>\n <lib-user-access-request-status-badge\n [status]=\"value\"\n ></lib-user-access-request-status-badge>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-deleteRow>\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"openDetailView(value)\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n <!-- <button (click)=\"openDetailView(value)\">Open</button>\n <button (click)=\"selected = cardData[rowIndex]; vdv.toggleView()\">\n Switch\n </button> -->\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <!-- <ng-template #header>\n <strong>Actions</strong>\n </ng-template> -->\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"MailAddress\"\n border=\"5px\"\n [cardDataList]=\"cardData()\"\n rbgColor=\"#f5f6f9\"\n mg=\"20px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData()\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex items-end gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate\"\n >{{ item.title }}</span\n >\n\n <p class=\"flex items-center my-1 gap-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Medium:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.SignupType\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <!-- <p class=\"grid\">\n <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Medium:</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.SignupType\n }}</span>\n </p> -->\n\n <lib-user-access-request-status-badge\n [status]=\"item.data.RequestStatus\"\n ></lib-user-access-request-status-badge>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <lib-user-request-form\n [roles]=\"roles()\"\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true,\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData().length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterSet($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"visibleColumnDef\"\n [data]=\"data()\"\n (exportDataEvent)=\"handleExport($event)\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: ["*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-8{bottom:2rem}.left-0{left:0}.right-0{right:0}.float-right{float:right}.m-0{margin:0}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\\[100\\%\\]{height:100%}.h-\\[max-content\\]{height:-moz-max-content;height:max-content}.h-full{height:100%}.w-3{width:.75rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-br-none{border-bottom-right-radius:0}.rounded-tr-none{border-top-right-radius:0}.border,.border-\\[1px\\]{border-width:1px}.border-primary{--tw-border-opacity: 1;border-color:rgb(212 160 7 / var(--tw-border-opacity, 1))}.border-secondary-200{border-color:#d7dbe6}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(212 160 7 / var(--tw-bg-opacity, 1))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(232 234 241 / var(--tw-bg-opacity, 1))}.bg-secondary-100{--tw-bg-opacity: 1;background-color:rgb(245 246 249 / var(--tw-bg-opacity, 1))}.bg-secondary-200{background-color:#d7dbe6}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pr-1{padding-right:.25rem}.\\!text-\\[10px\\]{font-size:10px!important}.text-\\[10px\\]{font-size:10px}.text-\\[12px\\]{font-size:12px}.text-\\[22px\\]{font-size:22px}.text-\\[24px\\]{font-size:24px}.text-\\[2rem\\]{font-size:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.leading-6{line-height:1.5rem}.leading-\\[12\\.1px\\]{line-height:12.1px}.leading-\\[16\\.6px\\]{line-height:16.6px}.leading-\\[19\\.5px\\]{line-height:19.5px}.leading-\\[29\\.05px\\]{line-height:29.05px}.leading-\\[33px\\]{line-height:33px}.leading-\\[48px\\]{line-height:48px}.text-\\[\\#333\\]{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.text-\\[\\#3479E9\\]{--tw-text-opacity: 1;color:rgb(52 121 233 / var(--tw-text-opacity, 1))}.text-\\[\\#404040\\]{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-\\[black\\]{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-muted{color:#0009}.underline{text-decoration-line:underline}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.view-links{color:#3479e9;cursor:pointer}\n"] }]
933
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: UserAccessRequestFacade }], propDecorators: { cardDataView: [{
934
+ type: ViewChild,
935
+ args: ['vdcv']
936
+ }], dataView: [{
937
+ type: ViewChild,
938
+ args: ['vdv']
939
+ }] } });
940
+
941
+ class LibUserRequestApprovalModule {
942
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUserRequestApprovalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
943
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LibUserRequestApprovalModule, declarations: [UserRequestApprovalComponent,
944
+ UserRequestFormComponent,
945
+ UserAccessRequestStatusBadgeComponent], imports: [CommonModule,
946
+ DataTableModule,
947
+ CardModule,
948
+ SvgModule,
949
+ DataViewModule,
950
+ CardDataViewModule,
951
+ SortTableModule,
952
+ VisibleColumnModule,
953
+ TableFilterModule,
954
+ DataExportModule,
955
+ DataXportModule,
956
+ FormsModule,
957
+ ReactiveFormsModule,
958
+ VerbenaInputModule,
959
+ VerbenaButtonModule,
960
+ VerbenaBadgeModule,
961
+ DropDownModule], exports: [UserRequestApprovalComponent,
962
+ UserAccessRequestStatusBadgeComponent] });
963
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUserRequestApprovalModule, imports: [CommonModule,
964
+ DataTableModule,
965
+ CardModule,
966
+ SvgModule,
967
+ DataViewModule,
968
+ CardDataViewModule,
969
+ SortTableModule,
970
+ VisibleColumnModule,
971
+ TableFilterModule,
972
+ DataExportModule,
973
+ DataXportModule,
974
+ FormsModule,
975
+ ReactiveFormsModule,
976
+ VerbenaInputModule,
977
+ VerbenaButtonModule,
978
+ VerbenaBadgeModule,
979
+ DropDownModule] });
980
+ }
981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibUserRequestApprovalModule, decorators: [{
982
+ type: NgModule,
983
+ args: [{
984
+ declarations: [
985
+ UserRequestApprovalComponent,
986
+ UserRequestFormComponent,
987
+ UserAccessRequestStatusBadgeComponent,
988
+ ],
989
+ imports: [
990
+ CommonModule,
991
+ DataTableModule,
992
+ CardModule,
993
+ SvgModule,
994
+ DataViewModule,
995
+ CardDataViewModule,
996
+ SortTableModule,
997
+ VisibleColumnModule,
998
+ TableFilterModule,
999
+ DataExportModule,
1000
+ DataXportModule,
1001
+ FormsModule,
1002
+ ReactiveFormsModule,
1003
+ VerbenaInputModule,
1004
+ VerbenaButtonModule,
1005
+ VerbenaBadgeModule,
1006
+ DropDownModule,
1007
+ ],
1008
+ providers: [],
1009
+ exports: [
1010
+ UserRequestApprovalComponent,
1011
+ UserAccessRequestStatusBadgeComponent,
1012
+ ],
1013
+ }]
1014
+ }] });
1015
+
1016
+ /**
1017
+ * Generated bundle index. Do not edit.
1018
+ */
1019
+
1020
+ export { LibUserRequestApprovalModule, UserAccessRequestService, UserAccessRequestStatusBadgeComponent, UserRequestApprovalComponent };
1021
+ //# sourceMappingURL=verben-authentication-ui-src-lib-components-user-request-approval.mjs.map