ecabs-components 1.0.17 → 1.0.19

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 (365) hide show
  1. package/README.md +1 -0
  2. package/karma.conf.js +44 -0
  3. package/ng-package.json +7 -0
  4. package/package.json +25 -33
  5. package/src/assets/images/nothing-here.svg +22 -0
  6. package/src/lib/base/consts/date-mask.consts.ts +70 -0
  7. package/src/lib/base/directives/date-mask.directive.module.ts +14 -0
  8. package/src/lib/base/directives/date-mask.directive.ts +58 -0
  9. package/src/lib/base/directives/digits-only.directive.module.ts +15 -0
  10. package/src/lib/base/directives/digits-only.directive.ts +129 -0
  11. package/src/lib/base/directives/number-border.directive.module.ts +14 -0
  12. package/src/lib/base/directives/number-border.directive.ts +57 -0
  13. package/src/lib/base/element-base.ts +72 -0
  14. package/src/lib/base/element-wrapper/element-wrapper.component.html +30 -0
  15. package/src/lib/base/element-wrapper/element-wrapper.component.ts +33 -0
  16. package/src/lib/base/element-wrapper/element-wrapper.module.ts +30 -0
  17. package/src/lib/base/hint/hint.component.html +1 -0
  18. package/src/lib/base/hint/hint.component.ts +12 -0
  19. package/src/lib/base/hint/hint.module.ts +13 -0
  20. package/src/lib/base/validation/validation.component.html +8 -0
  21. package/src/lib/base/validation/validation.component.scss +0 -0
  22. package/src/lib/base/validation/validation.component.ts +84 -0
  23. package/src/lib/base/validation/validation.module.ts +13 -0
  24. package/src/lib/consts/tenant.consts.ts +8 -0
  25. package/src/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.html +11 -0
  26. package/src/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.scss +0 -0
  27. package/src/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.spec.ts +24 -0
  28. package/src/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.ts +12 -0
  29. package/src/lib/ecabs-breadcrumb/ecabs-breadcrumb.module.ts +12 -0
  30. package/src/lib/ecabs-buttons/ecabs-buttons.component.html +18 -0
  31. package/src/lib/ecabs-buttons/ecabs-buttons.component.scss +3 -0
  32. package/src/lib/ecabs-buttons/ecabs-buttons.component.ts +55 -0
  33. package/src/lib/ecabs-buttons/ecabs-buttons.module.ts +14 -0
  34. package/src/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.html +27 -0
  35. package/src/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.scss +15 -0
  36. package/src/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.ts +81 -0
  37. package/src/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.module.ts +21 -0
  38. package/src/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.html +4 -0
  39. package/src/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.scss +0 -0
  40. package/src/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.spec.ts +23 -0
  41. package/src/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.ts +11 -0
  42. package/src/lib/ecabs-date-picker/ecabs-date-picker.component.html +31 -0
  43. package/src/lib/ecabs-date-picker/ecabs-date-picker.component.scss +23 -0
  44. package/src/lib/ecabs-date-picker/ecabs-date-picker.component.spec.ts +24 -0
  45. package/src/lib/ecabs-date-picker/ecabs-date-picker.component.ts +72 -0
  46. package/src/lib/ecabs-date-picker/ecabs-date-picker.module.ts +29 -0
  47. package/src/lib/ecabs-date-range-picker/components/ecabs-date-range-picker-header/ecabs-date-range-picker-header.component.html +4 -0
  48. package/src/lib/ecabs-date-range-picker/components/ecabs-date-range-picker-header/ecabs-date-range-picker-header.component.scss +0 -0
  49. package/src/lib/ecabs-date-range-picker/components/ecabs-date-range-picker-header/ecabs-date-range-picker-header.component.spec.ts +23 -0
  50. package/src/lib/ecabs-date-range-picker/components/ecabs-date-range-picker-header/ecabs-date-range-picker-header.component.ts +11 -0
  51. package/src/lib/ecabs-date-range-picker/ecabs-date-range-picker.component.html +31 -0
  52. package/src/lib/ecabs-date-range-picker/ecabs-date-range-picker.component.scss +36 -0
  53. package/src/lib/ecabs-date-range-picker/ecabs-date-range-picker.component.spec.ts +23 -0
  54. package/src/lib/ecabs-date-range-picker/ecabs-date-range-picker.component.ts +113 -0
  55. package/src/lib/ecabs-date-range-picker/ecabs-date-range-picker.module.ts +50 -0
  56. package/src/lib/ecabs-date-time-picker/components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component.html +4 -0
  57. package/src/lib/ecabs-date-time-picker/components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component.scss +14 -0
  58. package/src/lib/ecabs-date-time-picker/components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component.ts +11 -0
  59. package/src/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.html +87 -0
  60. package/src/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.scss +82 -0
  61. package/src/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.spec.ts +23 -0
  62. package/src/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.ts +185 -0
  63. package/src/lib/ecabs-date-time-picker/ecabs-date-time-picker.module.ts +38 -0
  64. package/src/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.html +4 -0
  65. package/src/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.scss +5 -0
  66. package/src/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.spec.ts +23 -0
  67. package/src/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.ts +10 -0
  68. package/src/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.html +116 -0
  69. package/src/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.scss +43 -0
  70. package/src/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.spec.ts +24 -0
  71. package/src/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.ts +206 -0
  72. package/src/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.module.ts +39 -0
  73. package/src/lib/ecabs-date-time-range-picker/time-range.directive.ts +38 -0
  74. package/src/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.html +32 -0
  75. package/src/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.scss +24 -0
  76. package/src/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.ts +57 -0
  77. package/src/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.module.ts +13 -0
  78. package/src/lib/ecabs-dialog-message/ecabs-dialog-message.component.html +27 -0
  79. package/src/lib/ecabs-dialog-message/ecabs-dialog-message.component.scss +25 -0
  80. package/src/lib/ecabs-dialog-message/ecabs-dialog-message.component.spec.ts +38 -0
  81. package/src/lib/ecabs-dialog-message/ecabs-dialog-message.component.ts +49 -0
  82. package/src/lib/ecabs-dialog-message/ecabs-dialog-message.module.ts +13 -0
  83. package/src/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.html +9 -0
  84. package/src/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.scss +0 -0
  85. package/src/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.spec.ts +34 -0
  86. package/src/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.ts +22 -0
  87. package/src/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.module.ts +11 -0
  88. package/src/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.html +33 -0
  89. package/src/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.scss +79 -0
  90. package/src/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.spec.ts +26 -0
  91. package/src/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.ts +77 -0
  92. package/src/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.ts +17 -0
  93. package/src/lib/ecabs-increment/ecabs-increment.component.html +18 -0
  94. package/src/lib/ecabs-increment/ecabs-increment.component.scss +33 -0
  95. package/src/lib/ecabs-increment/ecabs-increment.component.ts +74 -0
  96. package/src/lib/ecabs-increment/ecabs-increment.module.ts +15 -0
  97. package/src/lib/ecabs-input/ecabs-input.component.html +26 -0
  98. package/src/lib/ecabs-input/ecabs-input.component.ts +85 -0
  99. package/src/lib/ecabs-input/ecabs-input.module.ts +14 -0
  100. package/src/lib/ecabs-language-selector/ecabs-language-selector.component.html +17 -0
  101. package/src/lib/ecabs-language-selector/ecabs-language-selector.component.scss +26 -0
  102. package/src/lib/ecabs-language-selector/ecabs-language-selector.component.ts +63 -0
  103. package/src/lib/ecabs-language-selector/ecabs-language-selector.module.ts +22 -0
  104. package/src/lib/ecabs-loading/ecabs-loading.component.html +7 -0
  105. package/src/lib/ecabs-loading/ecabs-loading.component.spec.ts +24 -0
  106. package/src/lib/ecabs-loading/ecabs-loading.component.ts +11 -0
  107. package/src/lib/ecabs-loading/ecabs-loading.module.ts +11 -0
  108. package/src/lib/ecabs-loading/spinner/spinner.component.html +5 -0
  109. package/src/lib/ecabs-loading/spinner/spinner.component.scss +61 -0
  110. package/src/lib/ecabs-loading/spinner/spinner.component.spec.ts +24 -0
  111. package/src/lib/ecabs-loading/spinner/spinner.component.ts +11 -0
  112. package/src/lib/ecabs-note/ecabs-note.component.html +10 -0
  113. package/src/lib/ecabs-note/ecabs-note.component.scss +29 -0
  114. package/src/lib/ecabs-note/ecabs-note.component.ts +27 -0
  115. package/src/lib/ecabs-note/ecabs-note.module.ts +11 -0
  116. package/src/lib/ecabs-phone/ecabs-phone.component.html +17 -0
  117. package/src/lib/ecabs-phone/ecabs-phone.component.ts +108 -0
  118. package/src/lib/ecabs-phone/ecabs-phone.module.ts +15 -0
  119. package/src/lib/ecabs-picker-header/ecabs-picker-header.component.html +12 -0
  120. package/src/lib/ecabs-picker-header/ecabs-picker-header.component.scss +16 -0
  121. package/src/lib/ecabs-picker-header/ecabs-picker-header.component.ts +61 -0
  122. package/src/lib/ecabs-picker-header/ecabs-picker-header.module.ts +15 -0
  123. package/src/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.html +13 -0
  124. package/src/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.scss +16 -0
  125. package/src/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.ts +60 -0
  126. package/src/lib/ecabs-radio-button-list/ecabs-radio-button-list.module.ts +18 -0
  127. package/src/lib/ecabs-select/ecabs-select.component.html +45 -0
  128. package/src/lib/ecabs-select/ecabs-select.component.ts +346 -0
  129. package/src/lib/ecabs-select/ecabs-select.module.ts +37 -0
  130. package/src/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.html +7 -0
  131. package/src/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.scss +11 -0
  132. package/src/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.spec.ts +34 -0
  133. package/src/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.ts +14 -0
  134. package/src/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.module.ts +14 -0
  135. package/src/lib/ecabs-table/ecabs-table.component.html +26 -0
  136. package/src/lib/ecabs-table/ecabs-table.component.scss +6 -0
  137. package/src/lib/ecabs-table/ecabs-table.component.spec.ts +24 -0
  138. package/src/lib/ecabs-table/ecabs-table.component.ts +42 -0
  139. package/src/lib/ecabs-table/ecabs-table.module.ts +19 -0
  140. package/src/lib/ecabs-textarea/ecabs-textarea.component.html +13 -0
  141. package/src/lib/ecabs-textarea/ecabs-textarea.component.ts +61 -0
  142. package/src/lib/ecabs-textarea/ecabs-textarea.module.ts +12 -0
  143. package/src/lib/ecabs-timepicker/componets/ecabs-time-list-panel/ecabs-time-list-panel.component.html +16 -0
  144. package/src/lib/ecabs-timepicker/componets/ecabs-time-list-panel/ecabs-time-list-panel.component.ts +126 -0
  145. package/src/lib/ecabs-timepicker/config.model.ts +5 -0
  146. package/src/lib/ecabs-timepicker/ecabs-timepicker.component.html +36 -0
  147. package/src/lib/ecabs-timepicker/ecabs-timepicker.component.scss +5 -0
  148. package/src/lib/ecabs-timepicker/ecabs-timepicker.component.ts +330 -0
  149. package/src/lib/ecabs-timepicker/ecabs-timepicker.module.ts +12 -0
  150. package/src/lib/ecabs-timepicker/ecabs-timepicker.service.ts +28 -0
  151. package/src/lib/models/bread-crumb.ts +5 -0
  152. package/{lib/models/timepicker.models.d.ts → src/lib/models/timepicker.models.ts} +4 -3
  153. package/src/lib/services/ecabs-components.service.ts +33 -0
  154. package/{styles → src/styles}/material/_theme.scss +2 -0
  155. package/src/styles/material/overrides/_paginator.scss +0 -0
  156. package/src/test.ts +27 -0
  157. package/tailwind.config.js +31 -0
  158. package/tsconfig.lib.json +15 -0
  159. package/tsconfig.lib.prod.json +10 -0
  160. package/tsconfig.spec.json +17 -0
  161. package/esm2022/ecabs-components.mjs +0 -5
  162. package/esm2022/lib/base/consts/date-mask.consts.mjs +0 -57
  163. package/esm2022/lib/base/directives/date-mask.directive.mjs +0 -67
  164. package/esm2022/lib/base/directives/date-mask.directive.module.mjs +0 -22
  165. package/esm2022/lib/base/directives/digits-only.directive.mjs +0 -133
  166. package/esm2022/lib/base/directives/digits-only.directive.module.mjs +0 -22
  167. package/esm2022/lib/base/directives/number-border.directive.mjs +0 -58
  168. package/esm2022/lib/base/directives/number-border.directive.module.mjs +0 -22
  169. package/esm2022/lib/base/element-base.mjs +0 -105
  170. package/esm2022/lib/base/element-wrapper/element-wrapper.component.mjs +0 -56
  171. package/esm2022/lib/base/element-wrapper/element-wrapper.module.mjs +0 -52
  172. package/esm2022/lib/base/hint/hint.component.mjs +0 -21
  173. package/esm2022/lib/base/hint/hint.module.mjs +0 -20
  174. package/esm2022/lib/base/validation/validation.component.mjs +0 -75
  175. package/esm2022/lib/base/validation/validation.module.mjs +0 -20
  176. package/esm2022/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.mjs +0 -17
  177. package/esm2022/lib/ecabs-breadcrumb/ecabs-breadcrumb.module.mjs +0 -20
  178. package/esm2022/lib/ecabs-buttons/ecabs-buttons.component.mjs +0 -67
  179. package/esm2022/lib/ecabs-buttons/ecabs-buttons.module.mjs +0 -21
  180. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.mjs +0 -94
  181. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.module.mjs +0 -36
  182. package/esm2022/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.mjs +0 -15
  183. package/esm2022/lib/ecabs-date-picker/ecabs-date-picker.component.mjs +0 -89
  184. package/esm2022/lib/ecabs-date-picker/ecabs-date-picker.module.mjs +0 -48
  185. package/esm2022/lib/ecabs-date-time-picker/components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component.mjs +0 -15
  186. package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.mjs +0 -186
  187. package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.module.mjs +0 -64
  188. package/esm2022/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.mjs +0 -15
  189. package/esm2022/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.mjs +0 -199
  190. package/esm2022/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.module.mjs +0 -65
  191. package/esm2022/lib/ecabs-date-time-range-picker/time-range.directive.mjs +0 -48
  192. package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.mjs +0 -49
  193. package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.module.mjs +0 -20
  194. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.component.mjs +0 -46
  195. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.module.mjs +0 -20
  196. package/esm2022/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.mjs +0 -22
  197. package/esm2022/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.module.mjs +0 -19
  198. package/esm2022/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.mjs +0 -85
  199. package/esm2022/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.mjs +0 -24
  200. package/esm2022/lib/ecabs-increment/ecabs-increment.component.mjs +0 -83
  201. package/esm2022/lib/ecabs-increment/ecabs-increment.module.mjs +0 -23
  202. package/esm2022/lib/ecabs-input/ecabs-input.component.mjs +0 -90
  203. package/esm2022/lib/ecabs-input/ecabs-input.module.mjs +0 -22
  204. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.component.mjs +0 -64
  205. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.module.mjs +0 -39
  206. package/esm2022/lib/ecabs-loading/ecabs-loading.component.mjs +0 -22
  207. package/esm2022/lib/ecabs-loading/ecabs-loading.module.mjs +0 -19
  208. package/esm2022/lib/ecabs-loading/spinner/spinner.component.mjs +0 -14
  209. package/esm2022/lib/ecabs-note/ecabs-note.component.mjs +0 -28
  210. package/esm2022/lib/ecabs-note/ecabs-note.module.mjs +0 -19
  211. package/esm2022/lib/ecabs-phone/ecabs-phone.component.mjs +0 -111
  212. package/esm2022/lib/ecabs-phone/ecabs-phone.module.mjs +0 -22
  213. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.component.mjs +0 -53
  214. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.module.mjs +0 -22
  215. package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.mjs +0 -68
  216. package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.module.mjs +0 -32
  217. package/esm2022/lib/ecabs-select/ecabs-select.component.mjs +0 -316
  218. package/esm2022/lib/ecabs-select/ecabs-select.module.mjs +0 -60
  219. package/esm2022/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.mjs +0 -19
  220. package/esm2022/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.module.mjs +0 -24
  221. package/esm2022/lib/ecabs-table/ecabs-table.component.mjs +0 -48
  222. package/esm2022/lib/ecabs-table/ecabs-table.module.mjs +0 -33
  223. package/esm2022/lib/ecabs-textarea/ecabs-textarea.component.mjs +0 -65
  224. package/esm2022/lib/ecabs-textarea/ecabs-textarea.module.mjs +0 -20
  225. package/esm2022/lib/ecabs-timepicker/componets/ecabs-time-list-panel/ecabs-time-list-panel.component.mjs +0 -144
  226. package/esm2022/lib/ecabs-timepicker/config.model.mjs +0 -2
  227. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.component.mjs +0 -322
  228. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.module.mjs +0 -20
  229. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.service.mjs +0 -29
  230. package/esm2022/lib/models/bread-crumb.mjs +0 -2
  231. package/esm2022/lib/models/timepicker.models.mjs +0 -2
  232. package/esm2022/lib/services/ecabs-components.service.mjs +0 -31
  233. package/esm2022/public-api.mjs +0 -55
  234. package/fesm2022/ecabs-components.mjs +0 -3477
  235. package/fesm2022/ecabs-components.mjs.map +0 -1
  236. package/index.d.ts +0 -5
  237. package/lib/base/consts/date-mask.consts.d.ts +0 -7
  238. package/lib/base/directives/date-mask.directive.d.ts +0 -16
  239. package/lib/base/directives/date-mask.directive.module.d.ts +0 -8
  240. package/lib/base/directives/digits-only.directive.d.ts +0 -26
  241. package/lib/base/directives/digits-only.directive.module.d.ts +0 -8
  242. package/lib/base/directives/number-border.directive.d.ts +0 -13
  243. package/lib/base/directives/number-border.directive.module.d.ts +0 -8
  244. package/lib/base/element-base.d.ts +0 -28
  245. package/lib/base/element-wrapper/element-wrapper.component.d.ts +0 -19
  246. package/lib/base/element-wrapper/element-wrapper.module.d.ts +0 -16
  247. package/lib/base/hint/hint.component.d.ts +0 -8
  248. package/lib/base/hint/hint.module.d.ts +0 -10
  249. package/lib/base/validation/validation.component.d.ts +0 -24
  250. package/lib/base/validation/validation.module.d.ts +0 -10
  251. package/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.d.ts +0 -7
  252. package/lib/ecabs-breadcrumb/ecabs-breadcrumb.module.d.ts +0 -10
  253. package/lib/ecabs-buttons/ecabs-buttons.component.d.ts +0 -21
  254. package/lib/ecabs-buttons/ecabs-buttons.module.d.ts +0 -11
  255. package/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.d.ts +0 -29
  256. package/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.module.d.ts +0 -12
  257. package/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.d.ts +0 -6
  258. package/lib/ecabs-date-picker/ecabs-date-picker.component.d.ts +0 -29
  259. package/lib/ecabs-date-picker/ecabs-date-picker.module.d.ts +0 -15
  260. package/lib/ecabs-date-time-picker/components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component.d.ts +0 -6
  261. package/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.d.ts +0 -51
  262. package/lib/ecabs-date-time-picker/ecabs-date-time-picker.module.d.ts +0 -19
  263. package/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.d.ts +0 -6
  264. package/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.d.ts +0 -58
  265. package/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.module.d.ts +0 -20
  266. package/lib/ecabs-date-time-range-picker/time-range.directive.d.ts +0 -15
  267. package/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.d.ts +0 -31
  268. package/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.module.d.ts +0 -11
  269. package/lib/ecabs-dialog-message/ecabs-dialog-message.component.d.ts +0 -28
  270. package/lib/ecabs-dialog-message/ecabs-dialog-message.module.d.ts +0 -11
  271. package/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.d.ts +0 -12
  272. package/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.module.d.ts +0 -9
  273. package/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.d.ts +0 -28
  274. package/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.d.ts +0 -14
  275. package/lib/ecabs-increment/ecabs-increment.component.d.ts +0 -26
  276. package/lib/ecabs-increment/ecabs-increment.module.d.ts +0 -13
  277. package/lib/ecabs-input/ecabs-input.component.d.ts +0 -27
  278. package/lib/ecabs-input/ecabs-input.module.d.ts +0 -12
  279. package/lib/ecabs-language-selector/ecabs-language-selector.component.d.ts +0 -20
  280. package/lib/ecabs-language-selector/ecabs-language-selector.module.d.ts +0 -12
  281. package/lib/ecabs-loading/ecabs-loading.component.d.ts +0 -8
  282. package/lib/ecabs-loading/ecabs-loading.module.d.ts +0 -9
  283. package/lib/ecabs-loading/spinner/spinner.component.d.ts +0 -6
  284. package/lib/ecabs-note/ecabs-note.component.d.ts +0 -7
  285. package/lib/ecabs-note/ecabs-note.module.d.ts +0 -9
  286. package/lib/ecabs-phone/ecabs-phone.component.d.ts +0 -33
  287. package/lib/ecabs-phone/ecabs-phone.module.d.ts +0 -12
  288. package/lib/ecabs-picker-header/ecabs-picker-header.component.d.ts +0 -19
  289. package/lib/ecabs-picker-header/ecabs-picker-header.module.d.ts +0 -12
  290. package/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.d.ts +0 -24
  291. package/lib/ecabs-radio-button-list/ecabs-radio-button-list.module.d.ts +0 -11
  292. package/lib/ecabs-select/ecabs-select.component.d.ts +0 -71
  293. package/lib/ecabs-select/ecabs-select.module.d.ts +0 -15
  294. package/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.d.ts +0 -8
  295. package/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.module.d.ts +0 -9
  296. package/lib/ecabs-table/ecabs-table.component.d.ts +0 -18
  297. package/lib/ecabs-table/ecabs-table.module.d.ts +0 -12
  298. package/lib/ecabs-textarea/ecabs-textarea.component.d.ts +0 -20
  299. package/lib/ecabs-textarea/ecabs-textarea.module.d.ts +0 -10
  300. package/lib/ecabs-timepicker/componets/ecabs-time-list-panel/ecabs-time-list-panel.component.d.ts +0 -40
  301. package/lib/ecabs-timepicker/config.model.d.ts +0 -5
  302. package/lib/ecabs-timepicker/ecabs-timepicker.component.d.ts +0 -53
  303. package/lib/ecabs-timepicker/ecabs-timepicker.module.d.ts +0 -10
  304. package/lib/ecabs-timepicker/ecabs-timepicker.service.d.ts +0 -12
  305. package/lib/models/bread-crumb.d.ts +0 -5
  306. package/lib/services/ecabs-components.service.d.ts +0 -16
  307. /package/{styles/material/overrides/_paginator.scss → src/lib/base/hint/hint.component.scss} +0 -0
  308. /package/{public-api.d.ts → src/public-api.ts} +0 -0
  309. /package/{styles → src/styles}/material/overrides/_autocomplete.scss +0 -0
  310. /package/{styles → src/styles}/material/overrides/_button.scss +0 -0
  311. /package/{styles → src/styles}/material/overrides/_card.scss +0 -0
  312. /package/{styles → src/styles}/material/overrides/_chip.scss +0 -0
  313. /package/{styles → src/styles}/material/overrides/_datepicker.scss +0 -0
  314. /package/{styles → src/styles}/material/overrides/_dialog.scss +0 -0
  315. /package/{styles → src/styles}/material/overrides/_divider.scss +0 -0
  316. /package/{styles → src/styles}/material/overrides/_expansion.scss +0 -0
  317. /package/{styles → src/styles}/material/overrides/_form.scss +0 -0
  318. /package/{styles → src/styles}/material/overrides/_icon.scss +0 -0
  319. /package/{styles → src/styles}/material/overrides/_menu.scss +0 -0
  320. /package/{styles → src/styles}/material/overrides/_phone.scss +0 -0
  321. /package/{styles → src/styles}/material/overrides/_select.scss +0 -0
  322. /package/{styles → src/styles}/material/overrides/_tab.scss +0 -0
  323. /package/{styles → src/styles}/material/overrides/_table.scss +0 -0
  324. /package/{styles → src/styles}/material/overrides/_toaster.scss +0 -0
  325. /package/{styles → src/styles}/material/overrides/_toggle.scss +0 -0
  326. /package/{styles → src/styles}/material/overrides/_toolbar.scss +0 -0
  327. /package/{styles → src/styles}/material/overrides/_tooltip.scss +0 -0
  328. /package/{styles → src/styles}/material/overrides/index.scss +0 -0
  329. /package/{styles → src/styles}/scss/base/_heading.scss +0 -0
  330. /package/{styles → src/styles}/scss/base/_normalize.scss +0 -0
  331. /package/{styles → src/styles}/scss/base/index.scss +0 -0
  332. /package/{styles → src/styles}/scss/modules/_autocomplete.scss +0 -0
  333. /package/{styles → src/styles}/scss/modules/_button.scss +0 -0
  334. /package/{styles → src/styles}/scss/modules/_card.scss +0 -0
  335. /package/{styles → src/styles}/scss/modules/_chip.scss +0 -0
  336. /package/{styles → src/styles}/scss/modules/_datepicker.scss +0 -0
  337. /package/{styles → src/styles}/scss/modules/_dialog.scss +0 -0
  338. /package/{styles → src/styles}/scss/modules/_divider.scss +0 -0
  339. /package/{styles → src/styles}/scss/modules/_form.scss +0 -0
  340. /package/{styles → src/styles}/scss/modules/_icon.scss +0 -0
  341. /package/{styles → src/styles}/scss/modules/_img.scss +0 -0
  342. /package/{styles → src/styles}/scss/modules/_legend.scss +0 -0
  343. /package/{styles → src/styles}/scss/modules/_list.scss +0 -0
  344. /package/{styles → src/styles}/scss/modules/_map.scss +0 -0
  345. /package/{styles → src/styles}/scss/modules/_percentage.scss +0 -0
  346. /package/{styles → src/styles}/scss/modules/_phone.scss +0 -0
  347. /package/{styles → src/styles}/scss/modules/_select.scss +0 -0
  348. /package/{styles → src/styles}/scss/modules/_statuses.scss +0 -0
  349. /package/{styles → src/styles}/scss/modules/_tab.scss +0 -0
  350. /package/{styles → src/styles}/scss/modules/_table.scss +0 -0
  351. /package/{styles → src/styles}/scss/modules/_timepicker.scss +0 -0
  352. /package/{styles → src/styles}/scss/modules/_toaster.scss +0 -0
  353. /package/{styles → src/styles}/scss/modules/_tooltip.scss +0 -0
  354. /package/{styles → src/styles}/scss/modules/drag-drop.scss +0 -0
  355. /package/{styles → src/styles}/scss/modules/index.scss +0 -0
  356. /package/{styles → src/styles}/scss/utilities/_colors.scss +0 -0
  357. /package/{styles → src/styles}/scss/utilities/_fonts.scss +0 -0
  358. /package/{styles → src/styles}/scss/utilities/_functions.scss +0 -0
  359. /package/{styles → src/styles}/scss/utilities/_helpers.scss +0 -0
  360. /package/{styles → src/styles}/scss/utilities/_mixins.scss +0 -0
  361. /package/{styles → src/styles}/scss/utilities/_palettes.scss +0 -0
  362. /package/{styles → src/styles}/scss/utilities/_variables.scss +0 -0
  363. /package/{styles → src/styles}/scss/utilities/index.scss +0 -0
  364. /package/{styles → src/styles}/styles.scss +0 -0
  365. /package/{styles → src/styles}/tailwind/index.scss +0 -0
@@ -0,0 +1,185 @@
1
+ import { DecimalPipe } from '@angular/common';
2
+ import { AfterViewInit, Component, EventEmitter, Injector, Input, Output } from '@angular/core';
3
+ import { format, isValid, parse, setHours, setMinutes, setSeconds } from 'date-fns';
4
+ import { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, UntypedFormControl } from '@angular/forms';
5
+ import ElementBaseComponent from '../base/element-base';
6
+ import { EcabsDateTimePickerHeaderComponent } from './components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component';
7
+
8
+ @Component( {
9
+ selector: 'ecabs-date-time-picker',
10
+ templateUrl: './ecabs-date-time-picker.component.html',
11
+ styleUrls: [ './ecabs-date-time-picker.component.scss' ],
12
+ providers: [
13
+ {
14
+ provide: NG_VALUE_ACCESSOR,
15
+ useExisting: EcabsDateTimePickerComponent,
16
+ multi: true,
17
+ },
18
+ DecimalPipe,
19
+ ],
20
+ } )
21
+ export class EcabsDateTimePickerComponent extends ElementBaseComponent implements ControlValueAccessor, AfterViewInit {
22
+ @Input() minDate: Date;
23
+ @Input() maxDate: Date;
24
+ @Input() touchUi = false;
25
+ @Input() hideSeconds = true;
26
+ @Input() cancleLabel = 'Cancel';
27
+ @Input() applyLabel = 'Apply';
28
+ @Input() selectDateLabel = 'Select date and time';
29
+
30
+ @Output() onblur = new EventEmitter<any>();
31
+
32
+ _hours = '12';
33
+ _minutes = '00';
34
+ _seconds = '00';
35
+ _date: Date;
36
+ _pickerValue: string;
37
+ val: Date;
38
+ header = EcabsDateTimePickerHeaderComponent;
39
+ maxValueHours = 23;
40
+ maxValueMinutesSeconds = 59;
41
+
42
+ get value(): Date {
43
+ return this.val;
44
+ }
45
+
46
+ get pickerValue(): string {
47
+ return this._pickerValue;
48
+ }
49
+
50
+ get hours(): string {
51
+ return this._hours;
52
+ }
53
+
54
+ get minutes(): string {
55
+ return this._minutes;
56
+ }
57
+
58
+ get seconds(): string {
59
+ return this._seconds;
60
+ }
61
+
62
+ set hours( value: string ) {
63
+ if ( value !== undefined && this._hours !== value ) {
64
+ this._hours = this.roundNumber( +value );
65
+ }
66
+ }
67
+
68
+ set minutes( value: string ) {
69
+ if ( value !== undefined && this._minutes !== value ) {
70
+ this._minutes = this.roundNumber( +value );
71
+ }
72
+ }
73
+
74
+ set seconds( value: string ) {
75
+ if ( value !== undefined && this._seconds !== value ) {
76
+ this._seconds = this.roundNumber( +value );
77
+ }
78
+ }
79
+
80
+ set value( val ) {
81
+ if ( val && this.val !== new Date( val ) ) {
82
+ this.val = new Date( val );
83
+ this.pickerValue = this.formatDateTime( val );
84
+ this.onChange( val );
85
+ this.onTouch( val );
86
+ }
87
+ }
88
+
89
+ set pickerValue( val: string ) {
90
+ if ( val ) {
91
+ const date = parse(
92
+ val.replace( '_', '' ),
93
+ this.hideSeconds ? `dd/MM/yyyy, HH:mm` : `dd/MM/yyyy, HH:mm:ss`,
94
+ new Date()
95
+ );
96
+ if ( isValid( date ) && this._pickerValue !== val ) {
97
+ this._pickerValue = val;
98
+ this.value = date;
99
+ }
100
+ }
101
+ }
102
+
103
+ constructor( private readonly injector: Injector, private readonly decimalPipe: DecimalPipe ) {
104
+ super();
105
+ }
106
+
107
+ ngAfterViewInit(): void {
108
+ const ngControl: NgControl = this.injector.get( NgControl, null );
109
+ if ( ngControl ) {
110
+ this.control = ngControl.control as UntypedFormControl;
111
+
112
+ setTimeout( () => {
113
+ const controlDate = !!this.control.value ? new Date( this.control.value ) : new Date();
114
+
115
+ if ( controlDate ) {
116
+ this.setValues( controlDate );
117
+ }
118
+ }, 10 );
119
+ }
120
+ }
121
+
122
+ onChange: any = () => { };
123
+ onTouch: any = () => { };
124
+
125
+ writeValue( value: any ): void {
126
+ this.value = value;
127
+ }
128
+
129
+ registerOnChange( fn: any ): void {
130
+ this.onChange = fn;
131
+ }
132
+
133
+ registerOnTouched( fn: any ): void {
134
+ this.onTouch = fn;
135
+ }
136
+
137
+ blurChange( e: any ): void {
138
+ this.onblur.emit( e );
139
+ }
140
+
141
+ onApply(): void {
142
+ if ( this._date && this._seconds && this._minutes && this._hours ) {
143
+ const date = setSeconds( setMinutes( setHours( new Date( this._date ), +this._hours ), +this._minutes ), +this._seconds );
144
+
145
+ if ( this.minDate && date < this.minDate ) {
146
+ this.setValues( this.minDate );
147
+ this.value = this.minDate;
148
+
149
+ return;
150
+ }
151
+
152
+ if ( this.maxDate && date > this.maxDate ) {
153
+ this.setValues( this.maxDate );
154
+ this.value = this.maxDate;
155
+
156
+ return;
157
+ }
158
+
159
+ this.value = date;
160
+ }
161
+ }
162
+
163
+ private formatDateTime( date: Date ): string {
164
+ let result = '';
165
+
166
+ if ( date && isValid( new Date( date ) ) ) {
167
+ result = this.hideSeconds
168
+ ? format( new Date( date ), `dd/MM/yyyy, HH:mm` )
169
+ : format( new Date( date ), `dd/MM/yyyy, HH:mm:ss` );
170
+ }
171
+
172
+ return result;
173
+ }
174
+
175
+ private roundNumber( num: number ): string | null {
176
+ return this.decimalPipe.transform( num, '2.0-0' ) ?? '00';
177
+ }
178
+
179
+ private setValues( date: Date ): void {
180
+ this._date = date;
181
+ this.hours = date.getHours().toString();
182
+ this.minutes = date.getMinutes().toString();
183
+ this.seconds = date.getSeconds().toString();
184
+ }
185
+ }
@@ -0,0 +1,38 @@
1
+ import {CommonModule} from '@angular/common';
2
+ import {NgModule} from '@angular/core';
3
+ import {FormsModule, ReactiveFormsModule} from '@angular/forms';
4
+ import {MatDatepickerModule} from '@angular/material/datepicker';
5
+ import {MatIconModule} from '@angular/material/icon';
6
+ import {MaskDateDirectiveModule} from '../base/directives/date-mask.directive.module';
7
+ import {DigitsOnlyDirectivesModule} from '../base/directives/digits-only.directive.module';
8
+ import {NumberBorderDirectiveModule} from '../base/directives/number-border.directive.module';
9
+ import {ElementWrapperModule} from '../base/element-wrapper/element-wrapper.module';
10
+ import {EcabsButtonsModule} from '../ecabs-buttons/ecabs-buttons.module';
11
+ import {EcabsPickerHeaderModule} from '../ecabs-picker-header/ecabs-picker-header.module';
12
+ import {
13
+ EcabsDateTimePickerHeaderComponent
14
+ } from './components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component';
15
+ import {EcabsDateTimePickerComponent} from './ecabs-date-time-picker.component';
16
+ import {MatLegacyButtonModule as MatButtonModule} from '@angular/material/legacy-button';
17
+
18
+
19
+ @NgModule({
20
+ declarations: [EcabsDateTimePickerComponent, EcabsDateTimePickerHeaderComponent],
21
+ imports: [
22
+ CommonModule,
23
+ ElementWrapperModule,
24
+ MatIconModule,
25
+ MatDatepickerModule,
26
+ MatButtonModule,
27
+ FormsModule,
28
+ ReactiveFormsModule,
29
+ EcabsPickerHeaderModule,
30
+ EcabsButtonsModule,
31
+ DigitsOnlyDirectivesModule,
32
+ NumberBorderDirectiveModule,
33
+ MaskDateDirectiveModule
34
+ ],
35
+ exports: [EcabsDateTimePickerComponent, EcabsDateTimePickerHeaderComponent],
36
+ })
37
+ export class EcabsDatetimePickerModule {
38
+ }
@@ -0,0 +1,4 @@
1
+ <div class="select-date-label text-xl font-semibold">
2
+ {{ headerLabel }}
3
+ </div>
4
+ <ecabs-picker-header ></ecabs-picker-header>
@@ -0,0 +1,5 @@
1
+ :host ::ng-deep {
2
+ ecabs-picker-header{
3
+ display: none !important;
4
+ }
5
+ }
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { EcabsDateTimeRangePickerHeaderComponent } from './ecabs-date-time-range-picker-header.component';
4
+
5
+ describe('FormDateTimeRangePickerHeaderComponent', () => {
6
+ let component: EcabsDateTimeRangePickerHeaderComponent;
7
+ let fixture: ComponentFixture<EcabsDateTimeRangePickerHeaderComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+
12
+ declarations: [EcabsDateTimeRangePickerHeaderComponent],
13
+ }).compileComponents();
14
+
15
+ fixture = TestBed.createComponent(EcabsDateTimeRangePickerHeaderComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,10 @@
1
+ import { Component, Input } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: 'ecabs-date-time-range-picker-header',
5
+ templateUrl: './ecabs-date-time-range-picker-header.component.html',
6
+ styleUrls: ['./ecabs-date-time-range-picker-header.component.scss'],
7
+ })
8
+ export class EcabsDateTimeRangePickerHeaderComponent {
9
+ @Input() headerLabel = 'Applicable times';
10
+ }
@@ -0,0 +1,116 @@
1
+ <app-element-wrapper [data]="getData()">
2
+ <div class="form-field__input--wrapper w-full">
3
+ <input
4
+ class="fake-input"
5
+ [id]="_date"
6
+ [(ngModel)]="_date"
7
+ [placeholder]="placeholder"
8
+ [disabled]="disabled || controlDate?.disabled"
9
+ [matDatepicker]="picker"
10
+ (blur)="onTouch()"
11
+ />
12
+ <mat-datepicker
13
+ (opened)="opened()"
14
+ #picker
15
+ [calendarHeaderComponent]="header"
16
+ [touchUi]="touchUi"
17
+ >
18
+ <mat-datepicker-actions>
19
+ <div class="flex flex-col w-full gap-y-4">
20
+ <div class="flex gap-2 justify-center items-center">
21
+ <div class="flex flex-col justify-center">
22
+ <div class="text-center">{{ from }}</div>
23
+ <div class="flex gap-2 justify-center items-center">
24
+ <input
25
+ class="block form-field__input time"
26
+ appDigitsOnly
27
+ appNumberBorder
28
+ [digitsOnly]="true"
29
+ [id]="hoursFrom"
30
+ [maxValue]="maxValueHours"
31
+ [(ngModel)]="hoursFrom"
32
+ />
33
+
34
+ <span class="font-bold">:</span>
35
+ <input
36
+ class="form-field__input time"
37
+ [id]="minutesFrom"
38
+ [(ngModel)]="minutesFrom"
39
+ appDigitsOnly
40
+ appNumberBorder
41
+ [digitsOnly]="true"
42
+ [maxValue]="maxValueMinutesSeconds"
43
+ />
44
+ </div>
45
+ </div>
46
+ </div>
47
+ <div class="time--inputs"></div>
48
+ <div class="flex gap-2 justify-center items-center mb-5">
49
+ <div class="flex flex-col justify-center">
50
+ <div class="text-center">{{ to }}</div>
51
+ <div class="flex gap-2 justify-center items-center">
52
+ <input
53
+ class="form-field__input time"
54
+ appDigitsOnly
55
+ appNumberBorder
56
+ [digitsOnly]="true"
57
+ [id]="hoursTo"
58
+ [maxValue]="maxValueHours"
59
+ [(ngModel)]="hoursTo"
60
+ />
61
+ <span class="font-bold">:</span>
62
+ <input
63
+ class="form-field__input time"
64
+ [id]="minutesTo"
65
+ [(ngModel)]="minutesTo"
66
+ appDigitsOnly
67
+ appNumberBorder
68
+ [digitsOnly]="true"
69
+ [maxValue]="maxValueMinutesSeconds"
70
+ />
71
+ </div>
72
+ </div>
73
+ </div>
74
+ <div class="grid-picker-actions">
75
+ <button
76
+ type="button"
77
+ mat-stroked-button
78
+ class="w-full cancel-button"
79
+ color="primary"
80
+ matDatepickerCancel
81
+ >
82
+ {{ cancleLabel }}
83
+ </button>
84
+
85
+ <button
86
+ type="button"
87
+ mat-button
88
+ class="w-full ml-0 apply-button"
89
+ color="primary"
90
+ matDatepickerApply
91
+ (click)="onApply()"
92
+ >
93
+ {{ applyLabel }}
94
+ </button>
95
+ </div>
96
+ </div>
97
+ </mat-datepicker-actions>
98
+ </mat-datepicker>
99
+ <input
100
+ class="form-field__input w-full date-input"
101
+ [id]="name"
102
+ [(ngModel)]="pickerValue"
103
+ [placeholder]="placeholder"
104
+ [disabled]="disabled || controlDate?.disabled"
105
+ appTimeRange
106
+ [all]="all"
107
+ (blur)="onTouch()"
108
+ (blur)="blurChange($event)"
109
+ (keyup)="blurChange($event)"
110
+ (keydown)="keydownChange($event)"
111
+ />
112
+ <button type="button" class="datepicker-toggle" (click)="picker.open()">
113
+ <mat-icon>access_time</mat-icon>
114
+ </button>
115
+ </div>
116
+ </app-element-wrapper>
@@ -0,0 +1,43 @@
1
+ @import "./../../styles/scss/utilities/helpers";
2
+
3
+ .datepicker-toggle {
4
+ transform: translateX(-1.75rem);
5
+ }
6
+
7
+ .time {
8
+ width: 3.375rem;
9
+ }
10
+
11
+ .fake-input {
12
+ visibility: hidden;
13
+ width: 0;
14
+ padding: 0;
15
+ }
16
+
17
+ .date-input {
18
+ margin: 0rem -0.25rem 0rem 0.125rem;
19
+ }
20
+
21
+ .time--inputs {
22
+ position: relative;
23
+ margin-bottom: 2.4rem;
24
+
25
+ &::after {
26
+ @extend %pseudos;
27
+ height: 1px;
28
+ right: 0;
29
+ left: 0;
30
+ background-color: var(--color-gray-300);
31
+ }
32
+
33
+ &::after {
34
+ bottom: -1.6rem;
35
+ }
36
+ }
37
+
38
+ :host ::ng-deep {
39
+ .form-field {
40
+ margin-right: -1.25rem;
41
+ margin-left: -0.125rem;
42
+ }
43
+ }
@@ -0,0 +1,24 @@
1
+ import { DecimalPipe } from '@angular/common';
2
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
3
+
4
+ import { EcabsDateTimeRangePickerComponent } from './ecabs-date-time-range-picker.component';
5
+
6
+ describe('FormDateTimeRangePickerComponent', () => {
7
+ let component: EcabsDateTimeRangePickerComponent;
8
+ let fixture: ComponentFixture<EcabsDateTimeRangePickerComponent>;
9
+
10
+ beforeEach(async () => {
11
+ await TestBed.configureTestingModule({
12
+ declarations: [EcabsDateTimeRangePickerComponent],
13
+ providers: [DecimalPipe],
14
+ }).compileComponents();
15
+
16
+ fixture = TestBed.createComponent(EcabsDateTimeRangePickerComponent);
17
+ component = fixture.componentInstance;
18
+ fixture.detectChanges();
19
+ });
20
+
21
+ it('should create', () => {
22
+ expect(component).toBeTruthy();
23
+ });
24
+ });
@@ -0,0 +1,206 @@
1
+ import { DecimalPipe } from '@angular/common';
2
+ import { AfterViewInit, Component, EventEmitter, Injector, Input, Output } from '@angular/core';
3
+ import { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, UntypedFormControl } from '@angular/forms';
4
+ import ElementBaseComponent from '../base/element-base';
5
+ import { EcabsDateTimeRangePickerHeaderComponent } from './components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component';
6
+
7
+ @Component({
8
+ selector: 'ecabs-date-time-range-picker',
9
+ templateUrl: './ecabs-date-time-range-picker.component.html',
10
+ styleUrls: ['./ecabs-date-time-range-picker.component.scss'],
11
+ providers: [
12
+ {
13
+ provide: NG_VALUE_ACCESSOR,
14
+ useExisting: EcabsDateTimeRangePickerComponent,
15
+ multi: true,
16
+ },
17
+ DecimalPipe,
18
+ ],
19
+ })
20
+ export class EcabsDateTimeRangePickerComponent
21
+ extends ElementBaseComponent
22
+ implements ControlValueAccessor, AfterViewInit {
23
+ @Input() touchUi = false;
24
+
25
+ @Output() onblur = new EventEmitter<any>();
26
+
27
+
28
+ @Input() cancleLabel = 'Cancel';
29
+ @Input() applyLabel = 'Apply';
30
+ @Input() all = 'All';
31
+ @Input() from = 'From';
32
+ @Input() to = 'To';
33
+
34
+
35
+
36
+ _hoursFrom = '12';
37
+ _minutesFrom = '00';
38
+ _hoursTo = '12';
39
+ _minutesTo = '00';
40
+ _seconds = '00';
41
+ _date: string;
42
+ _pickerValue: string;
43
+ val: string;
44
+ header = EcabsDateTimeRangePickerHeaderComponent;
45
+ maxValueHours = 23;
46
+ maxValueMinutesSeconds = 59;
47
+ controlDate: UntypedFormControl;
48
+
49
+ get value(): string {
50
+ return this.val;
51
+ }
52
+
53
+ get pickerValue(): string {
54
+ return this._pickerValue;
55
+ }
56
+
57
+ get hoursFrom(): string {
58
+ return this._hoursFrom;
59
+ }
60
+
61
+ get minutesFrom(): string {
62
+ return this._minutesFrom;
63
+ }
64
+
65
+ get hoursTo(): string {
66
+ return this._hoursTo;
67
+ }
68
+
69
+ get minutesTo(): string {
70
+ return this._minutesTo;
71
+ }
72
+
73
+ get seconds(): string {
74
+ return this._seconds;
75
+ }
76
+
77
+ set hoursFrom(value: string) {
78
+ if (value !== undefined && this._hoursFrom !== value) {
79
+ this._hoursFrom = this.roundNumber(+value);
80
+ }
81
+ }
82
+
83
+ set minutesFrom(value: string) {
84
+ if (value !== undefined && this._minutesFrom !== value) {
85
+ this._minutesFrom = this.roundNumber(+value);
86
+ }
87
+ }
88
+
89
+ set hoursTo(value: string) {
90
+ if (value !== undefined && this._hoursTo !== value) {
91
+ this._hoursTo = this.roundNumber(+value);
92
+ }
93
+ }
94
+
95
+ set minutesTo(value: string) {
96
+ if (value !== undefined && this._minutesTo !== value) {
97
+ this._minutesTo = this.roundNumber(+value);
98
+ }
99
+ }
100
+
101
+ set seconds(value: string) {
102
+ if (value !== undefined && this._seconds !== value) {
103
+ this._seconds = this.roundNumber(+value);
104
+ }
105
+ }
106
+
107
+ set value(val) {
108
+ if (val && this.val !== val) {
109
+ this.val = val;
110
+ this.pickerValue = val;
111
+ this.onChange(val);
112
+ this.onTouch(val);
113
+ }
114
+ }
115
+
116
+ set pickerValue(val: string) {
117
+ if (val) {
118
+ this._pickerValue = val;
119
+ this.value = val;
120
+ }
121
+ }
122
+
123
+ constructor(
124
+ private readonly injector: Injector,
125
+ private readonly decimalPipe: DecimalPipe
126
+ ) {
127
+ super();
128
+ }
129
+
130
+ ngAfterViewInit(): void {
131
+ const ngControl: NgControl = this.injector.get(NgControl, null);
132
+ if (ngControl) {
133
+ this.control = ngControl.control as UntypedFormControl;
134
+
135
+ setTimeout(() => {
136
+ this.controlDate = this.control;
137
+ const controlDate = !!this.control.value ? this.control.value : '';
138
+
139
+ if (controlDate) {
140
+ this.setValues(controlDate);
141
+ }
142
+ }, 10);
143
+ }
144
+ }
145
+
146
+ onChange: any = () => { };
147
+ onTouch: any = () => { };
148
+
149
+ writeValue(value: any): void {
150
+ this.value = value;
151
+ }
152
+
153
+ registerOnChange(fn: any): void {
154
+ this.onChange = fn;
155
+ }
156
+
157
+ registerOnTouched(fn: any): void {
158
+ this.onTouch = fn;
159
+ }
160
+
161
+ blurChange(e: any): void {
162
+ this.onblur.emit(e);
163
+ }
164
+
165
+ keydownChange(e: any): void {
166
+ if (e?.target.value === this.all) {
167
+ const val = '';
168
+ this.val = val;
169
+ this._pickerValue = val;
170
+ this.onChange(val);
171
+ this.onTouch(val);
172
+ }
173
+ }
174
+
175
+ onApply(): void {
176
+ if (this._minutesFrom && this._hoursFrom && this._minutesTo && this._hoursTo) {
177
+ this.setValues(this._hoursFrom + ':' + this._minutesFrom + ' - ' + this._hoursTo + ':' + this._minutesTo);
178
+ this.value = this._hoursFrom + ':' + this._minutesFrom + ' - ' + this._hoursTo + ':' + this._minutesTo;
179
+
180
+ return;
181
+ }
182
+ }
183
+
184
+ opened(): void {
185
+ setTimeout(() => {
186
+ const elements = document.getElementsByClassName('mat-calendar-content');
187
+ while (elements.length > 0) {
188
+ elements[0].parentNode.removeChild(elements[0]);
189
+ }
190
+
191
+ let cols = Array.from(document.getElementsByClassName('mat-calendar') as HTMLCollectionOf<HTMLElement>);
192
+ for(let i=0; i<cols.length; i++) {
193
+ cols[i].style.height = '50px';
194
+ }
195
+
196
+ });
197
+ }
198
+
199
+ private roundNumber(num: number): string | null {
200
+ return this.decimalPipe.transform(num, '2.0-0') ?? '00';
201
+ }
202
+
203
+ private setValues(date: string): void {
204
+ this._date = date;
205
+ }
206
+ }