@updevs/components 1.0.0-alpha.5 → 1.0.0-alpha.8

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 (465) hide show
  1. package/button/button.component.d.ts +43 -0
  2. package/button/upd-button.module.d.ts +8 -0
  3. package/card/card.component.d.ts +54 -0
  4. package/card/directives/card-actions.directive.d.ts +7 -0
  5. package/card/directives/card-footer.directive.d.ts +7 -0
  6. package/card/directives/card-header.directive.d.ts +7 -0
  7. package/card/directives/card-image.directive.d.ts +7 -0
  8. package/card/upd-card.module.d.ts +14 -0
  9. package/dropdown/dropdown.component.d.ts +63 -0
  10. package/dropdown/{src/models/dropdown-item.ts → models/dropdown-item.d.ts} +0 -2
  11. package/dropdown/upd-dropdown.module.d.ts +12 -0
  12. package/esm2022/button/button.component.mjs +163 -0
  13. package/esm2022/button/index.mjs +2 -0
  14. package/esm2022/button/public-api.mjs +3 -0
  15. package/esm2022/button/upd-button.module.mjs +24 -0
  16. package/esm2022/button/updevs-components-button.mjs +5 -0
  17. package/esm2022/card/card.component.mjs +136 -0
  18. package/esm2022/card/directives/card-actions.directive.mjs +16 -0
  19. package/esm2022/card/directives/card-footer.directive.mjs +16 -0
  20. package/esm2022/card/directives/card-header.directive.mjs +16 -0
  21. package/esm2022/card/directives/card-image.directive.mjs +16 -0
  22. package/esm2022/card/directives/public-api.mjs +5 -0
  23. package/esm2022/card/index.mjs +2 -0
  24. package/esm2022/card/public-api.mjs +4 -0
  25. package/esm2022/card/types/card-state.type.mjs +2 -0
  26. package/esm2022/card/types/card-style.type.mjs +2 -0
  27. package/esm2022/card/types/hover-effect.type.mjs +2 -0
  28. package/esm2022/card/types/ribbon-style.type.mjs +2 -0
  29. package/esm2022/card/types/status-position.type.mjs +2 -0
  30. package/esm2022/card/upd-card.module.mjs +50 -0
  31. package/esm2022/card/updevs-components-card.mjs +5 -0
  32. package/esm2022/dropdown/dropdown.component.mjs +145 -0
  33. package/esm2022/dropdown/index.mjs +2 -0
  34. package/esm2022/dropdown/models/dropdown-item.mjs +2 -0
  35. package/esm2022/dropdown/models/dropdown-item.type.mjs +2 -0
  36. package/esm2022/dropdown/models/public-api.mjs +3 -0
  37. package/esm2022/dropdown/public-api.mjs +4 -0
  38. package/esm2022/dropdown/upd-dropdown.module.mjs +40 -0
  39. package/esm2022/dropdown/updevs-components-dropdown.mjs +5 -0
  40. package/esm2022/form/form.module.mjs +18 -0
  41. package/esm2022/form/index.mjs +2 -0
  42. package/esm2022/form/public-api.mjs +2 -0
  43. package/esm2022/form/updevs-components-form.mjs +5 -0
  44. package/esm2022/form-controls/checkbox/checkbox.component.mjs +68 -0
  45. package/esm2022/form-controls/checkbox/index.mjs +2 -0
  46. package/esm2022/form-controls/checkbox/public-api.mjs +3 -0
  47. package/esm2022/form-controls/checkbox/upd-checkbox.module.mjs +28 -0
  48. package/esm2022/form-controls/checkbox/updevs-components-form-controls-checkbox.mjs +5 -0
  49. package/esm2022/form-controls/input/directives/input-append.directive.mjs +16 -0
  50. package/esm2022/form-controls/input/directives/input-prepend.directive.mjs +16 -0
  51. package/esm2022/form-controls/input/directives/public-api.mjs +3 -0
  52. package/esm2022/form-controls/input/index.mjs +2 -0
  53. package/esm2022/form-controls/input/input.component.mjs +155 -0
  54. package/esm2022/form-controls/input/public-api.mjs +5 -0
  55. package/esm2022/form-controls/input/types/input.type.mjs +2 -0
  56. package/esm2022/form-controls/input/types/loader-position.type.mjs +2 -0
  57. package/esm2022/form-controls/input/types/public-api.mjs +3 -0
  58. package/esm2022/form-controls/input/upd-input.module.mjs +46 -0
  59. package/esm2022/form-controls/input/updevs-components-form-controls-input.mjs +5 -0
  60. package/esm2022/form-controls/radio/index.mjs +2 -0
  61. package/esm2022/form-controls/radio/public-api.mjs +3 -0
  62. package/esm2022/form-controls/radio/radio.component.mjs +64 -0
  63. package/esm2022/form-controls/radio/upd-radio.module.mjs +24 -0
  64. package/esm2022/form-controls/radio/updevs-components-form-controls-radio.mjs +5 -0
  65. package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +65 -0
  66. package/esm2022/form-controls/select/components/single/select.component.mjs +53 -0
  67. package/esm2022/form-controls/select/index.mjs +2 -0
  68. package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +208 -0
  69. package/esm2022/form-controls/select/models/public-api.mjs +2 -0
  70. package/esm2022/form-controls/select/models/select-item.mjs +2 -0
  71. package/esm2022/form-controls/select/public-api.mjs +5 -0
  72. package/esm2022/form-controls/select/upd-select.module.mjs +53 -0
  73. package/esm2022/form-controls/select/updevs-components-form-controls-select.mjs +5 -0
  74. package/esm2022/form-controls/textarea/index.mjs +2 -0
  75. package/esm2022/form-controls/textarea/public-api.mjs +3 -0
  76. package/esm2022/form-controls/textarea/textarea.component.mjs +62 -0
  77. package/esm2022/form-controls/textarea/upd-textarea.module.mjs +24 -0
  78. package/esm2022/form-controls/textarea/updevs-components-form-controls-textarea.mjs +5 -0
  79. package/esm2022/form-controls/time-picker/index.mjs +2 -0
  80. package/esm2022/form-controls/time-picker/public-api.mjs +4 -0
  81. package/esm2022/form-controls/time-picker/time-picker.component.mjs +130 -0
  82. package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +124 -0
  83. package/esm2022/form-controls/time-picker/upd-time-picker.module.mjs +60 -0
  84. package/esm2022/form-controls/time-picker/updevs-components-form-controls-time-picker.mjs +5 -0
  85. package/esm2022/layout/abstractions/base-page.component.mjs +24 -0
  86. package/esm2022/layout/abstractions/public-api.mjs +2 -0
  87. package/esm2022/layout/index.mjs +2 -0
  88. package/esm2022/layout/layouts/blank-layout/blank-layout.component.mjs +11 -0
  89. package/esm2022/layout/layouts/blank-layout/blank-layout.module.mjs +24 -0
  90. package/esm2022/layout/layouts/public-api.mjs +5 -0
  91. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.mjs +31 -0
  92. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.mjs +81 -0
  93. package/esm2022/layout/models/public-api.mjs +2 -0
  94. package/esm2022/layout/models/upd-layout-config.model.mjs +30 -0
  95. package/esm2022/layout/models/upd-layout.config.mjs +2 -0
  96. package/esm2022/layout/pages/auth-flow/auth-flow-routing.module.mjs +28 -0
  97. package/esm2022/layout/pages/auth-flow/auth-flow.module.mjs +46 -0
  98. package/esm2022/layout/pages/auth-flow/logged-out/logged-out.component.mjs +11 -0
  99. package/esm2022/layout/pages/auth-flow/login/login.component.mjs +27 -0
  100. package/esm2022/layout/pages/auth-flow/oauth-callback/oauth-callback.component.mjs +11 -0
  101. package/esm2022/layout/pages/auth-flow/public-api.mjs +6 -0
  102. package/esm2022/layout/pages/public-api.mjs +2 -0
  103. package/esm2022/layout/partials/footer/footer-copyright.directive.mjs +13 -0
  104. package/esm2022/layout/partials/footer/footer.component.mjs +67 -0
  105. package/esm2022/layout/partials/footer/public-api.mjs +3 -0
  106. package/esm2022/layout/partials/header/header-style.type.mjs +2 -0
  107. package/esm2022/layout/partials/header/header.component.mjs +77 -0
  108. package/esm2022/layout/partials/header/public-api.mjs +3 -0
  109. package/esm2022/layout/partials/page-header/page-header.component.mjs +14 -0
  110. package/esm2022/layout/partials/page-header/public-api.mjs +2 -0
  111. package/esm2022/layout/partials/public-api.mjs +5 -0
  112. package/esm2022/layout/partials/sidebar/public-api.mjs +2 -0
  113. package/esm2022/layout/partials/sidebar/sidebar.component.mjs +143 -0
  114. package/esm2022/layout/public-api.mjs +8 -0
  115. package/esm2022/layout/services/public-api.mjs +2 -0
  116. package/esm2022/layout/services/upd-layout-config.service.mjs +21 -0
  117. package/esm2022/layout/tools/layout.constants.mjs +15 -0
  118. package/esm2022/layout/upd-layout.module.mjs +43 -0
  119. package/esm2022/layout/updevs-components-layout.mjs +5 -0
  120. package/esm2022/lib/index.mjs +2 -0
  121. package/esm2022/lib/public-api.mjs +3 -0
  122. package/esm2022/lib/types/component-size.type.mjs +2 -0
  123. package/esm2022/lib/types/public-api.mjs +3 -0
  124. package/esm2022/lib/types/validation-status.type.mjs +2 -0
  125. package/esm2022/lib/upd-components.module.mjs +14 -0
  126. package/esm2022/link/index.mjs +2 -0
  127. package/esm2022/link/link.component.mjs +51 -0
  128. package/esm2022/link/public-api.mjs +4 -0
  129. package/esm2022/link/target.type.mjs +2 -0
  130. package/esm2022/link/upd-link.module.mjs +24 -0
  131. package/esm2022/link/updevs-components-link.mjs +5 -0
  132. package/esm2022/list/index.mjs +2 -0
  133. package/esm2022/list/list.component.mjs +134 -0
  134. package/esm2022/list/models/badge-position.type.mjs +2 -0
  135. package/esm2022/list/models/list-item.mjs +2 -0
  136. package/esm2022/list/models/list-item.model.mjs +15 -0
  137. package/esm2022/list/models/public-api.mjs +3 -0
  138. package/esm2022/list/public-api.mjs +4 -0
  139. package/esm2022/list/upd-list.module.mjs +43 -0
  140. package/esm2022/list/updevs-components-list.mjs +5 -0
  141. package/esm2022/popover/index.mjs +2 -0
  142. package/esm2022/popover/popover.component.mjs +65 -0
  143. package/esm2022/popover/popover.directive.mjs +129 -0
  144. package/esm2022/popover/public-api.mjs +4 -0
  145. package/esm2022/popover/upd-popover.module.mjs +29 -0
  146. package/esm2022/popover/updevs-components-popover.mjs +5 -0
  147. package/esm2022/public-api.mjs +2 -0
  148. package/esm2022/updevs-components.mjs +5 -0
  149. package/fesm2022/updevs-components-button.mjs +191 -0
  150. package/fesm2022/updevs-components-button.mjs.map +1 -0
  151. package/fesm2022/updevs-components-card.mjs +238 -0
  152. package/fesm2022/updevs-components-card.mjs.map +1 -0
  153. package/fesm2022/updevs-components-dropdown.mjs +189 -0
  154. package/fesm2022/updevs-components-dropdown.mjs.map +1 -0
  155. package/fesm2022/updevs-components-form-controls-checkbox.mjs +100 -0
  156. package/fesm2022/updevs-components-form-controls-checkbox.mjs.map +1 -0
  157. package/fesm2022/updevs-components-form-controls-input.mjs +229 -0
  158. package/fesm2022/updevs-components-form-controls-input.mjs.map +1 -0
  159. package/fesm2022/updevs-components-form-controls-radio.mjs +92 -0
  160. package/fesm2022/updevs-components-form-controls-radio.mjs.map +1 -0
  161. package/fesm2022/updevs-components-form-controls-select.mjs +371 -0
  162. package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -0
  163. package/fesm2022/updevs-components-form-controls-textarea.mjs +90 -0
  164. package/fesm2022/updevs-components-form-controls-textarea.mjs.map +1 -0
  165. package/fesm2022/updevs-components-form-controls-time-picker.mjs +344 -0
  166. package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +1 -0
  167. package/fesm2022/updevs-components-form.mjs +25 -0
  168. package/fesm2022/updevs-components-form.mjs.map +1 -0
  169. package/fesm2022/updevs-components-layout.mjs +670 -0
  170. package/fesm2022/updevs-components-layout.mjs.map +1 -0
  171. package/fesm2022/updevs-components-link.mjs +79 -0
  172. package/fesm2022/updevs-components-link.mjs.map +1 -0
  173. package/fesm2022/updevs-components-list.mjs +226 -0
  174. package/fesm2022/updevs-components-list.mjs.map +1 -0
  175. package/fesm2022/updevs-components-popover.mjs +223 -0
  176. package/fesm2022/updevs-components-popover.mjs.map +1 -0
  177. package/fesm2022/updevs-components.mjs +21 -0
  178. package/fesm2022/updevs-components.mjs.map +1 -0
  179. package/form/form.module.d.ts +7 -0
  180. package/form-controls/checkbox/checkbox.component.d.ts +25 -0
  181. package/form-controls/checkbox/{src/public-api.ts → public-api.d.ts} +0 -1
  182. package/form-controls/checkbox/upd-checkbox.module.d.ts +9 -0
  183. package/form-controls/input/directives/input-append.directive.d.ts +7 -0
  184. package/form-controls/input/directives/input-prepend.directive.d.ts +7 -0
  185. package/form-controls/input/input.component.d.ts +54 -0
  186. package/form-controls/input/upd-input.module.d.ts +13 -0
  187. package/form-controls/radio/radio.component.d.ts +24 -0
  188. package/form-controls/radio/upd-radio.module.d.ts +8 -0
  189. package/form-controls/select/components/multiple/select-multiple.component.d.ts +18 -0
  190. package/form-controls/select/components/single/select.component.d.ts +20 -0
  191. package/form-controls/select/models/abstractions/base-select.component.d.ts +80 -0
  192. package/form-controls/select/{src/models/select-item.ts → models/select-item.d.ts} +0 -1
  193. package/form-controls/select/upd-select.module.d.ts +15 -0
  194. package/form-controls/textarea/textarea.component.d.ts +23 -0
  195. package/form-controls/textarea/upd-textarea.module.d.ts +8 -0
  196. package/form-controls/time-picker/time-picker.component.d.ts +78 -0
  197. package/form-controls/time-picker/time-selector/time-selector.component.d.ts +69 -0
  198. package/form-controls/time-picker/upd-time-picker.module.d.ts +17 -0
  199. package/index.d.ts +5 -0
  200. package/layout/abstractions/base-page.component.d.ts +12 -0
  201. package/layout/layouts/blank-layout/blank-layout.component.d.ts +5 -0
  202. package/layout/layouts/blank-layout/blank-layout.module.d.ts +8 -0
  203. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.d.ts +12 -0
  204. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.d.ts +20 -0
  205. package/layout/models/upd-layout-config.model.d.ts +39 -0
  206. package/layout/pages/auth-flow/auth-flow-routing.module.d.ts +12 -0
  207. package/layout/pages/auth-flow/auth-flow.module.d.ts +13 -0
  208. package/layout/pages/auth-flow/logged-out/logged-out.component.d.ts +5 -0
  209. package/layout/pages/auth-flow/login/login.component.d.ts +12 -0
  210. package/layout/pages/auth-flow/oauth-callback/oauth-callback.component.d.ts +5 -0
  211. package/layout/partials/footer/footer-copyright.directive.d.ts +5 -0
  212. package/layout/partials/footer/footer.component.d.ts +43 -0
  213. package/layout/partials/header/header.component.d.ts +31 -0
  214. package/layout/partials/page-header/page-header.component.d.ts +7 -0
  215. package/layout/partials/sidebar/sidebar.component.d.ts +19 -0
  216. package/layout/services/upd-layout-config.service.d.ts +15 -0
  217. package/layout/{src/tools/layout.constants.ts → tools/layout.constants.d.ts} +3 -6
  218. package/layout/upd-layout.module.d.ts +18 -0
  219. package/lib/upd-components.module.d.ts +6 -0
  220. package/link/link.component.d.ts +22 -0
  221. package/link/upd-link.module.d.ts +8 -0
  222. package/list/list.component.d.ts +61 -0
  223. package/list/{src/models/list-item.ts → models/list-item.d.ts} +0 -2
  224. package/list/{src/models/list-item.model.ts → models/list-item.model.d.ts} +5 -16
  225. package/list/upd-list.module.d.ts +13 -0
  226. package/package.json +114 -21
  227. package/popover/popover.component.d.ts +22 -0
  228. package/popover/popover.directive.d.ts +33 -0
  229. package/popover/upd-popover.module.d.ts +9 -0
  230. package/CHANGELOG.md +0 -8
  231. package/button/index.ts +0 -1
  232. package/button/ng-package.json +0 -7
  233. package/button/src/button.component.html +0 -8
  234. package/button/src/button.component.scss +0 -5
  235. package/button/src/button.component.spec.ts +0 -23
  236. package/button/src/button.component.ts +0 -154
  237. package/button/src/upd-button.module.ts +0 -17
  238. package/card/index.ts +0 -1
  239. package/card/ng-package.json +0 -7
  240. package/card/src/card.component.html +0 -105
  241. package/card/src/card.component.scss +0 -47
  242. package/card/src/card.component.spec.ts +0 -23
  243. package/card/src/card.component.ts +0 -112
  244. package/card/src/directives/card-actions.directive.spec.ts +0 -8
  245. package/card/src/directives/card-actions.directive.ts +0 -11
  246. package/card/src/directives/card-footer.directive.spec.ts +0 -8
  247. package/card/src/directives/card-footer.directive.ts +0 -11
  248. package/card/src/directives/card-header.directive.spec.ts +0 -8
  249. package/card/src/directives/card-header.directive.ts +0 -11
  250. package/card/src/directives/card-image.directive.spec.ts +0 -8
  251. package/card/src/directives/card-image.directive.ts +0 -11
  252. package/card/src/types/public-api.ts +0 -5
  253. package/card/src/upd-card.module.ts +0 -32
  254. package/dropdown/index.ts +0 -1
  255. package/dropdown/ng-package.json +0 -7
  256. package/dropdown/src/dropdown.component.html +0 -32
  257. package/dropdown/src/dropdown.component.scss +0 -19
  258. package/dropdown/src/dropdown.component.spec.ts +0 -23
  259. package/dropdown/src/dropdown.component.ts +0 -182
  260. package/dropdown/src/upd-dropdown.module.ts +0 -25
  261. package/form/index.ts +0 -1
  262. package/form/ng-package.json +0 -7
  263. package/form/src/form.module.ts +0 -10
  264. package/form-controls/checkbox/index.ts +0 -1
  265. package/form-controls/checkbox/ng-package.json +0 -7
  266. package/form-controls/checkbox/src/checkbox.component.html +0 -7
  267. package/form-controls/checkbox/src/checkbox.component.scss +0 -0
  268. package/form-controls/checkbox/src/checkbox.component.spec.ts +0 -23
  269. package/form-controls/checkbox/src/checkbox.component.ts +0 -48
  270. package/form-controls/checkbox/src/upd-checkbox.module.ts +0 -19
  271. package/form-controls/input/index.ts +0 -1
  272. package/form-controls/input/ng-package.json +0 -7
  273. package/form-controls/input/src/directives/input-append.directive.spec.ts +0 -8
  274. package/form-controls/input/src/directives/input-append.directive.ts +0 -11
  275. package/form-controls/input/src/directives/input-prepend.directive.spec.ts +0 -8
  276. package/form-controls/input/src/directives/input-prepend.directive.ts +0 -11
  277. package/form-controls/input/src/input.component.html +0 -82
  278. package/form-controls/input/src/input.component.scss +0 -13
  279. package/form-controls/input/src/input.component.spec.ts +0 -23
  280. package/form-controls/input/src/input.component.ts +0 -124
  281. package/form-controls/input/src/upd-input.module.ts +0 -29
  282. package/form-controls/radio/index.ts +0 -1
  283. package/form-controls/radio/ng-package.json +0 -7
  284. package/form-controls/radio/src/radio.component.html +0 -7
  285. package/form-controls/radio/src/radio.component.scss +0 -0
  286. package/form-controls/radio/src/radio.component.spec.ts +0 -23
  287. package/form-controls/radio/src/radio.component.ts +0 -47
  288. package/form-controls/radio/src/upd-radio.module.ts +0 -17
  289. package/form-controls/select/index.ts +0 -1
  290. package/form-controls/select/ng-package.json +0 -7
  291. package/form-controls/select/src/components/multiple/select-multiple.component.html +0 -41
  292. package/form-controls/select/src/components/multiple/select-multiple.component.scss +0 -6
  293. package/form-controls/select/src/components/multiple/select-multiple.component.spec.ts +0 -21
  294. package/form-controls/select/src/components/multiple/select-multiple.component.ts +0 -69
  295. package/form-controls/select/src/components/shared.scss +0 -40
  296. package/form-controls/select/src/components/single/select.component.html +0 -53
  297. package/form-controls/select/src/components/single/select.component.scss +0 -3
  298. package/form-controls/select/src/components/single/select.component.spec.ts +0 -23
  299. package/form-controls/select/src/components/single/select.component.ts +0 -58
  300. package/form-controls/select/src/models/abstractions/base-select.component.ts +0 -259
  301. package/form-controls/select/src/upd-select.module.ts +0 -32
  302. package/form-controls/textarea/index.ts +0 -1
  303. package/form-controls/textarea/ng-package.json +0 -7
  304. package/form-controls/textarea/src/textarea.component.html +0 -8
  305. package/form-controls/textarea/src/textarea.component.scss +0 -0
  306. package/form-controls/textarea/src/textarea.component.spec.ts +0 -23
  307. package/form-controls/textarea/src/textarea.component.ts +0 -47
  308. package/form-controls/textarea/src/upd-textarea.module.ts +0 -17
  309. package/form-controls/time-picker/index.ts +0 -1
  310. package/form-controls/time-picker/ng-package.json +0 -7
  311. package/form-controls/time-picker/src/time-picker.component.html +0 -17
  312. package/form-controls/time-picker/src/time-picker.component.scss +0 -10
  313. package/form-controls/time-picker/src/time-picker.component.spec.ts +0 -21
  314. package/form-controls/time-picker/src/time-picker.component.ts +0 -110
  315. package/form-controls/time-picker/src/time-selector/time-selector.component.html +0 -44
  316. package/form-controls/time-picker/src/time-selector/time-selector.component.scss +0 -47
  317. package/form-controls/time-picker/src/time-selector/time-selector.component.spec.ts +0 -21
  318. package/form-controls/time-picker/src/time-selector/time-selector.component.ts +0 -107
  319. package/form-controls/time-picker/src/upd-time-picker.module.ts +0 -39
  320. package/index.ts +0 -1
  321. package/layout/index.ts +0 -1
  322. package/layout/ng-package.json +0 -7
  323. package/layout/src/abstractions/base-page.component.ts +0 -21
  324. package/layout/src/layouts/blank-layout/blank-layout.component.html +0 -1
  325. package/layout/src/layouts/blank-layout/blank-layout.component.scss +0 -0
  326. package/layout/src/layouts/blank-layout/blank-layout.component.spec.ts +0 -23
  327. package/layout/src/layouts/blank-layout/blank-layout.component.ts +0 -10
  328. package/layout/src/layouts/blank-layout/blank-layout.module.ts +0 -17
  329. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html +0 -14
  330. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.scss +0 -0
  331. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.spec.ts +0 -23
  332. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts +0 -31
  333. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts +0 -52
  334. package/layout/src/models/upd-layout-config.model.ts +0 -71
  335. package/layout/src/pages/auth-flow/auth-flow-routing.module.ts +0 -21
  336. package/layout/src/pages/auth-flow/auth-flow.module.ts +0 -29
  337. package/layout/src/pages/auth-flow/logged-out/logged-out.component.html +0 -1
  338. package/layout/src/pages/auth-flow/logged-out/logged-out.component.scss +0 -0
  339. package/layout/src/pages/auth-flow/logged-out/logged-out.component.spec.ts +0 -23
  340. package/layout/src/pages/auth-flow/logged-out/logged-out.component.ts +0 -10
  341. package/layout/src/pages/auth-flow/login/login.component.html +0 -96
  342. package/layout/src/pages/auth-flow/login/login.component.scss +0 -0
  343. package/layout/src/pages/auth-flow/login/login.component.spec.ts +0 -23
  344. package/layout/src/pages/auth-flow/login/login.component.ts +0 -26
  345. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html +0 -1
  346. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.scss +0 -0
  347. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.spec.ts +0 -23
  348. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts +0 -10
  349. package/layout/src/partials/footer/footer-copyright.directive.spec.ts +0 -8
  350. package/layout/src/partials/footer/footer-copyright.directive.ts +0 -9
  351. package/layout/src/partials/footer/footer.component.html +0 -30
  352. package/layout/src/partials/footer/footer.component.scss +0 -0
  353. package/layout/src/partials/footer/footer.component.spec.ts +0 -23
  354. package/layout/src/partials/footer/footer.component.ts +0 -73
  355. package/layout/src/partials/header/header.component.html +0 -163
  356. package/layout/src/partials/header/header.component.scss +0 -0
  357. package/layout/src/partials/header/header.component.spec.ts +0 -23
  358. package/layout/src/partials/header/header.component.ts +0 -86
  359. package/layout/src/partials/page-header/page-header.component.html +0 -19
  360. package/layout/src/partials/page-header/page-header.component.scss +0 -0
  361. package/layout/src/partials/page-header/page-header.component.spec.ts +0 -23
  362. package/layout/src/partials/page-header/page-header.component.ts +0 -11
  363. package/layout/src/partials/sidebar/sidebar.component.html +0 -62
  364. package/layout/src/partials/sidebar/sidebar.component.scss +0 -0
  365. package/layout/src/partials/sidebar/sidebar.component.spec.ts +0 -23
  366. package/layout/src/partials/sidebar/sidebar.component.ts +0 -161
  367. package/layout/src/services/upd-layout-config.service.spec.ts +0 -16
  368. package/layout/src/services/upd-layout-config.service.ts +0 -20
  369. package/layout/src/upd-layout.module.ts +0 -34
  370. package/link/index.ts +0 -1
  371. package/link/ng-package.json +0 -7
  372. package/link/src/link.component.html +0 -3
  373. package/link/src/link.component.scss +0 -3
  374. package/link/src/link.component.spec.ts +0 -23
  375. package/link/src/link.component.ts +0 -48
  376. package/link/src/upd-link.module.ts +0 -17
  377. package/list/index.ts +0 -1
  378. package/list/ng-package.json +0 -7
  379. package/list/src/list.component.html +0 -58
  380. package/list/src/list.component.scss +0 -21
  381. package/list/src/list.component.spec.ts +0 -23
  382. package/list/src/list.component.ts +0 -147
  383. package/list/src/upd-list.module.ts +0 -30
  384. package/ng-package.json +0 -10
  385. package/popover/index.ts +0 -1
  386. package/popover/ng-package.json +0 -7
  387. package/popover/src/popover.component.html +0 -20
  388. package/popover/src/popover.component.scss +0 -8
  389. package/popover/src/popover.component.spec.ts +0 -23
  390. package/popover/src/popover.component.ts +0 -53
  391. package/popover/src/popover.directive.spec.ts +0 -8
  392. package/popover/src/popover.directive.ts +0 -128
  393. package/popover/src/upd-popover.module.ts +0 -20
  394. package/src/lib/upd-components.module.ts +0 -6
  395. package/tsconfig.lib.json +0 -14
  396. package/tsconfig.lib.prod.json +0 -10
  397. package/tsconfig.spec.json +0 -14
  398. /package/button/{src/index.ts → index.d.ts} +0 -0
  399. /package/button/{src/public-api.ts → public-api.d.ts} +0 -0
  400. /package/card/{src/directives/public-api.ts → directives/public-api.d.ts} +0 -0
  401. /package/card/{src/index.ts → index.d.ts} +0 -0
  402. /package/card/{src/public-api.ts → public-api.d.ts} +0 -0
  403. /package/card/{src/types/card-state.type.ts → types/card-state.type.d.ts} +0 -0
  404. /package/card/{src/types/card-style.type.ts → types/card-style.type.d.ts} +0 -0
  405. /package/card/{src/types/hover-effect.type.ts → types/hover-effect.type.d.ts} +0 -0
  406. /package/card/{src/types/ribbon-style.type.ts → types/ribbon-style.type.d.ts} +0 -0
  407. /package/card/{src/types/status-position.type.ts → types/status-position.type.d.ts} +0 -0
  408. /package/dropdown/{src/index.ts → index.d.ts} +0 -0
  409. /package/dropdown/{src/models/dropdown-item.type.ts → models/dropdown-item.type.d.ts} +0 -0
  410. /package/dropdown/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  411. /package/dropdown/{src/public-api.ts → public-api.d.ts} +0 -0
  412. /package/{form-controls/time-picker/src → esm2022/form-controls/time-picker}/assets/i18n/en.json +0 -0
  413. /package/{form-controls/time-picker/src → esm2022/form-controls/time-picker}/assets/i18n/pt.json +0 -0
  414. /package/{layout/src → esm2022/layout}/assets/i18n/en.json +0 -0
  415. /package/{layout/src → esm2022/layout}/assets/i18n/pt.json +0 -0
  416. /package/{list/src → esm2022/list}/assets/i18n/en.json +0 -0
  417. /package/{list/src → esm2022/list}/assets/i18n/pt.json +0 -0
  418. /package/form/{src/index.ts → index.d.ts} +0 -0
  419. /package/form/{src/public-api.ts → public-api.d.ts} +0 -0
  420. /package/form-controls/checkbox/{src/index.ts → index.d.ts} +0 -0
  421. /package/form-controls/input/{src/directives/public-api.ts → directives/public-api.d.ts} +0 -0
  422. /package/form-controls/input/{src/index.ts → index.d.ts} +0 -0
  423. /package/form-controls/input/{src/public-api.ts → public-api.d.ts} +0 -0
  424. /package/form-controls/input/{src/types/input.type.ts → types/input.type.d.ts} +0 -0
  425. /package/form-controls/input/{src/types/loader-position.type.ts → types/loader-position.type.d.ts} +0 -0
  426. /package/form-controls/input/{src/types/public-api.ts → types/public-api.d.ts} +0 -0
  427. /package/form-controls/radio/{src/index.ts → index.d.ts} +0 -0
  428. /package/form-controls/radio/{src/public-api.ts → public-api.d.ts} +0 -0
  429. /package/form-controls/select/{src/index.ts → index.d.ts} +0 -0
  430. /package/form-controls/select/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  431. /package/form-controls/select/{src/public-api.ts → public-api.d.ts} +0 -0
  432. /package/form-controls/textarea/{src/index.ts → index.d.ts} +0 -0
  433. /package/form-controls/textarea/{src/public-api.ts → public-api.d.ts} +0 -0
  434. /package/form-controls/time-picker/{src/index.ts → index.d.ts} +0 -0
  435. /package/form-controls/time-picker/{src/public-api.ts → public-api.d.ts} +0 -0
  436. /package/layout/{src/abstractions/public-api.ts → abstractions/public-api.d.ts} +0 -0
  437. /package/layout/{src/index.ts → index.d.ts} +0 -0
  438. /package/layout/{src/layouts/public-api.ts → layouts/public-api.d.ts} +0 -0
  439. /package/layout/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  440. /package/layout/{src/models/upd-layout.config.ts → models/upd-layout.config.d.ts} +0 -0
  441. /package/layout/{src/pages/auth-flow/public-api.ts → pages/auth-flow/public-api.d.ts} +0 -0
  442. /package/layout/{src/pages/public-api.ts → pages/public-api.d.ts} +0 -0
  443. /package/layout/{src/partials/footer/public-api.ts → partials/footer/public-api.d.ts} +0 -0
  444. /package/layout/{src/partials/header/header-style.type.ts → partials/header/header-style.type.d.ts} +0 -0
  445. /package/layout/{src/partials/header/public-api.ts → partials/header/public-api.d.ts} +0 -0
  446. /package/layout/{src/partials/page-header/public-api.ts → partials/page-header/public-api.d.ts} +0 -0
  447. /package/layout/{src/partials/public-api.ts → partials/public-api.d.ts} +0 -0
  448. /package/layout/{src/partials/sidebar/public-api.ts → partials/sidebar/public-api.d.ts} +0 -0
  449. /package/layout/{src/public-api.ts → public-api.d.ts} +0 -0
  450. /package/layout/{src/services/public-api.ts → services/public-api.d.ts} +0 -0
  451. /package/{link/src/index.ts → lib/index.d.ts} +0 -0
  452. /package/{src/lib/public-api.ts → lib/public-api.d.ts} +0 -0
  453. /package/{src/lib/types/component-size.type.ts → lib/types/component-size.type.d.ts} +0 -0
  454. /package/{src/lib/types/public-api.ts → lib/types/public-api.d.ts} +0 -0
  455. /package/{src/lib/types/validation-status.type.ts → lib/types/validation-status.type.d.ts} +0 -0
  456. /package/{list/src/index.ts → link/index.d.ts} +0 -0
  457. /package/link/{src/public-api.ts → public-api.d.ts} +0 -0
  458. /package/link/{src/target.type.ts → target.type.d.ts} +0 -0
  459. /package/{popover/src/index.ts → list/index.d.ts} +0 -0
  460. /package/list/{src/models/badge-position.type.ts → models/badge-position.type.d.ts} +0 -0
  461. /package/list/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  462. /package/list/{src/public-api.ts → public-api.d.ts} +0 -0
  463. /package/{src/lib/index.ts → popover/index.d.ts} +0 -0
  464. /package/popover/{src/public-api.ts → public-api.d.ts} +0 -0
  465. /package/{src/public-api.ts → public-api.d.ts} +0 -0
@@ -0,0 +1,670 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Directive, Component, NgModule, TemplateRef, ViewEncapsulation, HostBinding, ContentChild, Input, ChangeDetectorRef, InjectionToken, Injectable, Inject } from '@angular/core';
3
+ import { BaseComponent, LayoutService, UpdCoreLayoutConfigService, UpdCoreLayoutModule } from '@updevs/sdk/layout';
4
+ import * as i1 from '@angular/common';
5
+ import { CommonModule } from '@angular/common';
6
+ import * as i1$4 from '@angular/router';
7
+ import { Router, NavigationStart, RouterModule } from '@angular/router';
8
+ import * as i1$2 from '@updevs/icons';
9
+ import { UpdIconsModule } from '@updevs/icons';
10
+ import * as i1$3 from '@updevs/components/button';
11
+ import { UpdButtonModule } from '@updevs/components/button';
12
+ import * as i2 from '@updevs/components/link';
13
+ import { UpdLinkModule } from '@updevs/components/link';
14
+ import * as i1$1 from '@ngneat/transloco';
15
+ import { TranslocoService, TranslocoModule } from '@ngneat/transloco';
16
+ import { RouteDataModel } from '@updevs/sdk/routes';
17
+ import { filter } from 'rxjs';
18
+ import { AuthService } from '@updevs/sdk/security';
19
+ import * as i3 from '@angular/forms';
20
+ import { FormsModule } from '@angular/forms';
21
+
22
+ /**
23
+ * Basic page structure.
24
+ */
25
+ // eslint-disable-next-line @angular-eslint/directive-class-suffix
26
+ class BasePageComponent extends BaseComponent {
27
+ constructor() {
28
+ super(...arguments);
29
+ this._layoutService = inject(LayoutService);
30
+ }
31
+ ngOnDestroy() {
32
+ super.ngOnDestroy();
33
+ // TODO: clear subheader.
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BasePageComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: BasePageComponent, usesInheritance: true, ngImport: i0 }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BasePageComponent, decorators: [{
39
+ type: Directive,
40
+ args: [{}]
41
+ }] });
42
+
43
+ class BlankLayoutComponent {
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: BlankLayoutComponent, selector: "upd-blank-layout", ngImport: i0, template: "<p>blank-layout works!</p>\n", styles: [""] }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'upd-blank-layout', template: "<p>blank-layout works!</p>\n" }]
50
+ }] });
51
+
52
+ class BlankLayoutModule {
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
54
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutModule, declarations: [BlankLayoutComponent], imports: [CommonModule], exports: [BlankLayoutComponent] }); }
55
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutModule, imports: [CommonModule] }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutModule, decorators: [{
58
+ type: NgModule,
59
+ args: [{
60
+ imports: [
61
+ CommonModule
62
+ ],
63
+ declarations: [
64
+ BlankLayoutComponent
65
+ ],
66
+ exports: [
67
+ BlankLayoutComponent
68
+ ]
69
+ }]
70
+ }] });
71
+
72
+ var Footer$1 = {
73
+ AllRightsReserved: "All rights reserved."
74
+ };
75
+ var en = {
76
+ Footer: Footer$1
77
+ };
78
+
79
+ var en$1 = /*#__PURE__*/Object.freeze({
80
+ __proto__: null,
81
+ Footer: Footer$1,
82
+ default: en
83
+ });
84
+
85
+ var Footer = {
86
+ AllRightsReserved: "Todos os direitos reservados."
87
+ };
88
+ var pt = {
89
+ Footer: Footer
90
+ };
91
+
92
+ var pt$1 = /*#__PURE__*/Object.freeze({
93
+ __proto__: null,
94
+ Footer: Footer,
95
+ default: pt
96
+ });
97
+
98
+ class FooterCopyrightDirective {
99
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FooterCopyrightDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
100
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: FooterCopyrightDirective, selector: "[updFooterCopyright]", ngImport: i0 }); }
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FooterCopyrightDirective, decorators: [{
103
+ type: Directive,
104
+ args: [{
105
+ selector: '[updFooterCopyright]'
106
+ }]
107
+ }] });
108
+
109
+ class FooterComponent extends BaseComponent {
110
+ constructor() {
111
+ super(...arguments);
112
+ this.wrapperClasses = '';
113
+ /**
114
+ * Whether the footer will always be shown.
115
+ */
116
+ this.isSticky = false;
117
+ /**
118
+ * Whether the footer is transparent or not.
119
+ */
120
+ this.isTransparent = true;
121
+ /**
122
+ * Links.
123
+ */
124
+ this.links = [];
125
+ /**
126
+ * Current year.
127
+ */
128
+ this.currentYear = new Date().getFullYear();
129
+ /**
130
+ * Text displayed in the copyright section before the symbol and year.
131
+ */
132
+ this.copyrightPrefix = 'Copyright';
133
+ /**
134
+ * Text displayed in the copyright section after the symbol and year.
135
+ */
136
+ this.copyrightSuffix = '';
137
+ this.baseWrapperClasses = 'footer d-print-none';
138
+ this.translocoService = inject(TranslocoService);
139
+ }
140
+ ngOnInit() {
141
+ const footerCpsSub = this.translocoService.selectTranslate('Footer.AllRightsReserved').subscribe(r => this.copyrightSuffix = r);
142
+ this.updateWrapperClasses();
143
+ this.addSubscriptions(footerCpsSub);
144
+ }
145
+ ngOnChanges(changes) {
146
+ if (!!changes['isSticky'].currentValue || !!changes['isTransparent'].currentValue) {
147
+ this.updateWrapperClasses();
148
+ }
149
+ }
150
+ updateWrapperClasses() {
151
+ const stickyBottomCls = this.isSticky ? ' sticky-bottom' : '';
152
+ const transparentCls = this.isTransparent ? ' footer-transparent' : '';
153
+ this.wrapperClasses = `${this.baseWrapperClasses}${stickyBottomCls}${transparentCls}`;
154
+ }
155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FooterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: FooterComponent, selector: "upd-footer", host: { properties: { "class": "this.wrapperClasses" } }, queries: [{ propertyName: "footerCopyrightTemplate", first: true, predicate: FooterCopyrightDirective, descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n <ng-container *transloco=\"let t\">\n {{ t('Layout.Aloha') }}\n </ng-container>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n @if (!!footerCopyrightTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerCopyrightTemplate\"></ng-container>\n } @else {\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n {{ copyrightPrefix }} &copy; {{ currentYear }} {{ copyrightSuffix }}\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }], encapsulation: i0.ViewEncapsulation.None }); }
157
+ }
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FooterComponent, decorators: [{
159
+ type: Component,
160
+ args: [{ selector: 'upd-footer', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n <ng-container *transloco=\"let t\">\n {{ t('Layout.Aloha') }}\n </ng-container>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n @if (!!footerCopyrightTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerCopyrightTemplate\"></ng-container>\n } @else {\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n {{ copyrightPrefix }} &copy; {{ currentYear }} {{ copyrightSuffix }}\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n }\n </div>\n </div>\n</div>\n" }]
161
+ }], propDecorators: { wrapperClasses: [{
162
+ type: HostBinding,
163
+ args: ['class']
164
+ }], footerCopyrightTemplate: [{
165
+ type: ContentChild,
166
+ args: [FooterCopyrightDirective, { read: TemplateRef, static: true }]
167
+ }] } });
168
+
169
+ class HeaderComponent extends BaseComponent {
170
+ constructor() {
171
+ super(...arguments);
172
+ this.wrapperClasses = '';
173
+ this.style = 'light';
174
+ this.showSearchBar = true;
175
+ this.nextThemeIcon = 'moon';
176
+ this.nextThemeColor = 'black';
177
+ this.currentNotificationsIcon = 'bell';
178
+ this.hasNewNotifications = false;
179
+ this.showNotifications = false;
180
+ this.showLanguageSwitcher = true; // TODO: add on config.
181
+ this.showUserMenu = false;
182
+ this.baseWrapperClasses = 'navbar navbar-expand-md d-none d-lg-flex d-print-none';
183
+ this.coreLayoutConfigService = inject(UpdCoreLayoutConfigService);
184
+ this.layoutService = inject(LayoutService);
185
+ this.translocoService = inject(TranslocoService);
186
+ }
187
+ ngOnInit() {
188
+ this.updateWrapperClasses();
189
+ if (this.coreLayoutConfigService.config.showNotificationsButton) {
190
+ this.setupNotifications();
191
+ }
192
+ if (this.coreLayoutConfigService.config.showUserMenu) {
193
+ this.showUserMenu = true;
194
+ }
195
+ }
196
+ ngOnChanges(changes) {
197
+ if (!!changes['style'].currentValue) {
198
+ this.updateWrapperClasses();
199
+ }
200
+ }
201
+ switchTheme() {
202
+ const isDarkMode = this.nextThemeIcon === 'moon';
203
+ this.nextThemeIcon = isDarkMode ? 'sun' : 'moon';
204
+ this.nextThemeColor = isDarkMode ? 'white' : 'black';
205
+ this.layoutService.toggleDarkMode(isDarkMode);
206
+ }
207
+ // TODO: implement.
208
+ switchLanguage() {
209
+ const currentLang = this.translocoService.getActiveLang();
210
+ this.translocoService.setActiveLang(currentLang === 'en' ? 'pt' : 'en');
211
+ }
212
+ openNotifications() {
213
+ this.updateNotificationsIcon();
214
+ }
215
+ setupNotifications() {
216
+ this.showNotifications = true;
217
+ }
218
+ updateNotificationsIcon() {
219
+ this.currentNotificationsIcon = this.currentNotificationsIcon === 'bell' ? 'bell-ringing' : 'bell';
220
+ this.hasNewNotifications = !this.hasNewNotifications;
221
+ }
222
+ updateWrapperClasses() {
223
+ this.wrapperClasses = `${this.baseWrapperClasses} navbar-${this.style}`;
224
+ }
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: HeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: HeaderComponent, selector: "upd-header", inputs: { style: "style", showSearchBar: "showSearchBar" }, host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon\"></upd-icon>\n </upd-link>\n </div>\n @if (showLanguageSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchLanguage()\">\n <upd-icon tablerIcon=\"flag\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (showNotifications) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"openNotifications()\">\n <upd-icon [tablerIcon]=\"currentNotificationsIcon\"></upd-icon>\n @if (hasNewNotifications) {\n <span class=\"badge bg-red\"></span>\n }\n </upd-link>\n <div class=\"dropdown-menu dropdown-menu-arrow dropdown-menu-end dropdown-menu-card\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">Last updates</h3>\n </div>\n <div class=\"list-group list-group-flush list-group-hoverable\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span\n class=\"status-dot status-dot-animated bg-red d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 1</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Change deprecated html tags to text decoration classes (#29604)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span class=\"status-dot d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 2</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n justify-content:between \u21D2 justify-content:space-between (#29734)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions show\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-yellow\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span class=\"status-dot d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 3</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Update change-version.js (#29736)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span\n class=\"status-dot status-dot-animated bg-green d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 4</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Regenerate package-lock.json (#29730)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n @if (showUserMenu) {\n <div class=\"nav-item dropdown\">\n <a href=\"#\" class=\"nav-link d-flex lh-1 text-reset p-0\" data-bs-toggle=\"dropdown\"\n aria-label=\"Open user menu\">\n <!--<span class=\"avatar avatar-sm\" style=\"background-image: url(./static/avatars/000m.jpg)\"></span>-->\n <span class=\"avatar avatar-sm\"></span>\n <div class=\"d-none d-xl-block ps-2\">\n <div>Eros Stein</div>\n <div class=\"mt-1 small text-muted\">Administrator</div>\n </div>\n </a>\n <div class=\"dropdown-menu dropdown-menu-end dropdown-menu-arrow\">\n <a href=\"#\" class=\"dropdown-item\">Status</a>\n <a href=\"./profile.html\" class=\"dropdown-item\">Profile</a>\n <a href=\"#\" class=\"dropdown-item\">Feedback</a>\n <div class=\"dropdown-divider\"></div>\n <a href=\"./settings.html\" class=\"dropdown-item\">Settings</a>\n <a href=\"./sign-in.html\" class=\"dropdown-item\">Logout</a>\n </div>\n </div>\n }\n </div>\n @if (showSearchBar) {\n <div class=\"collapse navbar-collapse\">\n <div>\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"Search\u2026\">\n </div>\n </form>\n </div>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "removeDefaultClasses", "customClasses", "tablerIcon", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i2.LinkComponent, selector: "upd-link", inputs: ["href", "target", "customClasses", "isNavigation"], outputs: ["clicked"] }], encapsulation: i0.ViewEncapsulation.None }); }
227
+ }
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: HeaderComponent, decorators: [{
229
+ type: Component,
230
+ args: [{ selector: 'upd-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon\"></upd-icon>\n </upd-link>\n </div>\n @if (showLanguageSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchLanguage()\">\n <upd-icon tablerIcon=\"flag\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (showNotifications) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"openNotifications()\">\n <upd-icon [tablerIcon]=\"currentNotificationsIcon\"></upd-icon>\n @if (hasNewNotifications) {\n <span class=\"badge bg-red\"></span>\n }\n </upd-link>\n <div class=\"dropdown-menu dropdown-menu-arrow dropdown-menu-end dropdown-menu-card\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">Last updates</h3>\n </div>\n <div class=\"list-group list-group-flush list-group-hoverable\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span\n class=\"status-dot status-dot-animated bg-red d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 1</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Change deprecated html tags to text decoration classes (#29604)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span class=\"status-dot d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 2</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n justify-content:between \u21D2 justify-content:space-between (#29734)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions show\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-yellow\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span class=\"status-dot d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 3</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Update change-version.js (#29736)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span\n class=\"status-dot status-dot-animated bg-green d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 4</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Regenerate package-lock.json (#29730)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n @if (showUserMenu) {\n <div class=\"nav-item dropdown\">\n <a href=\"#\" class=\"nav-link d-flex lh-1 text-reset p-0\" data-bs-toggle=\"dropdown\"\n aria-label=\"Open user menu\">\n <!--<span class=\"avatar avatar-sm\" style=\"background-image: url(./static/avatars/000m.jpg)\"></span>-->\n <span class=\"avatar avatar-sm\"></span>\n <div class=\"d-none d-xl-block ps-2\">\n <div>Eros Stein</div>\n <div class=\"mt-1 small text-muted\">Administrator</div>\n </div>\n </a>\n <div class=\"dropdown-menu dropdown-menu-end dropdown-menu-arrow\">\n <a href=\"#\" class=\"dropdown-item\">Status</a>\n <a href=\"./profile.html\" class=\"dropdown-item\">Profile</a>\n <a href=\"#\" class=\"dropdown-item\">Feedback</a>\n <div class=\"dropdown-divider\"></div>\n <a href=\"./settings.html\" class=\"dropdown-item\">Settings</a>\n <a href=\"./sign-in.html\" class=\"dropdown-item\">Logout</a>\n </div>\n </div>\n }\n </div>\n @if (showSearchBar) {\n <div class=\"collapse navbar-collapse\">\n <div>\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"Search\u2026\">\n </div>\n </form>\n </div>\n </div>\n }\n</div>\n" }]
231
+ }], propDecorators: { wrapperClasses: [{
232
+ type: HostBinding,
233
+ args: ['class']
234
+ }], style: [{
235
+ type: Input
236
+ }], showSearchBar: [{
237
+ type: Input
238
+ }] } });
239
+
240
+ class SidebarComponent extends BaseComponent {
241
+ constructor() {
242
+ super(...arguments);
243
+ this.wrapperClasses = 'navbar navbar-vertical navbar-expand-lg';
244
+ this.theme = 'dark';
245
+ this.menuItems = [];
246
+ this.router = inject(Router);
247
+ }
248
+ ngOnInit() {
249
+ // TODO: remove demo code.
250
+ const sampleCardsItem = new RouteDataModel({
251
+ title: 'Sample cards',
252
+ icon: { tablerIcon: 'home' }
253
+ });
254
+ const cardActionsItem = new RouteDataModel({
255
+ title: 'Card actions',
256
+ icon: { tablerIcon: 'folder' }
257
+ });
258
+ const emptyPageItem = new RouteDataModel({
259
+ title: 'Empty page',
260
+ icon: { tablerIcon: 'home' }
261
+ });
262
+ const cardsItem = new RouteDataModel({
263
+ title: 'Cards',
264
+ icon: { tablerIcon: 'user' },
265
+ children: [
266
+ sampleCardsItem,
267
+ cardActionsItem
268
+ ]
269
+ });
270
+ const interfaceItem = new RouteDataModel({
271
+ title: 'Interface',
272
+ icon: { tablerIcon: 'device-desktop' },
273
+ children: [
274
+ emptyPageItem,
275
+ cardsItem
276
+ ]
277
+ });
278
+ sampleCardsItem.parent = cardsItem;
279
+ cardActionsItem.parent = cardsItem;
280
+ emptyPageItem.parent = interfaceItem;
281
+ cardsItem.parent = interfaceItem;
282
+ this.menuItems = [
283
+ new RouteDataModel({
284
+ title: 'Home',
285
+ icon: { tablerIcon: 'home' }
286
+ }),
287
+ new RouteDataModel({
288
+ title: 'Archives',
289
+ icon: { tablerIcon: 'folder' }
290
+ }),
291
+ interfaceItem,
292
+ new RouteDataModel({
293
+ title: 'Library',
294
+ icon: { tablerIcon: 'building' }
295
+ })
296
+ ];
297
+ // END demo code
298
+ const routerSub = this.router.events.pipe(filter(event => event instanceof NavigationStart)).subscribe(event => this.updateActiveRoute(event.url));
299
+ this.updateActiveRoute(this.router.url);
300
+ this.addSubscriptions(routerSub);
301
+ }
302
+ onMenuItemClick(item) {
303
+ this.resetMenuState(this.menuItems);
304
+ item.isActive = true;
305
+ this.updateParents(item);
306
+ if (!!item.clickFunction) {
307
+ item.clickFunction();
308
+ return;
309
+ }
310
+ if ((item.children?.length || 0) > 0) {
311
+ return;
312
+ }
313
+ this.router.navigate(item.getFullPath()).then();
314
+ }
315
+ hasChildren(item) {
316
+ return (item.children?.length || 0) > 0;
317
+ }
318
+ findActiveNode(item, fullPath) {
319
+ if (item.fullPath === fullPath) {
320
+ return item;
321
+ }
322
+ else if (item.children.length > 0) {
323
+ let result;
324
+ for (let i = 0; !result && i < item.children.length; i++) {
325
+ result = this.findActiveNode(item.children[i], fullPath);
326
+ }
327
+ return result;
328
+ }
329
+ return undefined;
330
+ }
331
+ updateActiveRoute(newPath) {
332
+ this.resetMenuState(this.menuItems);
333
+ let item;
334
+ for (const mi of this.menuItems) {
335
+ item = this.findActiveNode(mi, newPath);
336
+ if (!!item) {
337
+ break;
338
+ }
339
+ }
340
+ while (!!item) {
341
+ item.isActive = true;
342
+ item = item.parent;
343
+ }
344
+ }
345
+ resetMenuState(items) {
346
+ items.forEach(i => {
347
+ i.isActive = false;
348
+ if (i.children.length > 0) {
349
+ this.resetMenuState(i.children);
350
+ }
351
+ });
352
+ }
353
+ updateParents(menuItem) {
354
+ let item = menuItem;
355
+ while (!!item) {
356
+ item.isActive = true;
357
+ item = item.parent;
358
+ }
359
+ }
360
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SidebarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
361
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: SidebarComponent, selector: "upd-sidebar", host: { properties: { "class": "this.wrapperClasses", "attr.data-bs-theme": "this.theme" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\"/>\n </a>\n </h1>\n <div class=\"collapse navbar-collapse\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\">\n </ng-container>\n </li>\n }\n </ul>\n </div>\n</div>\n\n<ng-template #itemTpl let-item=\"menuItem\">\n <upd-link [isNavigation]=\"true\" (clicked)=\"onMenuItemClick(item)\"\n [customClasses]=\"[hasChildren(item) ? 'dropdown-toggle' : '', item.isActive ? 'show' : '']\">\n <span class=\"nav-link-icon d-md-none d-lg-inline-block\">\n <upd-icon [model]=\"item.icon\"></upd-icon>\n </span>\n <span class=\"nav-link-title\">{{ item.title }}</span>\n </upd-link>\n @if (hasChildren(item)) {\n <ng-container [ngTemplateOutlet]=\"childrenTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\">\n </ng-container>\n }\n</ng-template>\n\n<ng-template #childrenTpl let-item=\"menuItem\">\n <div class=\"dropdown-menu\" [class.show]=\"item.isActive\">\n <div class=\"dropdown-menu-columns\">\n <div class=\"dropdown-menu-column\">\n @for (child of item.children; track child) {\n @if (!hasChildren(child)) {\n <upd-link (clicked)=\"onMenuItemClick(child)\"\n [customClasses]=\"['dropdown-item', child.isActive ? 'active' : '']\">\n {{ child.title }}\n </upd-link>\n } @else {\n <div class=\"dropend\">\n <upd-link (clicked)=\"onMenuItemClick(child)\"\n [customClasses]=\"['dropdown-item', 'dropdown-toggle', child.isActive ? 'active' : '']\">\n {{ child.title }}\n </upd-link>\n <div class=\"dropdown-menu\" [class.show]=\"child.isActive\">\n @for (grandchild of child.children; track grandchild) {\n <upd-link (clicked)=\"onMenuItemClick(grandchild)\"\n [customClasses]=\"['dropdown-item', grandchild.isActive ? 'active' : '']\">\n {{ grandchild.title }}\n </upd-link>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "removeDefaultClasses", "customClasses", "tablerIcon", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i2.LinkComponent, selector: "upd-link", inputs: ["href", "target", "customClasses", "isNavigation"], outputs: ["clicked"] }], encapsulation: i0.ViewEncapsulation.None }); }
362
+ }
363
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SidebarComponent, decorators: [{
364
+ type: Component,
365
+ args: [{ selector: 'upd-sidebar', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\"/>\n </a>\n </h1>\n <div class=\"collapse navbar-collapse\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\">\n </ng-container>\n </li>\n }\n </ul>\n </div>\n</div>\n\n<ng-template #itemTpl let-item=\"menuItem\">\n <upd-link [isNavigation]=\"true\" (clicked)=\"onMenuItemClick(item)\"\n [customClasses]=\"[hasChildren(item) ? 'dropdown-toggle' : '', item.isActive ? 'show' : '']\">\n <span class=\"nav-link-icon d-md-none d-lg-inline-block\">\n <upd-icon [model]=\"item.icon\"></upd-icon>\n </span>\n <span class=\"nav-link-title\">{{ item.title }}</span>\n </upd-link>\n @if (hasChildren(item)) {\n <ng-container [ngTemplateOutlet]=\"childrenTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\">\n </ng-container>\n }\n</ng-template>\n\n<ng-template #childrenTpl let-item=\"menuItem\">\n <div class=\"dropdown-menu\" [class.show]=\"item.isActive\">\n <div class=\"dropdown-menu-columns\">\n <div class=\"dropdown-menu-column\">\n @for (child of item.children; track child) {\n @if (!hasChildren(child)) {\n <upd-link (clicked)=\"onMenuItemClick(child)\"\n [customClasses]=\"['dropdown-item', child.isActive ? 'active' : '']\">\n {{ child.title }}\n </upd-link>\n } @else {\n <div class=\"dropend\">\n <upd-link (clicked)=\"onMenuItemClick(child)\"\n [customClasses]=\"['dropdown-item', 'dropdown-toggle', child.isActive ? 'active' : '']\">\n {{ child.title }}\n </upd-link>\n <div class=\"dropdown-menu\" [class.show]=\"child.isActive\">\n @for (grandchild of child.children; track grandchild) {\n <upd-link (clicked)=\"onMenuItemClick(grandchild)\"\n [customClasses]=\"['dropdown-item', grandchild.isActive ? 'active' : '']\">\n {{ grandchild.title }}\n </upd-link>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n" }]
366
+ }], propDecorators: { wrapperClasses: [{
367
+ type: HostBinding,
368
+ args: ['class']
369
+ }], theme: [{
370
+ type: HostBinding,
371
+ args: ['attr.data-bs-theme']
372
+ }] } });
373
+
374
+ class PageHeaderComponent {
375
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
376
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: PageHeaderComponent, selector: "upd-page-header", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model.titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model.title }}\n </h2>\n </div>\n @if ((model.actionButtons?.length || 0) > 0) {\n <div class=\"col-auto ms-auto d-print-none\">\n <div class=\"btn-list\">\n @for (btn of model.actionButtons; track btn) {\n <upd-button [model]=\"btn!\"></upd-button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1$3.ButtonComponent, selector: "upd-button", inputs: ["text", "model", "colorStyle", "brandColorStyle", "customClasses", "isActive", "isDisabled", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "shouldIgnoreBtnClass"], outputs: ["clicked"] }] }); }
377
+ }
378
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PageHeaderComponent, decorators: [{
379
+ type: Component,
380
+ args: [{ selector: 'upd-page-header', template: "<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model.titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model.title }}\n </h2>\n </div>\n @if ((model.actionButtons?.length || 0) > 0) {\n <div class=\"col-auto ms-auto d-print-none\">\n <div class=\"btn-list\">\n @for (btn of model.actionButtons; track btn) {\n <upd-button [model]=\"btn!\"></upd-button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n" }]
381
+ }], propDecorators: { model: [{
382
+ type: Input
383
+ }] } });
384
+
385
+ class VerticalSidebarLayoutComponent extends BaseComponent {
386
+ constructor() {
387
+ super(...arguments);
388
+ this.showPageHeader = false;
389
+ this.changeDetectorRef = inject(ChangeDetectorRef);
390
+ this.layoutService = inject(LayoutService);
391
+ }
392
+ ngOnInit() {
393
+ const pHeaderSub = this.layoutService.onPageHeaderChange.subscribe(ph => {
394
+ this.showPageHeader = !!ph;
395
+ this.pageHeader = ph;
396
+ this.changeDetectorRef.detectChanges();
397
+ });
398
+ this.addSubscriptions(pHeaderSub);
399
+ }
400
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: VerticalSidebarLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
401
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: VerticalSidebarLayoutComponent, selector: "upd-vertical-sidebar-layout", usesInheritance: true, ngImport: i0, template: "<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (showPageHeader) {\n <upd-page-header [model]=\"pageHeader!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: FooterComponent, selector: "upd-footer" }, { kind: "component", type: HeaderComponent, selector: "upd-header", inputs: ["style", "showSearchBar"] }, { kind: "component", type: SidebarComponent, selector: "upd-sidebar" }, { kind: "component", type: PageHeaderComponent, selector: "upd-page-header", inputs: ["model"] }], encapsulation: i0.ViewEncapsulation.None }); }
402
+ }
403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: VerticalSidebarLayoutComponent, decorators: [{
404
+ type: Component,
405
+ args: [{ selector: 'upd-vertical-sidebar-layout', encapsulation: ViewEncapsulation.None, template: "<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (showPageHeader) {\n <upd-page-header [model]=\"pageHeader!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n" }]
406
+ }] });
407
+
408
+ class VerticalSidebarLayoutModule {
409
+ constructor(translocoService) {
410
+ translocoService.setTranslation(en$1, 'en');
411
+ translocoService.setTranslation(pt$1, 'pt');
412
+ }
413
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: VerticalSidebarLayoutModule, deps: [{ token: i1$1.TranslocoService }], target: i0.ɵɵFactoryTarget.NgModule }); }
414
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: VerticalSidebarLayoutModule, declarations: [VerticalSidebarLayoutComponent,
415
+ FooterComponent,
416
+ HeaderComponent,
417
+ SidebarComponent,
418
+ PageHeaderComponent], imports: [CommonModule,
419
+ RouterModule,
420
+ TranslocoModule,
421
+ UpdIconsModule,
422
+ UpdCoreLayoutModule,
423
+ UpdButtonModule,
424
+ UpdLinkModule], exports: [VerticalSidebarLayoutComponent,
425
+ FooterComponent,
426
+ HeaderComponent,
427
+ SidebarComponent,
428
+ PageHeaderComponent] }); }
429
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: VerticalSidebarLayoutModule, providers: [
430
+ FooterCopyrightDirective
431
+ ], imports: [CommonModule,
432
+ RouterModule,
433
+ TranslocoModule,
434
+ UpdIconsModule,
435
+ UpdCoreLayoutModule,
436
+ UpdButtonModule,
437
+ UpdLinkModule] }); }
438
+ }
439
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: VerticalSidebarLayoutModule, decorators: [{
440
+ type: NgModule,
441
+ args: [{
442
+ imports: [
443
+ CommonModule,
444
+ RouterModule,
445
+ TranslocoModule,
446
+ UpdIconsModule,
447
+ UpdCoreLayoutModule,
448
+ UpdButtonModule,
449
+ UpdLinkModule
450
+ ],
451
+ declarations: [
452
+ VerticalSidebarLayoutComponent,
453
+ FooterComponent,
454
+ HeaderComponent,
455
+ SidebarComponent,
456
+ PageHeaderComponent
457
+ ],
458
+ exports: [
459
+ VerticalSidebarLayoutComponent,
460
+ FooterComponent,
461
+ HeaderComponent,
462
+ SidebarComponent,
463
+ PageHeaderComponent
464
+ ],
465
+ providers: [
466
+ FooterCopyrightDirective
467
+ ]
468
+ }]
469
+ }], ctorParameters: () => [{ type: i1$1.TranslocoService }] });
470
+
471
+ class LoggedOutComponent {
472
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LoggedOutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
473
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: LoggedOutComponent, selector: "upd-logged-out", ngImport: i0, template: "<p>logged-out works!</p>\n", styles: [""] }); }
474
+ }
475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LoggedOutComponent, decorators: [{
476
+ type: Component,
477
+ args: [{ selector: 'upd-logged-out', template: "<p>logged-out works!</p>\n" }]
478
+ }] });
479
+
480
+ class LoginComponent {
481
+ constructor() {
482
+ this.layout = 'centered-box';
483
+ this.username = '';
484
+ this.password = '';
485
+ this.authService = inject(AuthService);
486
+ this.layoutService = inject(LayoutService);
487
+ this.layoutService.addBodyClasses('border-top-wide', 'border-primary', 'd-flex', 'flex-column');
488
+ }
489
+ login() {
490
+ this.authService.login(this.username, this.password).subscribe();
491
+ }
492
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
493
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: LoginComponent, selector: "upd-login", ngImport: i0, template: "<div class=\"page page-center\">\n @switch (layout) {\n @case ('centered-box') {\n <div class=\"container container-tight py-4\">\n <ng-container [ngTemplateOutlet]=\"loginCard\"></ng-container>\n </div>\n }\n @case ('box-with-picture') {\n <div class=\"container container-normal py-4\">\n <div class=\"row align-items-center g-4\">\n <div class=\"col-lg\">\n <div class=\"container-tight\">\n <ng-container [ngTemplateOutlet]=\"loginCard\"></ng-container>\n </div>\n </div>\n <div class=\"col-lg d-none d-lg-block\">\n <img height=\"300\" class=\"d-block mx-auto upd-right-login-image\"/>\n </div>\n </div>\n </div>\n }\n }\n</div>\n\n<ng-template #loginCard>\n <div class=\"text-center mb-4\">\n <a href=\".\" class=\"navbar-brand navbar-brand-autodark\">\n <img height=\"36\" class=\"navbar-brand-image upd-brand-logo\"/>\n </a>\n </div>\n <div class=\"card card-md\">\n <div class=\"card-body\">\n <h2 class=\"h2 text-center mb-4\" i18n>Login to your account</h2>\n <form action=\"./\" method=\"get\" autocomplete=\"off\" novalidate>\n <div class=\"mb-3\">\n <label class=\"form-label\">Email address</label>\n <input type=\"email\" class=\"form-control\" name=\"username\" [(ngModel)]=\"username\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">\n Password\n <span class=\"form-label-description\">\n <a href=\"./forgot-password.html\" i18n>I forgot my password</a>\n </span>\n </label>\n <div class=\"input-group input-group-flat\">\n <input type=\"password\" class=\"form-control\" name=\"password\" [(ngModel)]=\"password\">\n <span class=\"input-group-text\">\n <a href=\"#\" class=\"link-secondary\" title=\"Show password\" data-bs-toggle=\"tooltip\"><!-- Download SVG icon from http://tabler-icons.io/i/eye -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\"\n d=\"M0 0h24v24H0z\" fill=\"none\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/><path\n d=\"M22 12c-2.667 4.667 -6 7 -10 7s-7.333 -2.333 -10 -7c2.667 -4.667 6 -7 10 -7s7.333 2.333 10 7\"/></svg>\n </a>\n </span>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\"/>\n <span class=\"form-check-label\" i18n>Remember me on this device</span>\n </label>\n </div>\n <div class=\"form-footer\">\n <upd-button (clicked)=\"login()\" customClasses=\"w-100\">\n <span i18n>Sign in</span>\n </upd-button>\n </div>\n </form>\n </div>\n <div class=\"hr-text\" i18n>or</div>\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col\"><a href=\"#\" class=\"btn w-100\">\n <!-- Download SVG icon from http://tabler-icons.io/i/brand-github -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-github\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5\"/>\n </svg>\n Login with Github\n </a></div>\n <div class=\"col\"><a href=\"#\" class=\"btn w-100\">\n <!-- Download SVG icon from http://tabler-icons.io/i/brand-twitter -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-twitter\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z\"/>\n </svg>\n Login with Twitter\n </a></div>\n </div>\n </div>\n </div>\n <div class=\"text-center text-muted mt-3\">\n Don't have account yet? <a href=\"./sign-up.html\" tabindex=\"-1\" i18n>Sign up</a>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$3.ButtonComponent, selector: "upd-button", inputs: ["text", "model", "colorStyle", "brandColorStyle", "customClasses", "isActive", "isDisabled", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "shouldIgnoreBtnClass"], outputs: ["clicked"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
494
+ }
495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LoginComponent, decorators: [{
496
+ type: Component,
497
+ args: [{ selector: 'upd-login', encapsulation: ViewEncapsulation.None, template: "<div class=\"page page-center\">\n @switch (layout) {\n @case ('centered-box') {\n <div class=\"container container-tight py-4\">\n <ng-container [ngTemplateOutlet]=\"loginCard\"></ng-container>\n </div>\n }\n @case ('box-with-picture') {\n <div class=\"container container-normal py-4\">\n <div class=\"row align-items-center g-4\">\n <div class=\"col-lg\">\n <div class=\"container-tight\">\n <ng-container [ngTemplateOutlet]=\"loginCard\"></ng-container>\n </div>\n </div>\n <div class=\"col-lg d-none d-lg-block\">\n <img height=\"300\" class=\"d-block mx-auto upd-right-login-image\"/>\n </div>\n </div>\n </div>\n }\n }\n</div>\n\n<ng-template #loginCard>\n <div class=\"text-center mb-4\">\n <a href=\".\" class=\"navbar-brand navbar-brand-autodark\">\n <img height=\"36\" class=\"navbar-brand-image upd-brand-logo\"/>\n </a>\n </div>\n <div class=\"card card-md\">\n <div class=\"card-body\">\n <h2 class=\"h2 text-center mb-4\" i18n>Login to your account</h2>\n <form action=\"./\" method=\"get\" autocomplete=\"off\" novalidate>\n <div class=\"mb-3\">\n <label class=\"form-label\">Email address</label>\n <input type=\"email\" class=\"form-control\" name=\"username\" [(ngModel)]=\"username\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">\n Password\n <span class=\"form-label-description\">\n <a href=\"./forgot-password.html\" i18n>I forgot my password</a>\n </span>\n </label>\n <div class=\"input-group input-group-flat\">\n <input type=\"password\" class=\"form-control\" name=\"password\" [(ngModel)]=\"password\">\n <span class=\"input-group-text\">\n <a href=\"#\" class=\"link-secondary\" title=\"Show password\" data-bs-toggle=\"tooltip\"><!-- Download SVG icon from http://tabler-icons.io/i/eye -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\"\n d=\"M0 0h24v24H0z\" fill=\"none\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/><path\n d=\"M22 12c-2.667 4.667 -6 7 -10 7s-7.333 -2.333 -10 -7c2.667 -4.667 6 -7 10 -7s7.333 2.333 10 7\"/></svg>\n </a>\n </span>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\"/>\n <span class=\"form-check-label\" i18n>Remember me on this device</span>\n </label>\n </div>\n <div class=\"form-footer\">\n <upd-button (clicked)=\"login()\" customClasses=\"w-100\">\n <span i18n>Sign in</span>\n </upd-button>\n </div>\n </form>\n </div>\n <div class=\"hr-text\" i18n>or</div>\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col\"><a href=\"#\" class=\"btn w-100\">\n <!-- Download SVG icon from http://tabler-icons.io/i/brand-github -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-github\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5\"/>\n </svg>\n Login with Github\n </a></div>\n <div class=\"col\"><a href=\"#\" class=\"btn w-100\">\n <!-- Download SVG icon from http://tabler-icons.io/i/brand-twitter -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-twitter\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z\"/>\n </svg>\n Login with Twitter\n </a></div>\n </div>\n </div>\n </div>\n <div class=\"text-center text-muted mt-3\">\n Don't have account yet? <a href=\"./sign-up.html\" tabindex=\"-1\" i18n>Sign up</a>\n </div>\n</ng-template>\n" }]
498
+ }], ctorParameters: () => [] });
499
+
500
+ class OauthCallbackComponent {
501
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OauthCallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
502
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: OauthCallbackComponent, selector: "upd-oauth-callback", ngImport: i0, template: "<p>oauth-callback works!</p>\n", styles: [""] }); }
503
+ }
504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: OauthCallbackComponent, decorators: [{
505
+ type: Component,
506
+ args: [{ selector: 'upd-oauth-callback', template: "<p>oauth-callback works!</p>\n" }]
507
+ }] });
508
+
509
+ /**
510
+ * Auth flow routes.
511
+ */
512
+ const routes = [
513
+ { path: 'oauth/callback', component: OauthCallbackComponent },
514
+ { path: 'logged-out', component: LoggedOutComponent },
515
+ { path: 'login', component: LoginComponent }
516
+ ];
517
+ class AuthFlowRoutingModule {
518
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthFlowRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
519
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: AuthFlowRoutingModule, imports: [i1$4.RouterModule], exports: [RouterModule] }); }
520
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthFlowRoutingModule, imports: [RouterModule.forRoot(routes, { useHash: true }), RouterModule] }); }
521
+ }
522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthFlowRoutingModule, decorators: [{
523
+ type: NgModule,
524
+ args: [{
525
+ imports: [RouterModule.forRoot(routes, { useHash: true })],
526
+ exports: [RouterModule]
527
+ }]
528
+ }] });
529
+
530
+ class AuthFlowModule {
531
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthFlowModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
532
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: AuthFlowModule, declarations: [LoginComponent,
533
+ OauthCallbackComponent,
534
+ LoggedOutComponent], imports: [CommonModule,
535
+ AuthFlowRoutingModule,
536
+ UpdButtonModule,
537
+ FormsModule], exports: [LoginComponent,
538
+ OauthCallbackComponent,
539
+ LoggedOutComponent] }); }
540
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthFlowModule, imports: [CommonModule,
541
+ AuthFlowRoutingModule,
542
+ UpdButtonModule,
543
+ FormsModule] }); }
544
+ }
545
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthFlowModule, decorators: [{
546
+ type: NgModule,
547
+ args: [{
548
+ imports: [
549
+ CommonModule,
550
+ AuthFlowRoutingModule,
551
+ UpdButtonModule,
552
+ FormsModule
553
+ ],
554
+ declarations: [
555
+ LoginComponent,
556
+ OauthCallbackComponent,
557
+ LoggedOutComponent
558
+ ],
559
+ exports: [
560
+ LoginComponent,
561
+ OauthCallbackComponent,
562
+ LoggedOutComponent
563
+ ]
564
+ }]
565
+ }] });
566
+
567
+ /**
568
+ * Layout configuration.
569
+ */
570
+ class UpdLayoutConfigModel {
571
+ constructor(init) {
572
+ Object.assign(this, init);
573
+ if (this.mainLogo === undefined) {
574
+ // this.mainLogo = LogoConstants.defaultLogo; // TODO: add images
575
+ }
576
+ if (this.smallLogo === undefined) {
577
+ // this.smallLogo = LogoConstants.smallLogo;
578
+ }
579
+ if (this.loggedOutBackground === undefined) {
580
+ // this.loggedOutBackground = ImageConstants.loggedOutBackground;
581
+ }
582
+ if (this.menuTitle === undefined) {
583
+ this.menuTitle = 'UpDevs';
584
+ }
585
+ if (this.showNotificationsButton === undefined) {
586
+ this.showNotificationsButton = true;
587
+ }
588
+ if (this.showUserMenu === undefined) {
589
+ this.showUserMenu = true;
590
+ }
591
+ if (this.displayReportErrorButton === undefined) {
592
+ this.displayReportErrorButton = false;
593
+ }
594
+ }
595
+ }
596
+
597
+ /**
598
+ * Layout constants.
599
+ */
600
+ class LayoutConstants {
601
+ /**
602
+ * Key to inject the default configuration.
603
+ */
604
+ static { this.defaultOptionsKey = 'upd-layout-default-options'; }
605
+ /**
606
+ * Injection token for the default configuration.
607
+ */
608
+ static { this.defaultOptionsInjectionToken = new InjectionToken(LayoutConstants.defaultOptionsKey); }
609
+ }
610
+
611
+ /**
612
+ * Layout configuration data.
613
+ */
614
+ class UpdLayoutConfigService {
615
+ constructor(layoutConfig) {
616
+ this.config = new UpdLayoutConfigModel(layoutConfig);
617
+ }
618
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutConfigService, deps: [{ token: LayoutConstants.defaultOptionsInjectionToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
619
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutConfigService }); }
620
+ }
621
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutConfigService, decorators: [{
622
+ type: Injectable
623
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
624
+ type: Inject,
625
+ args: [LayoutConstants.defaultOptionsInjectionToken]
626
+ }] }] });
627
+
628
+ /**
629
+ * Layout module.
630
+ */
631
+ class UpdLayoutModule {
632
+ /**
633
+ * Sets up the layout module with the provided configuration.
634
+ * @param config Configuration (See: #updsee[p:abstractions, i:UpdCoreLayoutConfig]).
635
+ */
636
+ static forRoot(config) {
637
+ return {
638
+ ngModule: UpdLayoutModule,
639
+ providers: [
640
+ { provide: LayoutConstants.defaultOptionsInjectionToken, useValue: config }
641
+ ]
642
+ };
643
+ }
644
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
645
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutModule, imports: [CommonModule,
646
+ UpdCoreLayoutModule] }); }
647
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutModule, providers: [
648
+ UpdLayoutConfigService
649
+ ], imports: [CommonModule,
650
+ UpdCoreLayoutModule] }); }
651
+ }
652
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutModule, decorators: [{
653
+ type: NgModule,
654
+ args: [{
655
+ imports: [
656
+ CommonModule,
657
+ UpdCoreLayoutModule
658
+ ],
659
+ providers: [
660
+ UpdLayoutConfigService
661
+ ]
662
+ }]
663
+ }] });
664
+
665
+ /**
666
+ * Generated bundle index. Do not edit.
667
+ */
668
+
669
+ export { AuthFlowModule, AuthFlowRoutingModule, BasePageComponent, BlankLayoutComponent, BlankLayoutModule, FooterComponent, FooterCopyrightDirective, HeaderComponent, LoggedOutComponent, LoginComponent, OauthCallbackComponent, PageHeaderComponent, SidebarComponent, UpdLayoutConfigService, UpdLayoutModule, VerticalSidebarLayoutComponent, VerticalSidebarLayoutModule, routes };
670
+ //# sourceMappingURL=updevs-components-layout.mjs.map