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

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 (729) hide show
  1. package/.eslintrc.json +39 -0
  2. package/README.md +1 -11
  3. package/assets/styles/_bootstrap-components.scss +18 -1
  4. package/assets/styles/_seven-columns.scss +73 -0
  5. package/assets/styles/_updevs.scss +4 -0
  6. package/assets/styles/_variables.scss +1 -1
  7. package/badge/index.ts +1 -0
  8. package/badge/ng-package.json +6 -0
  9. package/badge/src/badge-config.model.ts +21 -0
  10. package/badge/src/badge.component.html +5 -0
  11. package/badge/src/badge.component.scss +1 -0
  12. package/badge/src/badge.component.spec.ts +21 -0
  13. package/badge/src/badge.component.ts +54 -0
  14. package/badge/src/badge.config.ts +13 -0
  15. package/badge/src/public-api.ts +3 -0
  16. package/badge/src/upd-badge.module.ts +17 -0
  17. package/button/index.ts +1 -0
  18. package/button/ng-package.json +6 -0
  19. package/button/src/button.component.html +45 -0
  20. package/button/src/button.component.scss +5 -0
  21. package/button/src/button.component.spec.ts +23 -0
  22. package/button/src/button.component.ts +176 -0
  23. package/button/src/upd-button.module.ts +21 -0
  24. package/calendar/index.ts +1 -0
  25. package/calendar/ng-package.json +6 -0
  26. package/calendar/src/assets/i18n/en.json +16 -0
  27. package/calendar/src/assets/i18n/pt.json +16 -0
  28. package/calendar/src/calendar.component.html +34 -0
  29. package/calendar/src/calendar.component.scss +1 -0
  30. package/calendar/src/calendar.component.spec.ts +21 -0
  31. package/calendar/src/calendar.component.ts +290 -0
  32. package/calendar/src/components/calendar-body/calendar-body.component.html +75 -0
  33. package/calendar/src/components/calendar-body/calendar-body.component.scss +1 -0
  34. package/calendar/src/components/calendar-body/calendar-body.component.spec.ts +21 -0
  35. package/calendar/src/components/calendar-body/calendar-body.component.ts +665 -0
  36. package/calendar/src/components/calendar-header/calendar-header.component.html +27 -0
  37. package/calendar/src/components/calendar-header/calendar-header.component.scss +1 -0
  38. package/calendar/src/components/calendar-header/calendar-header.component.spec.ts +21 -0
  39. package/calendar/src/components/calendar-header/calendar-header.component.ts +175 -0
  40. package/calendar/src/components/calendar-month-view/calendar-month-view.component.html +19 -0
  41. package/calendar/src/components/calendar-month-view/calendar-month-view.component.scss +1 -0
  42. package/calendar/src/components/calendar-month-view/calendar-month-view.component.spec.ts +21 -0
  43. package/calendar/src/components/calendar-month-view/calendar-month-view.component.ts +540 -0
  44. package/calendar/src/components/calendar-multi-year-view/calendar-multi-year-view.component.html +1 -0
  45. package/calendar/src/components/calendar-multi-year-view/calendar-multi-year-view.component.scss +1 -0
  46. package/calendar/src/components/calendar-multi-year-view/calendar-multi-year-view.component.spec.ts +21 -0
  47. package/calendar/src/components/calendar-multi-year-view/calendar-multi-year-view.component.ts +19 -0
  48. package/calendar/src/components/calendar-year-view/calendar-year-view.component.html +1 -0
  49. package/calendar/src/components/calendar-year-view/calendar-year-view.component.scss +1 -0
  50. package/calendar/src/components/calendar-year-view/calendar-year-view.component.spec.ts +21 -0
  51. package/calendar/src/components/calendar-year-view/calendar-year-view.component.ts +17 -0
  52. package/calendar/src/models/calendar-cell.model.ts +22 -0
  53. package/calendar/src/models/calendar-user-event.model.ts +4 -0
  54. package/calendar/src/models/date-range.model.ts +22 -0
  55. package/calendar/src/models/public-api.ts +2 -0
  56. package/calendar/src/public-api.ts +5 -0
  57. package/calendar/src/services/calendar-range-strategy.service.spec.ts +16 -0
  58. package/calendar/src/services/calendar-range-strategy.service.ts +103 -0
  59. package/calendar/src/services/calendar-signals.service.spec.ts +16 -0
  60. package/calendar/src/services/calendar-signals.service.ts +45 -0
  61. package/calendar/src/services/calendar.service.spec.ts +16 -0
  62. package/calendar/src/services/calendar.service.ts +42 -0
  63. package/calendar/src/services/public-api.ts +1 -0
  64. package/calendar/src/tools/events-options.ts +16 -0
  65. package/calendar/src/tools/keyboard-tools.ts +16 -0
  66. package/calendar/src/tools/passive-listeners.ts +36 -0
  67. package/calendar/src/types/calendar-cell-class-function.type.ts +4 -0
  68. package/calendar/src/types/calendar-cell-css-classes.type.ts +1 -0
  69. package/calendar/src/types/calendar-view.type.ts +1 -0
  70. package/calendar/src/types/modifier-key.type.ts +1 -0
  71. package/calendar/src/types/public-api.ts +1 -0
  72. package/calendar/src/upd-calendar.module.ts +48 -0
  73. package/card/index.ts +1 -0
  74. package/card/ng-package.json +6 -0
  75. package/card/src/card.component.html +105 -0
  76. package/card/src/card.component.scss +47 -0
  77. package/card/src/card.component.spec.ts +23 -0
  78. package/card/src/card.component.ts +112 -0
  79. package/card/src/directives/card-actions.directive.spec.ts +8 -0
  80. package/card/src/directives/card-actions.directive.ts +8 -0
  81. package/card/src/directives/card-footer.directive.spec.ts +8 -0
  82. package/card/src/directives/card-footer.directive.ts +8 -0
  83. package/card/src/directives/card-header.directive.spec.ts +8 -0
  84. package/card/src/directives/card-header.directive.ts +8 -0
  85. package/card/src/directives/card-image.directive.spec.ts +8 -0
  86. package/card/src/directives/card-image.directive.ts +8 -0
  87. package/card/src/types/public-api.ts +5 -0
  88. package/card/src/upd-card.module.ts +32 -0
  89. package/drag-and-drop/index.ts +1 -0
  90. package/drag-and-drop/ng-package.json +6 -0
  91. package/drag-and-drop/src/drag-and-drop.component.html +24 -0
  92. package/drag-and-drop/src/drag-and-drop.component.scss +4 -0
  93. package/drag-and-drop/src/drag-and-drop.component.spec.ts +22 -0
  94. package/drag-and-drop/src/drag-and-drop.component.ts +164 -0
  95. package/drag-and-drop/src/models/drag-and-drop-column.config.ts +10 -0
  96. package/drag-and-drop/src/models/drag-and-drop-column.model.ts +16 -0
  97. package/drag-and-drop/src/models/drag-and-drop-item.model.ts +21 -0
  98. package/drag-and-drop/src/models/drag-and-drop-item.ts +8 -0
  99. package/drag-and-drop/src/models/drag-and-drop.config.ts +7 -0
  100. package/drag-and-drop/src/models/public-api.ts +4 -0
  101. package/drag-and-drop/src/public-api.ts +3 -0
  102. package/drag-and-drop/src/upd-drag-and-drop.module.ts +19 -0
  103. package/dropdown/index.ts +1 -0
  104. package/dropdown/ng-package.json +6 -0
  105. package/dropdown/src/dropdown.component.html +70 -0
  106. package/dropdown/src/dropdown.component.scss +19 -0
  107. package/dropdown/src/dropdown.component.spec.ts +23 -0
  108. package/dropdown/src/dropdown.component.ts +233 -0
  109. package/dropdown/src/models/dropdown-action-clicked.model.ts +8 -0
  110. package/dropdown/{models/dropdown-item.d.ts → src/models/dropdown-item.ts} +8 -2
  111. package/dropdown/{models/dropdown-item.type.d.ts → src/models/dropdown-item.type.ts} +1 -1
  112. package/dropdown/src/models/public-api.ts +4 -0
  113. package/dropdown/src/models/toolbar.type.ts +1 -0
  114. package/dropdown/src/upd-dropdown.module.ts +25 -0
  115. package/form/index.ts +1 -0
  116. package/form/ng-package.json +6 -0
  117. package/form/src/assets/i18n/en.json +17 -0
  118. package/form/src/assets/i18n/pt.json +17 -0
  119. package/form/src/components/dynamic-field/dynamic-field.component.html +83 -0
  120. package/form/src/components/dynamic-field/dynamic-field.component.scss +1 -0
  121. package/form/src/components/dynamic-field/dynamic-field.component.spec.ts +21 -0
  122. package/form/src/components/dynamic-field/dynamic-field.component.ts +102 -0
  123. package/form/src/form.component.html +26 -0
  124. package/form/src/form.component.scss +1 -0
  125. package/form/src/form.component.spec.ts +21 -0
  126. package/form/src/form.component.ts +110 -0
  127. package/form/src/models/checkbox-field.model.ts +5 -0
  128. package/form/src/models/checkbox-group-field.model.ts +8 -0
  129. package/form/src/models/dynamic-field.model.ts +32 -0
  130. package/form/src/models/enums/dynamic-field.type.ts +12 -0
  131. package/form/src/models/enums/public-api.ts +1 -0
  132. package/form/src/models/form-config.ts +3 -0
  133. package/form/src/models/form-row.model.ts +10 -0
  134. package/form/src/models/public-api.ts +5 -0
  135. package/form/src/models/radio-field.model.ts +5 -0
  136. package/form/src/models/radio-group-field.model.ts +8 -0
  137. package/form/src/models/select-field.model.ts +30 -0
  138. package/form/src/models/single-select-field.model.ts +5 -0
  139. package/form/src/models/textarea-field.model.ts +11 -0
  140. package/form/src/models/validator-config.ts +5 -0
  141. package/form/src/public-api.ts +3 -0
  142. package/form/src/tools/errors-helper.ts +60 -0
  143. package/form/src/upd-form.module.ts +48 -0
  144. package/form-controls/abstractions/index.ts +1 -0
  145. package/form-controls/abstractions/ng-package.json +6 -0
  146. package/form-controls/abstractions/src/base-control.ts +34 -0
  147. package/form-controls/abstractions/src/public-api.ts +1 -0
  148. package/form-controls/checkbox/index.ts +1 -0
  149. package/form-controls/checkbox/ng-package.json +6 -0
  150. package/form-controls/checkbox/src/checkbox.component.html +34 -0
  151. package/form-controls/checkbox/src/checkbox.component.scss +0 -0
  152. package/form-controls/checkbox/src/checkbox.component.spec.ts +23 -0
  153. package/form-controls/checkbox/src/checkbox.component.ts +60 -0
  154. package/form-controls/checkbox/{public-api.d.ts → src/public-api.ts} +1 -0
  155. package/form-controls/checkbox/src/upd-checkbox.module.ts +21 -0
  156. package/form-controls/date-picker/index.ts +1 -0
  157. package/form-controls/date-picker/ng-package.json +6 -0
  158. package/form-controls/date-picker/src/date-picker.component.html +36 -0
  159. package/form-controls/date-picker/src/date-picker.component.scss +26 -0
  160. package/form-controls/date-picker/src/date-picker.component.spec.ts +22 -0
  161. package/form-controls/date-picker/src/date-picker.component.ts +177 -0
  162. package/form-controls/date-picker/src/public-api.ts +2 -0
  163. package/form-controls/date-picker/src/upd-date-picker.module.ts +25 -0
  164. package/form-controls/input/index.ts +1 -0
  165. package/form-controls/input/ng-package.json +6 -0
  166. package/form-controls/input/src/directives/input-append.directive.spec.ts +8 -0
  167. package/form-controls/input/src/directives/input-append.directive.ts +8 -0
  168. package/form-controls/input/src/directives/input-prepend.directive.spec.ts +8 -0
  169. package/form-controls/input/src/directives/input-prepend.directive.ts +8 -0
  170. package/form-controls/input/src/input.component.html +124 -0
  171. package/form-controls/input/src/input.component.scss +13 -0
  172. package/form-controls/input/src/input.component.spec.ts +23 -0
  173. package/form-controls/input/src/input.component.ts +161 -0
  174. package/form-controls/input/src/upd-input.module.ts +29 -0
  175. package/form-controls/radio/index.ts +1 -0
  176. package/form-controls/radio/ng-package.json +6 -0
  177. package/form-controls/radio/src/radio.component.html +35 -0
  178. package/form-controls/radio/src/radio.component.scss +0 -0
  179. package/form-controls/radio/src/radio.component.spec.ts +23 -0
  180. package/form-controls/radio/src/radio.component.ts +42 -0
  181. package/form-controls/radio/src/upd-radio.module.ts +21 -0
  182. package/form-controls/select/index.ts +1 -0
  183. package/form-controls/select/ng-package.json +6 -0
  184. package/form-controls/select/src/components/multiple/select-multiple.component.html +61 -0
  185. package/form-controls/select/src/components/multiple/select-multiple.component.scss +6 -0
  186. package/form-controls/select/src/components/multiple/select-multiple.component.spec.ts +21 -0
  187. package/form-controls/select/src/components/multiple/select-multiple.component.ts +80 -0
  188. package/form-controls/select/src/components/shared.scss +44 -0
  189. package/form-controls/select/src/components/single/select.component.html +118 -0
  190. package/form-controls/select/src/components/single/select.component.scss +3 -0
  191. package/form-controls/select/src/components/single/select.component.spec.ts +23 -0
  192. package/form-controls/select/src/components/single/select.component.ts +75 -0
  193. package/form-controls/select/src/models/abstractions/base-select.component.ts +286 -0
  194. package/form-controls/select/src/models/defaults.ts +9 -0
  195. package/form-controls/select/{models/public-api.d.ts → src/models/public-api.ts} +1 -0
  196. package/form-controls/select/{models/select-item.d.ts → src/models/select-item.ts} +1 -0
  197. package/form-controls/select/src/upd-select.module.ts +34 -0
  198. package/form-controls/textarea/index.ts +1 -0
  199. package/form-controls/textarea/ng-package.json +6 -0
  200. package/form-controls/textarea/src/textarea.component.html +13 -0
  201. package/form-controls/textarea/src/textarea.component.scss +0 -0
  202. package/form-controls/textarea/src/textarea.component.spec.ts +23 -0
  203. package/form-controls/textarea/src/textarea.component.ts +45 -0
  204. package/form-controls/textarea/src/upd-textarea.module.ts +17 -0
  205. package/form-controls/time-picker/index.ts +1 -0
  206. package/form-controls/time-picker/ng-package.json +6 -0
  207. package/form-controls/time-picker/src/time-picker.component.html +17 -0
  208. package/form-controls/time-picker/src/time-picker.component.scss +10 -0
  209. package/form-controls/time-picker/src/time-picker.component.spec.ts +21 -0
  210. package/form-controls/time-picker/src/time-picker.component.ts +110 -0
  211. package/form-controls/time-picker/src/time-selector/time-selector.component.html +50 -0
  212. package/form-controls/time-picker/src/time-selector/time-selector.component.scss +47 -0
  213. package/form-controls/time-picker/src/time-selector/time-selector.component.spec.ts +21 -0
  214. package/form-controls/time-picker/src/time-selector/time-selector.component.ts +107 -0
  215. package/form-controls/time-picker/src/upd-time-picker.module.ts +39 -0
  216. package/jest.config.ts +22 -0
  217. package/layout/index.ts +1 -0
  218. package/layout/ng-package.json +6 -0
  219. package/layout/src/abstractions/base-page.component.ts +16 -0
  220. package/layout/src/abstractions/base.layout.ts +27 -0
  221. package/layout/src/assets/i18n/en.json +20 -0
  222. package/layout/src/assets/i18n/pt.json +20 -0
  223. package/layout/src/index.ts +1 -0
  224. package/layout/src/layouts/blank-layout/blank-layout.component.html +1 -0
  225. package/layout/src/layouts/blank-layout/blank-layout.component.scss +0 -0
  226. package/layout/src/layouts/blank-layout/blank-layout.component.spec.ts +23 -0
  227. package/layout/src/layouts/blank-layout/blank-layout.component.ts +10 -0
  228. package/layout/src/layouts/blank-layout/blank-layout.module.ts +17 -0
  229. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html +16 -0
  230. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.scss +0 -0
  231. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.spec.ts +23 -0
  232. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts +30 -0
  233. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts +51 -0
  234. package/layout/src/models/login-page-config.model.ts +57 -0
  235. package/layout/src/models/login-page.config.ts +42 -0
  236. package/layout/{models/public-api.d.ts → src/models/public-api.ts} +1 -0
  237. package/layout/src/models/security-layout-config.model.ts +16 -0
  238. package/layout/src/models/security-layout.config.ts +11 -0
  239. package/layout/src/models/upd-layout-config.model.ts +69 -0
  240. package/layout/{models/upd-layout.config.d.ts → src/models/upd-layout.config.ts} +10 -0
  241. package/layout/src/pages/auth-flow/auth-flow-routing.module.ts +21 -0
  242. package/layout/src/pages/auth-flow/auth-flow.module.ts +40 -0
  243. package/layout/src/pages/auth-flow/logged-out/logged-out.component.html +1 -0
  244. package/layout/src/pages/auth-flow/logged-out/logged-out.component.scss +0 -0
  245. package/layout/src/pages/auth-flow/logged-out/logged-out.component.spec.ts +23 -0
  246. package/layout/src/pages/auth-flow/logged-out/logged-out.component.ts +10 -0
  247. package/layout/src/pages/auth-flow/login/login.component.html +103 -0
  248. package/layout/src/pages/auth-flow/login/login.component.scss +0 -0
  249. package/layout/src/pages/auth-flow/login/login.component.spec.ts +23 -0
  250. package/layout/src/pages/auth-flow/login/login.component.ts +97 -0
  251. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html +1 -0
  252. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.scss +0 -0
  253. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.spec.ts +23 -0
  254. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts +10 -0
  255. package/layout/src/partials/footer/footer-copyright.directive.spec.ts +8 -0
  256. package/layout/src/partials/footer/footer-copyright.directive.ts +6 -0
  257. package/layout/src/partials/footer/footer.component.html +35 -0
  258. package/layout/src/partials/footer/footer.component.scss +0 -0
  259. package/layout/src/partials/footer/footer.component.spec.ts +23 -0
  260. package/layout/src/partials/footer/footer.component.ts +64 -0
  261. package/layout/src/partials/header/header.component.html +173 -0
  262. package/layout/src/partials/header/header.component.scss +0 -0
  263. package/layout/src/partials/header/header.component.spec.ts +23 -0
  264. package/layout/src/partials/header/header.component.ts +82 -0
  265. package/layout/src/partials/page-header/page-header.component.html +23 -0
  266. package/layout/src/partials/page-header/page-header.component.scss +0 -0
  267. package/layout/src/partials/page-header/page-header.component.spec.ts +23 -0
  268. package/layout/src/partials/page-header/page-header.component.ts +11 -0
  269. package/layout/src/partials/sidebar/sidebar.component.html +72 -0
  270. package/layout/src/partials/sidebar/sidebar.component.scss +0 -0
  271. package/layout/src/partials/sidebar/sidebar.component.spec.ts +23 -0
  272. package/layout/src/partials/sidebar/sidebar.component.ts +129 -0
  273. package/layout/src/services/upd-layout-config.service.spec.ts +16 -0
  274. package/layout/src/services/upd-layout-config.service.ts +20 -0
  275. package/layout/{tools/layout.constants.d.ts → src/tools/layout.constants.ts} +6 -3
  276. package/layout/src/upd-layout.module.ts +34 -0
  277. package/link/index.ts +1 -0
  278. package/link/ng-package.json +6 -0
  279. package/link/src/index.ts +1 -0
  280. package/link/src/link.component.html +3 -0
  281. package/link/src/link.component.scss +3 -0
  282. package/link/src/link.component.spec.ts +23 -0
  283. package/link/src/link.component.ts +48 -0
  284. package/link/src/upd-link.module.ts +17 -0
  285. package/list/index.ts +1 -0
  286. package/list/ng-package.json +6 -0
  287. package/list/src/assets/i18n/en.json +9 -0
  288. package/list/src/assets/i18n/pt.json +9 -0
  289. package/list/src/index.ts +1 -0
  290. package/list/src/list.component.html +67 -0
  291. package/list/src/list.component.scss +22 -0
  292. package/list/src/list.component.spec.ts +23 -0
  293. package/list/src/list.component.ts +129 -0
  294. package/list/src/models/list-item.model.ts +36 -0
  295. package/list/{models/list-item.d.ts → src/models/list-item.ts} +4 -1
  296. package/list/src/upd-list.module.ts +30 -0
  297. package/modal/index.ts +1 -0
  298. package/modal/ng-package.json +6 -0
  299. package/modal/src/assets/i18n/en.json +17 -0
  300. package/modal/src/assets/i18n/pt.json +17 -0
  301. package/modal/src/components/modal-container/modal-container.component.html +116 -0
  302. package/modal/src/components/modal-container/modal-container.component.scss +1 -0
  303. package/modal/src/components/modal-container/modal-container.component.spec.ts +22 -0
  304. package/modal/src/components/modal-container/modal-container.component.ts +243 -0
  305. package/modal/src/index.ts +1 -0
  306. package/modal/src/models/base.modal.ts +9 -0
  307. package/modal/src/models/modal-config.model.ts +39 -0
  308. package/modal/src/models/modal-ref.ts +9 -0
  309. package/modal/src/models/modal.config.ts +32 -0
  310. package/modal/src/models/public-api.ts +3 -0
  311. package/modal/src/public-api.ts +3 -0
  312. package/modal/src/services/modal-alert.service.spec.ts +16 -0
  313. package/modal/src/services/modal-alert.service.ts +167 -0
  314. package/modal/src/services/modal.service.spec.ts +16 -0
  315. package/modal/src/services/modal.service.ts +38 -0
  316. package/modal/src/services/public-api.ts +2 -0
  317. package/modal/src/types/modal-footer-style.type.ts +1 -0
  318. package/modal/src/types/modal-size.type.ts +1 -0
  319. package/modal/src/upd-modal.module.ts +74 -0
  320. package/ng-package.json +10 -0
  321. package/package.json +20 -114
  322. package/paginator/index.ts +1 -0
  323. package/paginator/ng-package.json +6 -0
  324. package/paginator/src/assets/i18n/en.json +15 -0
  325. package/paginator/src/assets/i18n/pt.json +15 -0
  326. package/paginator/src/index.ts +1 -0
  327. package/paginator/src/paginator.component.html +83 -0
  328. package/paginator/src/paginator.component.scss +1 -0
  329. package/paginator/src/paginator.component.spec.ts +21 -0
  330. package/paginator/src/paginator.component.ts +62 -0
  331. package/paginator/src/public-api.ts +2 -0
  332. package/paginator/src/upd-paginator.module.ts +32 -0
  333. package/popover/index.ts +1 -0
  334. package/popover/ng-package.json +6 -0
  335. package/popover/src/index.ts +1 -0
  336. package/popover/src/popover.component.html +21 -0
  337. package/popover/src/popover.component.scss +8 -0
  338. package/popover/src/popover.component.spec.ts +23 -0
  339. package/popover/src/popover.component.ts +53 -0
  340. package/popover/src/popover.directive.spec.ts +8 -0
  341. package/popover/src/popover.directive.ts +125 -0
  342. package/popover/src/upd-popover.module.ts +20 -0
  343. package/project.json +40 -0
  344. package/src/index.ts +1 -0
  345. package/src/lib/index.ts +1 -0
  346. package/src/lib/models/public-api.ts +1 -0
  347. package/src/lib/models/row-column-size.ts +5 -0
  348. package/{lib/public-api.d.ts → src/lib/public-api.ts} +2 -0
  349. package/src/lib/tools/column-size.helper.ts +19 -0
  350. package/src/lib/tools/public-api.ts +1 -0
  351. package/src/lib/types/horizontal-vertical.type.ts +1 -0
  352. package/{lib/types/public-api.d.ts → src/lib/types/public-api.ts} +1 -0
  353. package/src/lib/upd-components.module.ts +6 -0
  354. package/src/test-setup.ts +8 -0
  355. package/table/index.ts +1 -0
  356. package/table/ng-package.json +6 -0
  357. package/table/src/abstractions/base-column.model.ts +69 -0
  358. package/table/src/abstractions/base.column.ts +99 -0
  359. package/table/src/abstractions/filters-operands.service.ts +10 -0
  360. package/table/src/abstractions/public-api.ts +2 -0
  361. package/table/src/assets/i18n/en.json +74 -0
  362. package/table/src/assets/i18n/pt.json +74 -0
  363. package/table/src/components/columns/boolean-column/boolean-column.component.html +15 -0
  364. package/table/src/components/columns/boolean-column/boolean-column.component.scss +1 -0
  365. package/table/src/components/columns/boolean-column/boolean-column.component.spec.ts +21 -0
  366. package/table/src/components/columns/boolean-column/boolean-column.component.ts +26 -0
  367. package/table/src/components/columns/date-time-column/date-time-column.component.html +1 -0
  368. package/table/src/components/columns/date-time-column/date-time-column.component.scss +1 -0
  369. package/table/src/components/columns/date-time-column/date-time-column.component.spec.ts +21 -0
  370. package/table/src/components/columns/date-time-column/date-time-column.component.ts +11 -0
  371. package/table/src/components/columns/number-column/number-column.component.html +1 -0
  372. package/table/src/components/columns/number-column/number-column.component.scss +1 -0
  373. package/table/src/components/columns/number-column/number-column.component.spec.ts +21 -0
  374. package/table/src/components/columns/number-column/number-column.component.ts +11 -0
  375. package/table/src/components/columns/public-api.ts +0 -0
  376. package/table/src/components/columns/text-column/text-column.component.html +1 -0
  377. package/table/src/components/columns/text-column/text-column.component.scss +1 -0
  378. package/table/src/components/columns/text-column/text-column.component.spec.ts +21 -0
  379. package/table/src/components/columns/text-column/text-column.component.ts +31 -0
  380. package/table/src/components/columns-manager/columns-manager.component.html +3 -0
  381. package/table/src/components/columns-manager/columns-manager.component.scss +1 -0
  382. package/table/src/components/columns-manager/columns-manager.component.spec.ts +21 -0
  383. package/table/src/components/columns-manager/columns-manager.component.ts +37 -0
  384. package/table/src/components/filter-row/filter-row.component.html +29 -0
  385. package/table/src/components/filter-row/filter-row.component.scss +1 -0
  386. package/table/src/components/filter-row/filter-row.component.spec.ts +21 -0
  387. package/table/src/components/filter-row/filter-row.component.ts +127 -0
  388. package/table/src/components/public-api.ts +0 -0
  389. package/table/src/components/save-search/save-search.component.html +16 -0
  390. package/table/src/components/save-search/save-search.component.scss +1 -0
  391. package/table/src/components/save-search/save-search.component.spec.ts +21 -0
  392. package/table/src/components/save-search/save-search.component.ts +73 -0
  393. package/table/src/components/search-section/search-section.component.html +37 -0
  394. package/table/src/components/search-section/search-section.component.scss +1 -0
  395. package/table/src/components/search-section/search-section.component.spec.ts +21 -0
  396. package/table/src/components/search-section/search-section.component.ts +111 -0
  397. package/table/src/directives/public-api.ts +1 -0
  398. package/table/src/directives/table-column.directive.spec.ts +8 -0
  399. package/table/src/directives/table-column.directive.ts +52 -0
  400. package/table/src/index.ts +1 -0
  401. package/table/src/models/columns/boolean-column.model.ts +29 -0
  402. package/table/src/models/columns/date-time-column.model.ts +20 -0
  403. package/table/src/models/columns/guid-column.model.ts +16 -0
  404. package/table/src/models/columns/image-column.model.ts +15 -0
  405. package/table/src/models/columns/number-column.model.ts +19 -0
  406. package/table/src/models/columns/public-api.ts +6 -0
  407. package/table/src/models/columns/text-column.model.ts +16 -0
  408. package/table/src/models/enums/column-type.enum.ts +13 -0
  409. package/table/src/models/enums/public-api.ts +1 -0
  410. package/table/src/models/filter-item.model.ts +7 -0
  411. package/table/src/models/filter-operand.config.ts +10 -0
  412. package/table/src/models/operands-lists/boolean-filter-operands-list.model.ts +29 -0
  413. package/table/src/models/operands-lists/date-filter-operands-list.model.ts +28 -0
  414. package/table/src/models/operands-lists/date-or-number-operands-list.config.ts +35 -0
  415. package/table/src/models/operands-lists/filter-operands-list.config.ts +35 -0
  416. package/table/src/models/operands-lists/guid-filter-operands-list.model.ts +19 -0
  417. package/table/src/models/operands-lists/number-filter-operands-list.model.ts +28 -0
  418. package/table/src/models/operands-lists/string-filter-operands-list.model.ts +49 -0
  419. package/table/src/models/public-api.ts +4 -0
  420. package/table/src/models/saved-view.model.ts +13 -0
  421. package/table/src/models/table-config.model.ts +32 -0
  422. package/table/src/models/table.config.ts +24 -0
  423. package/table/src/models/upd-table-config.model.ts +12 -0
  424. package/table/src/models/upd-table.config.ts +7 -0
  425. package/table/src/public-api.ts +5 -0
  426. package/table/src/services/default-filters-operands.service.spec.ts +16 -0
  427. package/table/src/services/default-filters-operands.service.ts +62 -0
  428. package/table/src/services/storages/saved-views.storage.spec.ts +16 -0
  429. package/table/src/services/storages/saved-views.storage.ts +76 -0
  430. package/table/src/services/stores/filters-operands.store.spec.ts +16 -0
  431. package/table/src/services/stores/filters-operands.store.ts +17 -0
  432. package/table/src/services/upd-table-config.service.spec.ts +16 -0
  433. package/table/src/services/upd-table-config.service.ts +17 -0
  434. package/table/src/table.component.html +155 -0
  435. package/table/src/table.component.scss +14 -0
  436. package/table/src/table.component.spec.ts +21 -0
  437. package/table/src/table.component.ts +434 -0
  438. package/table/src/tools/filters.tools.ts +67 -0
  439. package/table/src/tools/table.constants.ts +18 -0
  440. package/table/src/upd-table.module.ts +104 -0
  441. package/tsconfig.json +29 -0
  442. package/tsconfig.lib.json +18 -0
  443. package/tsconfig.lib.prod.json +9 -0
  444. package/tsconfig.spec.json +16 -0
  445. package/button/button.component.d.ts +0 -43
  446. package/button/upd-button.module.d.ts +0 -8
  447. package/card/card.component.d.ts +0 -54
  448. package/card/directives/card-actions.directive.d.ts +0 -7
  449. package/card/directives/card-footer.directive.d.ts +0 -7
  450. package/card/directives/card-header.directive.d.ts +0 -7
  451. package/card/directives/card-image.directive.d.ts +0 -7
  452. package/card/upd-card.module.d.ts +0 -14
  453. package/dropdown/dropdown.component.d.ts +0 -63
  454. package/dropdown/models/public-api.d.ts +0 -2
  455. package/dropdown/upd-dropdown.module.d.ts +0 -12
  456. package/esm2022/button/button.component.mjs +0 -163
  457. package/esm2022/button/index.mjs +0 -2
  458. package/esm2022/button/public-api.mjs +0 -3
  459. package/esm2022/button/upd-button.module.mjs +0 -24
  460. package/esm2022/button/updevs-components-button.mjs +0 -5
  461. package/esm2022/card/card.component.mjs +0 -136
  462. package/esm2022/card/directives/card-actions.directive.mjs +0 -16
  463. package/esm2022/card/directives/card-footer.directive.mjs +0 -16
  464. package/esm2022/card/directives/card-header.directive.mjs +0 -16
  465. package/esm2022/card/directives/card-image.directive.mjs +0 -16
  466. package/esm2022/card/directives/public-api.mjs +0 -5
  467. package/esm2022/card/index.mjs +0 -2
  468. package/esm2022/card/public-api.mjs +0 -4
  469. package/esm2022/card/types/card-state.type.mjs +0 -2
  470. package/esm2022/card/types/card-style.type.mjs +0 -2
  471. package/esm2022/card/types/hover-effect.type.mjs +0 -2
  472. package/esm2022/card/types/ribbon-style.type.mjs +0 -2
  473. package/esm2022/card/types/status-position.type.mjs +0 -2
  474. package/esm2022/card/upd-card.module.mjs +0 -50
  475. package/esm2022/card/updevs-components-card.mjs +0 -5
  476. package/esm2022/dropdown/dropdown.component.mjs +0 -145
  477. package/esm2022/dropdown/index.mjs +0 -2
  478. package/esm2022/dropdown/models/dropdown-item.mjs +0 -2
  479. package/esm2022/dropdown/models/dropdown-item.type.mjs +0 -2
  480. package/esm2022/dropdown/models/public-api.mjs +0 -3
  481. package/esm2022/dropdown/public-api.mjs +0 -4
  482. package/esm2022/dropdown/upd-dropdown.module.mjs +0 -40
  483. package/esm2022/dropdown/updevs-components-dropdown.mjs +0 -5
  484. package/esm2022/form/form.module.mjs +0 -18
  485. package/esm2022/form/index.mjs +0 -2
  486. package/esm2022/form/public-api.mjs +0 -2
  487. package/esm2022/form/updevs-components-form.mjs +0 -5
  488. package/esm2022/form-controls/checkbox/checkbox.component.mjs +0 -68
  489. package/esm2022/form-controls/checkbox/index.mjs +0 -2
  490. package/esm2022/form-controls/checkbox/public-api.mjs +0 -3
  491. package/esm2022/form-controls/checkbox/upd-checkbox.module.mjs +0 -28
  492. package/esm2022/form-controls/checkbox/updevs-components-form-controls-checkbox.mjs +0 -5
  493. package/esm2022/form-controls/input/directives/input-append.directive.mjs +0 -16
  494. package/esm2022/form-controls/input/directives/input-prepend.directive.mjs +0 -16
  495. package/esm2022/form-controls/input/directives/public-api.mjs +0 -3
  496. package/esm2022/form-controls/input/index.mjs +0 -2
  497. package/esm2022/form-controls/input/input.component.mjs +0 -155
  498. package/esm2022/form-controls/input/public-api.mjs +0 -5
  499. package/esm2022/form-controls/input/types/input.type.mjs +0 -2
  500. package/esm2022/form-controls/input/types/loader-position.type.mjs +0 -2
  501. package/esm2022/form-controls/input/types/public-api.mjs +0 -3
  502. package/esm2022/form-controls/input/upd-input.module.mjs +0 -46
  503. package/esm2022/form-controls/input/updevs-components-form-controls-input.mjs +0 -5
  504. package/esm2022/form-controls/radio/index.mjs +0 -2
  505. package/esm2022/form-controls/radio/public-api.mjs +0 -3
  506. package/esm2022/form-controls/radio/radio.component.mjs +0 -64
  507. package/esm2022/form-controls/radio/upd-radio.module.mjs +0 -24
  508. package/esm2022/form-controls/radio/updevs-components-form-controls-radio.mjs +0 -5
  509. package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +0 -65
  510. package/esm2022/form-controls/select/components/single/select.component.mjs +0 -53
  511. package/esm2022/form-controls/select/index.mjs +0 -2
  512. package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +0 -208
  513. package/esm2022/form-controls/select/models/public-api.mjs +0 -2
  514. package/esm2022/form-controls/select/models/select-item.mjs +0 -2
  515. package/esm2022/form-controls/select/public-api.mjs +0 -5
  516. package/esm2022/form-controls/select/upd-select.module.mjs +0 -53
  517. package/esm2022/form-controls/select/updevs-components-form-controls-select.mjs +0 -5
  518. package/esm2022/form-controls/textarea/index.mjs +0 -2
  519. package/esm2022/form-controls/textarea/public-api.mjs +0 -3
  520. package/esm2022/form-controls/textarea/textarea.component.mjs +0 -62
  521. package/esm2022/form-controls/textarea/upd-textarea.module.mjs +0 -24
  522. package/esm2022/form-controls/textarea/updevs-components-form-controls-textarea.mjs +0 -5
  523. package/esm2022/form-controls/time-picker/index.mjs +0 -2
  524. package/esm2022/form-controls/time-picker/public-api.mjs +0 -4
  525. package/esm2022/form-controls/time-picker/time-picker.component.mjs +0 -130
  526. package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +0 -124
  527. package/esm2022/form-controls/time-picker/upd-time-picker.module.mjs +0 -60
  528. package/esm2022/form-controls/time-picker/updevs-components-form-controls-time-picker.mjs +0 -5
  529. package/esm2022/layout/abstractions/base-page.component.mjs +0 -24
  530. package/esm2022/layout/abstractions/public-api.mjs +0 -2
  531. package/esm2022/layout/assets/i18n/en.json +0 -5
  532. package/esm2022/layout/assets/i18n/pt.json +0 -5
  533. package/esm2022/layout/index.mjs +0 -2
  534. package/esm2022/layout/layouts/blank-layout/blank-layout.component.mjs +0 -11
  535. package/esm2022/layout/layouts/blank-layout/blank-layout.module.mjs +0 -24
  536. package/esm2022/layout/layouts/public-api.mjs +0 -5
  537. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.mjs +0 -31
  538. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.mjs +0 -81
  539. package/esm2022/layout/models/public-api.mjs +0 -2
  540. package/esm2022/layout/models/upd-layout-config.model.mjs +0 -30
  541. package/esm2022/layout/models/upd-layout.config.mjs +0 -2
  542. package/esm2022/layout/pages/auth-flow/auth-flow-routing.module.mjs +0 -28
  543. package/esm2022/layout/pages/auth-flow/auth-flow.module.mjs +0 -46
  544. package/esm2022/layout/pages/auth-flow/logged-out/logged-out.component.mjs +0 -11
  545. package/esm2022/layout/pages/auth-flow/login/login.component.mjs +0 -27
  546. package/esm2022/layout/pages/auth-flow/oauth-callback/oauth-callback.component.mjs +0 -11
  547. package/esm2022/layout/pages/auth-flow/public-api.mjs +0 -6
  548. package/esm2022/layout/pages/public-api.mjs +0 -2
  549. package/esm2022/layout/partials/footer/footer-copyright.directive.mjs +0 -13
  550. package/esm2022/layout/partials/footer/footer.component.mjs +0 -67
  551. package/esm2022/layout/partials/footer/public-api.mjs +0 -3
  552. package/esm2022/layout/partials/header/header-style.type.mjs +0 -2
  553. package/esm2022/layout/partials/header/header.component.mjs +0 -77
  554. package/esm2022/layout/partials/header/public-api.mjs +0 -3
  555. package/esm2022/layout/partials/page-header/page-header.component.mjs +0 -14
  556. package/esm2022/layout/partials/page-header/public-api.mjs +0 -2
  557. package/esm2022/layout/partials/public-api.mjs +0 -5
  558. package/esm2022/layout/partials/sidebar/public-api.mjs +0 -2
  559. package/esm2022/layout/partials/sidebar/sidebar.component.mjs +0 -143
  560. package/esm2022/layout/public-api.mjs +0 -8
  561. package/esm2022/layout/services/public-api.mjs +0 -2
  562. package/esm2022/layout/services/upd-layout-config.service.mjs +0 -21
  563. package/esm2022/layout/tools/layout.constants.mjs +0 -15
  564. package/esm2022/layout/upd-layout.module.mjs +0 -43
  565. package/esm2022/layout/updevs-components-layout.mjs +0 -5
  566. package/esm2022/lib/index.mjs +0 -2
  567. package/esm2022/lib/public-api.mjs +0 -3
  568. package/esm2022/lib/types/component-size.type.mjs +0 -2
  569. package/esm2022/lib/types/public-api.mjs +0 -3
  570. package/esm2022/lib/types/validation-status.type.mjs +0 -2
  571. package/esm2022/lib/upd-components.module.mjs +0 -14
  572. package/esm2022/link/index.mjs +0 -2
  573. package/esm2022/link/link.component.mjs +0 -51
  574. package/esm2022/link/public-api.mjs +0 -4
  575. package/esm2022/link/target.type.mjs +0 -2
  576. package/esm2022/link/upd-link.module.mjs +0 -24
  577. package/esm2022/link/updevs-components-link.mjs +0 -5
  578. package/esm2022/list/assets/i18n/en.json +0 -5
  579. package/esm2022/list/assets/i18n/pt.json +0 -5
  580. package/esm2022/list/index.mjs +0 -2
  581. package/esm2022/list/list.component.mjs +0 -134
  582. package/esm2022/list/models/badge-position.type.mjs +0 -2
  583. package/esm2022/list/models/list-item.mjs +0 -2
  584. package/esm2022/list/models/list-item.model.mjs +0 -15
  585. package/esm2022/list/models/public-api.mjs +0 -3
  586. package/esm2022/list/public-api.mjs +0 -4
  587. package/esm2022/list/upd-list.module.mjs +0 -43
  588. package/esm2022/list/updevs-components-list.mjs +0 -5
  589. package/esm2022/popover/index.mjs +0 -2
  590. package/esm2022/popover/popover.component.mjs +0 -65
  591. package/esm2022/popover/popover.directive.mjs +0 -129
  592. package/esm2022/popover/public-api.mjs +0 -4
  593. package/esm2022/popover/upd-popover.module.mjs +0 -29
  594. package/esm2022/popover/updevs-components-popover.mjs +0 -5
  595. package/esm2022/public-api.mjs +0 -2
  596. package/esm2022/updevs-components.mjs +0 -5
  597. package/fesm2022/updevs-components-button.mjs +0 -191
  598. package/fesm2022/updevs-components-button.mjs.map +0 -1
  599. package/fesm2022/updevs-components-card.mjs +0 -238
  600. package/fesm2022/updevs-components-card.mjs.map +0 -1
  601. package/fesm2022/updevs-components-dropdown.mjs +0 -189
  602. package/fesm2022/updevs-components-dropdown.mjs.map +0 -1
  603. package/fesm2022/updevs-components-form-controls-checkbox.mjs +0 -100
  604. package/fesm2022/updevs-components-form-controls-checkbox.mjs.map +0 -1
  605. package/fesm2022/updevs-components-form-controls-input.mjs +0 -229
  606. package/fesm2022/updevs-components-form-controls-input.mjs.map +0 -1
  607. package/fesm2022/updevs-components-form-controls-radio.mjs +0 -92
  608. package/fesm2022/updevs-components-form-controls-radio.mjs.map +0 -1
  609. package/fesm2022/updevs-components-form-controls-select.mjs +0 -371
  610. package/fesm2022/updevs-components-form-controls-select.mjs.map +0 -1
  611. package/fesm2022/updevs-components-form-controls-textarea.mjs +0 -90
  612. package/fesm2022/updevs-components-form-controls-textarea.mjs.map +0 -1
  613. package/fesm2022/updevs-components-form-controls-time-picker.mjs +0 -344
  614. package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +0 -1
  615. package/fesm2022/updevs-components-form.mjs +0 -25
  616. package/fesm2022/updevs-components-form.mjs.map +0 -1
  617. package/fesm2022/updevs-components-layout.mjs +0 -670
  618. package/fesm2022/updevs-components-layout.mjs.map +0 -1
  619. package/fesm2022/updevs-components-link.mjs +0 -79
  620. package/fesm2022/updevs-components-link.mjs.map +0 -1
  621. package/fesm2022/updevs-components-list.mjs +0 -226
  622. package/fesm2022/updevs-components-list.mjs.map +0 -1
  623. package/fesm2022/updevs-components-popover.mjs +0 -223
  624. package/fesm2022/updevs-components-popover.mjs.map +0 -1
  625. package/fesm2022/updevs-components.mjs +0 -21
  626. package/fesm2022/updevs-components.mjs.map +0 -1
  627. package/form/form.module.d.ts +0 -7
  628. package/form/public-api.d.ts +0 -1
  629. package/form-controls/checkbox/checkbox.component.d.ts +0 -25
  630. package/form-controls/checkbox/upd-checkbox.module.d.ts +0 -9
  631. package/form-controls/input/directives/input-append.directive.d.ts +0 -7
  632. package/form-controls/input/directives/input-prepend.directive.d.ts +0 -7
  633. package/form-controls/input/input.component.d.ts +0 -54
  634. package/form-controls/input/upd-input.module.d.ts +0 -13
  635. package/form-controls/radio/radio.component.d.ts +0 -24
  636. package/form-controls/radio/upd-radio.module.d.ts +0 -8
  637. package/form-controls/select/components/multiple/select-multiple.component.d.ts +0 -18
  638. package/form-controls/select/components/single/select.component.d.ts +0 -20
  639. package/form-controls/select/models/abstractions/base-select.component.d.ts +0 -80
  640. package/form-controls/select/upd-select.module.d.ts +0 -15
  641. package/form-controls/textarea/textarea.component.d.ts +0 -23
  642. package/form-controls/textarea/upd-textarea.module.d.ts +0 -8
  643. package/form-controls/time-picker/time-picker.component.d.ts +0 -78
  644. package/form-controls/time-picker/time-selector/time-selector.component.d.ts +0 -69
  645. package/form-controls/time-picker/upd-time-picker.module.d.ts +0 -17
  646. package/index.d.ts +0 -5
  647. package/layout/abstractions/base-page.component.d.ts +0 -12
  648. package/layout/layouts/blank-layout/blank-layout.component.d.ts +0 -5
  649. package/layout/layouts/blank-layout/blank-layout.module.d.ts +0 -8
  650. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.d.ts +0 -12
  651. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.d.ts +0 -20
  652. package/layout/models/upd-layout-config.model.d.ts +0 -39
  653. package/layout/pages/auth-flow/auth-flow-routing.module.d.ts +0 -12
  654. package/layout/pages/auth-flow/auth-flow.module.d.ts +0 -13
  655. package/layout/pages/auth-flow/logged-out/logged-out.component.d.ts +0 -5
  656. package/layout/pages/auth-flow/login/login.component.d.ts +0 -12
  657. package/layout/pages/auth-flow/oauth-callback/oauth-callback.component.d.ts +0 -5
  658. package/layout/partials/footer/footer-copyright.directive.d.ts +0 -5
  659. package/layout/partials/footer/footer.component.d.ts +0 -43
  660. package/layout/partials/header/header.component.d.ts +0 -31
  661. package/layout/partials/page-header/page-header.component.d.ts +0 -7
  662. package/layout/partials/sidebar/sidebar.component.d.ts +0 -19
  663. package/layout/services/upd-layout-config.service.d.ts +0 -15
  664. package/layout/upd-layout.module.d.ts +0 -18
  665. package/lib/upd-components.module.d.ts +0 -6
  666. package/link/link.component.d.ts +0 -22
  667. package/link/upd-link.module.d.ts +0 -8
  668. package/list/list.component.d.ts +0 -61
  669. package/list/models/list-item.model.d.ts +0 -24
  670. package/list/upd-list.module.d.ts +0 -13
  671. package/popover/popover.component.d.ts +0 -22
  672. package/popover/popover.directive.d.ts +0 -33
  673. package/popover/upd-popover.module.d.ts +0 -9
  674. /package/{button/index.d.ts → badge/src/index.ts} +0 -0
  675. /package/{card/index.d.ts → button/src/index.ts} +0 -0
  676. /package/button/{public-api.d.ts → src/public-api.ts} +0 -0
  677. /package/{dropdown/index.d.ts → calendar/src/index.ts} +0 -0
  678. /package/card/{directives/public-api.d.ts → src/directives/public-api.ts} +0 -0
  679. /package/{form-controls/checkbox/index.d.ts → card/src/index.ts} +0 -0
  680. /package/card/{public-api.d.ts → src/public-api.ts} +0 -0
  681. /package/card/{types/card-state.type.d.ts → src/types/card-state.type.ts} +0 -0
  682. /package/card/{types/card-style.type.d.ts → src/types/card-style.type.ts} +0 -0
  683. /package/card/{types/hover-effect.type.d.ts → src/types/hover-effect.type.ts} +0 -0
  684. /package/card/{types/ribbon-style.type.d.ts → src/types/ribbon-style.type.ts} +0 -0
  685. /package/card/{types/status-position.type.d.ts → src/types/status-position.type.ts} +0 -0
  686. /package/{form-controls/input/index.d.ts → drag-and-drop/src/index.ts} +0 -0
  687. /package/{form-controls/radio/index.d.ts → dropdown/src/index.ts} +0 -0
  688. /package/dropdown/{public-api.d.ts → src/public-api.ts} +0 -0
  689. /package/{popover/index.d.ts → form/src/index.ts} +0 -0
  690. /package/form-controls/{select/index.d.ts → abstractions/src/index.ts} +0 -0
  691. /package/form-controls/{textarea/index.d.ts → checkbox/src/index.ts} +0 -0
  692. /package/form-controls/{time-picker/index.d.ts → date-picker/src/index.ts} +0 -0
  693. /package/form-controls/input/{directives/public-api.d.ts → src/directives/public-api.ts} +0 -0
  694. /package/{form/index.d.ts → form-controls/input/src/index.ts} +0 -0
  695. /package/form-controls/input/{public-api.d.ts → src/public-api.ts} +0 -0
  696. /package/form-controls/input/{types/input.type.d.ts → src/types/input.type.ts} +0 -0
  697. /package/form-controls/input/{types/loader-position.type.d.ts → src/types/loader-position.type.ts} +0 -0
  698. /package/form-controls/input/{types/public-api.d.ts → src/types/public-api.ts} +0 -0
  699. /package/{layout/index.d.ts → form-controls/radio/src/index.ts} +0 -0
  700. /package/form-controls/radio/{public-api.d.ts → src/public-api.ts} +0 -0
  701. /package/{lib/index.d.ts → form-controls/select/src/index.ts} +0 -0
  702. /package/form-controls/select/{public-api.d.ts → src/public-api.ts} +0 -0
  703. /package/{link/index.d.ts → form-controls/textarea/src/index.ts} +0 -0
  704. /package/form-controls/textarea/{public-api.d.ts → src/public-api.ts} +0 -0
  705. /package/{esm2022/form-controls/time-picker → form-controls/time-picker/src}/assets/i18n/en.json +0 -0
  706. /package/{esm2022/form-controls/time-picker → form-controls/time-picker/src}/assets/i18n/pt.json +0 -0
  707. /package/{list/index.d.ts → form-controls/time-picker/src/index.ts} +0 -0
  708. /package/form-controls/time-picker/{public-api.d.ts → src/public-api.ts} +0 -0
  709. /package/layout/{abstractions/public-api.d.ts → src/abstractions/public-api.ts} +0 -0
  710. /package/layout/{layouts/public-api.d.ts → src/layouts/public-api.ts} +0 -0
  711. /package/layout/{pages/auth-flow/public-api.d.ts → src/pages/auth-flow/public-api.ts} +0 -0
  712. /package/layout/{pages/public-api.d.ts → src/pages/public-api.ts} +0 -0
  713. /package/layout/{partials/footer/public-api.d.ts → src/partials/footer/public-api.ts} +0 -0
  714. /package/layout/{partials/header/header-style.type.d.ts → src/partials/header/header-style.type.ts} +0 -0
  715. /package/layout/{partials/header/public-api.d.ts → src/partials/header/public-api.ts} +0 -0
  716. /package/layout/{partials/page-header/public-api.d.ts → src/partials/page-header/public-api.ts} +0 -0
  717. /package/layout/{partials/public-api.d.ts → src/partials/public-api.ts} +0 -0
  718. /package/layout/{partials/sidebar/public-api.d.ts → src/partials/sidebar/public-api.ts} +0 -0
  719. /package/layout/{public-api.d.ts → src/public-api.ts} +0 -0
  720. /package/layout/{services/public-api.d.ts → src/services/public-api.ts} +0 -0
  721. /package/link/{public-api.d.ts → src/public-api.ts} +0 -0
  722. /package/link/{target.type.d.ts → src/target.type.ts} +0 -0
  723. /package/list/{models/badge-position.type.d.ts → src/models/badge-position.type.ts} +0 -0
  724. /package/list/{models/public-api.d.ts → src/models/public-api.ts} +0 -0
  725. /package/list/{public-api.d.ts → src/public-api.ts} +0 -0
  726. /package/popover/{public-api.d.ts → src/public-api.ts} +0 -0
  727. /package/{lib/types/component-size.type.d.ts → src/lib/types/component-size.type.ts} +0 -0
  728. /package/{lib/types/validation-status.type.d.ts → src/lib/types/validation-status.type.ts} +0 -0
  729. /package/{public-api.d.ts → src/public-api.ts} +0 -0
@@ -0,0 +1,540 @@
1
+ import {
2
+ AfterContentInit,
3
+ ChangeDetectorRef,
4
+ Component,
5
+ EventEmitter,
6
+ Input,
7
+ OnChanges,
8
+ Output,
9
+ SimpleChanges,
10
+ ViewChild,
11
+ effect,
12
+ inject
13
+ } from '@angular/core';
14
+ import { OptionalType } from '@updevs/sdk/types';
15
+ import { DateService } from '@updevs/sdk/core';
16
+ import { BaseComponent } from '@updevs/sdk/layout';
17
+ import { TranslocoService } from '@jsverse/transloco';
18
+ import { startWith } from 'rxjs';
19
+
20
+ import { CalendarUserEventModel } from '../../models/calendar-user-event.model';
21
+ import { CalendarBodyComponent } from '../calendar-body/calendar-body.component';
22
+ import { DateRangeModel } from '../../models/date-range.model';
23
+ import { CalendarCellModel } from '../../models/calendar-cell.model';
24
+ import { CalendarCellClassFunctionType } from '../../types/calendar-cell-class-function.type';
25
+ import { KeyboardTools } from '../../tools/keyboard-tools';
26
+ import { CalendarRangeStrategyService } from '../../services/calendar-range-strategy.service';
27
+ import { CalendarSignalsService } from '../../services/calendar-signals.service';
28
+
29
+ const daysPerWeek = 7;
30
+
31
+ let uniqueIdCounter = 0;
32
+
33
+ @Component({
34
+ selector: 'upd-calendar-month-view',
35
+ templateUrl: './calendar-month-view.component.html',
36
+ styleUrl: './calendar-month-view.component.scss'
37
+ })
38
+ export class CalendarMonthViewComponent extends BaseComponent implements AfterContentInit, OnChanges {
39
+ /**
40
+ * The body of calendar table
41
+ */
42
+ @ViewChild(CalendarBodyComponent) _matCalendarBody!: CalendarBodyComponent;
43
+
44
+ /**
45
+ * The date to display in this month view (everything other than the month and year is ignored).
46
+ */
47
+ @Input()
48
+ get activeDate(): Date {
49
+ return this.calendarSignalsService.activeDate();
50
+ }
51
+ set activeDate(value: Date) {
52
+ this.updateActiveDate(value);
53
+ }
54
+
55
+ /** The currently selected date. */
56
+ @Input()
57
+ get selected(): DateRangeModel | OptionalType<Date> {
58
+ return this.calendarSignalsService.selectedDate();
59
+ }
60
+ set selected(value: DateRangeModel | OptionalType<Date>) {
61
+ let currValue: DateRangeModel | OptionalType<Date>;
62
+
63
+ if (value instanceof DateRangeModel) {
64
+ currValue = value;
65
+ } else {
66
+ currValue = this.dateService.getValidOrUndefined(this.dateService.deserialize(value));
67
+ }
68
+
69
+ this.calendarSignalsService.selectedDate = currValue;
70
+
71
+ this.setRanges(currValue);
72
+ }
73
+
74
+ /** The minimum selectable date. */
75
+ @Input()
76
+ get minDate(): OptionalType<Date> {
77
+ return this._minDate;
78
+ }
79
+ set minDate(value: OptionalType<Date>) {
80
+ this._minDate = this.dateService.getValidOrUndefined(this.dateService.deserialize(value));
81
+ }
82
+
83
+ /** The maximum selectable date. */
84
+ @Input()
85
+ get maxDate(): OptionalType<Date> {
86
+ return this._maxDate;
87
+ }
88
+ set maxDate(value: OptionalType<Date>) {
89
+ this._maxDate = this.dateService.getValidOrUndefined(this.dateService.deserialize(value));
90
+ }
91
+
92
+ /** Function used to filter which dates are selectable. */
93
+ @Input() dateFilter?: (date: Date) => boolean;
94
+
95
+ /** Function that can be used to add custom CSS classes to dates. */
96
+ @Input() dateClass?: CalendarCellClassFunctionType;
97
+
98
+ /** Start of the comparison range. */
99
+ @Input() comparisonStart?: Date;
100
+
101
+ /** End of the comparison range. */
102
+ @Input() comparisonEnd?: Date;
103
+
104
+ /** ARIA Accessible name of the `<input matStartDate/>` */
105
+ @Input() startDateAccessibleName?: string;
106
+
107
+ /** ARIA Accessible name of the `<input matEndDate/>` */
108
+ @Input() endDateAccessibleName?: string;
109
+
110
+ /**
111
+ * First day of week.
112
+ * Zero-based starting from Sunday.
113
+ * Default: 0 - Sunday.
114
+ */
115
+ @Input() firstDayOfWeek = 0;
116
+
117
+ /** Origin of active drag, or null when dragging is not active. */
118
+ @Input() activeDrag?: CalendarUserEventModel<Date>;
119
+
120
+ /** Whether the user is currently selecting a range of dates. */
121
+ @Input() isRange = false;
122
+
123
+ /** Emits when a new date is selected. */
124
+ @Output() readonly selectedChange = new EventEmitter<OptionalType<Date>>();
125
+
126
+ /** Emits when any date is selected. */
127
+ @Output() readonly userSelection = new EventEmitter<CalendarUserEventModel<OptionalType<Date>>>();
128
+
129
+ /** Emits when the user initiates a date range drag via mouse or touch. */
130
+ @Output() readonly dragStarted = new EventEmitter<CalendarUserEventModel<Date>>();
131
+
132
+ /**
133
+ * Emits when the user completes or cancels a date range drag.
134
+ * Emits null when the drag was canceled or the newly selected date range if completed.
135
+ */
136
+ @Output() readonly dragEnded = new EventEmitter<CalendarUserEventModel<OptionalType<DateRangeModel>>>();
137
+
138
+ /** Emits when any date is activated. */
139
+ @Output() readonly activeDateChange = new EventEmitter<Date>();
140
+
141
+ /** The label for this month (e.g. "January 2017"). */
142
+ monthLabel!: string;
143
+
144
+ /** Grid of calendar cells representing the dates of the month. */
145
+ weeks: CalendarCellModel[][] = [];
146
+
147
+ /** The number of blank cells in the first row before the 1st of the month. */
148
+ firstWeekOffset = 0;
149
+
150
+ /** Start value of the currently-shown date range. */
151
+ rangeStart?: number;
152
+
153
+ /** End value of the currently-shown date range. */
154
+ rangeEnd?: number;
155
+
156
+ /** Start value of the currently-shown comparison date range. */
157
+ comparisonRangeStart?: number;
158
+
159
+ /** End value of the currently-shown comparison date range. */
160
+ comparisonRangeEnd?: number;
161
+
162
+ /** Start of the preview range. */
163
+ previewStart?: number;
164
+
165
+ /** End of the preview range. */
166
+ previewEnd?: number;
167
+
168
+ /** The date of the month that today falls on. Null if today is in another month. */
169
+ todayDate?: number;
170
+
171
+ /** The names of the weekdays. */
172
+ weekdays: { long: string; narrow: string; id: number }[] = [];
173
+
174
+ /** Flag used to filter out space/enter keyup events that originated outside of the view. */
175
+ private _selectionKeyPressed = false;
176
+ private _minDate?: Date;
177
+ private _maxDate?: Date;
178
+ private oldActiveDate?: Date;
179
+
180
+ private readonly translocoService = inject(TranslocoService);
181
+ private readonly changeDetectorRef = inject(ChangeDetectorRef);
182
+ private readonly dateService = inject(DateService);
183
+ private readonly calendarSignalsService = inject(CalendarSignalsService);
184
+ private readonly calendarRangeStrategy = inject(CalendarRangeStrategyService);
185
+
186
+ constructor() {
187
+ super();
188
+ effect(() => this.updateActiveDate(this.calendarSignalsService.activeDate(), true));
189
+ }
190
+
191
+ ngAfterContentInit(): void {
192
+ const langSub = this.translocoService.langChanges$
193
+ .pipe(startWith(undefined))
194
+ .subscribe(() => this.init());
195
+ this.addSubscriptions(langSub);
196
+ }
197
+
198
+ ngOnChanges(changes: SimpleChanges): void {
199
+ const comparisonChange = changes['comparisonStart'] || changes['comparisonEnd'];
200
+
201
+ if (comparisonChange && !comparisonChange.firstChange) {
202
+ this.setRanges(this.selected);
203
+ }
204
+
205
+ if (changes['activeDrag'] && !this.activeDrag) {
206
+ this.clearPreview();
207
+ }
208
+ }
209
+
210
+ /** Handles when a new date is selected. */
211
+ dateSelected(event: CalendarUserEventModel<number>): void {
212
+ const date = event.value;
213
+ const selectedDate = this.getDateFromDayOfMonth(date);
214
+ const currSelection = this.calendarSignalsService.selectedDate();
215
+ let rangeStartDate: OptionalType<number>;
216
+ let rangeEndDate: OptionalType<number>;
217
+
218
+ if (currSelection instanceof DateRangeModel) {
219
+ rangeStartDate = this.getDateInCurrentMonth(currSelection.start);
220
+ rangeEndDate = this.getDateInCurrentMonth(currSelection.end);
221
+ } else {
222
+ rangeStartDate = rangeEndDate = this.getDateInCurrentMonth(currSelection);
223
+ }
224
+
225
+ if (rangeStartDate !== date || rangeEndDate !== date) {
226
+ this.calendarSignalsService.selectedDate = selectedDate;
227
+ }
228
+
229
+ this.userSelection.emit({ value: selectedDate, event: event.event });
230
+ this.clearPreview();
231
+ this.changeDetectorRef.markForCheck();
232
+ }
233
+
234
+ /** Handles keydown events on the calendar body when calendar is in month view. */
235
+ handleCalendarBodyKeydown(event: KeyboardEvent): void {
236
+ // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent
237
+ // disabled ones from being selected. This may not be ideal, we should look into whether
238
+ // navigation should skip over disabled dates, and if so, how to implement that efficiently.
239
+
240
+ const oldActiveDate = this.activeDate;
241
+ let tempActiveDate: OptionalType<Date>;
242
+
243
+ switch (event.key) {
244
+ case 'LEFT_ARROW':
245
+ tempActiveDate = this.dateService.addDays(this.activeDate, -1);
246
+ break;
247
+ case 'RIGHT_ARROW':
248
+ tempActiveDate = this.dateService.addDays(this.activeDate, 1);
249
+ break;
250
+ case 'UP_ARROW':
251
+ tempActiveDate = this.dateService.addDays(this.activeDate, -7);
252
+ break;
253
+ case 'DOWN_ARROW':
254
+ tempActiveDate = this.dateService.addDays(this.activeDate, 7);
255
+ break;
256
+ case 'HOME':
257
+ tempActiveDate = this.dateService.addDays(this.activeDate, 1 - this.activeDate.getDate());
258
+ break;
259
+ case 'END':
260
+ tempActiveDate = this.dateService.addDays(
261
+ this.activeDate,
262
+ this.dateService.getNumDaysInMonth(this.activeDate) -
263
+ this.activeDate.getDate()
264
+ );
265
+ break;
266
+ case 'PAGE_UP':
267
+ tempActiveDate = event.altKey
268
+ ? this.dateService.addYears(this.activeDate, -1)
269
+ : this.dateService.addMonths(this.activeDate, -1);
270
+ break;
271
+ case 'PAGE_DOWN':
272
+ tempActiveDate = event.altKey
273
+ ? this.dateService.addYears(this.activeDate, 1)
274
+ : this.dateService.addMonths(this.activeDate, 1);
275
+ break;
276
+ case 'ENTER':
277
+ case 'SPACE':
278
+ this._selectionKeyPressed = true;
279
+
280
+ if (this.canSelect(this.activeDate)) {
281
+ // Prevent unexpected default actions such as form submission.
282
+ // Note that we only prevent the default action here while the selection happens in
283
+ // `keyup` below. We can't do the selection here, because it can cause the calendar to
284
+ // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`
285
+ // because it's too late (see #23305).
286
+ event.preventDefault();
287
+ }
288
+ return;
289
+ case 'ESCAPE':
290
+ // Abort the current range selection if the user presses escape mid-selection.
291
+ if (this.previewEnd !== undefined && !KeyboardTools.hasModifierKey(event)) {
292
+ this.clearPreview();
293
+ // If a drag is in progress, cancel the drag without changing the
294
+ // current selection.
295
+ if (this.activeDrag) {
296
+ this.dragEnded.emit({ value: undefined, event });
297
+ } else {
298
+ this.selectedChange.emit(undefined);
299
+ this.userSelection.emit({ value: undefined, event });
300
+ }
301
+ event.preventDefault();
302
+ event.stopPropagation(); // Prevents the overlay from closing.
303
+ }
304
+ return;
305
+ default:
306
+ // Don't prevent default or focus active cell on keys that we don't explicitly handle.
307
+ return;
308
+ }
309
+
310
+ if (this.dateService.compare(oldActiveDate, this.activeDate)) {
311
+ this.calendarSignalsService.activeDate = tempActiveDate;
312
+ this.focusActiveCellAfterViewChecked();
313
+ }
314
+
315
+ // Prevent unexpected default actions such as form submission.
316
+ event.preventDefault();
317
+ }
318
+
319
+ /** Handles keyup events on the calendar body when calendar is in month view. */
320
+ handleCalendarBodyKeyup(event: KeyboardEvent): void {
321
+ if (event.key === 'SPACE' || event.key === 'ENTER') {
322
+ if (this._selectionKeyPressed && this.canSelect(this.activeDate)) {
323
+ this.dateSelected({ value: this.activeDate.getDate(), event });
324
+ }
325
+
326
+ this._selectionKeyPressed = false;
327
+ }
328
+ }
329
+
330
+ /** Initializes this month view. */
331
+ init(): void {
332
+ this.setRanges(this.selected);
333
+ this.todayDate = this.getCellCompareValue(new Date());
334
+ this.monthLabel = this.dateService.getMonthNames('short')[this.activeDate.getMonth()].toLocaleUpperCase();
335
+ const firstOfMonth = this.dateService.create(
336
+ this.activeDate.getFullYear(),
337
+ this.activeDate.getMonth(),
338
+ 1
339
+ );
340
+ this.firstWeekOffset = (daysPerWeek + firstOfMonth.getDay() - this.firstDayOfWeek) % daysPerWeek;
341
+
342
+ this.initWeekdays();
343
+ this.createWeekCells();
344
+ this.changeDetectorRef.markForCheck();
345
+ }
346
+
347
+ /** Focuses the active cell after the microtask queue is empty. */
348
+ focusActiveCell(movePreview?: boolean): void {
349
+ this._matCalendarBody.focusActiveCell(movePreview);
350
+ }
351
+
352
+ /** Focuses the active cell after change detection has run and the microtask queue is empty. */
353
+ focusActiveCellAfterViewChecked(): void {
354
+ this._matCalendarBody.scheduleFocusActiveCellAfterViewChecked();
355
+ }
356
+
357
+ /** Called when the user has activated a new cell and the preview needs to be updated. */
358
+ previewChanged({ value: cell }: CalendarUserEventModel<OptionalType<CalendarCellModel>>): void {
359
+ if (!this.selected) {
360
+ return;
361
+ }
362
+
363
+ if (this.isRange && !(this.selected instanceof DateRangeModel)) {
364
+ this.selected = new DateRangeModel(this.selected);
365
+ }
366
+
367
+ // We can assume that this will be a range, because preview
368
+ // events aren't fired for single date selections.
369
+ const value = cell ? cell.rawValue! : undefined;
370
+ const previewRange = this.calendarRangeStrategy.createPreview(value, this.selected as DateRangeModel);
371
+ this.previewStart = this.getCellCompareValue(previewRange.start);
372
+ this.previewEnd = this.getCellCompareValue(previewRange.end);
373
+
374
+ if (!!this.activeDrag && !!value) {
375
+ const dragRange = this.calendarRangeStrategy.createDrag?.(this.activeDrag.value, this.selected as DateRangeModel, value);
376
+
377
+ if (!!dragRange) {
378
+ this.previewStart = this.getCellCompareValue(dragRange.start);
379
+ this.previewEnd = this.getCellCompareValue(dragRange.end);
380
+ }
381
+ }
382
+
383
+ // Note that here we need to use `detectChanges`, rather than `markForCheck`, because
384
+ // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time
385
+ // when navigating one month back using the keyboard which will cause this handler
386
+ // to throw a "changed after checked" error when updating the preview state.
387
+ this.changeDetectorRef.detectChanges();
388
+ }
389
+
390
+ /**
391
+ * Called when the user has ended a drag. If the drag/drop was successful,
392
+ * computes and emits the new range selection.
393
+ */
394
+ protected _dragEnded(event: CalendarUserEventModel<OptionalType<Date>>): void {
395
+ if (!this.activeDrag) {
396
+ return;
397
+ }
398
+
399
+ if (event.value) {
400
+ // Propagate drag effect
401
+ const dragDropResult = this.calendarRangeStrategy?.createDrag?.(
402
+ this.activeDrag.value,
403
+ this.selected as DateRangeModel,
404
+ event.value
405
+ );
406
+
407
+ this.dragEnded.emit({ value: dragDropResult ?? undefined, event: event.event });
408
+ } else {
409
+ this.dragEnded.emit({ value: undefined, event: event.event });
410
+ }
411
+ }
412
+
413
+ private updateActiveDate(value: Date, isFromEffect = false): void {
414
+ this.oldActiveDate = this.oldActiveDate || value;
415
+ const validDate = this.dateService.getValidOrUndefined(this.dateService.deserialize(value)) || new Date();
416
+
417
+ if (!isFromEffect) {
418
+ this.calendarSignalsService.activeDate = this.dateService.clamp(validDate, this.minDate, this.maxDate);
419
+ }
420
+
421
+ if (!this.isSameMonthAndYearAsActiveDate(this.oldActiveDate, this.calendarSignalsService.activeDate())) {
422
+ this.init();
423
+ }
424
+
425
+ this.oldActiveDate = value;
426
+
427
+ this.activeDateChange.emit(this.calendarSignalsService.activeDate());
428
+ }
429
+
430
+ /**
431
+ * Takes a day of the month and returns a new date in the same month and year as the currently
432
+ * active date. The returned date will have the same day of the month as the argument date.
433
+ */
434
+ private getDateFromDayOfMonth(dayOfMonth: number): Date {
435
+ return this.dateService.create(this.activeDate.getFullYear(), this.activeDate.getMonth(), dayOfMonth);
436
+ }
437
+
438
+ /** Initializes the weekdays. */
439
+ private initWeekdays(): void {
440
+ const firstDayOfWeek = this.firstDayOfWeek;
441
+ const narrowWeekdays = this.dateService.getDayOfWeekNames('narrow');
442
+ const longWeekdays = this.dateService.getDayOfWeekNames('long');
443
+ // Rotate the labels for days of the week based on the configured first day of the week.
444
+ const weekdays = longWeekdays.map((long, i) => ({ long, narrow: narrowWeekdays[i], id: uniqueIdCounter++ }));
445
+ this.weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));
446
+ }
447
+
448
+ /** Creates MatCalendarCells for the dates in this month. */
449
+ private createWeekCells(): void {
450
+ const daysInMonth = this.dateService.getNumDaysInMonth(this.activeDate);
451
+ const dateNames = this.dateService.getDateNames();
452
+ this.weeks = [[]];
453
+
454
+ for (let i = 0, cell = this.firstWeekOffset; i < daysInMonth; i++, cell++) {
455
+ if (cell === daysPerWeek) {
456
+ this.weeks.push([]);
457
+ cell = 0;
458
+ }
459
+
460
+ const date = this.dateService.create(this.activeDate.getFullYear(), this.activeDate.getMonth(), i + 1);
461
+ const isEnabled = this.shouldEnableDate(date);
462
+ const ariaLabel = this.dateService.format(date, { year: 'numeric', month: 'long', day: 'numeric' });
463
+ const cellClasses = this.dateClass ? this.dateClass(date, 'month') : undefined;
464
+
465
+ this.weeks[this.weeks.length - 1].push(
466
+ new CalendarCellModel(
467
+ i + 1,
468
+ dateNames[i],
469
+ ariaLabel,
470
+ isEnabled,
471
+ cellClasses,
472
+ this.getCellCompareValue(date)!,
473
+ date
474
+ )
475
+ );
476
+ }
477
+ }
478
+
479
+ /** Date filter for the month */
480
+ private shouldEnableDate(date: Date): boolean {
481
+ return !!date &&
482
+ (!this.minDate || this.dateService.compare(date, this.minDate) >= 0) &&
483
+ (!this.maxDate || this.dateService.compare(date, this.maxDate) <= 0) &&
484
+ (!this.dateFilter || this.dateFilter(date));
485
+ }
486
+
487
+ /**
488
+ * Gets the date in this month that the given Date falls on.
489
+ * Returns null if the given Date is in another month.
490
+ */
491
+ private getDateInCurrentMonth(date?: Date): OptionalType<number> {
492
+ return !!date && this.isSameMonthAndYearAsActiveDate(date, this.calendarSignalsService.activeDate())
493
+ ? date.getDate()
494
+ : undefined;
495
+ }
496
+
497
+ /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */
498
+ private isSameMonthAndYearAsActiveDate(d1?: Date, d2?: Date): boolean {
499
+ return (!!d1 && !!d2 && d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear());
500
+ }
501
+
502
+ /** Gets the value that will be used to one cell to another. */
503
+ private getCellCompareValue(date?: Date): OptionalType<number> {
504
+ if (!!date) {
505
+ // We use the time since the Unix epoch to compare dates in this view, rather than the
506
+ // cell values, because we need to support ranges that span across multiple months/years.
507
+ const year = date.getFullYear();
508
+ const month = date.getMonth();
509
+ const day = date.getDate();
510
+
511
+ return new Date(year, month, day).getTime();
512
+ }
513
+
514
+ return undefined;
515
+ }
516
+
517
+ /** Sets the current range based on a model value. */
518
+ private setRanges(selectedValue: DateRangeModel | OptionalType<Date>): void {
519
+ if (selectedValue instanceof DateRangeModel) {
520
+ this.rangeStart = this.getCellCompareValue(selectedValue.start);
521
+ this.rangeEnd = this.getCellCompareValue(selectedValue.end);
522
+ this.isRange = true;
523
+ } else {
524
+ this.rangeStart = this.rangeEnd = this.getCellCompareValue(selectedValue);
525
+ }
526
+
527
+ this.comparisonRangeStart = this.getCellCompareValue(this.comparisonStart);
528
+ this.comparisonRangeEnd = this.getCellCompareValue(this.comparisonEnd);
529
+ }
530
+
531
+ /** Gets whether a date can be selected in the month view. */
532
+ private canSelect(date: Date): boolean {
533
+ return !this.dateFilter || this.dateFilter(date);
534
+ }
535
+
536
+ /** Clears out preview state. */
537
+ private clearPreview(): void {
538
+ this.previewStart = this.previewEnd = undefined;
539
+ }
540
+ }
@@ -0,0 +1 @@
1
+ <p>calendar-multi-year-view works!</p>
@@ -0,0 +1,21 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { CalendarMultiYearViewComponent } from './calendar-multi-year-view.component';
3
+
4
+ describe('CalendarMultiYearViewComponent', () => {
5
+ let component: CalendarMultiYearViewComponent;
6
+ let fixture: ComponentFixture<CalendarMultiYearViewComponent>;
7
+
8
+ beforeEach(async () => {
9
+ await TestBed.configureTestingModule({
10
+ declarations: [CalendarMultiYearViewComponent]
11
+ }).compileComponents();
12
+
13
+ fixture = TestBed.createComponent(CalendarMultiYearViewComponent);
14
+ component = fixture.componentInstance;
15
+ fixture.detectChanges();
16
+ });
17
+
18
+ it('should create', () => {
19
+ expect(component).toBeTruthy();
20
+ });
21
+ });
@@ -0,0 +1,19 @@
1
+ import { Component } from '@angular/core';
2
+
3
+ export const yearsPerPage = 24;
4
+
5
+ @Component({
6
+ selector: 'upd-calendar-multi-year-view',
7
+ templateUrl: './calendar-multi-year-view.component.html',
8
+ styleUrl: './calendar-multi-year-view.component.scss'
9
+ })
10
+ export class CalendarMultiYearViewComponent {
11
+ /** Initializes this month view. */
12
+ init(): void {
13
+
14
+ }
15
+
16
+ /** Focuses the active cell after the microtask queue is empty. */
17
+ focusActiveCell(movePreview?: boolean): void {
18
+ }
19
+ }
@@ -0,0 +1 @@
1
+ <p>calendar-year-view works!</p>
@@ -0,0 +1,21 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { CalendarYearViewComponent } from './calendar-year-view.component';
3
+
4
+ describe('CalendarYearViewComponent', () => {
5
+ let component: CalendarYearViewComponent;
6
+ let fixture: ComponentFixture<CalendarYearViewComponent>;
7
+
8
+ beforeEach(async () => {
9
+ await TestBed.configureTestingModule({
10
+ declarations: [CalendarYearViewComponent]
11
+ }).compileComponents();
12
+
13
+ fixture = TestBed.createComponent(CalendarYearViewComponent);
14
+ component = fixture.componentInstance;
15
+ fixture.detectChanges();
16
+ });
17
+
18
+ it('should create', () => {
19
+ expect(component).toBeTruthy();
20
+ });
21
+ });
@@ -0,0 +1,17 @@
1
+ import { Component } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: 'upd-calendar-year-view',
5
+ templateUrl: './calendar-year-view.component.html',
6
+ styleUrl: './calendar-year-view.component.scss'
7
+ })
8
+ export class CalendarYearViewComponent {
9
+ /** Initializes this month view. */
10
+ init(): void {
11
+
12
+ }
13
+
14
+ /** Focuses the active cell after the microtask queue is empty. */
15
+ focusActiveCell(movePreview?: boolean): void {
16
+ }
17
+ }
@@ -0,0 +1,22 @@
1
+ import { CalendarCellCssClassesType } from '../types/calendar-cell-css-classes.type';
2
+
3
+ let uniqueIdCounter = 0;
4
+
5
+ /**
6
+ * An internal class that represents the data corresponding to a single calendar cell.
7
+ * @docs-private
8
+ */
9
+ export class CalendarCellModel {
10
+ readonly id = uniqueIdCounter++;
11
+
12
+ constructor(
13
+ public value: number,
14
+ public displayValue: string,
15
+ public ariaLabel: string,
16
+ public isEnabled: boolean,
17
+ public cssClasses: CalendarCellCssClassesType = {},
18
+ public compareValue = value,
19
+ public rawValue?: Date
20
+ ) {
21
+ }
22
+ }
@@ -0,0 +1,4 @@
1
+ export interface CalendarUserEventModel<TValue> {
2
+ value: TValue;
3
+ event: Event;
4
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A class representing a range of dates.
3
+ */
4
+ export class DateRangeModel {
5
+ /**
6
+ * Ensures that objects with a `start` and `end` property can't be assigned to a variable that
7
+ * expects a `DateRange`
8
+ */// @ts-ignore
9
+ private disableStructuralEquivalency: never;
10
+
11
+ constructor(
12
+ /**
13
+ * The start date of the range.
14
+ */
15
+ readonly start?: Date,
16
+ /**
17
+ * The end date of the range.
18
+ */
19
+ readonly end?: Date
20
+ ) {
21
+ }
22
+ }