@onemrvapublic/design-system 0.0.0

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 (434) hide show
  1. package/.dockerignore +4 -0
  2. package/.editorconfig +16 -0
  3. package/.github/workflows/npm-publish.yml +34 -0
  4. package/README.md +27 -0
  5. package/angular.json +214 -0
  6. package/build.sh +108 -0
  7. package/cypress.config.ts +40 -0
  8. package/index.html +10 -0
  9. package/npm-publish.sh +11 -0
  10. package/package.json +89 -0
  11. package/projects/onemrva/design-system/README.md +24 -0
  12. package/projects/onemrva/design-system/_index.scss +29 -0
  13. package/projects/onemrva/design-system/_utils.scss +25 -0
  14. package/projects/onemrva/design-system/layout/assets/logo_de.svg +3 -0
  15. package/projects/onemrva/design-system/layout/assets/logo_en.svg +3 -0
  16. package/projects/onemrva/design-system/layout/assets/logo_fr.svg +3 -0
  17. package/projects/onemrva/design-system/layout/assets/logo_nl.svg +3 -0
  18. package/projects/onemrva/design-system/layout/assets/logo_onem_rva.svg +32 -0
  19. package/projects/onemrva/design-system/layout/index.ts +7 -0
  20. package/projects/onemrva/design-system/layout/ng-package.json +6 -0
  21. package/projects/onemrva/design-system/layout/src/components/index.ts +31 -0
  22. package/projects/onemrva/design-system/layout/src/components/layout/_layout-mixin.component.scss +159 -0
  23. package/projects/onemrva/design-system/layout/src/components/layout/layout.component.html +194 -0
  24. package/projects/onemrva/design-system/layout/src/components/layout/layout.component.scss +137 -0
  25. package/projects/onemrva/design-system/layout/src/components/layout/layout.component.spec.ts +24 -0
  26. package/projects/onemrva/design-system/layout/src/components/layout/layout.component.ts +187 -0
  27. package/projects/onemrva/design-system/layout/src/components/layout-content/layout-content.component.spec.ts +24 -0
  28. package/projects/onemrva/design-system/layout/src/components/layout-content/layout-content.component.ts +23 -0
  29. package/projects/onemrva/design-system/layout/src/components/layout-footer/layout-footer.component.ts +11 -0
  30. package/projects/onemrva/design-system/layout/src/components/layout-login-menu/layout-login-menu.component.spec.ts +25 -0
  31. package/projects/onemrva/design-system/layout/src/components/layout-login-menu/layout-login-menu.component.ts +17 -0
  32. package/projects/onemrva/design-system/layout/src/components/layout-route/layout-route.component.html +57 -0
  33. package/projects/onemrva/design-system/layout/src/components/layout-route/layout-route.component.spec.ts +24 -0
  34. package/projects/onemrva/design-system/layout/src/components/layout-route/layout-route.component.ts +56 -0
  35. package/projects/onemrva/design-system/layout/src/components/layout-sidenav/layout-sidenav.component.html +104 -0
  36. package/projects/onemrva/design-system/layout/src/components/layout-sidenav/layout-sidenav.component.ts +88 -0
  37. package/projects/onemrva/design-system/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.ts +9 -0
  38. package/projects/onemrva/design-system/layout/src/components/layout-subroute/layout-subroute.component.html +44 -0
  39. package/projects/onemrva/design-system/layout/src/components/layout-subroute/layout-subroute.component.spec.ts +24 -0
  40. package/projects/onemrva/design-system/layout/src/components/layout-subroute/layout-subroute.component.ts +35 -0
  41. package/projects/onemrva/design-system/layout/src/components/layout-title/layout-title.component.spec.ts +25 -0
  42. package/projects/onemrva/design-system/layout/src/components/layout-title/layout-title.component.ts +17 -0
  43. package/projects/onemrva/design-system/layout/src/decorators/coerce-boolean-input.decorator.ts +19 -0
  44. package/projects/onemrva/design-system/layout/src/decorators/observable-content.decorator.ts +13 -0
  45. package/projects/onemrva/design-system/layout/src/directives/drawer-host.directive.ts +10 -0
  46. package/projects/onemrva/design-system/layout/src/enums/environment.enum.ts +6 -0
  47. package/projects/onemrva/design-system/layout/src/layout.component.spec.ts +24 -0
  48. package/projects/onemrva/design-system/layout/src/layout.module.ts +103 -0
  49. package/projects/onemrva/design-system/layout/src/models/onem-language.model.ts +4 -0
  50. package/projects/onemrva/design-system/layout/src/models/onemrva-profile.model.ts +57 -0
  51. package/projects/onemrva/design-system/layout/src/services/drawer.service.ts +28 -0
  52. package/projects/onemrva/design-system/layout/src/striphtml.pipe.ts +11 -0
  53. package/projects/onemrva/design-system/layout/src/test.ts +25 -0
  54. package/projects/onemrva/design-system/mat-avatar/index.ts +2 -0
  55. package/projects/onemrva/design-system/mat-avatar/ng-package.json +6 -0
  56. package/projects/onemrva/design-system/mat-avatar/src/onemrva-mat-avatar.component.html +17 -0
  57. package/projects/onemrva/design-system/mat-avatar/src/onemrva-mat-avatar.component.scss +130 -0
  58. package/projects/onemrva/design-system/mat-avatar/src/onemrva-mat-avatar.component.ts +421 -0
  59. package/projects/onemrva/design-system/mat-avatar/src/onemrva-mat-avatar.module.ts +17 -0
  60. package/projects/onemrva/design-system/mat-badge/index.ts +6 -0
  61. package/projects/onemrva/design-system/mat-badge/ng-package.json +6 -0
  62. package/projects/onemrva/design-system/mat-badge/src/onemrva-mat-badge.component.scss +152 -0
  63. package/projects/onemrva/design-system/mat-badge/src/onemrva-mat-badge.component.ts +291 -0
  64. package/projects/onemrva/design-system/mat-badge/src/onemrva-mat-badge.module.ts +8 -0
  65. package/projects/onemrva/design-system/mat-breadcrumb/index.ts +7 -0
  66. package/projects/onemrva/design-system/mat-breadcrumb/ng-package.json +6 -0
  67. package/projects/onemrva/design-system/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.html +37 -0
  68. package/projects/onemrva/design-system/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.scss +70 -0
  69. package/projects/onemrva/design-system/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.ts +16 -0
  70. package/projects/onemrva/design-system/mat-breadcrumb/src/onemrva-mat-breadcrumb.model.ts +4 -0
  71. package/projects/onemrva/design-system/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.ts +12 -0
  72. package/projects/onemrva/design-system/mat-breadcrumb/src/onemrva-mat-breadcrumb.service.ts +65 -0
  73. package/projects/onemrva/design-system/mat-clipboard/index.ts +6 -0
  74. package/projects/onemrva/design-system/mat-clipboard/ng-package.json +6 -0
  75. package/projects/onemrva/design-system/mat-clipboard/src/_onemrva-mat-spinner.component.scss +62 -0
  76. package/projects/onemrva/design-system/mat-clipboard/src/onemrva-mat-clipboard.component.ts +16 -0
  77. package/projects/onemrva/design-system/mat-clipboard/src/onemrva-mat-clipboard.module.ts +14 -0
  78. package/projects/onemrva/design-system/mat-datepicker-header/index.ts +5 -0
  79. package/projects/onemrva/design-system/mat-datepicker-header/ng-package.json +6 -0
  80. package/projects/onemrva/design-system/mat-datepicker-header/src/_onemrva-mat-datepicker-header.component.scss +11 -0
  81. package/projects/onemrva/design-system/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.html +53 -0
  82. package/projects/onemrva/design-system/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.ts +285 -0
  83. package/projects/onemrva/design-system/mat-file-upload/index.ts +11 -0
  84. package/projects/onemrva/design-system/mat-file-upload/ng-package.json +6 -0
  85. package/projects/onemrva/design-system/mat-file-upload/src/components/index.ts +10 -0
  86. package/projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.html +59 -0
  87. package/projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.scss +24 -0
  88. package/projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.ts +79 -0
  89. package/projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.html +53 -0
  90. package/projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.scss +248 -0
  91. package/projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.ts +185 -0
  92. package/projects/onemrva/design-system/mat-file-upload/src/directives/dnd.directive.ts +43 -0
  93. package/projects/onemrva/design-system/mat-file-upload/src/models/action-config.model.ts +10 -0
  94. package/projects/onemrva/design-system/mat-file-upload/src/models/progress-file.model.ts +94 -0
  95. package/projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload-itf.store.ts +79 -0
  96. package/projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.module.ts +28 -0
  97. package/projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.service.ts +68 -0
  98. package/projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.store.ts +473 -0
  99. package/projects/onemrva/design-system/mat-input-bank-account/index.ts +5 -0
  100. package/projects/onemrva/design-system/mat-input-bank-account/ng-package.json +6 -0
  101. package/projects/onemrva/design-system/mat-input-bank-account/src/onemrva-mat-input-bank-account.component.html +32 -0
  102. package/projects/onemrva/design-system/mat-input-bank-account/src/onemrva-mat-input-bank-account.component.scss +9 -0
  103. package/projects/onemrva/design-system/mat-input-bank-account/src/onemrva-mat-input-bank-account.component.ts +125 -0
  104. package/projects/onemrva/design-system/mat-input-country/index.ts +6 -0
  105. package/projects/onemrva/design-system/mat-input-country/ng-package.json +6 -0
  106. package/projects/onemrva/design-system/mat-input-country/src/countries.ts +3182 -0
  107. package/projects/onemrva/design-system/mat-input-country/src/onemrva-mat-input-country.component.html +29 -0
  108. package/projects/onemrva/design-system/mat-input-country/src/onemrva-mat-input-country.component.scss +29 -0
  109. package/projects/onemrva/design-system/mat-input-country/src/onemrva-mat-input-country.component.ts +144 -0
  110. package/projects/onemrva/design-system/mat-input-enterprise-number/index.ts +5 -0
  111. package/projects/onemrva/design-system/mat-input-enterprise-number/ng-package.json +6 -0
  112. package/projects/onemrva/design-system/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.html +39 -0
  113. package/projects/onemrva/design-system/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.scss +25 -0
  114. package/projects/onemrva/design-system/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.ts +190 -0
  115. package/projects/onemrva/design-system/mat-input-phone/index.ts +6 -0
  116. package/projects/onemrva/design-system/mat-input-phone/ng-package.json +6 -0
  117. package/projects/onemrva/design-system/mat-input-phone/src/onemrva-mat-input-phone.component.html +43 -0
  118. package/projects/onemrva/design-system/mat-input-phone/src/onemrva-mat-input-phone.component.scss +29 -0
  119. package/projects/onemrva/design-system/mat-input-phone/src/onemrva-mat-input-phone.component.ts +261 -0
  120. package/projects/onemrva/design-system/mat-input-phone/src/phone-number.directive.ts +47 -0
  121. package/projects/onemrva/design-system/mat-message-box/index.ts +2 -0
  122. package/projects/onemrva/design-system/mat-message-box/ng-package.json +6 -0
  123. package/projects/onemrva/design-system/mat-message-box/src/onemrva-mat-message-box.component.scss +60 -0
  124. package/projects/onemrva/design-system/mat-message-box/src/onemrva-mat-message-box.component.ts +134 -0
  125. package/projects/onemrva/design-system/mat-message-box/src/onemrva-mat-message-box.module.ts +12 -0
  126. package/projects/onemrva/design-system/mat-multi-select/index.ts +2 -0
  127. package/projects/onemrva/design-system/mat-multi-select/ng-package.json +6 -0
  128. package/projects/onemrva/design-system/mat-multi-select/src/_onemrva-mat-multi-select.component.scss +66 -0
  129. package/projects/onemrva/design-system/mat-multi-select/src/onemrva-mat-multi-select.component.html +24 -0
  130. package/projects/onemrva/design-system/mat-multi-select/src/onemrva-mat-multi-select.component.ts +152 -0
  131. package/projects/onemrva/design-system/mat-multi-select/src/onemrva-mat-multi-select.module.ts +31 -0
  132. package/projects/onemrva/design-system/mat-notification/index.ts +1 -0
  133. package/projects/onemrva/design-system/mat-notification/ng-package.json +6 -0
  134. package/projects/onemrva/design-system/mat-notification/src/_onemrva-mat-notification.component.scss +71 -0
  135. package/projects/onemrva/design-system/mat-notification/src/onemrva-mat-notification.component.html +10 -0
  136. package/projects/onemrva/design-system/mat-notification/src/onemrva-mat-notification.component.ts +158 -0
  137. package/projects/onemrva/design-system/mat-paginator/index.ts +6 -0
  138. package/projects/onemrva/design-system/mat-paginator/ng-package.json +7 -0
  139. package/projects/onemrva/design-system/mat-paginator/package.json +7 -0
  140. package/projects/onemrva/design-system/mat-paginator/src/_onemrva-mat-paginator.component.scss +122 -0
  141. package/projects/onemrva/design-system/mat-paginator/src/onemrva-mat-paginator.component.html +104 -0
  142. package/projects/onemrva/design-system/mat-paginator/src/onemrva-mat-paginator.component.spec.ts +184 -0
  143. package/projects/onemrva/design-system/mat-paginator/src/onemrva-mat-paginator.component.ts +214 -0
  144. package/projects/onemrva/design-system/mat-paginator/src/onemrva-mat-paginator.module.ts +15 -0
  145. package/projects/onemrva/design-system/mat-panel/index.ts +6 -0
  146. package/projects/onemrva/design-system/mat-panel/ng-package.json +6 -0
  147. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel-content.component.ts +12 -0
  148. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel-content.html +5 -0
  149. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel-icon.component.ts +12 -0
  150. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel-icon.html +5 -0
  151. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel-title-action.component.ts +12 -0
  152. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel-title-action.html +5 -0
  153. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel-title.component.ts +20 -0
  154. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel-title.html +8 -0
  155. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel.component.html +10 -0
  156. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel.component.scss +100 -0
  157. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel.component.ts +122 -0
  158. package/projects/onemrva/design-system/mat-panel/src/onemrva-mat-panel.module.ts +26 -0
  159. package/projects/onemrva/design-system/mat-pop-over/index.ts +4 -0
  160. package/projects/onemrva/design-system/mat-pop-over/ng-package.json +6 -0
  161. package/projects/onemrva/design-system/mat-pop-over/src/onemrva-mat-pop-over-content.component.ts +13 -0
  162. package/projects/onemrva/design-system/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.ts +13 -0
  163. package/projects/onemrva/design-system/mat-pop-over/src/onemrva-mat-pop-over.component.html +29 -0
  164. package/projects/onemrva/design-system/mat-pop-over/src/onemrva-mat-pop-over.component.scss +141 -0
  165. package/projects/onemrva/design-system/mat-pop-over/src/onemrva-mat-pop-over.component.ts +47 -0
  166. package/projects/onemrva/design-system/mat-pop-over/src/onemrva-mat-pop-over.module.ts +19 -0
  167. package/projects/onemrva/design-system/mat-progress-bar/index.ts +1 -0
  168. package/projects/onemrva/design-system/mat-progress-bar/ng-package.json +6 -0
  169. package/projects/onemrva/design-system/mat-progress-bar/src/_onemrva-mat-progress-bar-mixin.component.scss +37 -0
  170. package/projects/onemrva/design-system/mat-progress-bar/src/onemrva-mat-progress-bar.component.html +13 -0
  171. package/projects/onemrva/design-system/mat-progress-bar/src/onemrva-mat-progress-bar.component.ts +27 -0
  172. package/projects/onemrva/design-system/mat-select-search/index.ts +3 -0
  173. package/projects/onemrva/design-system/mat-select-search/ng-package.json +6 -0
  174. package/projects/onemrva/design-system/mat-select-search/src/default-options.ts +42 -0
  175. package/projects/onemrva/design-system/mat-select-search/src/mat-select-no-entries-found.directive.ts +15 -0
  176. package/projects/onemrva/design-system/mat-select-search/src/mat-select-search-clear.directive.ts +13 -0
  177. package/projects/onemrva/design-system/mat-select-search/src/mat-select-search.component.html +67 -0
  178. package/projects/onemrva/design-system/mat-select-search/src/mat-select-search.component.scss +126 -0
  179. package/projects/onemrva/design-system/mat-select-search/src/mat-select-search.component.spec.ts +790 -0
  180. package/projects/onemrva/design-system/mat-select-search/src/mat-select-search.component.ts +612 -0
  181. package/projects/onemrva/design-system/mat-select-search/src/mat-select-search.module.ts +53 -0
  182. package/projects/onemrva/design-system/mat-side-menu/index.ts +6 -0
  183. package/projects/onemrva/design-system/mat-side-menu/ng-package.json +6 -0
  184. package/projects/onemrva/design-system/mat-side-menu/src/onemrva-mat-side-menu.component.html +36 -0
  185. package/projects/onemrva/design-system/mat-side-menu/src/onemrva-mat-side-menu.component.scss +50 -0
  186. package/projects/onemrva/design-system/mat-side-menu/src/onemrva-mat-side-menu.component.spec.ts +66 -0
  187. package/projects/onemrva/design-system/mat-side-menu/src/onemrva-mat-side-menu.component.ts +46 -0
  188. package/projects/onemrva/design-system/mat-side-menu/src/onemrva-mat-side-menu.module.ts +14 -0
  189. package/projects/onemrva/design-system/mat-skeleton/index.ts +3 -0
  190. package/projects/onemrva/design-system/mat-skeleton/ng-package.json +6 -0
  191. package/projects/onemrva/design-system/mat-skeleton/src/onemrva-mat-skeleton-enums.ts +32 -0
  192. package/projects/onemrva/design-system/mat-skeleton/src/onemrva-mat-skeleton.component.html +17 -0
  193. package/projects/onemrva/design-system/mat-skeleton/src/onemrva-mat-skeleton.component.scss +216 -0
  194. package/projects/onemrva/design-system/mat-skeleton/src/onemrva-mat-skeleton.component.ts +173 -0
  195. package/projects/onemrva/design-system/mat-skeleton/src/onemrva-mat-skeleton.module.ts +16 -0
  196. package/projects/onemrva/design-system/mat-spinner/index.ts +6 -0
  197. package/projects/onemrva/design-system/mat-spinner/ng-package.json +6 -0
  198. package/projects/onemrva/design-system/mat-spinner/src/_onemrva-mat-spinner.component.scss +62 -0
  199. package/projects/onemrva/design-system/mat-spinner/src/onemrva-mat-spinner.component.ts +11 -0
  200. package/projects/onemrva/design-system/mat-spinner/src/onemrva-mat-spinner.module.ts +8 -0
  201. package/projects/onemrva/design-system/mat-stepper/index.ts +6 -0
  202. package/projects/onemrva/design-system/mat-stepper/ng-package.json +6 -0
  203. package/projects/onemrva/design-system/mat-stepper/src/_stepper-variables.scss +29 -0
  204. package/projects/onemrva/design-system/mat-stepper/src/onemrva-mat-stepper.component.spec.ts +23 -0
  205. package/projects/onemrva/design-system/mat-stepper/src/onemrva-mat-stepper.component.ts +60 -0
  206. package/projects/onemrva/design-system/mat-stepper/src/onemrva-mat-stepper.html +53 -0
  207. package/projects/onemrva/design-system/mat-stepper/src/onemrva-mat-stepper.module.ts +30 -0
  208. package/projects/onemrva/design-system/mat-stepper/src/onemrva-mat-stepper.scss +106 -0
  209. package/projects/onemrva/design-system/mat-stepper/src/onemrva-stepper-animations.ts +40 -0
  210. package/projects/onemrva/design-system/mat-table-of-content/index.ts +8 -0
  211. package/projects/onemrva/design-system/mat-table-of-content/ng-package.json +6 -0
  212. package/projects/onemrva/design-system/mat-table-of-content/src/_onemrva-mat-table-of-content.component.scss +79 -0
  213. package/projects/onemrva/design-system/mat-table-of-content/src/onemrva-mat-table-of-content.component.html +23 -0
  214. package/projects/onemrva/design-system/mat-table-of-content/src/onemrva-mat-table-of-content.component.ts +128 -0
  215. package/projects/onemrva/design-system/mat-table-of-content/src/onemrva-mat-table-of-content.directive.ts +67 -0
  216. package/projects/onemrva/design-system/mat-table-of-content/src/onemrva-mat-table-of-content.service.ts +51 -0
  217. package/projects/onemrva/design-system/mat-table-of-content/src/onemrva-mat-toc-anchor.model.ts +24 -0
  218. package/projects/onemrva/design-system/mat-task-list/index.ts +5 -0
  219. package/projects/onemrva/design-system/mat-task-list/ng-package.json +6 -0
  220. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task-content.component.ts +12 -0
  221. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task-content.html +5 -0
  222. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task-list.component.html +1 -0
  223. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task-list.component.scss +150 -0
  224. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task-list.component.ts +50 -0
  225. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task-list.module.ts +31 -0
  226. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task-title.component.ts +18 -0
  227. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task-title.html +5 -0
  228. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task.component.html +17 -0
  229. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task.component.scss +0 -0
  230. package/projects/onemrva/design-system/mat-task-list/src/onemrva-mat-task.component.ts +117 -0
  231. package/projects/onemrva/design-system/mat-timepicker/index.ts +6 -0
  232. package/projects/onemrva/design-system/mat-timepicker/ng-package.json +6 -0
  233. package/projects/onemrva/design-system/mat-timepicker/src/clock/clock.component.html +42 -0
  234. package/projects/onemrva/design-system/mat-timepicker/src/clock/clock.component.scss +129 -0
  235. package/projects/onemrva/design-system/mat-timepicker/src/clock/clock.component.spec.ts +25 -0
  236. package/projects/onemrva/design-system/mat-timepicker/src/clock/clock.component.ts +273 -0
  237. package/projects/onemrva/design-system/mat-timepicker/src/interfaces-and-types.ts +16 -0
  238. package/projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.component.html +0 -0
  239. package/projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.component.ts +289 -0
  240. package/projects/onemrva/design-system/mat-timepicker/src/onemrva-mat-timepicker.module.ts +40 -0
  241. package/projects/onemrva/design-system/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.html +53 -0
  242. package/projects/onemrva/design-system/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.scss +69 -0
  243. package/projects/onemrva/design-system/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.spec.ts +25 -0
  244. package/projects/onemrva/design-system/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.ts +169 -0
  245. package/projects/onemrva/design-system/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.html +15 -0
  246. package/projects/onemrva/design-system/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.scss +32 -0
  247. package/projects/onemrva/design-system/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.ts +135 -0
  248. package/projects/onemrva/design-system/mat-timepicker/src/timepicker.directive.ts +594 -0
  249. package/projects/onemrva/design-system/mat-timepicker/src/util.ts +97 -0
  250. package/projects/onemrva/design-system/mat-toast/index.ts +6 -0
  251. package/projects/onemrva/design-system/mat-toast/ng-package.json +6 -0
  252. package/projects/onemrva/design-system/mat-toast/src/onemrva-mat-toast.component.scss +54 -0
  253. package/projects/onemrva/design-system/mat-toast/src/onemrva-mat-toast.component.ts +36 -0
  254. package/projects/onemrva/design-system/mat-toast/src/onemrva-mat-toast.module.ts +11 -0
  255. package/projects/onemrva/design-system/mat-tooltip/index.ts +4 -0
  256. package/projects/onemrva/design-system/mat-tooltip/ng-package.json +6 -0
  257. package/projects/onemrva/design-system/mat-tooltip/src/onemrva-mat-tooltip.component.scss +9 -0
  258. package/projects/onemrva/design-system/mat-tooltip/src/onemrva-mat-tooltip.component.ts +21 -0
  259. package/projects/onemrva/design-system/mat-tooltip/src/onemrva-mat-tooltip.directive.ts +119 -0
  260. package/projects/onemrva/design-system/mat-tooltip/src/onemrva-mat-tooltip.module.ts +11 -0
  261. package/projects/onemrva/design-system/ng-package.json +20 -0
  262. package/projects/onemrva/design-system/package.json +27 -0
  263. package/projects/onemrva/design-system/page-not-found/assets/404/Arri/303/250re-plan.svg +22 -0
  264. package/projects/onemrva/design-system/page-not-found/assets/404/Halo.svg +10 -0
  265. package/projects/onemrva/design-system/page-not-found/assets/404/Ombre.svg +3 -0
  266. package/projects/onemrva/design-system/page-not-found/assets/404/Page.svg +21 -0
  267. package/projects/onemrva/design-system/page-not-found/assets/404/Page2.svg +19 -0
  268. package/projects/onemrva/design-system/page-not-found/assets/404/Soucoupe.svg +70 -0
  269. package/projects/onemrva/design-system/page-not-found/assets/404/Yeux.svg +6 -0
  270. package/projects/onemrva/design-system/page-not-found/assets/404/shape.svg +3 -0
  271. package/projects/onemrva/design-system/page-not-found/index.ts +5 -0
  272. package/projects/onemrva/design-system/page-not-found/ng-package.json +9 -0
  273. package/projects/onemrva/design-system/page-not-found/src/page-not-found-action.component.ts +9 -0
  274. package/projects/onemrva/design-system/page-not-found/src/page-not-found-extra.component.ts +9 -0
  275. package/projects/onemrva/design-system/page-not-found/src/page-not-found-invader.component.scss +16 -0
  276. package/projects/onemrva/design-system/page-not-found/src/page-not-found-invader.component.ts +84 -0
  277. package/projects/onemrva/design-system/page-not-found/src/page-not-found-mixin.component.scss +12 -0
  278. package/projects/onemrva/design-system/page-not-found/src/page-not-found.component.html +31 -0
  279. package/projects/onemrva/design-system/page-not-found/src/page-not-found.component.scss +206 -0
  280. package/projects/onemrva/design-system/page-not-found/src/page-not-found.component.ts +59 -0
  281. package/projects/onemrva/design-system/page-not-found/src/page-not-found.module.ts +24 -0
  282. package/projects/onemrva/design-system/src/public-api.ts +5 -0
  283. package/projects/onemrva/design-system/tsconfig.lib.json +12 -0
  284. package/projects/onemrva/design-system/tsconfig.lib.prod.json +10 -0
  285. package/projects/onemrva/design-system/utils/index.ts +2 -0
  286. package/projects/onemrva/design-system/utils/ng-package.json +6 -0
  287. package/projects/onemrva/design-system/utils/src/enum.utils.ts +6 -0
  288. package/projects/onemrva/design-system/utils/src/enums/color.enum.ts +14 -0
  289. package/projects/onemrva/design-system/utils/src/enums/index.ts +2 -0
  290. package/projects/onemrva/design-system/utils/src/enums/size.enum.ts +11 -0
  291. package/projects/schematics/README.md +40 -0
  292. package/projects/schematics/package.json +25 -0
  293. package/projects/schematics/src/cmp-demo/schema.json +15 -0
  294. package/projects/schematics/src/collection.json +17 -0
  295. package/projects/schematics/src/component/files/root/ng-package.json +6 -0
  296. package/projects/schematics/src/component/files/src/onemrva-mat-__name__.component.html +4 -0
  297. package/projects/schematics/src/component/schema.json +11 -0
  298. package/projects/schematics/src/demo/files/demo/demo-__name__.component.html +2 -0
  299. package/projects/schematics/src/demo/files/demo/readme.md +26 -0
  300. package/projects/schematics/src/demo/schema.json +15 -0
  301. package/projects/schematics/tsconfig.json +24 -0
  302. package/projects/test/.nycrc +5 -0
  303. package/projects/test/cypress/coverage.webpack.ts +20 -0
  304. package/projects/test/cypress/cucumber-json/basictest.cucumber.json +402 -0
  305. package/projects/test/cypress/fixtures/example.json +5 -0
  306. package/projects/test/cypress/integration/basictest.feature +53 -0
  307. package/projects/test/cypress/integration/common/basicTestSteps.ts +54 -0
  308. package/projects/test/cypress/plugins/index.ts +13 -0
  309. package/projects/test/cypress/support/commands.ts +44 -0
  310. package/projects/test/cypress/support/e2e.ts +20 -0
  311. package/projects/test/cypress/tsconfig.json +10 -0
  312. package/projects/test/cypress/videos/basictest.feature.mp4 +0 -0
  313. package/projects/test/karma.conf.js +44 -0
  314. package/projects/test/src/app/app-routing.module.ts +14 -0
  315. package/projects/test/src/app/app.component.html +14 -0
  316. package/projects/test/src/app/app.component.scss +0 -0
  317. package/projects/test/src/app/app.component.spec.ts +35 -0
  318. package/projects/test/src/app/app.component.ts +51 -0
  319. package/projects/test/src/app/app.module.ts +103 -0
  320. package/projects/test/src/app/demos/avatar/demo-avatar.component.html +77 -0
  321. package/projects/test/src/app/demos/avatar/demo-avatar.component.scss +4 -0
  322. package/projects/test/src/app/demos/avatar/demo-avatar.component.ts +13 -0
  323. package/projects/test/src/app/demos/badge/demo-badge.component.html +389 -0
  324. package/projects/test/src/app/demos/badge/demo-badge.component.scss +4 -0
  325. package/projects/test/src/app/demos/badge/demo-badge.component.ts +22 -0
  326. package/projects/test/src/app/demos/badge/readme.md +30 -0
  327. package/projects/test/src/app/demos/breadcrumb/demo-breadcrumb.component.html +20 -0
  328. package/projects/test/src/app/demos/breadcrumb/demo-breadcrumb.component.ts +7 -0
  329. package/projects/test/src/app/demos/breadcrumb/demo-breadcrumb.module.ts +89 -0
  330. package/projects/test/src/app/demos/breadcrumb/readme.md +29 -0
  331. package/projects/test/src/app/demos/datepicker/demo-datepicker.component.html +10 -0
  332. package/projects/test/src/app/demos/datepicker/demo-datepicker.component.scss +5 -0
  333. package/projects/test/src/app/demos/datepicker/demo-datepicker.component.ts +12 -0
  334. package/projects/test/src/app/demos/datepicker/demo-datepicker.module.ts +43 -0
  335. package/projects/test/src/app/demos/datepicker/readme.md +36 -0
  336. package/projects/test/src/app/demos/file-upload/demo-file-upload.component.html +30 -0
  337. package/projects/test/src/app/demos/file-upload/demo-file-upload.component.ts +132 -0
  338. package/projects/test/src/app/demos/file-upload/demo-file-upload.service.ts +60 -0
  339. package/projects/test/src/app/demos/file-upload/readme.md +26 -0
  340. package/projects/test/src/app/demos/input-bank-account/demo-input-bank-account.component.ts +19 -0
  341. package/projects/test/src/app/demos/input-bank-account/demo-input-bank-account.module.ts +20 -0
  342. package/projects/test/src/app/demos/input-country/demo-input-country.component.html +9 -0
  343. package/projects/test/src/app/demos/input-country/demo-input-country.component.ts +14 -0
  344. package/projects/test/src/app/demos/input-country/demo-input-country.module.ts +26 -0
  345. package/projects/test/src/app/demos/input-enterprise-number/demo-input-enterprise-number.component.ts +13 -0
  346. package/projects/test/src/app/demos/input-enterprise-number/demo-input-enterprise-number.module.ts +20 -0
  347. package/projects/test/src/app/demos/input-phone/demo-input-phone.component.html +16 -0
  348. package/projects/test/src/app/demos/input-phone/demo-input-phone.component.ts +16 -0
  349. package/projects/test/src/app/demos/input-phone/demo-input-phone.module.ts +21 -0
  350. package/projects/test/src/app/demos/message-box/demo-message-box.component.html +32 -0
  351. package/projects/test/src/app/demos/message-box/demo-message-box.component.ts +12 -0
  352. package/projects/test/src/app/demos/message-box/readme.md +26 -0
  353. package/projects/test/src/app/demos/multiselect/demo-multiselect.component.html +53 -0
  354. package/projects/test/src/app/demos/multiselect/demo-multiselect.component.scss +23 -0
  355. package/projects/test/src/app/demos/multiselect/demo-multiselect.component.ts +53 -0
  356. package/projects/test/src/app/demos/multiselect/demo-multiselect.module.ts +38 -0
  357. package/projects/test/src/app/demos/multiselect/readme.md +34 -0
  358. package/projects/test/src/app/demos/not-found/demo-not-found.component.html +21 -0
  359. package/projects/test/src/app/demos/not-found/demo-not-found.component.scss +6 -0
  360. package/projects/test/src/app/demos/not-found/demo-not-found.component.ts +50 -0
  361. package/projects/test/src/app/demos/not-found/readme.md +44 -0
  362. package/projects/test/src/app/demos/notification/demo-notification.component.html +5 -0
  363. package/projects/test/src/app/demos/notification/demo-notification.component.ts +10 -0
  364. package/projects/test/src/app/demos/paginator/demo-paginator.component.html +35 -0
  365. package/projects/test/src/app/demos/paginator/demo-paginator.component.ts +25 -0
  366. package/projects/test/src/app/demos/paginator/readme.md +89 -0
  367. package/projects/test/src/app/demos/panel/demo-panel.component.html +53 -0
  368. package/projects/test/src/app/demos/panel/demo-panel.component.scss +3 -0
  369. package/projects/test/src/app/demos/panel/demo-panel.component.ts +20 -0
  370. package/projects/test/src/app/demos/panel/readme.md +26 -0
  371. package/projects/test/src/app/demos/pop-over/demo-pop-over.component.html +130 -0
  372. package/projects/test/src/app/demos/pop-over/demo-pop-over.component.scss +9 -0
  373. package/projects/test/src/app/demos/pop-over/demo-pop-over.component.ts +13 -0
  374. package/projects/test/src/app/demos/pop-over/readme.md +26 -0
  375. package/projects/test/src/app/demos/progress-bar/demo-progress-bar.component.html +19 -0
  376. package/projects/test/src/app/demos/progress-bar/demo-progress-bar.component.ts +35 -0
  377. package/projects/test/src/app/demos/side-menu/demo-side-menu.component.html +5 -0
  378. package/projects/test/src/app/demos/side-menu/demo-side-menu.component.ts +34 -0
  379. package/projects/test/src/app/demos/side-menu/readme.md +30 -0
  380. package/projects/test/src/app/demos/skeleton/demo-skeleton.component.html +119 -0
  381. package/projects/test/src/app/demos/skeleton/demo-skeleton.component.scss +0 -0
  382. package/projects/test/src/app/demos/skeleton/demo-skeleton.component.ts +35 -0
  383. package/projects/test/src/app/demos/spinner/demo-spinner.component.html +1 -0
  384. package/projects/test/src/app/demos/spinner/demo-spinner.component.ts +10 -0
  385. package/projects/test/src/app/demos/spinner/readme.md +24 -0
  386. package/projects/test/src/app/demos/summary-stepper/demo-summary-stepper.component.html +108 -0
  387. package/projects/test/src/app/demos/summary-stepper/demo-summary-stepper.component.scss +3 -0
  388. package/projects/test/src/app/demos/summary-stepper/demo-summary-stepper.component.ts +55 -0
  389. package/projects/test/src/app/demos/summary-stepper/readme.md +26 -0
  390. package/projects/test/src/app/demos/table/demo-table-datasource.ts +140 -0
  391. package/projects/test/src/app/demos/table/demo-table.component.html +41 -0
  392. package/projects/test/src/app/demos/table/demo-table.component.scss +17 -0
  393. package/projects/test/src/app/demos/table/demo-table.component.ts +51 -0
  394. package/projects/test/src/app/demos/table/demo-table.module.ts +45 -0
  395. package/projects/test/src/app/demos/table/readme.md +27 -0
  396. package/projects/test/src/app/demos/task-list/demo-task-list.component.html +37 -0
  397. package/projects/test/src/app/demos/task-list/demo-task-list.component.scss +3 -0
  398. package/projects/test/src/app/demos/task-list/demo-task-list.component.ts +14 -0
  399. package/projects/test/src/app/demos/task-list/demo-task-list.module.ts +29 -0
  400. package/projects/test/src/app/demos/task-list/readme.md +26 -0
  401. package/projects/test/src/app/demos/timepicker/demo-timepicker.component.html +9 -0
  402. package/projects/test/src/app/demos/timepicker/demo-timepicker.component.ts +31 -0
  403. package/projects/test/src/app/demos/timepicker/readme.md +26 -0
  404. package/projects/test/src/app/demos/toast/demo-toast.component.html +8 -0
  405. package/projects/test/src/app/demos/toast/demo-toast.component.scss +3 -0
  406. package/projects/test/src/app/demos/toast/demo-toast.component.ts +61 -0
  407. package/projects/test/src/app/demos/toast/readme.md +30 -0
  408. package/projects/test/src/app/demos/toc/demo-toc.component.html +288 -0
  409. package/projects/test/src/app/demos/toc/demo-toc.component.ts +26 -0
  410. package/projects/test/src/app/demos/tooltip/demo-tooltip.component.html +73 -0
  411. package/projects/test/src/app/demos/tooltip/demo-tooltip.component.scss +11 -0
  412. package/projects/test/src/app/demos/tooltip/demo-tooltip.component.ts +14 -0
  413. package/projects/test/src/app/home.component.ts +54 -0
  414. package/projects/test/src/app/material.module.ts +39 -0
  415. package/projects/test/src/app/onemrva-translate-http-loader.ts +35 -0
  416. package/projects/test/src/app/routes.ts +198 -0
  417. package/projects/test/src/assets/.gitkeep +0 -0
  418. package/projects/test/src/assets/i18n/de.json +80 -0
  419. package/projects/test/src/assets/i18n/en.json +80 -0
  420. package/projects/test/src/assets/i18n/fr.json +80 -0
  421. package/projects/test/src/assets/i18n/nl.json +79 -0
  422. package/projects/test/src/environments/environment.e2e.ts +3 -0
  423. package/projects/test/src/environments/environment.prod.ts +3 -0
  424. package/projects/test/src/environments/environment.ts +16 -0
  425. package/projects/test/src/favicon.ico +0 -0
  426. package/projects/test/src/index.html +15 -0
  427. package/projects/test/src/main.ts +12 -0
  428. package/projects/test/src/polyfills.ts +53 -0
  429. package/projects/test/src/styles.scss +22 -0
  430. package/projects/test/src/test.ts +26 -0
  431. package/projects/test/tsconfig.app.json +15 -0
  432. package/projects/test/tsconfig.spec.json +18 -0
  433. package/rva.crt +36 -0
  434. package/tsconfig.json +44 -0
@@ -0,0 +1,790 @@
1
+ /**
2
+ * Copyright (c) 2018 Bithost GmbH All Rights Reserved.
3
+ *
4
+ * Use of this source code is governed by an MIT-style license that can be
5
+ * found in the LICENSE file at https://angular.io/license
6
+ */
7
+
8
+ import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
9
+ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
10
+ import { UntypedFormControl, ReactiveFormsModule } from '@angular/forms';
11
+ import { CommonModule } from '@angular/common';
12
+ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
13
+ import { MatFormFieldModule } from '@angular/material/form-field';
14
+ import { MatSelect, MatSelectModule } from '@angular/material/select';
15
+ import { ReplaySubject } from 'rxjs';
16
+ import { Subject } from 'rxjs';
17
+ import { delay, take } from 'rxjs/operators';
18
+ import { takeUntil } from 'rxjs/operators';
19
+
20
+ import { MatSelectSearchComponent } from './mat-select-search.component';
21
+ import { MatSelectSearchModule } from './ngx-mat-select-search.module';
22
+ import { LiveAnnouncer } from '@angular/cdk/a11y';
23
+ import { DOWN_ARROW } from '@angular/cdk/keycodes';
24
+ import { MAT_SELECTSEARCH_DEFAULT_OPTIONS, MatSelectSearchOptions } from './default-options';
25
+
26
+ /* tslint:disable:component-selector */
27
+
28
+ interface Bank {
29
+ id: string;
30
+ name: string;
31
+ }
32
+
33
+ @Component({
34
+ selector: 'mat-select-search-test',
35
+ template: `
36
+ <h3>Single selection</h3>
37
+ <p>
38
+ <mat-form-field>
39
+ <mat-select [formControl]="bankCtrl" placeholder="Bank" #selectSingle>
40
+ <ngx-mat-select-search [formControl]="bankFilterCtrl" #selectSearchSingle></ngx-mat-select-search>
41
+ <mat-option *ngFor="let bank of filteredBanks | async" [value]="bank">
42
+ {{bank.name}}
43
+ </mat-option>
44
+ </mat-select>
45
+ </mat-form-field>
46
+ </p>
47
+ <p>
48
+ Selected Bank: {{bankCtrl.value?.name}}
49
+ </p>
50
+
51
+ <h3>Single selection inside mat-option</h3>
52
+ <p>
53
+ <mat-form-field>
54
+ <mat-select [formControl]="bankCtrlMatOption" placeholder="Bank" #selectSingleMatOption>
55
+ <mat-option>
56
+ <ngx-mat-select-search [formControl]="bankFilterCtrlMatOption"
57
+ #selectSearchSingleMatOption></ngx-mat-select-search>
58
+ </mat-option>
59
+ <mat-option *ngFor="let bank of filteredBanksMatOption | async" [value]="bank">
60
+ {{bank.name}}
61
+ </mat-option>
62
+ </mat-select>
63
+ </mat-form-field>
64
+ </p>
65
+ <p>
66
+ Selected Bank: {{bankCtrlMatOption.value?.name}}
67
+ </p>
68
+
69
+ <h3>Multiple selection</h3>
70
+ <p>
71
+ <mat-form-field>
72
+ <mat-select [formControl]="bankMultiCtrl" placeholder="Banks" [multiple]="true" #selectMulti>
73
+ <ngx-mat-select-search [formControl]="bankMultiFilterCtrl" #selectSearchMulti></ngx-mat-select-search>
74
+ <mat-option *ngFor="let bank of filteredBanksMulti | async" [value]="bank">
75
+ {{bank.name}}
76
+ </mat-option>
77
+ </mat-select>
78
+ </mat-form-field>
79
+ </p>
80
+ <p>
81
+ Selected Banks:
82
+ </p>
83
+ <ul *ngFor="let bank of bankMultiCtrl?.value">
84
+ <li>{{bank.name}}</li>
85
+ </ul>
86
+ `,
87
+ })
88
+ export class MatSelectSearchTestComponent implements OnInit, OnDestroy, AfterViewInit {
89
+
90
+ @ViewChild('selectSingle') matSelect: MatSelect;
91
+ @ViewChild('selectSingleMatOption') matSelectMatOption: MatSelect;
92
+ @ViewChild('selectMulti') matSelectMulti: MatSelect;
93
+ @ViewChild('selectSearchSingle') matSelectSearch: MatSelectSearchComponent;
94
+ @ViewChild('selectSearchSingleMatOption') matSelectSearchMatOption: MatSelectSearchComponent;
95
+ @ViewChild('selectSearchMulti') matSelectSearchMulti: MatSelectSearchComponent;
96
+
97
+ // control for the selected bank
98
+ public bankCtrl: UntypedFormControl = new UntypedFormControl();
99
+ // control for the selected bank
100
+ public bankCtrlMatOption: UntypedFormControl = new UntypedFormControl();
101
+ // control for the MatSelect filter keyword
102
+ public bankFilterCtrl: UntypedFormControl = new UntypedFormControl();
103
+ // control for the MatSelect filter keyword
104
+ public bankFilterCtrlMatOption: UntypedFormControl = new UntypedFormControl();
105
+
106
+ /** control for the selected bank for multi-selection */
107
+ public bankMultiCtrl: UntypedFormControl = new UntypedFormControl();
108
+
109
+ /** control for the MatSelect filter keyword multi-selection */
110
+ public bankMultiFilterCtrl: UntypedFormControl = new UntypedFormControl();
111
+
112
+
113
+ // list of banks
114
+ public banks: Bank[] = [{name: 'Bank A', id: 'A'}, {name: 'Bank B', id: 'B'}, {
115
+ name: 'Bank C',
116
+ id: 'C'
117
+ }, {name: 'Bank DC', id: 'DC'}];
118
+
119
+ public filteredBanks: ReplaySubject<Bank[]> = new ReplaySubject<Bank[]>(1);
120
+ public filteredBanksMatOption: ReplaySubject<Bank[]> = new ReplaySubject<Bank[]>(1);
121
+
122
+ /** list of banks filtered by search keyword for multi-selection */
123
+ public filteredBanksMulti: ReplaySubject<Bank[]> = new ReplaySubject<Bank[]>(1);
124
+
125
+ public initialSingleSelection: Bank = null;
126
+ public initialSingleSelectionMatOption: Bank = null;
127
+ public initialMultiSelection: Bank[] = [];
128
+
129
+
130
+ // Subject that emits when the component has been destroyed.
131
+ private _onDestroy = new Subject<void>();
132
+
133
+ ngOnInit() {
134
+ // set initial selection
135
+ if (this.initialSingleSelection) {
136
+ this.bankCtrl.setValue(this.initialSingleSelection);
137
+ }
138
+ if (this.initialSingleSelectionMatOption) {
139
+ this.bankCtrlMatOption.setValue(this.initialSingleSelectionMatOption);
140
+ }
141
+ if (this.initialMultiSelection) {
142
+ this.bankMultiCtrl.setValue(this.initialMultiSelection);
143
+ }
144
+
145
+
146
+ // load the initial bank list
147
+ this.filteredBanks.next(this.banks.slice());
148
+ this.filteredBanksMatOption.next(this.banks.slice());
149
+ this.filteredBanksMulti.next(this.banks.slice());
150
+
151
+ // listen for search field value changes
152
+ this.bankFilterCtrl.valueChanges
153
+ .pipe(takeUntil(this._onDestroy))
154
+ .subscribe(() => {
155
+ this.filterBanks();
156
+ });
157
+ this.bankFilterCtrlMatOption.valueChanges
158
+ .pipe(takeUntil(this._onDestroy))
159
+ .subscribe(() => {
160
+ this.filterBanksMatOption();
161
+ });
162
+ this.bankMultiFilterCtrl.valueChanges
163
+ .pipe(takeUntil(this._onDestroy))
164
+ .subscribe(() => {
165
+ this.filterBanksMulti();
166
+ });
167
+ }
168
+
169
+ ngAfterViewInit() {
170
+ this.setInitialValue();
171
+ }
172
+
173
+ ngOnDestroy() {
174
+ this._onDestroy.next();
175
+ this._onDestroy.complete();
176
+ }
177
+
178
+ /**
179
+ * Sets the initial value after the filteredBanks are loaded initially
180
+ */
181
+ private setInitialValue() {
182
+ this.filteredBanks
183
+ .pipe(take(1), takeUntil(this._onDestroy))
184
+ .subscribe(() => {
185
+ // setting the compareWith property to a comparison function
186
+ // triggers initializing the selection according to the initial value of
187
+ // the form control (i.e. _initializeSelection())
188
+ // this needs to be done after the filteredBanks are loaded initially
189
+ // and after the mat-option elements are available
190
+ this.matSelect.compareWith = (a: Bank, b: Bank) => a && b && a.id === b.id;
191
+ this.matSelectMatOption.compareWith = (a: Bank, b: Bank) => a && b && a.id === b.id;
192
+ this.matSelectMulti.compareWith = (a: Bank, b: Bank) => a && b && a.id === b.id;
193
+ });
194
+ }
195
+
196
+ private filterBanks() {
197
+ if (!this.banks) {
198
+ return;
199
+ }
200
+
201
+ // get the search keyword
202
+ let search = this.bankFilterCtrl.value;
203
+ if (!search) {
204
+ this.filteredBanks.next(this.banks.slice());
205
+ return;
206
+ } else {
207
+ search = search.toLowerCase();
208
+ }
209
+
210
+ // filter the banks
211
+ this.filteredBanks.next(
212
+ this.banks.filter(bank => bank.name.toLowerCase().indexOf(search) > -1)
213
+ );
214
+ }
215
+
216
+ private filterBanksMatOption() {
217
+ if (!this.banks) {
218
+ return;
219
+ }
220
+
221
+ // get the search keyword
222
+ let search = this.bankFilterCtrlMatOption.value;
223
+ if (!search) {
224
+ this.filteredBanksMatOption.next(this.banks.slice());
225
+ return;
226
+ } else {
227
+ search = search.toLowerCase();
228
+ }
229
+
230
+ // filter the banks
231
+ this.filteredBanksMatOption.next(
232
+ this.banks.filter(bank => bank.name.toLowerCase().indexOf(search) > -1)
233
+ );
234
+ }
235
+
236
+
237
+ private filterBanksMulti() {
238
+ if (!this.banks) {
239
+ return;
240
+ }
241
+ // get the search keyword
242
+ let search = this.bankMultiFilterCtrl.value;
243
+ if (!search) {
244
+ this.filteredBanksMulti.next(this.banks.slice());
245
+ return;
246
+ } else {
247
+ search = search.toLowerCase();
248
+ }
249
+ // filter the banks
250
+ this.filteredBanksMulti.next(
251
+ this.banks.filter(bank => bank.name.toLowerCase().indexOf(search) > -1)
252
+ );
253
+ }
254
+ }
255
+
256
+ describe('MatSelectSearchComponent', () => {
257
+ let component: MatSelectSearchTestComponent;
258
+ let fixture: ComponentFixture<MatSelectSearchTestComponent>;
259
+
260
+ beforeEach(waitForAsync(() => {
261
+ TestBed.configureTestingModule({
262
+ imports: [
263
+ CommonModule,
264
+ NoopAnimationsModule,
265
+ ReactiveFormsModule,
266
+ MatFormFieldModule,
267
+ MatSelectModule,
268
+ MatSelectSearchModule
269
+ ],
270
+ declarations: [MatSelectSearchTestComponent],
271
+ providers: [{
272
+ provide: LiveAnnouncer,
273
+ useValue: {
274
+ announce: jasmine.createSpy('announce')
275
+ }
276
+ }
277
+ ]
278
+ })
279
+ .compileComponents();
280
+ }));
281
+
282
+
283
+ beforeEach(() => {
284
+ fixture = TestBed.createComponent(MatSelectSearchTestComponent);
285
+ component = fixture.componentInstance;
286
+ });
287
+
288
+ describe('without initial selection', () => {
289
+
290
+ beforeEach(() => {
291
+ fixture.detectChanges();
292
+ });
293
+
294
+ it('should create', () => {
295
+ expect(component).toBeTruthy();
296
+ });
297
+
298
+ it('should show a search field and focus it when opening the select', (done) => {
299
+
300
+ component.filteredBanks
301
+ .pipe(
302
+ take(1),
303
+ delay(1)
304
+ )
305
+ .subscribe(() => {
306
+ // when the filtered banks are initialized
307
+ fixture.detectChanges();
308
+
309
+ component.matSelect.open();
310
+ fixture.detectChanges();
311
+
312
+ component.matSelect.openedChange
313
+ .pipe(
314
+ take(1),
315
+ delay(1)
316
+ )
317
+ .subscribe((opened) => {
318
+ expect(opened).toBe(true);
319
+ const searchField = document.querySelector('.mat-select-search-inner .mat-select-search-input');
320
+ const searchInner = document.querySelector('.mat-select-search-inner');
321
+ expect(searchInner).toBeTruthy();
322
+ expect(searchField).toBeTruthy();
323
+ // check focus
324
+ expect(searchField).toBe(document.activeElement);
325
+
326
+ const optionElements = document.querySelectorAll('mat-option');
327
+ expect(component.matSelect.options.length).toBe(4);
328
+ expect(optionElements.length).toBe(4);
329
+
330
+ done();
331
+ });
332
+
333
+ });
334
+
335
+ });
336
+
337
+
338
+ it('should filter the options available and hightlight the first option in the list, filter the options by input "c" and reset the list', (done) => {
339
+
340
+ component.filteredBanks
341
+ .pipe(
342
+ take(1),
343
+ delay(1)
344
+ )
345
+ .subscribe(() => {
346
+ // when the filtered banks are initialized
347
+ fixture.detectChanges();
348
+
349
+ component.matSelect.open();
350
+ fixture.detectChanges();
351
+
352
+ component.matSelect.openedChange
353
+ .pipe(take(1))
354
+ .subscribe((opened) => {
355
+ expect(opened).toBe(true);
356
+ const searchField = document.querySelector('.mat-select-search-inner .mat-select-search-input');
357
+ expect(searchField).toBeTruthy();
358
+
359
+ expect(component.matSelect.options.length).toBe(4);
360
+
361
+ // search for "c"
362
+ component.matSelectSearch._formControl.setValue('c');
363
+ fixture.detectChanges();
364
+
365
+ expect(component.bankFilterCtrl.value).toBe('c');
366
+ expect(component.matSelect.panelOpen).toBe(true);
367
+
368
+ component.filteredBanks
369
+ .pipe(take(1))
370
+ .subscribe(() => {
371
+ fixture.detectChanges();
372
+
373
+ setTimeout(() => {
374
+ expect(component.matSelect.options.length).toBe(2);
375
+ expect(component.matSelect.options.first.value.id).toBe('C');
376
+ expect(component.matSelect.options.first.active).toBe(true, 'first active');
377
+
378
+ component.matSelectSearch._reset(true);
379
+ fixture.detectChanges();
380
+
381
+ // check focus
382
+ expect(searchField).toBe(document.activeElement);
383
+ expect(component.matSelect.panelOpen).toBe(true);
384
+
385
+ component.filteredBanks
386
+ .pipe(take(1))
387
+ .subscribe(() => {
388
+ fixture.detectChanges();
389
+ if (component.matSelectSearch.clearSearchInput) {
390
+ expect(component.matSelect.options.length).toBe(4);
391
+ } else {
392
+ expect(component.matSelect.options.length).toBe(2);
393
+ }
394
+
395
+ done();
396
+ });
397
+ });
398
+
399
+ });
400
+
401
+ });
402
+
403
+ });
404
+
405
+ });
406
+
407
+ it('should not announce active option if there are no options', (done) => {
408
+ const announcer = TestBed.get(LiveAnnouncer);
409
+ component.filteredBanks
410
+ .pipe(
411
+ take(1),
412
+ delay(1)
413
+ )
414
+ .subscribe(() => {
415
+ // when the filtered banks are initialized
416
+ fixture.detectChanges();
417
+
418
+ component.matSelect.open();
419
+ fixture.detectChanges();
420
+
421
+ component.matSelect.openedChange
422
+ .pipe(take(1))
423
+ .subscribe((opened) => {
424
+
425
+ // search for "something definitely not in the list"
426
+ component.matSelectSearch._formControl.setValue('something definitely not in the list');
427
+ fixture.detectChanges();
428
+
429
+ component.filteredBanks
430
+ .pipe(take(1))
431
+ .subscribe(() => {
432
+ fixture.detectChanges();
433
+
434
+ setTimeout(() => {
435
+ expect(component.matSelect.options.length).toBe(0);
436
+
437
+ component.matSelectSearch._handleKeyup(<KeyboardEvent>{keyCode: DOWN_ARROW});
438
+ expect(announcer.announce).not.toHaveBeenCalled();
439
+ done();
440
+ });
441
+ });
442
+ });
443
+ });
444
+ });
445
+
446
+ describe('inside mat-option', () => {
447
+
448
+ it('should show a search field and focus it when opening the select', (done) => {
449
+
450
+ component.filteredBanksMatOption
451
+ .pipe(
452
+ take(1),
453
+ delay(1)
454
+ )
455
+ .subscribe(() => {
456
+ // when the filtered banks are initialized
457
+ fixture.detectChanges();
458
+
459
+ component.matSelectMatOption.open();
460
+ fixture.detectChanges();
461
+
462
+ component.matSelectMatOption.openedChange
463
+ .pipe(
464
+ take(1),
465
+ delay(1)
466
+ )
467
+ .subscribe((opened) => {
468
+ expect(opened).toBe(true);
469
+ const searchField = document.querySelector('.mat-select-search-inner .mat-select-search-input');
470
+ const searchInner = document.querySelector('.mat-select-search-inner');
471
+ expect(searchInner).toBeTruthy();
472
+ expect(searchField).toBeTruthy();
473
+ // check focus
474
+ expect(searchField).toBe(document.activeElement);
475
+
476
+ const optionElements = document.querySelectorAll('mat-option');
477
+ expect(component.matSelectMatOption.options.length).toBe(5);
478
+ expect(optionElements.length).toBe(5);
479
+
480
+ done();
481
+ });
482
+
483
+ });
484
+
485
+ });
486
+
487
+
488
+ it('should filter the options available and hightlight the first option in the list, filter the options by input "c" and reset the list', (done) => {
489
+
490
+ component.filteredBanksMatOption
491
+ .pipe(
492
+ take(1),
493
+ delay(1)
494
+ )
495
+ .subscribe(() => {
496
+ // when the filtered banks are initialized
497
+ fixture.detectChanges();
498
+
499
+ component.matSelectMatOption.open();
500
+ fixture.detectChanges();
501
+
502
+ component.matSelectMatOption.openedChange
503
+ .pipe(take(1))
504
+ .subscribe((opened) => {
505
+ expect(opened).toBe(true);
506
+ const searchField = document.querySelector('.mat-select-search-inner .mat-select-search-input');
507
+ expect(searchField).toBeTruthy();
508
+
509
+ expect(component.matSelectMatOption.options.length).toBe(5);
510
+
511
+ // search for "c"
512
+ component.matSelectSearchMatOption._formControl.setValue('c');
513
+ fixture.detectChanges();
514
+
515
+ expect(component.bankFilterCtrlMatOption.value).toBe('c');
516
+ expect(component.matSelectMatOption.panelOpen).toBe(true);
517
+
518
+ component.filteredBanks
519
+ .pipe(take(1))
520
+ .subscribe(() => {
521
+ fixture.detectChanges();
522
+
523
+ setTimeout(() => {
524
+ expect(component.matSelectMatOption.options.length).toBe(3);
525
+ expect(component.matSelectMatOption.options.toArray()[1].value.id).toBe('C');
526
+ expect(component.matSelectMatOption.options.toArray()[1].active).toBe(true, 'first active');
527
+
528
+ component.matSelectSearchMatOption._reset(true);
529
+ fixture.detectChanges();
530
+
531
+ // check focus
532
+ expect(searchField).toBe(document.activeElement);
533
+ expect(component.matSelectMatOption.panelOpen).toBe(true);
534
+
535
+ component.filteredBanks
536
+ .pipe(take(1))
537
+ .subscribe(() => {
538
+ fixture.detectChanges();
539
+ expect(component.matSelectMatOption.options.length).toBe(5);
540
+
541
+ done();
542
+ });
543
+ });
544
+
545
+ });
546
+
547
+ });
548
+
549
+ });
550
+
551
+ });
552
+
553
+ })
554
+
555
+ });
556
+
557
+ describe('with initial selection', () => {
558
+
559
+ it('should set the initial selection of MatSelect', waitForAsync((done) => {
560
+ component.initialSingleSelection = component.banks[3];
561
+ fixture.detectChanges();
562
+
563
+ component.filteredBanks
564
+ .pipe(
565
+ take(1),
566
+ delay(1)
567
+ )
568
+ .subscribe(() => {
569
+
570
+ // when the filtered banks are initialized
571
+ fixture.detectChanges();
572
+ fixture.whenStable().then(() => {
573
+ fixture.detectChanges();
574
+ component.matSelect.options.changes
575
+ .pipe(take(1))
576
+ .subscribe(() => {
577
+
578
+ expect(component.matSelect.value).toEqual(component.banks[3]);
579
+
580
+ component.matSelect.open();
581
+ fixture.detectChanges();
582
+
583
+ component.matSelect.openedChange
584
+ .pipe(take(1))
585
+ .subscribe((opened) => {
586
+ expect(opened).toBe(true);
587
+ expect(component.matSelect.value).toEqual(component.banks[3]);
588
+ expect(component.bankCtrl.value).toEqual(component.banks[3]);
589
+
590
+ done();
591
+ });
592
+ });
593
+
594
+ });
595
+
596
+ });
597
+
598
+ }));
599
+
600
+ it('set the initial selection with multi=true and filter the options available, filter the options by input "c" and select an option', waitForAsync((done) => {
601
+ component.initialMultiSelection = [component.banks[1]];
602
+ fixture.detectChanges();
603
+
604
+ component.filteredBanksMulti
605
+ .pipe(
606
+ take(1),
607
+ delay(1)
608
+ )
609
+ .subscribe(() => {
610
+ // when the filtered banks are initialized
611
+ fixture.detectChanges();
612
+ fixture.whenStable().then(() => {
613
+ fixture.detectChanges();
614
+ component.matSelect.options.changes
615
+ .pipe(take(1))
616
+ .subscribe(() => {
617
+
618
+ component.matSelectMulti.open();
619
+ fixture.detectChanges();
620
+
621
+ component.matSelectMulti.openedChange
622
+ .pipe(take(1))
623
+ .subscribe((opened) => {
624
+ expect(opened).toBe(true);
625
+ expect(component.matSelectMulti.value).toEqual([component.banks[1]]);
626
+ expect(component.bankMultiCtrl.value).toEqual([component.banks[1]]);
627
+
628
+ const searchField = document.querySelector('.mat-select-search-inner .mat-select-search-input');
629
+ expect(searchField).toBeTruthy();
630
+
631
+ expect(component.matSelectMulti.options.length).toBe(4);
632
+
633
+ // search for "c"
634
+ component.matSelectSearchMulti._formControl.setValue('c');
635
+ fixture.detectChanges();
636
+
637
+ expect(component.bankFilterCtrl.value).toBe('c');
638
+ expect(component.matSelectMulti.panelOpen).toBe(true);
639
+
640
+ component.filteredBanks
641
+ .pipe(take(1))
642
+ .subscribe(() => {
643
+ fixture.detectChanges();
644
+
645
+ setTimeout(() => {
646
+ expect(component.matSelectMulti.options.length).toBe(2);
647
+ expect(component.matSelectMulti.options.first.value.id).toBe('C');
648
+ expect(component.matSelectMulti.options.first.active).toBe(true, 'first active');
649
+
650
+ component.matSelectMulti.options.first._selectViaInteraction();
651
+
652
+ fixture.detectChanges();
653
+
654
+ // check focus
655
+ expect(component.matSelectMulti.panelOpen).toBe(true);
656
+
657
+ setTimeout(() => {
658
+ fixture.detectChanges();
659
+ expect(component.matSelectMulti.value).toEqual([component.banks[1], component.banks[2]]);
660
+ expect(component.bankMultiCtrl.value).toEqual([component.banks[1], component.banks[2]]);
661
+
662
+ // search for "d"
663
+ component.matSelectSearchMulti._formControl.setValue('d');
664
+ fixture.detectChanges();
665
+
666
+ expect(component.bankFilterCtrl.value).toBe('d');
667
+ expect(component.matSelectMulti.panelOpen).toBe(true);
668
+
669
+ component.filteredBanks
670
+ .pipe(take(1))
671
+ .subscribe(() => {
672
+ fixture.detectChanges();
673
+
674
+ setTimeout(() => {
675
+ expect(component.matSelectMulti.options.length).toBe(1);
676
+ expect(component.matSelectMulti.options.first.value.id).toBe('DC');
677
+ expect(component.matSelectMulti.options.first.active).toBe(true, 'first active');
678
+
679
+ component.matSelectMulti.options.first._selectViaInteraction();
680
+
681
+ fixture.detectChanges();
682
+
683
+ // check focus
684
+ expect(component.matSelectMulti.panelOpen).toBe(true);
685
+
686
+ setTimeout(() => {
687
+ fixture.detectChanges();
688
+ expect(component.matSelectMulti.value).toEqual([component.banks[1], component.banks[2], component.banks[3]]);
689
+ expect(component.bankMultiCtrl.value).toEqual([component.banks[1], component.banks[2], component.banks[3]]);
690
+ done();
691
+
692
+ });
693
+ });
694
+
695
+ });
696
+
697
+ });
698
+ });
699
+
700
+ });
701
+
702
+ });
703
+ });
704
+ });
705
+
706
+
707
+ });
708
+ }));
709
+
710
+ });
711
+
712
+ });
713
+
714
+
715
+ describe('MatSelectSearchComponent with default options', () => {
716
+ let component: MatSelectSearchTestComponent;
717
+ let fixture: ComponentFixture<MatSelectSearchTestComponent>;
718
+
719
+ beforeEach(waitForAsync(() => {
720
+ TestBed.configureTestingModule({
721
+ imports: [
722
+ CommonModule,
723
+ NoopAnimationsModule,
724
+ ReactiveFormsModule,
725
+ MatFormFieldModule,
726
+ MatSelectModule,
727
+ MatSelectSearchModule
728
+ ],
729
+ declarations: [MatSelectSearchTestComponent],
730
+ providers: [
731
+ {
732
+ provide: LiveAnnouncer,
733
+ useValue: {
734
+ announce: jasmine.createSpy('announce')
735
+ }
736
+ },
737
+ {
738
+ provide: MAT_SELECTSEARCH_DEFAULT_OPTIONS,
739
+ useValue: <MatSelectSearchOptions>{
740
+ placeholderLabel: 'Mega bla',
741
+ },
742
+ },
743
+ ]
744
+ })
745
+ .compileComponents();
746
+ }));
747
+
748
+
749
+ beforeEach(() => {
750
+ fixture = TestBed.createComponent(MatSelectSearchTestComponent);
751
+ component = fixture.componentInstance;
752
+ fixture.detectChanges();
753
+ });
754
+
755
+
756
+ it('should create', () => {
757
+ expect(component).toBeTruthy();
758
+ });
759
+
760
+ it('should show a search field and focus it when opening the select', (done) => {
761
+
762
+ component.filteredBanks
763
+ .pipe(
764
+ take(1),
765
+ delay(1)
766
+ )
767
+ .subscribe(() => {
768
+ // when the filtered banks are initialized
769
+ fixture.detectChanges();
770
+
771
+ component.matSelect.open();
772
+ fixture.detectChanges();
773
+
774
+ component.matSelect.openedChange
775
+ .pipe(
776
+ take(1),
777
+ delay(1)
778
+ )
779
+ .subscribe((opened) => {
780
+ const searchField = document.querySelector('.mat-select-search-inner .mat-select-search-input') as HTMLInputElement;
781
+
782
+ expect(searchField.placeholder).toBe('Mega bla');
783
+ done();
784
+ });
785
+
786
+ });
787
+
788
+ });
789
+
790
+ });