@mintplayer/ng-bootstrap 15.16.2 → 15.17.1

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 (1121) hide show
  1. package/README.md +7 -7
  2. package/_bootstrap.scss +63 -63
  3. package/accordion/index.d.ts +1 -1
  4. package/accordion/src/accordion/accordion.component.d.ts +10 -10
  5. package/accordion/src/accordion-tab/accordion-tab.component.d.ts +17 -17
  6. package/accordion/src/accordion-tab-header/accordion-tab-header.component.d.ts +9 -9
  7. package/accordion/src/accordion.module.d.ts +10 -10
  8. package/accordion/src/index.d.ts +4 -4
  9. package/alert/index.d.ts +1 -1
  10. package/alert/src/alert/alert.component.d.ts +15 -15
  11. package/alert/src/alert-close/alert-close.component.d.ts +9 -9
  12. package/alert/src/alert.module.d.ts +9 -9
  13. package/alert/src/index.d.ts +3 -3
  14. package/badge/index.d.ts +1 -1
  15. package/badge/src/badge.component.d.ts +15 -15
  16. package/badge/src/badge.module.d.ts +8 -8
  17. package/badge/src/index.d.ts +2 -2
  18. package/breadcrumb/index.d.ts +1 -1
  19. package/breadcrumb/src/breadcrumb/breadcrumb.component.d.ts +8 -8
  20. package/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.d.ts +9 -9
  21. package/breadcrumb/src/breadcrumb.module.d.ts +9 -9
  22. package/breadcrumb/src/index.d.ts +3 -3
  23. package/button-group/index.d.ts +1 -1
  24. package/button-group/src/button-group/button-group.component.d.ts +8 -8
  25. package/button-group/src/button-group.module.d.ts +8 -8
  26. package/button-group/src/index.d.ts +2 -2
  27. package/button-type/index.d.ts +1 -1
  28. package/button-type/src/button-type/button-type.directive.d.ts +9 -9
  29. package/button-type/src/button-type/button-type.module.d.ts +8 -8
  30. package/button-type/src/index.d.ts +2 -2
  31. package/calendar/index.d.ts +1 -1
  32. package/calendar/src/calendar.component.d.ts +26 -26
  33. package/calendar/src/calendar.module.d.ts +11 -11
  34. package/calendar/src/index.d.ts +2 -2
  35. package/calendar-month/index.d.ts +1 -1
  36. package/calendar-month/src/index.d.ts +3 -3
  37. package/calendar-month/src/interfaces/date-day-of-month.d.ts +5 -5
  38. package/calendar-month/src/interfaces/first-and-last-date.d.ts +4 -4
  39. package/calendar-month/src/interfaces/index.d.ts +4 -4
  40. package/calendar-month/src/interfaces/week.d.ts +5 -5
  41. package/calendar-month/src/interfaces/weekday.d.ts +4 -4
  42. package/calendar-month/src/pipes/index.d.ts +2 -2
  43. package/calendar-month/src/pipes/month-name/index.d.ts +2 -2
  44. package/calendar-month/src/pipes/month-name/month-name.module.d.ts +8 -8
  45. package/calendar-month/src/pipes/month-name/month-name.pipe.d.ts +7 -7
  46. package/calendar-month/src/pipes/weekday-name/index.d.ts +2 -2
  47. package/calendar-month/src/pipes/weekday-name/weekday-name.module.d.ts +8 -8
  48. package/calendar-month/src/pipes/weekday-name/weekday-name.pipe.d.ts +7 -7
  49. package/calendar-month/src/service/calendar-month.service.d.ts +18 -18
  50. package/card/index.d.ts +1 -1
  51. package/card/src/card/card.component.d.ts +5 -5
  52. package/card/src/card-header/card-header.component.d.ts +5 -5
  53. package/card/src/card.module.d.ts +9 -9
  54. package/card/src/index.d.ts +3 -3
  55. package/carousel/index.d.ts +1 -1
  56. package/carousel/src/carousel/carousel.component.d.ts +25 -26
  57. package/carousel/src/carousel-image/carousel-image.directive.d.ts +10 -9
  58. package/carousel/src/carousel.module.d.ts +11 -10
  59. package/carousel/src/index.d.ts +3 -3
  60. package/close/index.d.ts +1 -1
  61. package/close/src/close.component.d.ts +10 -10
  62. package/close/src/close.module.d.ts +8 -8
  63. package/close/src/index.d.ts +2 -2
  64. package/code-snippet/index.d.ts +1 -1
  65. package/code-snippet/src/code-snippet.component.d.ts +14 -14
  66. package/code-snippet/src/code-snippet.module.d.ts +11 -11
  67. package/code-snippet/src/index.d.ts +2 -2
  68. package/context-menu/index.d.ts +1 -1
  69. package/context-menu/src/context-menu.directive.d.ts +18 -18
  70. package/context-menu/src/context-menu.module.d.ts +10 -10
  71. package/context-menu/src/index.d.ts +2 -2
  72. package/copy/index.d.ts +1 -1
  73. package/copy/src/copy.directive.d.ts +11 -11
  74. package/copy/src/copy.module.d.ts +8 -8
  75. package/copy/src/index.d.ts +2 -2
  76. package/datatable/index.d.ts +1 -1
  77. package/datatable/src/datatable/datatable.component.d.ts +19 -19
  78. package/datatable/src/datatable-column/datatable-column-metadata.d.ts +4 -4
  79. package/datatable/src/datatable-column/datatable-column.directive.d.ts +10 -10
  80. package/datatable/src/datatable-column/index.d.ts +2 -2
  81. package/datatable/src/datatable-settings.d.ts +15 -15
  82. package/datatable/src/datatable.module.d.ts +13 -13
  83. package/datatable/src/index.d.ts +5 -5
  84. package/datatable/src/row-template/row-template.directive.d.ts +9 -9
  85. package/datepicker/index.d.ts +1 -1
  86. package/datepicker/src/datepicker.component.d.ts +16 -16
  87. package/datepicker/src/datepicker.module.d.ts +12 -12
  88. package/datepicker/src/index.d.ts +2 -2
  89. package/dropdown/index.d.ts +1 -1
  90. package/dropdown/src/dropdown/dropdown.directive.d.ts +23 -23
  91. package/dropdown/src/dropdown-menu/dropdown-menu.directive.d.ts +23 -23
  92. package/dropdown/src/dropdown-toggle/dropdown-toggle.directive.d.ts +11 -11
  93. package/dropdown/src/dropdown.module.d.ts +13 -13
  94. package/dropdown/src/index.d.ts +4 -4
  95. package/dropdown-divider/index.d.ts +1 -0
  96. package/dropdown-divider/src/dropdown-divider.directive.d.ts +6 -0
  97. package/dropdown-divider/src/dropdown-divider.module.d.ts +8 -0
  98. package/dropdown-divider/src/index.d.ts +2 -0
  99. package/dropdown-menu/index.d.ts +1 -1
  100. package/dropdown-menu/src/dropdown-item/dropdown-item.component.d.ts +7 -7
  101. package/dropdown-menu/src/dropdown-menu/dropdown-menu.component.d.ts +14 -14
  102. package/dropdown-menu/src/dropdown-menu.module.d.ts +10 -9
  103. package/dropdown-menu/src/index.d.ts +3 -3
  104. package/enhanced-paste/index.d.ts +1 -1
  105. package/enhanced-paste/src/directive/enhanced-paste.directive.d.ts +14 -14
  106. package/enhanced-paste/src/enhanced-paste.module.d.ts +8 -8
  107. package/enhanced-paste/src/index.d.ts +3 -3
  108. package/enhanced-paste/src/interfaces/number-overflow.d.ts +5 -5
  109. package/enum/index.d.ts +1 -1
  110. package/enum/src/index.d.ts +2 -2
  111. package/enum/src/interfaces/enum-item.d.ts +4 -4
  112. package/enum/src/interfaces/index.d.ts +1 -1
  113. package/enum/src/service/enum.service.d.ts +9 -9
  114. package/esm2020/accordion/index.mjs +1 -1
  115. package/esm2020/accordion/mintplayer-ng-bootstrap-accordion.mjs +4 -4
  116. package/esm2020/accordion/src/accordion/accordion.component.mjs +21 -21
  117. package/esm2020/accordion/src/accordion-tab/accordion-tab.component.mjs +63 -63
  118. package/esm2020/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +20 -20
  119. package/esm2020/accordion/src/accordion.module.mjs +34 -34
  120. package/esm2020/accordion/src/index.mjs +5 -5
  121. package/esm2020/alert/index.mjs +2 -2
  122. package/esm2020/alert/mintplayer-ng-bootstrap-alert.mjs +4 -4
  123. package/esm2020/alert/src/alert/alert.component.mjs +41 -41
  124. package/esm2020/alert/src/alert-close/alert-close.component.mjs +20 -20
  125. package/esm2020/alert/src/alert.module.mjs +27 -27
  126. package/esm2020/alert/src/index.mjs +4 -4
  127. package/esm2020/badge/index.mjs +2 -2
  128. package/esm2020/badge/mintplayer-ng-bootstrap-badge.mjs +4 -4
  129. package/esm2020/badge/src/badge.component.mjs +30 -30
  130. package/esm2020/badge/src/badge.module.mjs +18 -18
  131. package/esm2020/badge/src/index.mjs +3 -3
  132. package/esm2020/breadcrumb/index.mjs +2 -2
  133. package/esm2020/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.mjs +4 -4
  134. package/esm2020/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +13 -13
  135. package/esm2020/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +18 -18
  136. package/esm2020/breadcrumb/src/breadcrumb.module.mjs +19 -19
  137. package/esm2020/breadcrumb/src/index.mjs +4 -4
  138. package/esm2020/button-group/index.mjs +2 -2
  139. package/esm2020/button-group/mintplayer-ng-bootstrap-button-group.mjs +4 -4
  140. package/esm2020/button-group/src/button-group/button-group.component.mjs +13 -13
  141. package/esm2020/button-group/src/button-group.module.mjs +18 -18
  142. package/esm2020/button-group/src/index.mjs +3 -3
  143. package/esm2020/button-type/index.mjs +2 -2
  144. package/esm2020/button-type/mintplayer-ng-bootstrap-button-type.mjs +4 -4
  145. package/esm2020/button-type/src/button-type/button-type.directive.mjs +30 -30
  146. package/esm2020/button-type/src/button-type/button-type.module.mjs +24 -24
  147. package/esm2020/button-type/src/index.mjs +3 -3
  148. package/esm2020/calendar/index.mjs +2 -2
  149. package/esm2020/calendar/mintplayer-ng-bootstrap-calendar.mjs +4 -4
  150. package/esm2020/calendar/src/calendar.component.mjs +105 -105
  151. package/esm2020/calendar/src/calendar.module.mjs +39 -39
  152. package/esm2020/calendar/src/index.mjs +3 -3
  153. package/esm2020/calendar-month/index.mjs +2 -2
  154. package/esm2020/calendar-month/mintplayer-ng-bootstrap-calendar-month.mjs +4 -4
  155. package/esm2020/calendar-month/src/index.mjs +4 -4
  156. package/esm2020/calendar-month/src/interfaces/date-day-of-month.mjs +2 -2
  157. package/esm2020/calendar-month/src/interfaces/first-and-last-date.mjs +2 -2
  158. package/esm2020/calendar-month/src/interfaces/index.mjs +5 -5
  159. package/esm2020/calendar-month/src/interfaces/week.mjs +2 -2
  160. package/esm2020/calendar-month/src/interfaces/weekday.mjs +2 -2
  161. package/esm2020/calendar-month/src/pipes/index.mjs +3 -3
  162. package/esm2020/calendar-month/src/pipes/month-name/index.mjs +3 -3
  163. package/esm2020/calendar-month/src/pipes/month-name/month-name.module.mjs +24 -24
  164. package/esm2020/calendar-month/src/pipes/month-name/month-name.pipe.mjs +21 -21
  165. package/esm2020/calendar-month/src/pipes/weekday-name/index.mjs +3 -3
  166. package/esm2020/calendar-month/src/pipes/weekday-name/weekday-name.module.mjs +24 -24
  167. package/esm2020/calendar-month/src/pipes/weekday-name/weekday-name.pipe.mjs +16 -16
  168. package/esm2020/calendar-month/src/service/calendar-month.service.mjs +94 -94
  169. package/esm2020/card/index.mjs +2 -2
  170. package/esm2020/card/mintplayer-ng-bootstrap-card.mjs +4 -4
  171. package/esm2020/card/src/card/card.component.mjs +11 -11
  172. package/esm2020/card/src/card-header/card-header.component.mjs +11 -11
  173. package/esm2020/card/src/card.module.mjs +27 -27
  174. package/esm2020/card/src/index.mjs +4 -4
  175. package/esm2020/carousel/index.mjs +2 -2
  176. package/esm2020/carousel/mintplayer-ng-bootstrap-carousel.mjs +4 -4
  177. package/esm2020/carousel/src/carousel/carousel.component.mjs +107 -109
  178. package/esm2020/carousel/src/carousel-image/carousel-image.directive.mjs +21 -17
  179. package/esm2020/carousel/src/carousel.module.mjs +37 -33
  180. package/esm2020/carousel/src/index.mjs +4 -4
  181. package/esm2020/close/index.mjs +2 -2
  182. package/esm2020/close/mintplayer-ng-bootstrap-close.mjs +4 -4
  183. package/esm2020/close/src/close.component.mjs +21 -21
  184. package/esm2020/close/src/close.module.mjs +18 -18
  185. package/esm2020/close/src/index.mjs +3 -3
  186. package/esm2020/code-snippet/index.mjs +2 -2
  187. package/esm2020/code-snippet/mintplayer-ng-bootstrap-code-snippet.mjs +4 -4
  188. package/esm2020/code-snippet/src/code-snippet.component.mjs +34 -34
  189. package/esm2020/code-snippet/src/code-snippet.module.mjs +36 -36
  190. package/esm2020/code-snippet/src/index.mjs +3 -3
  191. package/esm2020/context-menu/index.mjs +2 -2
  192. package/esm2020/context-menu/mintplayer-ng-bootstrap-context-menu.mjs +4 -4
  193. package/esm2020/context-menu/src/context-menu.directive.mjs +84 -84
  194. package/esm2020/context-menu/src/context-menu.module.mjs +34 -34
  195. package/esm2020/context-menu/src/index.mjs +3 -3
  196. package/esm2020/copy/index.mjs +2 -2
  197. package/esm2020/copy/mintplayer-ng-bootstrap-copy.mjs +4 -4
  198. package/esm2020/copy/src/copy.directive.mjs +45 -45
  199. package/esm2020/copy/src/copy.module.mjs +24 -24
  200. package/esm2020/copy/src/index.mjs +3 -3
  201. package/esm2020/datatable/index.mjs +2 -2
  202. package/esm2020/datatable/mintplayer-ng-bootstrap-datatable.mjs +4 -4
  203. package/esm2020/datatable/src/datatable/datatable.component.mjs +57 -57
  204. package/esm2020/datatable/src/datatable-column/datatable-column-metadata.mjs +2 -2
  205. package/esm2020/datatable/src/datatable-column/datatable-column.directive.mjs +19 -19
  206. package/esm2020/datatable/src/datatable-column/index.mjs +3 -3
  207. package/esm2020/datatable/src/datatable-settings.mjs +37 -37
  208. package/esm2020/datatable/src/datatable.module.mjs +46 -46
  209. package/esm2020/datatable/src/index.mjs +6 -6
  210. package/esm2020/datatable/src/row-template/row-template.directive.mjs +19 -19
  211. package/esm2020/datepicker/index.mjs +2 -2
  212. package/esm2020/datepicker/mintplayer-ng-bootstrap-datepicker.mjs +4 -4
  213. package/esm2020/datepicker/src/datepicker.component.mjs +49 -49
  214. package/esm2020/datepicker/src/datepicker.module.mjs +40 -40
  215. package/esm2020/datepicker/src/index.mjs +3 -3
  216. package/esm2020/dropdown/index.mjs +2 -2
  217. package/esm2020/dropdown/mintplayer-ng-bootstrap-dropdown.mjs +4 -4
  218. package/esm2020/dropdown/src/dropdown/dropdown.directive.mjs +68 -68
  219. package/esm2020/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +114 -114
  220. package/esm2020/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +31 -31
  221. package/esm2020/dropdown/src/dropdown.module.mjs +43 -43
  222. package/esm2020/dropdown/src/index.mjs +5 -5
  223. package/esm2020/dropdown-divider/index.mjs +2 -0
  224. package/esm2020/dropdown-divider/mintplayer-ng-bootstrap-dropdown-divider.mjs +5 -0
  225. package/esm2020/dropdown-divider/src/dropdown-divider.directive.mjs +19 -0
  226. package/esm2020/dropdown-divider/src/dropdown-divider.module.mjs +18 -0
  227. package/esm2020/dropdown-divider/src/index.mjs +3 -0
  228. package/esm2020/dropdown-menu/index.mjs +2 -2
  229. package/esm2020/dropdown-menu/mintplayer-ng-bootstrap-dropdown-menu.mjs +4 -4
  230. package/esm2020/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +19 -19
  231. package/esm2020/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +42 -42
  232. package/esm2020/dropdown-menu/src/dropdown-menu.module.mjs +26 -19
  233. package/esm2020/dropdown-menu/src/index.mjs +4 -4
  234. package/esm2020/enhanced-paste/index.mjs +2 -2
  235. package/esm2020/enhanced-paste/mintplayer-ng-bootstrap-enhanced-paste.mjs +4 -4
  236. package/esm2020/enhanced-paste/src/directive/enhanced-paste.directive.mjs +58 -58
  237. package/esm2020/enhanced-paste/src/enhanced-paste.module.mjs +24 -24
  238. package/esm2020/enhanced-paste/src/index.mjs +4 -4
  239. package/esm2020/enhanced-paste/src/interfaces/number-overflow.mjs +2 -2
  240. package/esm2020/enum/index.mjs +2 -2
  241. package/esm2020/enum/mintplayer-ng-bootstrap-enum.mjs +4 -4
  242. package/esm2020/enum/src/index.mjs +3 -3
  243. package/esm2020/enum/src/interfaces/enum-item.mjs +2 -2
  244. package/esm2020/enum/src/interfaces/index.mjs +1 -1
  245. package/esm2020/enum/src/service/enum.service.mjs +31 -31
  246. package/esm2020/file-upload/index.mjs +2 -2
  247. package/esm2020/file-upload/mintplayer-ng-bootstrap-file-upload.mjs +4 -4
  248. package/esm2020/file-upload/src/component/file-upload.component.mjs +86 -86
  249. package/esm2020/file-upload/src/directive/file-upload-template.directive.mjs +18 -18
  250. package/esm2020/file-upload/src/file-upload.mjs +2 -2
  251. package/esm2020/file-upload/src/file-upload.module.mjs +50 -50
  252. package/esm2020/file-upload/src/index.mjs +6 -6
  253. package/esm2020/file-upload/src/pipes/format-bytes/format-bytes.pipe.mjs +23 -23
  254. package/esm2020/file-upload/src/pipes/index.mjs +1 -1
  255. package/esm2020/floating-labels/index.mjs +2 -2
  256. package/esm2020/floating-labels/mintplayer-ng-bootstrap-floating-labels.mjs +4 -4
  257. package/esm2020/floating-labels/src/floating-labels/floating-label/floating-label.component.mjs +20 -20
  258. package/esm2020/floating-labels/src/floating-labels/floating-labels.module.mjs +18 -18
  259. package/esm2020/floating-labels/src/index.mjs +3 -3
  260. package/esm2020/for/index.mjs +2 -2
  261. package/esm2020/for/mintplayer-ng-bootstrap-for.mjs +4 -4
  262. package/esm2020/for/src/for.directive.mjs +38 -38
  263. package/esm2020/for/src/for.module.mjs +24 -24
  264. package/esm2020/for/src/index.mjs +3 -3
  265. package/esm2020/form/index.mjs +2 -2
  266. package/esm2020/form/mintplayer-ng-bootstrap-form.mjs +4 -4
  267. package/esm2020/form/src/form/form.component.mjs +20 -20
  268. package/esm2020/form/src/form-control/form-control.directive.mjs +19 -19
  269. package/esm2020/form/src/form-group/form-group.directive.mjs +19 -19
  270. package/esm2020/form/src/form.module.mjs +20 -20
  271. package/esm2020/form/src/index.mjs +5 -5
  272. package/esm2020/grid/index.mjs +2 -2
  273. package/esm2020/grid/mintplayer-ng-bootstrap-grid.mjs +4 -4
  274. package/esm2020/grid/src/component/grid.component.mjs +32 -32
  275. package/esm2020/grid/src/directives/col-form-label/col-form-label.directive.mjs +19 -19
  276. package/esm2020/grid/src/directives/column/column.directive.mjs +56 -56
  277. package/esm2020/grid/src/directives/index.mjs +4 -4
  278. package/esm2020/grid/src/directives/row/row.directive.mjs +19 -19
  279. package/esm2020/grid/src/grid.module.mjs +21 -21
  280. package/esm2020/grid/src/index.mjs +5 -5
  281. package/esm2020/grid/src/interfaces/column-definition.mjs +2 -2
  282. package/esm2020/grid/src/interfaces/index.mjs +1 -1
  283. package/esm2020/has-overlay/index.mjs +1 -1
  284. package/esm2020/has-overlay/mintplayer-ng-bootstrap-has-overlay.mjs +4 -4
  285. package/esm2020/has-overlay/src/has-overlay/has-overlay.component.mjs +11 -11
  286. package/esm2020/has-overlay/src/has-overlay/has-overlay.module.mjs +18 -18
  287. package/esm2020/has-overlay/src/index.mjs +3 -3
  288. package/esm2020/icon/index.mjs +3 -3
  289. package/esm2020/icon/mintplayer-ng-bootstrap-icon.mjs +4 -4
  290. package/esm2020/icon/src/icon.component.mjs +34 -34
  291. package/esm2020/icon/src/icon.module.mjs +18 -18
  292. package/esm2020/index.mjs +5 -5
  293. package/esm2020/input-group/index.mjs +1 -1
  294. package/esm2020/input-group/mintplayer-ng-bootstrap-input-group.mjs +4 -4
  295. package/esm2020/input-group/src/index.mjs +3 -3
  296. package/esm2020/input-group/src/input-group/input-group.component.mjs +11 -11
  297. package/esm2020/input-group/src/input-group.module.mjs +18 -18
  298. package/esm2020/lazy-loading/index.mjs +1 -1
  299. package/esm2020/lazy-loading/mintplayer-ng-bootstrap-lazy-loading.mjs +4 -4
  300. package/esm2020/lazy-loading/src/index.mjs +3 -3
  301. package/esm2020/lazy-loading/src/lazy-load/lazy-load.directive.mjs +32 -32
  302. package/esm2020/lazy-loading/src/lazy-loading.module.mjs +24 -24
  303. package/esm2020/lib/enums/color.enum.mjs +15 -15
  304. package/esm2020/lib/enums/index.mjs +1 -1
  305. package/esm2020/lib/pipes/font-color/font-color.module.mjs +24 -24
  306. package/esm2020/lib/pipes/font-color/font-color.pipe.mjs +26 -26
  307. package/esm2020/lib/pipes/font-color/index.mjs +3 -3
  308. package/esm2020/lib/pipes/in-list/in-list.module.mjs +24 -24
  309. package/esm2020/lib/pipes/in-list/in-list.pipe.mjs +16 -16
  310. package/esm2020/lib/pipes/in-list/index.mjs +3 -3
  311. package/esm2020/lib/pipes/index.mjs +4 -4
  312. package/esm2020/lib/pipes/uc-first/index.mjs +3 -3
  313. package/esm2020/lib/pipes/uc-first/uc-first.module.mjs +24 -24
  314. package/esm2020/lib/pipes/uc-first/uc-first.pipe.mjs +16 -16
  315. package/esm2020/lib/providers/development.provider.mjs +8 -8
  316. package/esm2020/lib/providers/index.mjs +1 -1
  317. package/esm2020/lib/types/breakpoint.mjs +1 -1
  318. package/esm2020/lib/types/index.mjs +5 -5
  319. package/esm2020/lib/types/position.mjs +1 -1
  320. package/esm2020/lib/types/size.mjs +1 -1
  321. package/esm2020/lib/types/view-state.type.mjs +1 -1
  322. package/esm2020/list-group/index.mjs +2 -2
  323. package/esm2020/list-group/mintplayer-ng-bootstrap-list-group.mjs +4 -4
  324. package/esm2020/list-group/src/index.mjs +4 -4
  325. package/esm2020/list-group/src/list-group/list-group.component.mjs +19 -19
  326. package/esm2020/list-group/src/list-group-item/list-group-item.component.mjs +15 -15
  327. package/esm2020/list-group/src/list-group.module.mjs +27 -27
  328. package/esm2020/markdown/index.mjs +6 -6
  329. package/esm2020/markdown/mintplayer-ng-bootstrap-markdown.mjs +4 -4
  330. package/esm2020/markdown/src/bold/bold.pipe.mjs +30 -30
  331. package/esm2020/markdown/src/italic/italic.pipe.mjs +30 -30
  332. package/esm2020/markdown/src/markdown.module.mjs +39 -39
  333. package/esm2020/markdown/src/strikethrough/strikethrough.pipe.mjs +30 -30
  334. package/esm2020/markdown/src/underline/underline.pipe.mjs +30 -30
  335. package/esm2020/mintplayer-ng-bootstrap.mjs +4 -4
  336. package/esm2020/modal/index.mjs +2 -2
  337. package/esm2020/modal/mintplayer-ng-bootstrap-modal.mjs +4 -4
  338. package/esm2020/modal/src/components/index.mjs +3 -3
  339. package/esm2020/modal/src/components/modal/modal.component.mjs +21 -21
  340. package/esm2020/modal/src/components/modal-host/modal-host.component.mjs +83 -83
  341. package/esm2020/modal/src/directives/index.mjs +6 -6
  342. package/esm2020/modal/src/directives/modal/modal.directive.mjs +18 -18
  343. package/esm2020/modal/src/directives/modal-body/modal-body.directive.mjs +19 -19
  344. package/esm2020/modal/src/directives/modal-close/modal-close.directive.mjs +24 -24
  345. package/esm2020/modal/src/directives/modal-footer/modal-footer.directive.mjs +19 -19
  346. package/esm2020/modal/src/directives/modal-header/modal-header.directive.mjs +19 -19
  347. package/esm2020/modal/src/index.mjs +4 -4
  348. package/esm2020/modal/src/modal.module.mjs +75 -75
  349. package/esm2020/modal/src/providers/modal-content.provider.mjs +3 -3
  350. package/esm2020/modal/src/providers/portal-factory.provider.mjs +3 -3
  351. package/esm2020/multiselect/index.mjs +2 -2
  352. package/esm2020/multiselect/mintplayer-ng-bootstrap-multiselect.mjs +4 -4
  353. package/esm2020/multiselect/src/component/multiselect.component.mjs +40 -40
  354. package/esm2020/multiselect/src/directives/button-template/button-template.directive.mjs +18 -18
  355. package/esm2020/multiselect/src/directives/footer-template/footer-template.directive.mjs +18 -18
  356. package/esm2020/multiselect/src/directives/header-template/header-template.directive.mjs +18 -18
  357. package/esm2020/multiselect/src/directives/index.mjs +4 -4
  358. package/esm2020/multiselect/src/index.mjs +4 -4
  359. package/esm2020/multiselect/src/multiselect.module.mjs +63 -63
  360. package/esm2020/navbar/index.mjs +2 -2
  361. package/esm2020/navbar/mintplayer-ng-bootstrap-navbar.mjs +4 -4
  362. package/esm2020/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +38 -38
  363. package/esm2020/navbar/src/expand-button/expand-button.directive.mjs +18 -18
  364. package/esm2020/navbar/src/index.mjs +13 -13
  365. package/esm2020/navbar/src/nav-link/nav-link.directive.mjs +34 -34
  366. package/esm2020/navbar/src/navbar/navbar.component.mjs +141 -141
  367. package/esm2020/navbar/src/navbar-brand/navbar-brand.component.mjs +20 -20
  368. package/esm2020/navbar/src/navbar-content/navbar-content.directive.mjs +72 -72
  369. package/esm2020/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +143 -144
  370. package/esm2020/navbar/src/navbar-item/navbar-item.component.mjs +104 -104
  371. package/esm2020/navbar/src/navbar-nav/navbar-nav.component.mjs +69 -69
  372. package/esm2020/navbar/src/navbar-toggler/navbar-toggler.component.mjs +47 -47
  373. package/esm2020/navbar/src/navbar.module.mjs +91 -85
  374. package/esm2020/navigation-lock/index.mjs +2 -2
  375. package/esm2020/navigation-lock/mintplayer-ng-bootstrap-navigation-lock.mjs +4 -4
  376. package/esm2020/navigation-lock/src/directive/navigation-lock.directive.mjs +94 -94
  377. package/esm2020/navigation-lock/src/guard/navigation-lock.guard.mjs +22 -22
  378. package/esm2020/navigation-lock/src/index.mjs +5 -5
  379. package/esm2020/navigation-lock/src/interface/has-navigation-lock.mjs +2 -2
  380. package/esm2020/navigation-lock/src/navigation-lock.module.mjs +28 -28
  381. package/esm2020/no-noscript/index.mjs +2 -2
  382. package/esm2020/no-noscript/mintplayer-ng-bootstrap-no-noscript.mjs +4 -4
  383. package/esm2020/no-noscript/src/index.mjs +3 -3
  384. package/esm2020/no-noscript/src/no-noscript/no-noscript.directive.mjs +27 -27
  385. package/esm2020/no-noscript/src/no-noscript.module.mjs +18 -18
  386. package/esm2020/offcanvas/index.mjs +2 -2
  387. package/esm2020/offcanvas/mintplayer-ng-bootstrap-offcanvas.mjs +4 -4
  388. package/esm2020/offcanvas/src/components/index.mjs +5 -5
  389. package/esm2020/offcanvas/src/components/offcanvas/offcanvas.component.mjs +111 -111
  390. package/esm2020/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +18 -18
  391. package/esm2020/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +14 -14
  392. package/esm2020/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +143 -143
  393. package/esm2020/offcanvas/src/directives/index.mjs +4 -4
  394. package/esm2020/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +24 -24
  395. package/esm2020/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +18 -18
  396. package/esm2020/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.mjs +71 -71
  397. package/esm2020/offcanvas/src/index.mjs +4 -4
  398. package/esm2020/offcanvas/src/offcanvas.module.mjs +75 -75
  399. package/esm2020/offcanvas/src/providers/offcanvas-content.provider.mjs +3 -3
  400. package/esm2020/offcanvas/src/providers/portal-factory.provider.mjs +3 -3
  401. package/esm2020/ordinal-number/index.mjs +2 -2
  402. package/esm2020/ordinal-number/mintplayer-ng-bootstrap-ordinal-number.mjs +4 -4
  403. package/esm2020/ordinal-number/src/index.mjs +3 -3
  404. package/esm2020/ordinal-number/src/ordinal-number/ordinal-number.pipe.mjs +29 -29
  405. package/esm2020/ordinal-number/src/ordinal-number.module.mjs +24 -24
  406. package/esm2020/pagination/index.mjs +2 -2
  407. package/esm2020/pagination/mintplayer-ng-bootstrap-pagination.mjs +4 -4
  408. package/esm2020/pagination/src/component/index.mjs +1 -1
  409. package/esm2020/pagination/src/component/pagination/pagination.component.mjs +198 -198
  410. package/esm2020/pagination/src/index.mjs +5 -5
  411. package/esm2020/pagination/src/interfaces/index.mjs +1 -1
  412. package/esm2020/pagination/src/interfaces/page-with-selection.mjs +2 -2
  413. package/esm2020/pagination/src/pagination.module.mjs +24 -24
  414. package/esm2020/pagination/src/types/index.mjs +1 -1
  415. package/esm2020/pagination/src/types/page-number.type.mjs +1 -1
  416. package/esm2020/placeholder/index.mjs +2 -2
  417. package/esm2020/placeholder/mintplayer-ng-bootstrap-placeholder.mjs +4 -4
  418. package/esm2020/placeholder/src/index.mjs +4 -4
  419. package/esm2020/placeholder/src/placeholder/placeholder.component.mjs +26 -26
  420. package/esm2020/placeholder/src/placeholder-field/placeholder-field.directive.mjs +46 -46
  421. package/esm2020/placeholder/src/placeholder.module.mjs +19 -19
  422. package/esm2020/popover/index.mjs +2 -2
  423. package/esm2020/popover/mintplayer-ng-bootstrap-popover.mjs +4 -4
  424. package/esm2020/popover/src/component/popover.component.mjs +57 -57
  425. package/esm2020/popover/src/directives/index.mjs +4 -4
  426. package/esm2020/popover/src/directives/popover/popover.directive.mjs +132 -132
  427. package/esm2020/popover/src/directives/popover-body/popover-body.directive.mjs +19 -19
  428. package/esm2020/popover/src/directives/popover-header/popover-header.directive.mjs +19 -19
  429. package/esm2020/popover/src/index.mjs +4 -4
  430. package/esm2020/popover/src/popover.module.mjs +36 -36
  431. package/esm2020/popover/src/providers/popover-content.provider.mjs +3 -3
  432. package/esm2020/popover/src/providers/portal-factory.provider.mjs +3 -3
  433. package/esm2020/progress-bar/index.mjs +2 -2
  434. package/esm2020/progress-bar/mintplayer-ng-bootstrap-progress-bar.mjs +4 -4
  435. package/esm2020/progress-bar/src/index.mjs +4 -4
  436. package/esm2020/progress-bar/src/progress/progress.component.mjs +31 -31
  437. package/esm2020/progress-bar/src/progress-bar/progress-bar.component.mjs +121 -121
  438. package/esm2020/progress-bar/src/progress-bar.module.mjs +29 -29
  439. package/esm2020/range/index.mjs +2 -2
  440. package/esm2020/range/mintplayer-ng-bootstrap-range.mjs +4 -4
  441. package/esm2020/range/src/component/range.component.mjs +25 -25
  442. package/esm2020/range/src/index.mjs +4 -4
  443. package/esm2020/range/src/range.module.mjs +19 -19
  444. package/esm2020/range/src/value-accessor/range-value-accessor.mjs +62 -62
  445. package/esm2020/rating/index.mjs +2 -2
  446. package/esm2020/rating/mintplayer-ng-bootstrap-rating.mjs +4 -4
  447. package/esm2020/rating/src/component/rating.component.mjs +72 -72
  448. package/esm2020/rating/src/index.mjs +3 -3
  449. package/esm2020/rating/src/rating.module.mjs +24 -24
  450. package/esm2020/scheduler/index.mjs +2 -2
  451. package/esm2020/scheduler/mintplayer-ng-bootstrap-scheduler.mjs +4 -4
  452. package/esm2020/scheduler/src/components/index.mjs +3 -3
  453. package/esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +85 -85
  454. package/esm2020/scheduler/src/components/scheduler/scheduler.component.mjs +538 -538
  455. package/esm2020/scheduler/src/constants/available-scales.mjs +12 -12
  456. package/esm2020/scheduler/src/constants/index.mjs +1 -1
  457. package/esm2020/scheduler/src/enums/drag-operation.mjs +8 -8
  458. package/esm2020/scheduler/src/enums/index.mjs +1 -1
  459. package/esm2020/scheduler/src/enums/scheduler-mode.mjs +6 -6
  460. package/esm2020/scheduler/src/index.mjs +6 -6
  461. package/esm2020/scheduler/src/interfaces/drag-operation.mjs +2 -2
  462. package/esm2020/scheduler/src/interfaces/index.mjs +6 -6
  463. package/esm2020/scheduler/src/interfaces/preview-event.mjs +2 -2
  464. package/esm2020/scheduler/src/interfaces/resource-group.mjs +2 -2
  465. package/esm2020/scheduler/src/interfaces/resource-or-group.mjs +2 -2
  466. package/esm2020/scheduler/src/interfaces/resource.mjs +2 -2
  467. package/esm2020/scheduler/src/interfaces/scheduler-event-part.mjs +2 -2
  468. package/esm2020/scheduler/src/interfaces/scheduler-event-with-parts.mjs +2 -2
  469. package/esm2020/scheduler/src/interfaces/scheduler-event.mjs +2 -2
  470. package/esm2020/scheduler/src/interfaces/scheduler-schale.mjs +2 -2
  471. package/esm2020/scheduler/src/interfaces/scheduler-stamp-with-slots.mjs +2 -2
  472. package/esm2020/scheduler/src/interfaces/time-slot.mjs +2 -2
  473. package/esm2020/scheduler/src/interfaces/timeline-options.mjs +2 -2
  474. package/esm2020/scheduler/src/interfaces/timeline-track.mjs +2 -2
  475. package/esm2020/scheduler/src/interfaces/week-options.mjs +2 -2
  476. package/esm2020/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +16 -16
  477. package/esm2020/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +20 -20
  478. package/esm2020/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +20 -20
  479. package/esm2020/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +22 -22
  480. package/esm2020/scheduler/src/scheduler.module.mjs +45 -45
  481. package/esm2020/scheduler/src/services/timeline/timeline.service.mjs +65 -65
  482. package/esm2020/scrollspy/index.mjs +2 -2
  483. package/esm2020/scrollspy/mintplayer-ng-bootstrap-scrollspy.mjs +4 -4
  484. package/esm2020/scrollspy/src/component/scrollspy.component.mjs +90 -90
  485. package/esm2020/scrollspy/src/directives/scrollspy.directive.mjs +16 -16
  486. package/esm2020/scrollspy/src/index.mjs +5 -5
  487. package/esm2020/scrollspy/src/scrollspy.module.mjs +29 -29
  488. package/esm2020/scrollspy/src/services/index.mjs +1 -1
  489. package/esm2020/scrollspy/src/services/scroll-offset/scroll-offset.service.mjs +31 -31
  490. package/esm2020/select/index.mjs +2 -2
  491. package/esm2020/select/mintplayer-ng-bootstrap-select.mjs +4 -4
  492. package/esm2020/select/src/component/select.component.mjs +85 -85
  493. package/esm2020/select/src/index.mjs +5 -5
  494. package/esm2020/select/src/select.module.mjs +31 -31
  495. package/esm2020/select/src/types/index.mjs +1 -1
  496. package/esm2020/select/src/types/select-size.mjs +1 -1
  497. package/esm2020/select/src/value-accessors/index.mjs +1 -1
  498. package/esm2020/select/src/value-accessors/select-value-accessor.mjs +167 -167
  499. package/esm2020/select2/index.mjs +2 -2
  500. package/esm2020/select2/mintplayer-ng-bootstrap-select2.mjs +4 -4
  501. package/esm2020/select2/src/component/select2.component.mjs +85 -85
  502. package/esm2020/select2/src/directive/item-template.directive.mjs +19 -19
  503. package/esm2020/select2/src/index.mjs +4 -4
  504. package/esm2020/select2/src/select2.module.mjs +49 -49
  505. package/esm2020/snackbar/index.mjs +2 -2
  506. package/esm2020/snackbar/mintplayer-ng-bootstrap-snackbar.mjs +4 -4
  507. package/esm2020/snackbar/src/component/snackbar.component.mjs +36 -36
  508. package/esm2020/snackbar/src/directives/index.mjs +1 -1
  509. package/esm2020/snackbar/src/directives/snackbar-close/snackbar-close.directive.mjs +27 -27
  510. package/esm2020/snackbar/src/index.mjs +6 -6
  511. package/esm2020/snackbar/src/interfaces/index.mjs +1 -1
  512. package/esm2020/snackbar/src/interfaces/snackbar-animation-meta.mjs +2 -2
  513. package/esm2020/snackbar/src/providers/snackbar-content.provider.mjs +3 -3
  514. package/esm2020/snackbar/src/service/snackbar.service.mjs +45 -45
  515. package/esm2020/snackbar/src/snackbar.module.mjs +43 -43
  516. package/esm2020/spinner/index.mjs +2 -2
  517. package/esm2020/spinner/mintplayer-ng-bootstrap-spinner.mjs +4 -4
  518. package/esm2020/spinner/src/index.mjs +3 -3
  519. package/esm2020/spinner/src/spinner.component.mjs +43 -43
  520. package/esm2020/spinner/src/spinner.module.mjs +18 -18
  521. package/esm2020/tab-control/index.mjs +2 -2
  522. package/esm2020/tab-control/mintplayer-ng-bootstrap-tab-control.mjs +4 -4
  523. package/esm2020/tab-control/src/index.mjs +4 -4
  524. package/esm2020/tab-control/src/tab-control/tab-control.component.mjs +36 -36
  525. package/esm2020/tab-control/src/tab-control.module.mjs +29 -29
  526. package/esm2020/tab-control/src/tab-page/tab-page.component.mjs +23 -23
  527. package/esm2020/table/index.mjs +2 -2
  528. package/esm2020/table/mintplayer-ng-bootstrap-table.mjs +4 -4
  529. package/esm2020/table/src/component/table.component.mjs +47 -47
  530. package/esm2020/table/src/index.mjs +3 -3
  531. package/esm2020/table/src/table.module.mjs +18 -18
  532. package/esm2020/timepicker/index.mjs +2 -2
  533. package/esm2020/timepicker/mintplayer-ng-bootstrap-timepicker.mjs +4 -4
  534. package/esm2020/timepicker/src/index.mjs +3 -3
  535. package/esm2020/timepicker/src/timepicker.component.mjs +117 -117
  536. package/esm2020/timepicker/src/timepicker.module.mjs +60 -60
  537. package/esm2020/toast/index.mjs +2 -2
  538. package/esm2020/toast/mintplayer-ng-bootstrap-toast.mjs +4 -4
  539. package/esm2020/toast/src/components/index.mjs +5 -5
  540. package/esm2020/toast/src/components/toast/toast.component.mjs +16 -16
  541. package/esm2020/toast/src/components/toast-body/toast-body.component.mjs +20 -20
  542. package/esm2020/toast/src/components/toast-container/toast-container.component.mjs +23 -23
  543. package/esm2020/toast/src/components/toast-header/toast-header.component.mjs +17 -17
  544. package/esm2020/toast/src/directives/index.mjs +1 -1
  545. package/esm2020/toast/src/directives/toast-close/toast-close.directive.mjs +32 -32
  546. package/esm2020/toast/src/index.mjs +6 -6
  547. package/esm2020/toast/src/pipes/add-properties.pipe.mjs +17 -17
  548. package/esm2020/toast/src/providers/portal-factory.provider.mjs +3 -3
  549. package/esm2020/toast/src/services/index.mjs +1 -1
  550. package/esm2020/toast/src/services/toast/toast.service.mjs +56 -56
  551. package/esm2020/toast/src/toast.module.mjs +77 -77
  552. package/esm2020/toggle-button/index.mjs +2 -2
  553. package/esm2020/toggle-button/mintplayer-ng-bootstrap-toggle-button.mjs +4 -4
  554. package/esm2020/toggle-button/src/component/toggle-button.component.mjs +158 -158
  555. package/esm2020/toggle-button/src/directives/index.mjs +1 -1
  556. package/esm2020/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +19 -19
  557. package/esm2020/toggle-button/src/index.mjs +6 -6
  558. package/esm2020/toggle-button/src/toggle-button.module.mjs +34 -34
  559. package/esm2020/toggle-button/src/types/check-style.mjs +2 -2
  560. package/esm2020/toggle-button/src/types/index.mjs +2 -2
  561. package/esm2020/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +108 -108
  562. package/esm2020/tooltip/index.mjs +2 -2
  563. package/esm2020/tooltip/mintplayer-ng-bootstrap-tooltip.mjs +4 -4
  564. package/esm2020/tooltip/src/component/tooltip.component.mjs +38 -38
  565. package/esm2020/tooltip/src/directive/tooltip.directive.mjs +109 -109
  566. package/esm2020/tooltip/src/index.mjs +4 -4
  567. package/esm2020/tooltip/src/providers/tooltip-content.provider.mjs +3 -3
  568. package/esm2020/tooltip/src/tooltip.module.mjs +35 -35
  569. package/esm2020/typeahead/index.mjs +2 -2
  570. package/esm2020/typeahead/mintplayer-ng-bootstrap-typeahead.mjs +4 -4
  571. package/esm2020/typeahead/src/index.mjs +3 -3
  572. package/esm2020/typeahead/src/typeahead.component.mjs +82 -82
  573. package/esm2020/typeahead/src/typeahead.module.mjs +48 -48
  574. package/esm2020/user-agent/index.mjs +2 -2
  575. package/esm2020/user-agent/mintplayer-ng-bootstrap-user-agent.mjs +4 -4
  576. package/esm2020/user-agent/src/index.mjs +4 -4
  577. package/esm2020/user-agent/src/user-agent/user-agent.directive.mjs +57 -57
  578. package/esm2020/user-agent/src/user-agent/user-agent.module.mjs +24 -24
  579. package/esm2020/user-agent/src/user-agent.type.mjs +1 -1
  580. package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs +113 -113
  581. package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  582. package/fesm2015/mintplayer-ng-bootstrap-alert.mjs +70 -70
  583. package/fesm2015/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
  584. package/fesm2015/mintplayer-ng-bootstrap-badge.mjs +37 -37
  585. package/fesm2015/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
  586. package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs +37 -37
  587. package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
  588. package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs +23 -23
  589. package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
  590. package/fesm2015/mintplayer-ng-bootstrap-button-type.mjs +45 -45
  591. package/fesm2015/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
  592. package/fesm2015/mintplayer-ng-bootstrap-calendar-month.mjs +160 -160
  593. package/fesm2015/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
  594. package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs +127 -127
  595. package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  596. package/fesm2015/mintplayer-ng-bootstrap-card.mjs +36 -36
  597. package/fesm2015/mintplayer-ng-bootstrap-card.mjs.map +1 -1
  598. package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs +151 -146
  599. package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  600. package/fesm2015/mintplayer-ng-bootstrap-close.mjs +31 -31
  601. package/fesm2015/mintplayer-ng-bootstrap-close.mjs.map +1 -1
  602. package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs +55 -55
  603. package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  604. package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs +107 -107
  605. package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
  606. package/fesm2015/mintplayer-ng-bootstrap-copy.mjs +63 -63
  607. package/fesm2015/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
  608. package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs +145 -145
  609. package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
  610. package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs +71 -71
  611. package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
  612. package/fesm2015/mintplayer-ng-bootstrap-dropdown-divider.mjs +41 -0
  613. package/fesm2015/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -0
  614. package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs +74 -67
  615. package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  616. package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs +225 -225
  617. package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  618. package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs +72 -72
  619. package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
  620. package/fesm2015/mintplayer-ng-bootstrap-enum.mjs +29 -29
  621. package/fesm2015/mintplayer-ng-bootstrap-enum.mjs.map +1 -1
  622. package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs +147 -147
  623. package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  624. package/fesm2015/mintplayer-ng-bootstrap-floating-labels.mjs +30 -30
  625. package/fesm2015/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
  626. package/fesm2015/mintplayer-ng-bootstrap-for.mjs +54 -54
  627. package/fesm2015/mintplayer-ng-bootstrap-for.mjs.map +1 -1
  628. package/fesm2015/mintplayer-ng-bootstrap-form.mjs +60 -60
  629. package/fesm2015/mintplayer-ng-bootstrap-form.mjs.map +1 -1
  630. package/fesm2015/mintplayer-ng-bootstrap-grid.mjs +121 -121
  631. package/fesm2015/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
  632. package/fesm2015/mintplayer-ng-bootstrap-has-overlay.mjs +21 -21
  633. package/fesm2015/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
  634. package/fesm2015/mintplayer-ng-bootstrap-icon.mjs +41 -41
  635. package/fesm2015/mintplayer-ng-bootstrap-icon.mjs.map +1 -1
  636. package/fesm2015/mintplayer-ng-bootstrap-input-group.mjs +21 -21
  637. package/fesm2015/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
  638. package/fesm2015/mintplayer-ng-bootstrap-lazy-loading.mjs +48 -48
  639. package/fesm2015/mintplayer-ng-bootstrap-lazy-loading.mjs.map +1 -1
  640. package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs +47 -47
  641. package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  642. package/fesm2015/mintplayer-ng-bootstrap-markdown.mjs +128 -128
  643. package/fesm2015/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
  644. package/fesm2015/mintplayer-ng-bootstrap-modal.mjs +227 -227
  645. package/fesm2015/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  646. package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs +115 -115
  647. package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  648. package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs +691 -686
  649. package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  650. package/fesm2015/mintplayer-ng-bootstrap-navigation-lock.mjs +130 -130
  651. package/fesm2015/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
  652. package/fesm2015/mintplayer-ng-bootstrap-no-noscript.mjs +38 -38
  653. package/fesm2015/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
  654. package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs +417 -417
  655. package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
  656. package/fesm2015/mintplayer-ng-bootstrap-ordinal-number.mjs +43 -43
  657. package/fesm2015/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
  658. package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs +212 -212
  659. package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  660. package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs +74 -74
  661. package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
  662. package/fesm2015/mintplayer-ng-bootstrap-popover.mjs +231 -231
  663. package/fesm2015/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
  664. package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs +165 -165
  665. package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
  666. package/fesm2015/mintplayer-ng-bootstrap-range.mjs +89 -89
  667. package/fesm2015/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  668. package/fesm2015/mintplayer-ng-bootstrap-rating.mjs +86 -86
  669. package/fesm2015/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  670. package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs +777 -777
  671. package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  672. package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs +147 -147
  673. package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  674. package/fesm2015/mintplayer-ng-bootstrap-select.mjs +267 -267
  675. package/fesm2015/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  676. package/fesm2015/mintplayer-ng-bootstrap-select2.mjs +126 -126
  677. package/fesm2015/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  678. package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs +121 -121
  679. package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -1
  680. package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs +50 -50
  681. package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
  682. package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs +70 -70
  683. package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  684. package/fesm2015/mintplayer-ng-bootstrap-table.mjs +55 -55
  685. package/fesm2015/mintplayer-ng-bootstrap-table.mjs.map +1 -1
  686. package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs +149 -149
  687. package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  688. package/fesm2015/mintplayer-ng-bootstrap-toast.mjs +205 -205
  689. package/fesm2015/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  690. package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs +294 -294
  691. package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  692. package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs +161 -161
  693. package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
  694. package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs +108 -108
  695. package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  696. package/fesm2015/mintplayer-ng-bootstrap-user-agent.mjs +74 -74
  697. package/fesm2015/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
  698. package/fesm2015/mintplayer-ng-bootstrap.mjs +120 -120
  699. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  700. package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs +113 -113
  701. package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  702. package/fesm2020/mintplayer-ng-bootstrap-alert.mjs +70 -70
  703. package/fesm2020/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
  704. package/fesm2020/mintplayer-ng-bootstrap-badge.mjs +37 -37
  705. package/fesm2020/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
  706. package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs +37 -37
  707. package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
  708. package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs +23 -23
  709. package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
  710. package/fesm2020/mintplayer-ng-bootstrap-button-type.mjs +45 -45
  711. package/fesm2020/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
  712. package/fesm2020/mintplayer-ng-bootstrap-calendar-month.mjs +157 -157
  713. package/fesm2020/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
  714. package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs +127 -127
  715. package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  716. package/fesm2020/mintplayer-ng-bootstrap-card.mjs +36 -36
  717. package/fesm2020/mintplayer-ng-bootstrap-card.mjs.map +1 -1
  718. package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs +149 -144
  719. package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  720. package/fesm2020/mintplayer-ng-bootstrap-close.mjs +31 -31
  721. package/fesm2020/mintplayer-ng-bootstrap-close.mjs.map +1 -1
  722. package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs +55 -55
  723. package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  724. package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs +105 -105
  725. package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
  726. package/fesm2020/mintplayer-ng-bootstrap-copy.mjs +60 -60
  727. package/fesm2020/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
  728. package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs +145 -145
  729. package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
  730. package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs +71 -71
  731. package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
  732. package/fesm2020/mintplayer-ng-bootstrap-dropdown-divider.mjs +41 -0
  733. package/fesm2020/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -0
  734. package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs +72 -65
  735. package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  736. package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs +220 -220
  737. package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  738. package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs +72 -72
  739. package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
  740. package/fesm2020/mintplayer-ng-bootstrap-enum.mjs +29 -29
  741. package/fesm2020/mintplayer-ng-bootstrap-enum.mjs.map +1 -1
  742. package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs +147 -147
  743. package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  744. package/fesm2020/mintplayer-ng-bootstrap-floating-labels.mjs +28 -28
  745. package/fesm2020/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
  746. package/fesm2020/mintplayer-ng-bootstrap-for.mjs +54 -54
  747. package/fesm2020/mintplayer-ng-bootstrap-for.mjs.map +1 -1
  748. package/fesm2020/mintplayer-ng-bootstrap-form.mjs +60 -60
  749. package/fesm2020/mintplayer-ng-bootstrap-form.mjs.map +1 -1
  750. package/fesm2020/mintplayer-ng-bootstrap-grid.mjs +121 -121
  751. package/fesm2020/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
  752. package/fesm2020/mintplayer-ng-bootstrap-has-overlay.mjs +21 -21
  753. package/fesm2020/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
  754. package/fesm2020/mintplayer-ng-bootstrap-icon.mjs +41 -41
  755. package/fesm2020/mintplayer-ng-bootstrap-icon.mjs.map +1 -1
  756. package/fesm2020/mintplayer-ng-bootstrap-input-group.mjs +21 -21
  757. package/fesm2020/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
  758. package/fesm2020/mintplayer-ng-bootstrap-lazy-loading.mjs +48 -48
  759. package/fesm2020/mintplayer-ng-bootstrap-lazy-loading.mjs.map +1 -1
  760. package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs +47 -47
  761. package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  762. package/fesm2020/mintplayer-ng-bootstrap-markdown.mjs +128 -128
  763. package/fesm2020/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
  764. package/fesm2020/mintplayer-ng-bootstrap-modal.mjs +223 -223
  765. package/fesm2020/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  766. package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs +115 -115
  767. package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  768. package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs +680 -675
  769. package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  770. package/fesm2020/mintplayer-ng-bootstrap-navigation-lock.mjs +128 -128
  771. package/fesm2020/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
  772. package/fesm2020/mintplayer-ng-bootstrap-no-noscript.mjs +36 -36
  773. package/fesm2020/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
  774. package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs +413 -413
  775. package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
  776. package/fesm2020/mintplayer-ng-bootstrap-ordinal-number.mjs +43 -43
  777. package/fesm2020/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
  778. package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs +212 -212
  779. package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  780. package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs +74 -74
  781. package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
  782. package/fesm2020/mintplayer-ng-bootstrap-popover.mjs +226 -226
  783. package/fesm2020/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
  784. package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs +165 -165
  785. package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
  786. package/fesm2020/mintplayer-ng-bootstrap-range.mjs +89 -89
  787. package/fesm2020/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  788. package/fesm2020/mintplayer-ng-bootstrap-rating.mjs +86 -86
  789. package/fesm2020/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  790. package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs +777 -777
  791. package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  792. package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs +142 -142
  793. package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  794. package/fesm2020/mintplayer-ng-bootstrap-select.mjs +265 -265
  795. package/fesm2020/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  796. package/fesm2020/mintplayer-ng-bootstrap-select2.mjs +126 -126
  797. package/fesm2020/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  798. package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs +118 -118
  799. package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -1
  800. package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs +50 -50
  801. package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
  802. package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs +70 -70
  803. package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  804. package/fesm2020/mintplayer-ng-bootstrap-table.mjs +55 -55
  805. package/fesm2020/mintplayer-ng-bootstrap-table.mjs.map +1 -1
  806. package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs +149 -149
  807. package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  808. package/fesm2020/mintplayer-ng-bootstrap-toast.mjs +203 -203
  809. package/fesm2020/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  810. package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs +294 -294
  811. package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  812. package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs +157 -157
  813. package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
  814. package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs +108 -108
  815. package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  816. package/fesm2020/mintplayer-ng-bootstrap-user-agent.mjs +72 -72
  817. package/fesm2020/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
  818. package/fesm2020/mintplayer-ng-bootstrap.mjs +120 -120
  819. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  820. package/file-upload/index.d.ts +1 -1
  821. package/file-upload/src/component/file-upload.component.d.ts +21 -21
  822. package/file-upload/src/directive/file-upload-template.directive.d.ts +8 -8
  823. package/file-upload/src/file-upload.d.ts +4 -4
  824. package/file-upload/src/file-upload.module.d.ts +14 -14
  825. package/file-upload/src/index.d.ts +5 -5
  826. package/file-upload/src/pipes/format-bytes/format-bytes.pipe.d.ts +7 -7
  827. package/file-upload/src/pipes/index.d.ts +1 -1
  828. package/floating-labels/index.d.ts +1 -1
  829. package/floating-labels/src/floating-labels/floating-label/floating-label.component.d.ts +7 -7
  830. package/floating-labels/src/floating-labels/floating-labels.module.d.ts +8 -8
  831. package/floating-labels/src/index.d.ts +2 -2
  832. package/for/index.d.ts +1 -1
  833. package/for/src/for.directive.d.ts +8 -8
  834. package/for/src/for.module.d.ts +8 -8
  835. package/for/src/index.d.ts +2 -2
  836. package/form/index.d.ts +1 -1
  837. package/form/src/form/form.component.d.ts +8 -8
  838. package/form/src/form-control/form-control.directive.d.ts +6 -6
  839. package/form/src/form-group/form-group.directive.d.ts +6 -6
  840. package/form/src/form.module.d.ts +10 -10
  841. package/form/src/index.d.ts +4 -4
  842. package/grid/index.d.ts +1 -1
  843. package/grid/src/component/grid.component.d.ts +12 -12
  844. package/grid/src/directives/col-form-label/col-form-label.directive.d.ts +6 -6
  845. package/grid/src/directives/column/column.directive.d.ts +13 -13
  846. package/grid/src/directives/index.d.ts +3 -3
  847. package/grid/src/directives/row/row.directive.d.ts +6 -6
  848. package/grid/src/grid.module.d.ts +11 -11
  849. package/grid/src/index.d.ts +4 -4
  850. package/grid/src/interfaces/column-definition.d.ts +9 -9
  851. package/grid/src/interfaces/index.d.ts +1 -1
  852. package/has-overlay/index.d.ts +1 -1
  853. package/has-overlay/src/has-overlay/has-overlay.component.d.ts +5 -5
  854. package/has-overlay/src/has-overlay/has-overlay.module.d.ts +8 -8
  855. package/has-overlay/src/index.d.ts +2 -2
  856. package/icon/index.d.ts +2 -2
  857. package/icon/src/icon.component.d.ts +12 -12
  858. package/icon/src/icon.module.d.ts +8 -8
  859. package/index.d.ts +4 -4
  860. package/input-group/index.d.ts +1 -1
  861. package/input-group/src/index.d.ts +2 -2
  862. package/input-group/src/input-group/input-group.component.d.ts +5 -5
  863. package/input-group/src/input-group.module.d.ts +8 -8
  864. package/lazy-loading/index.d.ts +1 -1
  865. package/lazy-loading/src/index.d.ts +2 -2
  866. package/lazy-loading/src/lazy-load/lazy-load.directive.d.ts +13 -13
  867. package/lazy-loading/src/lazy-loading.module.d.ts +8 -8
  868. package/lib/enums/color.enum.d.ts +13 -13
  869. package/lib/enums/index.d.ts +1 -1
  870. package/lib/pipes/font-color/font-color.module.d.ts +8 -8
  871. package/lib/pipes/font-color/font-color.pipe.d.ts +7 -7
  872. package/lib/pipes/font-color/index.d.ts +2 -2
  873. package/lib/pipes/in-list/in-list.module.d.ts +8 -8
  874. package/lib/pipes/in-list/in-list.pipe.d.ts +7 -7
  875. package/lib/pipes/in-list/index.d.ts +2 -2
  876. package/lib/pipes/index.d.ts +3 -3
  877. package/lib/pipes/uc-first/index.d.ts +2 -2
  878. package/lib/pipes/uc-first/uc-first.module.d.ts +8 -8
  879. package/lib/pipes/uc-first/uc-first.pipe.d.ts +7 -7
  880. package/lib/providers/development.provider.d.ts +7 -7
  881. package/lib/providers/index.d.ts +1 -1
  882. package/lib/types/breakpoint.d.ts +1 -1
  883. package/lib/types/index.d.ts +4 -4
  884. package/lib/types/position.d.ts +1 -1
  885. package/lib/types/size.d.ts +1 -1
  886. package/lib/types/view-state.type.d.ts +1 -1
  887. package/list-group/index.d.ts +1 -1
  888. package/list-group/src/index.d.ts +3 -3
  889. package/list-group/src/list-group/list-group.component.d.ts +10 -10
  890. package/list-group/src/list-group-item/list-group-item.component.d.ts +8 -8
  891. package/list-group/src/list-group.module.d.ts +9 -9
  892. package/markdown/index.d.ts +5 -5
  893. package/markdown/src/bold/bold.pipe.d.ts +10 -10
  894. package/markdown/src/italic/italic.pipe.d.ts +10 -10
  895. package/markdown/src/markdown.module.d.ts +11 -11
  896. package/markdown/src/strikethrough/strikethrough.pipe.d.ts +10 -10
  897. package/markdown/src/underline/underline.pipe.d.ts +10 -10
  898. package/modal/index.d.ts +1 -1
  899. package/modal/src/components/index.d.ts +2 -2
  900. package/modal/src/components/modal/modal.component.d.ts +9 -9
  901. package/modal/src/components/modal-host/modal-host.component.d.ts +27 -27
  902. package/modal/src/directives/index.d.ts +5 -5
  903. package/modal/src/directives/modal/modal.directive.d.ts +8 -8
  904. package/modal/src/directives/modal-body/modal-body.directive.d.ts +6 -6
  905. package/modal/src/directives/modal-close/modal-close.directive.d.ts +9 -9
  906. package/modal/src/directives/modal-footer/modal-footer.directive.d.ts +6 -6
  907. package/modal/src/directives/modal-header/modal-header.directive.d.ts +6 -6
  908. package/modal/src/index.d.ts +3 -3
  909. package/modal/src/modal.module.d.ts +16 -16
  910. package/modal/src/providers/modal-content.provider.d.ts +2 -2
  911. package/modal/src/providers/portal-factory.provider.d.ts +3 -3
  912. package/multiselect/index.d.ts +1 -1
  913. package/multiselect/src/component/multiselect.component.d.ts +15 -15
  914. package/multiselect/src/directives/button-template/button-template.directive.d.ts +8 -8
  915. package/multiselect/src/directives/footer-template/footer-template.directive.d.ts +8 -8
  916. package/multiselect/src/directives/header-template/header-template.directive.d.ts +8 -8
  917. package/multiselect/src/directives/index.d.ts +3 -3
  918. package/multiselect/src/index.d.ts +3 -3
  919. package/multiselect/src/multiselect.module.d.ts +17 -17
  920. package/navbar/index.d.ts +1 -1
  921. package/navbar/src/dropdown-toggle/dropdown-toggle.directive.d.ts +13 -13
  922. package/navbar/src/expand-button/expand-button.directive.d.ts +8 -8
  923. package/navbar/src/index.d.ts +11 -11
  924. package/navbar/src/nav-link/nav-link.directive.d.ts +10 -10
  925. package/navbar/src/navbar/navbar.component.d.ts +32 -32
  926. package/navbar/src/navbar-brand/navbar-brand.component.d.ts +7 -7
  927. package/navbar/src/navbar-content/navbar-content.directive.d.ts +18 -18
  928. package/navbar/src/navbar-dropdown/navbar-dropdown.component.d.ts +33 -33
  929. package/navbar/src/navbar-item/navbar-item.component.d.ts +19 -19
  930. package/navbar/src/navbar-nav/navbar-nav.component.d.ts +19 -19
  931. package/navbar/src/navbar-toggler/navbar-toggler.component.d.ts +13 -13
  932. package/navbar/src/navbar.module.d.ts +22 -21
  933. package/navigation-lock/index.d.ts +1 -1
  934. package/navigation-lock/src/directive/navigation-lock.directive.d.ts +34 -34
  935. package/navigation-lock/src/guard/navigation-lock.guard.d.ts +8 -8
  936. package/navigation-lock/src/index.d.ts +4 -4
  937. package/navigation-lock/src/interface/has-navigation-lock.d.ts +15 -15
  938. package/navigation-lock/src/navigation-lock.module.d.ts +9 -9
  939. package/no-noscript/index.d.ts +1 -1
  940. package/no-noscript/src/index.d.ts +2 -2
  941. package/no-noscript/src/no-noscript/no-noscript.directive.d.ts +8 -8
  942. package/no-noscript/src/no-noscript.module.d.ts +8 -8
  943. package/offcanvas/index.d.ts +1 -1
  944. package/offcanvas/src/components/index.d.ts +4 -4
  945. package/offcanvas/src/components/offcanvas/offcanvas.component.d.ts +33 -33
  946. package/offcanvas/src/components/offcanvas-body/offcanvas-body.component.d.ts +9 -9
  947. package/offcanvas/src/components/offcanvas-header/offcanvas-header.component.d.ts +8 -8
  948. package/offcanvas/src/components/offcanvas-host/offcanvas-host.component.d.ts +36 -36
  949. package/offcanvas/src/directives/index.d.ts +3 -3
  950. package/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.d.ts +9 -9
  951. package/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.d.ts +8 -8
  952. package/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.d.ts +16 -16
  953. package/offcanvas/src/index.d.ts +3 -3
  954. package/offcanvas/src/offcanvas.module.d.ts +16 -16
  955. package/offcanvas/src/providers/offcanvas-content.provider.d.ts +2 -2
  956. package/offcanvas/src/providers/portal-factory.provider.d.ts +3 -3
  957. package/ordinal-number/index.d.ts +1 -1
  958. package/ordinal-number/src/index.d.ts +2 -2
  959. package/ordinal-number/src/ordinal-number/ordinal-number.pipe.d.ts +10 -10
  960. package/ordinal-number/src/ordinal-number.module.d.ts +8 -8
  961. package/package.json +12 -3
  962. package/pagination/index.d.ts +1 -1
  963. package/pagination/src/component/index.d.ts +1 -1
  964. package/pagination/src/component/pagination/pagination.component.d.ts +49 -49
  965. package/pagination/src/index.d.ts +4 -4
  966. package/pagination/src/interfaces/index.d.ts +1 -1
  967. package/pagination/src/interfaces/page-with-selection.d.ts +5 -5
  968. package/pagination/src/pagination.module.d.ts +8 -8
  969. package/pagination/src/types/index.d.ts +1 -1
  970. package/pagination/src/types/page-number.type.d.ts +1 -1
  971. package/placeholder/index.d.ts +1 -1
  972. package/placeholder/src/index.d.ts +3 -3
  973. package/placeholder/src/placeholder/placeholder.component.d.ts +11 -11
  974. package/placeholder/src/placeholder-field/placeholder-field.directive.d.ts +16 -16
  975. package/placeholder/src/placeholder.module.d.ts +9 -9
  976. package/popover/index.d.ts +1 -1
  977. package/popover/src/component/popover.component.d.ts +19 -19
  978. package/popover/src/directives/index.d.ts +3 -3
  979. package/popover/src/directives/popover/popover.directive.d.ts +28 -28
  980. package/popover/src/directives/popover-body/popover-body.directive.d.ts +6 -6
  981. package/popover/src/directives/popover-header/popover-header.directive.d.ts +6 -6
  982. package/popover/src/index.d.ts +3 -3
  983. package/popover/src/popover.module.d.ts +13 -13
  984. package/popover/src/providers/popover-content.provider.d.ts +2 -2
  985. package/popover/src/providers/portal-factory.provider.d.ts +3 -3
  986. package/progress-bar/index.d.ts +1 -1
  987. package/progress-bar/src/index.d.ts +3 -3
  988. package/progress-bar/src/progress/progress.component.d.ts +8 -8
  989. package/progress-bar/src/progress-bar/progress-bar.component.d.ts +31 -31
  990. package/progress-bar/src/progress-bar.module.d.ts +9 -9
  991. package/range/index.d.ts +1 -1
  992. package/range/src/component/range.component.d.ts +11 -11
  993. package/range/src/index.d.ts +3 -3
  994. package/range/src/range.module.d.ts +9 -9
  995. package/range/src/value-accessor/range-value-accessor.d.ts +20 -20
  996. package/rating/index.d.ts +1 -1
  997. package/rating/src/component/rating.component.d.ts +22 -22
  998. package/rating/src/index.d.ts +2 -2
  999. package/rating/src/rating.module.d.ts +8 -8
  1000. package/scheduler/index.d.ts +1 -1
  1001. package/scheduler/src/components/index.d.ts +2 -2
  1002. package/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.d.ts +26 -26
  1003. package/scheduler/src/components/scheduler/scheduler.component.d.ts +86 -86
  1004. package/scheduler/src/constants/available-scales.d.ts +2 -2
  1005. package/scheduler/src/constants/index.d.ts +1 -1
  1006. package/scheduler/src/enums/drag-operation.d.ts +6 -6
  1007. package/scheduler/src/enums/index.d.ts +1 -1
  1008. package/scheduler/src/enums/scheduler-mode.d.ts +4 -4
  1009. package/scheduler/src/index.d.ts +5 -5
  1010. package/scheduler/src/interfaces/drag-operation.d.ts +7 -7
  1011. package/scheduler/src/interfaces/index.d.ts +5 -5
  1012. package/scheduler/src/interfaces/preview-event.d.ts +4 -4
  1013. package/scheduler/src/interfaces/resource-group.d.ts +5 -5
  1014. package/scheduler/src/interfaces/resource-or-group.d.ts +6 -6
  1015. package/scheduler/src/interfaces/resource.d.ts +5 -5
  1016. package/scheduler/src/interfaces/scheduler-event-part.d.ts +6 -6
  1017. package/scheduler/src/interfaces/scheduler-event-with-parts.d.ts +6 -6
  1018. package/scheduler/src/interfaces/scheduler-event.d.ts +6 -6
  1019. package/scheduler/src/interfaces/scheduler-schale.d.ts +5 -5
  1020. package/scheduler/src/interfaces/scheduler-stamp-with-slots.d.ts +6 -6
  1021. package/scheduler/src/interfaces/time-slot.d.ts +4 -4
  1022. package/scheduler/src/interfaces/timeline-options.d.ts +3 -3
  1023. package/scheduler/src/interfaces/timeline-track.d.ts +5 -5
  1024. package/scheduler/src/interfaces/week-options.d.ts +3 -3
  1025. package/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.d.ts +9 -9
  1026. package/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.d.ts +9 -9
  1027. package/scheduler/src/pipes/date-offset/date-offset.pipe.d.ts +8 -8
  1028. package/scheduler/src/pipes/day-of-week/day-of-week.pipe.d.ts +9 -9
  1029. package/scheduler/src/scheduler.module.d.ts +14 -14
  1030. package/scheduler/src/services/timeline/timeline.service.d.ts +14 -14
  1031. package/scrollspy/index.d.ts +1 -1
  1032. package/scrollspy/src/component/scrollspy.component.d.ts +25 -25
  1033. package/scrollspy/src/directives/scrollspy.directive.d.ts +8 -8
  1034. package/scrollspy/src/index.d.ts +4 -4
  1035. package/scrollspy/src/scrollspy.module.d.ts +9 -9
  1036. package/scrollspy/src/services/index.d.ts +1 -1
  1037. package/scrollspy/src/services/scroll-offset/scroll-offset.service.d.ts +9 -9
  1038. package/select/index.d.ts +1 -1
  1039. package/select/src/component/select.component.d.ts +26 -26
  1040. package/select/src/index.d.ts +4 -4
  1041. package/select/src/select.module.d.ts +9 -9
  1042. package/select/src/types/index.d.ts +1 -1
  1043. package/select/src/types/select-size.d.ts +1 -1
  1044. package/select/src/value-accessors/index.d.ts +1 -1
  1045. package/select/src/value-accessors/select-value-accessor.d.ts +44 -44
  1046. package/select2/index.d.ts +1 -1
  1047. package/select2/src/component/select2.component.d.ts +25 -25
  1048. package/select2/src/directive/item-template.directive.d.ts +9 -9
  1049. package/select2/src/index.d.ts +3 -3
  1050. package/select2/src/select2.module.d.ts +14 -14
  1051. package/snackbar/index.d.ts +1 -1
  1052. package/snackbar/src/component/snackbar.component.d.ts +15 -15
  1053. package/snackbar/src/directives/index.d.ts +1 -1
  1054. package/snackbar/src/directives/snackbar-close/snackbar-close.directive.d.ts +11 -11
  1055. package/snackbar/src/index.d.ts +5 -5
  1056. package/snackbar/src/interfaces/index.d.ts +1 -1
  1057. package/snackbar/src/interfaces/snackbar-animation-meta.d.ts +7 -7
  1058. package/snackbar/src/providers/snackbar-content.provider.d.ts +2 -2
  1059. package/snackbar/src/service/snackbar.service.d.ts +13 -13
  1060. package/snackbar/src/snackbar.module.d.ts +11 -11
  1061. package/spinner/index.d.ts +1 -1
  1062. package/spinner/src/index.d.ts +2 -2
  1063. package/spinner/src/spinner.component.d.ts +19 -19
  1064. package/spinner/src/spinner.module.d.ts +8 -8
  1065. package/src/assets/ic-upload-file.svg +7 -7
  1066. package/src/styles/custom.scss +4 -4
  1067. package/src/styles/ngx-highlight-themes/solarized-dark.scss +89 -89
  1068. package/src/styles/utilities/cursor.scss +9 -9
  1069. package/src/styles/utilities/overflow.scss +9 -9
  1070. package/src/styles/utilities/white-space.scss +9 -9
  1071. package/tab-control/index.d.ts +1 -1
  1072. package/tab-control/src/index.d.ts +3 -3
  1073. package/tab-control/src/tab-control/tab-control.component.d.ts +12 -12
  1074. package/tab-control/src/tab-control.module.d.ts +9 -9
  1075. package/tab-control/src/tab-page/tab-page.component.d.ts +11 -11
  1076. package/table/index.d.ts +1 -1
  1077. package/table/src/component/table.component.d.ts +15 -15
  1078. package/table/src/index.d.ts +2 -2
  1079. package/table/src/table.module.d.ts +8 -8
  1080. package/timepicker/index.d.ts +1 -1
  1081. package/timepicker/src/index.d.ts +2 -2
  1082. package/timepicker/src/timepicker.component.d.ts +27 -27
  1083. package/timepicker/src/timepicker.module.d.ts +17 -17
  1084. package/toast/index.d.ts +1 -1
  1085. package/toast/src/components/index.d.ts +4 -4
  1086. package/toast/src/components/toast/toast.component.d.ts +6 -6
  1087. package/toast/src/components/toast-body/toast-body.component.d.ts +6 -6
  1088. package/toast/src/components/toast-container/toast-container.component.d.ts +9 -9
  1089. package/toast/src/components/toast-header/toast-header.component.d.ts +6 -6
  1090. package/toast/src/directives/index.d.ts +1 -1
  1091. package/toast/src/directives/toast-close/toast-close.directive.d.ts +12 -12
  1092. package/toast/src/index.d.ts +5 -5
  1093. package/toast/src/pipes/add-properties.pipe.d.ts +7 -7
  1094. package/toast/src/providers/portal-factory.provider.d.ts +3 -3
  1095. package/toast/src/services/index.d.ts +1 -1
  1096. package/toast/src/services/toast/toast.service.d.ts +22 -22
  1097. package/toast/src/toast.module.d.ts +15 -15
  1098. package/toggle-button/index.d.ts +1 -1
  1099. package/toggle-button/src/component/toggle-button.component.d.ts +37 -37
  1100. package/toggle-button/src/directives/index.d.ts +1 -1
  1101. package/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.d.ts +9 -9
  1102. package/toggle-button/src/index.d.ts +5 -5
  1103. package/toggle-button/src/toggle-button.module.d.ts +10 -10
  1104. package/toggle-button/src/types/check-style.d.ts +1 -1
  1105. package/toggle-button/src/types/index.d.ts +1 -1
  1106. package/toggle-button/src/value-accessor/toggle-button-value-accessor.d.ts +20 -20
  1107. package/tooltip/index.d.ts +1 -1
  1108. package/tooltip/src/component/tooltip.component.d.ts +15 -15
  1109. package/tooltip/src/directive/tooltip.directive.d.ts +20 -20
  1110. package/tooltip/src/index.d.ts +2 -2
  1111. package/tooltip/src/providers/tooltip-content.provider.d.ts +2 -2
  1112. package/tooltip/src/tooltip.module.d.ts +11 -11
  1113. package/typeahead/index.d.ts +1 -1
  1114. package/typeahead/src/index.d.ts +2 -2
  1115. package/typeahead/src/typeahead.component.d.ts +26 -26
  1116. package/typeahead/src/typeahead.module.d.ts +14 -14
  1117. package/user-agent/index.d.ts +1 -1
  1118. package/user-agent/src/index.d.ts +3 -3
  1119. package/user-agent/src/user-agent/user-agent.directive.d.ts +14 -14
  1120. package/user-agent/src/user-agent/user-agent.module.d.ts +8 -8
  1121. package/user-agent/src/user-agent.type.d.ts +1 -1
@@ -7,805 +7,805 @@ import { CommonModule } from '@angular/common';
7
7
  import * as i2 from '@mintplayer/ng-bootstrap/icon';
8
8
  import { BsIconModule } from '@mintplayer/ng-bootstrap/icon';
9
9
 
10
- var ESchedulerMode;
11
- (function (ESchedulerMode) {
12
- ESchedulerMode[ESchedulerMode["week"] = 0] = "week";
13
- ESchedulerMode[ESchedulerMode["timeline"] = 1] = "timeline";
10
+ var ESchedulerMode;
11
+ (function (ESchedulerMode) {
12
+ ESchedulerMode[ESchedulerMode["week"] = 0] = "week";
13
+ ESchedulerMode[ESchedulerMode["timeline"] = 1] = "timeline";
14
14
  })(ESchedulerMode || (ESchedulerMode = {}));
15
15
 
16
- var EDragOperation;
17
- (function (EDragOperation) {
18
- EDragOperation[EDragOperation["none"] = 0] = "none";
19
- EDragOperation[EDragOperation["createEvent"] = 1] = "createEvent";
20
- EDragOperation[EDragOperation["resizeEvent"] = 2] = "resizeEvent";
21
- EDragOperation[EDragOperation["moveEvent"] = 3] = "moveEvent";
16
+ var EDragOperation;
17
+ (function (EDragOperation) {
18
+ EDragOperation[EDragOperation["none"] = 0] = "none";
19
+ EDragOperation[EDragOperation["createEvent"] = 1] = "createEvent";
20
+ EDragOperation[EDragOperation["resizeEvent"] = 2] = "resizeEvent";
21
+ EDragOperation[EDragOperation["moveEvent"] = 3] = "moveEvent";
22
22
  })(EDragOperation || (EDragOperation = {}));
23
23
 
24
- class BsTimelineService {
25
- splitInParts(event) {
26
- let startTime = event.start;
27
- const result = [];
28
- const eventOrNull = 'color' in event ? event : null;
29
- while (!this.dateEquals(startTime, event.end)) {
30
- const end = new Date(startTime.getFullYear(), startTime.getMonth(), startTime.getDate() + 1, 0, 0, 0);
31
- result.push({ start: startTime, end: end, event: eventOrNull });
32
- startTime = end;
33
- }
34
- if (startTime != event.end) {
35
- result.push({ start: startTime, end: event.end, event: eventOrNull });
36
- }
37
- return { event: event, parts: result };
38
- }
39
- dateEquals(date1, date2) {
40
- return (date1.getFullYear() === date2.getFullYear() &&
41
- date1.getMonth() === date2.getMonth() &&
42
- date1.getDate() === date2.getDate());
43
- }
44
- getTimeline(events) {
45
- const timestamps = this.getTimestamps(events);
46
- const tracks = [];
47
- timestamps.forEach((timestamp, tIndex) => {
48
- const starting = events.filter((e) => e.start === timestamp);
49
- // const ending = events.filter((e) => e.end === timestamp);
50
- starting.forEach((startedEvent, eIndex) => {
51
- const freeTracks = tracks.filter(t => this.trackIsFreeAt(t, startedEvent));
52
- if (freeTracks.length === 0) {
53
- tracks.push({ index: tracks.length, events: [startedEvent] });
54
- }
55
- else {
56
- freeTracks[0].events.push(startedEvent);
57
- }
58
- });
59
- });
60
- return tracks;
61
- }
62
- getTimestamps(events) {
63
- const allTimestamps = events.map(e => [e.start, e.end])
64
- .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
65
- return allTimestamps
66
- .filter((t, i) => allTimestamps.indexOf(t) === i)
67
- .sort((t1, t2) => t1 - t2);
68
- }
69
- trackIsFreeAt(track, event) {
70
- if (track.events.every((ev) => (ev.end <= event.start) || (event.end <= ev.start))) {
71
- return true;
72
- }
73
- else {
74
- return false;
75
- }
76
- }
77
- }
78
- BsTimelineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsTimelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
79
- BsTimelineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsTimelineService, providedIn: 'root' });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsTimelineService, decorators: [{
81
- type: Injectable,
82
- args: [{
83
- providedIn: 'root'
84
- }]
24
+ class BsTimelineService {
25
+ splitInParts(event) {
26
+ let startTime = event.start;
27
+ const result = [];
28
+ const eventOrNull = 'color' in event ? event : null;
29
+ while (!this.dateEquals(startTime, event.end)) {
30
+ const end = new Date(startTime.getFullYear(), startTime.getMonth(), startTime.getDate() + 1, 0, 0, 0);
31
+ result.push({ start: startTime, end: end, event: eventOrNull });
32
+ startTime = end;
33
+ }
34
+ if (startTime != event.end) {
35
+ result.push({ start: startTime, end: event.end, event: eventOrNull });
36
+ }
37
+ return { event: event, parts: result };
38
+ }
39
+ dateEquals(date1, date2) {
40
+ return (date1.getFullYear() === date2.getFullYear() &&
41
+ date1.getMonth() === date2.getMonth() &&
42
+ date1.getDate() === date2.getDate());
43
+ }
44
+ getTimeline(events) {
45
+ const timestamps = this.getTimestamps(events);
46
+ const tracks = [];
47
+ timestamps.forEach((timestamp, tIndex) => {
48
+ const starting = events.filter((e) => e.start === timestamp);
49
+ // const ending = events.filter((e) => e.end === timestamp);
50
+ starting.forEach((startedEvent, eIndex) => {
51
+ const freeTracks = tracks.filter(t => this.trackIsFreeAt(t, startedEvent));
52
+ if (freeTracks.length === 0) {
53
+ tracks.push({ index: tracks.length, events: [startedEvent] });
54
+ }
55
+ else {
56
+ freeTracks[0].events.push(startedEvent);
57
+ }
58
+ });
59
+ });
60
+ return tracks;
61
+ }
62
+ getTimestamps(events) {
63
+ const allTimestamps = events.map(e => [e.start, e.end])
64
+ .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
65
+ return allTimestamps
66
+ .filter((t, i) => allTimestamps.indexOf(t) === i)
67
+ .sort((t1, t2) => t1 - t2);
68
+ }
69
+ trackIsFreeAt(track, event) {
70
+ if (track.events.every((ev) => (ev.end <= event.start) || (event.end <= ev.start))) {
71
+ return true;
72
+ }
73
+ else {
74
+ return false;
75
+ }
76
+ }
77
+ }
78
+ BsTimelineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsTimelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
79
+ BsTimelineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsTimelineService, providedIn: 'root' });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsTimelineService, decorators: [{
81
+ type: Injectable,
82
+ args: [{
83
+ providedIn: 'root'
84
+ }]
85
85
  }] });
86
86
 
87
- class ResourceGroupPresenterComponent {
88
- constructor() {
89
- this.level = 0;
90
- this.resourceOrGroup$ = new BehaviorSubject(null);
91
- this.timeSlots$ = new BehaviorSubject([]);
92
- this.isExpanded$ = new BehaviorSubject(false);
93
- this.destroyed$ = new Subject();
94
- this.data$ = this.resourceOrGroup$
95
- .pipe(map((resourceOrGroup) => {
96
- if (!resourceOrGroup) {
97
- return null;
98
- }
99
- else if ('children' in resourceOrGroup) {
100
- return {
101
- resource: null,
102
- resourceGroup: resourceOrGroup
103
- };
104
- }
105
- else {
106
- return {
107
- resource: resourceOrGroup,
108
- resourceGroup: null
109
- };
110
- }
111
- }))
112
- .pipe(filter((resourceOrGroup) => !!resourceOrGroup))
113
- .pipe(map((resourceOrGroup) => resourceOrGroup));
114
- this.colSpan$ = this.timeSlots$
115
- .pipe(map(timeSlots => timeSlots
116
- .map(timeslot => timeslot.slots.length)
117
- .reduce((sum, current) => sum + current, 0)));
118
- }
119
- //#region resourceOrGroup
120
- get resourceOrGroup() {
121
- return this.resourceOrGroup$.value;
122
- }
123
- set resourceGroup(value) {
124
- this.resourceOrGroup$.next(value);
125
- }
126
- //#endregion
127
- //#region timeSlots
128
- get timeSlots() {
129
- return this.timeSlots$.value;
130
- }
131
- set timeSlots(value) {
132
- this.timeSlots$.next(value);
133
- }
134
- //#endregion
135
- //#region isExpanded
136
- get isExpanded() {
137
- return this.isExpanded$.value;
138
- }
139
- set isExpanded(value) {
140
- this.isExpanded$.next(value);
141
- }
142
- //#endregion
143
- toggleExpanded() {
144
- this.isExpanded$.pipe(take(1)).subscribe((isExpanded) => {
145
- this.isExpanded$.next(!isExpanded);
146
- });
147
- }
148
- ngOnDestroy() {
149
- this.destroyed$.next(true);
150
- }
151
- }
152
- ResourceGroupPresenterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ResourceGroupPresenterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
- ResourceGroupPresenterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: { level: "level", resourceGroup: "resourceGroup", timeSlots: "timeSlots", isExpanded: "isExpanded" }, ngImport: i0, template: "<ng-container *ngIf=\"(data$ | async) as data\">\n\n <!-- Data is a resource group -->\n <ng-container *ngIf=\"data.resourceGroup\">\n <!-- Header -->\n <tr class=\"p-0 cursor-pointer\" *ngIf=\"(timeSlots$ | async) as timeSlots\" [title]=\"data.resourceGroup.description\">\n <ng-container *ngIf=\"(colSpan$ | async) as colspan\">\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\n <span class=\"p-2 align-middle position-sticky\">\n <bs-icon [icon]=\"'chevron-down'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"isExpanded$ | async\"></bs-icon>\n <bs-icon [icon]=\"'chevron-right'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"(isExpanded$ | async) === false\"></bs-icon>\n {{ data.resourceGroup.description }}\n </span>\n </td>\n </ng-container>\n </tr>\n\n <!-- Subgroups or resources -->\n <ng-container *ngIf=\"isExpanded$ | async\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <ng-container *ngFor=\"let child of data.resourceGroup.children\">\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <!-- Data is a resource -->\n <tr *ngIf=\"data.resource\" class=\"p-0 bordered\" [title]=\"data.resource.description\">\n <td class=\"p-0 bg-white\">\n <div class=\"p-2\">{{ data.resource.description }}</div>\n </td>\n <ng-container *ngFor=\"let slots of (timeSlots$ | async)\">\n <td class=\"bg-white border-1\" *ngFor=\"let slot of slots.slots\">\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\n </td>\n </ng-container>\n </tr>\n</ng-container>", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ResourceGroupPresenterComponent, decorators: [{
155
- type: Component,
156
- args: [{ selector: 'bs-resource-group-presenter', template: "<ng-container *ngIf=\"(data$ | async) as data\">\n\n <!-- Data is a resource group -->\n <ng-container *ngIf=\"data.resourceGroup\">\n <!-- Header -->\n <tr class=\"p-0 cursor-pointer\" *ngIf=\"(timeSlots$ | async) as timeSlots\" [title]=\"data.resourceGroup.description\">\n <ng-container *ngIf=\"(colSpan$ | async) as colspan\">\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\n <span class=\"p-2 align-middle position-sticky\">\n <bs-icon [icon]=\"'chevron-down'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"isExpanded$ | async\"></bs-icon>\n <bs-icon [icon]=\"'chevron-right'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"(isExpanded$ | async) === false\"></bs-icon>\n {{ data.resourceGroup.description }}\n </span>\n </td>\n </ng-container>\n </tr>\n\n <!-- Subgroups or resources -->\n <ng-container *ngIf=\"isExpanded$ | async\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <ng-container *ngFor=\"let child of data.resourceGroup.children\">\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <!-- Data is a resource -->\n <tr *ngIf=\"data.resource\" class=\"p-0 bordered\" [title]=\"data.resource.description\">\n <td class=\"p-0 bg-white\">\n <div class=\"p-2\">{{ data.resource.description }}</div>\n </td>\n <ng-container *ngFor=\"let slots of (timeSlots$ | async)\">\n <td class=\"bg-white border-1\" *ngFor=\"let slot of slots.slots\">\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\n </td>\n </ng-container>\n </tr>\n</ng-container>", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"] }]
157
- }], ctorParameters: function () { return []; }, propDecorators: { level: [{
158
- type: Input
159
- }], resourceGroup: [{
160
- type: Input
161
- }], timeSlots: [{
162
- type: Input
163
- }], isExpanded: [{
164
- type: Input
87
+ class ResourceGroupPresenterComponent {
88
+ constructor() {
89
+ this.level = 0;
90
+ this.resourceOrGroup$ = new BehaviorSubject(null);
91
+ this.timeSlots$ = new BehaviorSubject([]);
92
+ this.isExpanded$ = new BehaviorSubject(false);
93
+ this.destroyed$ = new Subject();
94
+ this.data$ = this.resourceOrGroup$
95
+ .pipe(map((resourceOrGroup) => {
96
+ if (!resourceOrGroup) {
97
+ return null;
98
+ }
99
+ else if ('children' in resourceOrGroup) {
100
+ return {
101
+ resource: null,
102
+ resourceGroup: resourceOrGroup
103
+ };
104
+ }
105
+ else {
106
+ return {
107
+ resource: resourceOrGroup,
108
+ resourceGroup: null
109
+ };
110
+ }
111
+ }))
112
+ .pipe(filter((resourceOrGroup) => !!resourceOrGroup))
113
+ .pipe(map((resourceOrGroup) => resourceOrGroup));
114
+ this.colSpan$ = this.timeSlots$
115
+ .pipe(map(timeSlots => timeSlots
116
+ .map(timeslot => timeslot.slots.length)
117
+ .reduce((sum, current) => sum + current, 0)));
118
+ }
119
+ //#region resourceOrGroup
120
+ get resourceOrGroup() {
121
+ return this.resourceOrGroup$.value;
122
+ }
123
+ set resourceGroup(value) {
124
+ this.resourceOrGroup$.next(value);
125
+ }
126
+ //#endregion
127
+ //#region timeSlots
128
+ get timeSlots() {
129
+ return this.timeSlots$.value;
130
+ }
131
+ set timeSlots(value) {
132
+ this.timeSlots$.next(value);
133
+ }
134
+ //#endregion
135
+ //#region isExpanded
136
+ get isExpanded() {
137
+ return this.isExpanded$.value;
138
+ }
139
+ set isExpanded(value) {
140
+ this.isExpanded$.next(value);
141
+ }
142
+ //#endregion
143
+ toggleExpanded() {
144
+ this.isExpanded$.pipe(take(1)).subscribe((isExpanded) => {
145
+ this.isExpanded$.next(!isExpanded);
146
+ });
147
+ }
148
+ ngOnDestroy() {
149
+ this.destroyed$.next(true);
150
+ }
151
+ }
152
+ ResourceGroupPresenterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ResourceGroupPresenterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
+ ResourceGroupPresenterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: { level: "level", resourceGroup: "resourceGroup", timeSlots: "timeSlots", isExpanded: "isExpanded" }, ngImport: i0, template: "<ng-container *ngIf=\"(data$ | async) as data\">\r\n\r\n <!-- Data is a resource group -->\r\n <ng-container *ngIf=\"data.resourceGroup\">\r\n <!-- Header -->\r\n <tr class=\"p-0 cursor-pointer\" *ngIf=\"(timeSlots$ | async) as timeSlots\" [title]=\"data.resourceGroup.description\">\r\n <ng-container *ngIf=\"(colSpan$ | async) as colspan\">\r\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\r\n <span class=\"p-2 align-middle position-sticky\">\r\n <bs-icon [icon]=\"'chevron-down'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"isExpanded$ | async\"></bs-icon>\r\n <bs-icon [icon]=\"'chevron-right'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"(isExpanded$ | async) === false\"></bs-icon>\r\n {{ data.resourceGroup.description }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <!-- Subgroups or resources -->\r\n <ng-container *ngIf=\"isExpanded$ | async\">\r\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\r\n <ng-container *ngFor=\"let child of data.resourceGroup.children\">\r\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Data is a resource -->\r\n <tr *ngIf=\"data.resource\" class=\"p-0 bordered\" [title]=\"data.resource.description\">\r\n <td class=\"p-0 bg-white\">\r\n <div class=\"p-2\">{{ data.resource.description }}</div>\r\n </td>\r\n <ng-container *ngFor=\"let slots of (timeSlots$ | async)\">\r\n <td class=\"bg-white border-1\" *ngFor=\"let slot of slots.slots\">\r\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\r\n </td>\r\n </ng-container>\r\n </tr>\r\n</ng-container>", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ResourceGroupPresenterComponent, decorators: [{
155
+ type: Component,
156
+ args: [{ selector: 'bs-resource-group-presenter', template: "<ng-container *ngIf=\"(data$ | async) as data\">\r\n\r\n <!-- Data is a resource group -->\r\n <ng-container *ngIf=\"data.resourceGroup\">\r\n <!-- Header -->\r\n <tr class=\"p-0 cursor-pointer\" *ngIf=\"(timeSlots$ | async) as timeSlots\" [title]=\"data.resourceGroup.description\">\r\n <ng-container *ngIf=\"(colSpan$ | async) as colspan\">\r\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\r\n <span class=\"p-2 align-middle position-sticky\">\r\n <bs-icon [icon]=\"'chevron-down'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"isExpanded$ | async\"></bs-icon>\r\n <bs-icon [icon]=\"'chevron-right'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"(isExpanded$ | async) === false\"></bs-icon>\r\n {{ data.resourceGroup.description }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <!-- Subgroups or resources -->\r\n <ng-container *ngIf=\"isExpanded$ | async\">\r\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\r\n <ng-container *ngFor=\"let child of data.resourceGroup.children\">\r\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Data is a resource -->\r\n <tr *ngIf=\"data.resource\" class=\"p-0 bordered\" [title]=\"data.resource.description\">\r\n <td class=\"p-0 bg-white\">\r\n <div class=\"p-2\">{{ data.resource.description }}</div>\r\n </td>\r\n <ng-container *ngFor=\"let slots of (timeSlots$ | async)\">\r\n <td class=\"bg-white border-1\" *ngFor=\"let slot of slots.slots\">\r\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\r\n </td>\r\n </ng-container>\r\n </tr>\r\n</ng-container>", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"] }]
157
+ }], ctorParameters: function () { return []; }, propDecorators: { level: [{
158
+ type: Input
159
+ }], resourceGroup: [{
160
+ type: Input
161
+ }], timeSlots: [{
162
+ type: Input
163
+ }], isExpanded: [{
164
+ type: Input
165
165
  }] } });
166
166
 
167
- class BsSecondsTimespanPipe {
168
- transform(value) {
169
- return (value.end.getTime() - value.start.getTime()) / 1000;
170
- }
171
- }
172
- BsSecondsTimespanPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSecondsTimespanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
173
- BsSecondsTimespanPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: BsSecondsTimespanPipe, name: "bsSecondsTimespan" });
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSecondsTimespanPipe, decorators: [{
175
- type: Pipe,
176
- args: [{
177
- name: 'bsSecondsTimespan'
178
- }]
167
+ class BsSecondsTimespanPipe {
168
+ transform(value) {
169
+ return (value.end.getTime() - value.start.getTime()) / 1000;
170
+ }
171
+ }
172
+ BsSecondsTimespanPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSecondsTimespanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
173
+ BsSecondsTimespanPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: BsSecondsTimespanPipe, name: "bsSecondsTimespan" });
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSecondsTimespanPipe, decorators: [{
175
+ type: Pipe,
176
+ args: [{
177
+ name: 'bsSecondsTimespan'
178
+ }]
179
179
  }] });
180
180
 
181
- class BsSecondsTodayOffsetPipe {
182
- transform(value) {
183
- const today = new Date(value.start);
184
- today.setHours(0);
185
- today.setMinutes(0);
186
- today.setSeconds(0);
187
- return (value.start.getTime() - today.getTime()) / 1000;
188
- }
189
- }
190
- BsSecondsTodayOffsetPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSecondsTodayOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
191
- BsSecondsTodayOffsetPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" });
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSecondsTodayOffsetPipe, decorators: [{
193
- type: Pipe,
194
- args: [{
195
- name: 'bsSecondsTodayOffset'
196
- }]
181
+ class BsSecondsTodayOffsetPipe {
182
+ transform(value) {
183
+ const today = new Date(value.start);
184
+ today.setHours(0);
185
+ today.setMinutes(0);
186
+ today.setSeconds(0);
187
+ return (value.start.getTime() - today.getTime()) / 1000;
188
+ }
189
+ }
190
+ BsSecondsTodayOffsetPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSecondsTodayOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
191
+ BsSecondsTodayOffsetPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" });
192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSecondsTodayOffsetPipe, decorators: [{
193
+ type: Pipe,
194
+ args: [{
195
+ name: 'bsSecondsTodayOffset'
196
+ }]
197
197
  }] });
198
198
 
199
- class DayOfWeekPipe {
200
- transform(value) {
201
- const dayOfWeek = value.start.getDay();
202
- if (dayOfWeek === 0) {
203
- return 7;
204
- }
205
- else {
206
- return dayOfWeek;
207
- }
208
- }
209
- }
210
- DayOfWeekPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DayOfWeekPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
211
- DayOfWeekPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: DayOfWeekPipe, name: "dayOfWeek" });
212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DayOfWeekPipe, decorators: [{
213
- type: Pipe,
214
- args: [{
215
- name: 'dayOfWeek'
216
- }]
199
+ class DayOfWeekPipe {
200
+ transform(value) {
201
+ const dayOfWeek = value.start.getDay();
202
+ if (dayOfWeek === 0) {
203
+ return 7;
204
+ }
205
+ else {
206
+ return dayOfWeek;
207
+ }
208
+ }
209
+ }
210
+ DayOfWeekPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: DayOfWeekPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
211
+ DayOfWeekPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: DayOfWeekPipe, name: "dayOfWeek" });
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: DayOfWeekPipe, decorators: [{
213
+ type: Pipe,
214
+ args: [{
215
+ name: 'dayOfWeek'
216
+ }]
217
217
  }] });
218
218
 
219
- class BsSchedulerComponent {
220
- constructor(calendarMonthService, timelineService) {
221
- this.calendarMonthService = calendarMonthService;
222
- this.timelineService = timelineService;
223
- this.resources$ = new BehaviorSubject([]);
224
- this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
225
- this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
226
- this.previewEvent$ = new BehaviorSubject(null);
227
- this.timeSlotDuration$ = new BehaviorSubject(1800);
228
- this.timeSlots$ = new BehaviorSubject([]);
229
- this.mouseState$ = new BehaviorSubject(false);
230
- this.hoveredTimeSlot$ = new BehaviorSubject(null);
231
- this.hoveredEvent$ = new BehaviorSubject(null);
232
- this.destroyed$ = new Subject();
233
- //#region Mode
234
- this.modes = ESchedulerMode;
235
- this.mode$ = new BehaviorSubject(ESchedulerMode.week);
236
- this.modeChange = new EventEmitter();
237
- //#endregion
238
- // //#region Scale
239
- // scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);
240
- // @Output() public scaleChange = new EventEmitter<SchedulerScale>();
241
- // public get scale() {
242
- // return this.scale$.value;
243
- // }
244
- // @Input() public set scale(value: SchedulerScale) {
245
- // this.scale$.next(value);
246
- // }
247
- // //#endregion
248
- //#region WeekOptions
249
- this.weekOptionsChange = new EventEmitter();
250
- //#endregion
251
- //#region TimelineOptions
252
- this.timelineOptionsChange = new EventEmitter();
253
- //#endregion
254
- //#region maxInnerHeight
255
- this.maxInnerHeight = null;
256
- this.operation = null;
257
- this.dragStartTimeslot = null;
258
- const monday = this.calendarMonthService.getMondayBefore(new Date());
259
- this.currentWeekOrMonth$ = new BehaviorSubject(monday);
260
- this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])
261
- .pipe(map(([currentDay, mode]) => {
262
- currentDay.setHours(0);
263
- currentDay.setMinutes(0);
264
- currentDay.setSeconds(0);
265
- currentDay.setMilliseconds(0);
266
- switch (mode) {
267
- case ESchedulerMode.week: {
268
- return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));
269
- }
270
- case ESchedulerMode.timeline: {
271
- const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);
272
- const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();
273
- return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));
274
- }
275
- }
276
- }));
277
- this.daysOfWeekWithTimestamps$ = this.shownDays$
278
- .pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));
279
- this.events$ = this.resources$
280
- .pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))
281
- .pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
282
- .pipe(map(resources => resources.map(res => res.events)))
283
- .pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));
284
- // groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])
285
- this.eventParts$ = this.events$.pipe(map((events) => events.map((ev) => this.timelineService.splitInParts(ev))));
286
- this.eventPartsForThisWeek$ = combineLatest([
287
- this.daysOfWeekWithTimestamps$,
288
- this.eventParts$
289
- .pipe(map(eventParts => eventParts.map(evp => evp.parts)))
290
- .pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
291
- ])
292
- .pipe(map(([startAndEnd, eventParts]) => {
293
- return eventParts.filter(eventPart => {
294
- return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
295
- });
296
- }));
297
- this.previewEventParts$ = this.previewEvent$.pipe(map((event) => {
298
- if (event) {
299
- return this.timelineService.splitInParts(event);
300
- }
301
- else {
302
- return null;
303
- }
304
- }));
305
- this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])
306
- .pipe(map(([startAndEnd, previewEventParts]) => {
307
- if (previewEventParts) {
308
- return previewEventParts.parts.filter(eventPart => {
309
- return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
310
- });
311
- }
312
- else {
313
- return [];
314
- }
315
- }));
316
- this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$
317
- .pipe(map(eventParts => {
318
- // We'll only use the events for this week
319
- const events = eventParts.map(ep => ep.event)
320
- .filter((e, i, list) => list.indexOf(e) === i)
321
- .filter((e) => !!e)
322
- .map((e) => e);
323
- const timeline = this.timelineService.getTimeline(events);
324
- const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))
325
- .reduce((flat, toFlatten) => flat.concat(toFlatten), [])
326
- .map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))
327
- .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
328
- return {
329
- total: timeline.length,
330
- parts: result
331
- };
332
- }));
333
- combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])
334
- .pipe(filter(([mode, shownDays, duration]) => mode !== null))
335
- .pipe(map(([mode, shownDays, duration]) => {
336
- switch (mode) {
337
- case ESchedulerMode.week: {
338
- const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);
339
- return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {
340
- const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);
341
- return {
342
- slots: shownDays.map((day) => {
343
- const start = new Date(day);
344
- start.setHours(timeslotForMonday.start.getHours());
345
- start.setMinutes(timeslotForMonday.start.getMinutes());
346
- start.setSeconds(timeslotForMonday.start.getSeconds());
347
- start.setMilliseconds(timeslotForMonday.start.getMilliseconds());
348
- const end = new Date(day);
349
- end.setHours(timeslotForMonday.end.getHours());
350
- end.setMinutes(timeslotForMonday.end.getMinutes());
351
- end.setSeconds(timeslotForMonday.end.getSeconds());
352
- end.setMilliseconds(timeslotForMonday.end.getMilliseconds());
353
- end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());
354
- return { start, end };
355
- }),
356
- stamp: timeslotForMonday.start
357
- };
358
- });
359
- }
360
- case ESchedulerMode.timeline: {
361
- const totalTimeslots = (24 * 60 * 60) / duration;
362
- return shownDays.map((day) => {
363
- return {
364
- slots: Array.from(Array(totalTimeslots).keys())
365
- .map((index) => {
366
- return this.createTimeslot(day, index, duration);
367
- }),
368
- stamp: day
369
- };
370
- });
371
- }
372
- default: {
373
- throw 'Unknown value for Mode: ' + mode;
374
- }
375
- }
376
- }))
377
- .subscribe((timeslots) => {
378
- // For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
379
- this.timeSlots$.next(timeslots);
380
- });
381
- this.weekOptions$
382
- .pipe(takeUntil(this.destroyed$))
383
- .subscribe((weekOptions) => {
384
- this.weekOptionsChange.emit(weekOptions);
385
- });
386
- this.timelineOptions$
387
- .pipe(takeUntil(this.destroyed$))
388
- .subscribe((timelineOptions) => {
389
- this.timelineOptionsChange.emit(timelineOptions);
390
- });
391
- // combineLatest([this.mode$, this.scale$])
392
- // .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))
393
- }
394
- createTimeslot(date, index, duration) {
395
- const timeSlotStart = new Date(date);
396
- timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);
397
- const timeSlotEnd = new Date(timeSlotStart);
398
- timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);
399
- return { start: timeSlotStart, end: timeSlotEnd };
400
- }
401
- getResourcesForGroup(resourceOrGroup) {
402
- if ('children' in resourceOrGroup) {
403
- return resourceOrGroup.children
404
- .map((child) => this.getResourcesForGroup(child))
405
- .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
406
- }
407
- else {
408
- return [resourceOrGroup];
409
- }
410
- }
411
- get mode() {
412
- return this.mode$.value;
413
- }
414
- set mode(value) {
415
- this.mode$.next(value);
416
- }
417
- get weekOptions() {
418
- return this.weekOptions$.value;
419
- }
420
- set weekOptions(value) {
421
- this.weekOptions$.next(value);
422
- }
423
- get timelineOptions() {
424
- return this.timelineOptions$.value;
425
- }
426
- set timelineOptions(value) {
427
- this.timelineOptions$.next(value);
428
- }
429
- //#endregion
430
- //#region Resources
431
- get resources() {
432
- return this.resources$.value;
433
- }
434
- set resources(value) {
435
- this.resources$.next(value);
436
- }
437
- //#endregion
438
- addDays(date, days) {
439
- const result = new Date(date);
440
- result.setDate(result.getDate() + days);
441
- return result;
442
- }
443
- onPreviousWeekOrMonth() {
444
- this.onChangeWeekOrMonth(false);
445
- }
446
- onNextWeekOrMonth() {
447
- this.onChangeWeekOrMonth(true);
448
- }
449
- onChangeWeekOrMonth(next) {
450
- combineLatest([this.currentWeekOrMonth$, this.mode$])
451
- .pipe(map(([currentWeekOrMonth, mode]) => {
452
- switch (mode) {
453
- case ESchedulerMode.week: {
454
- return this.addDays(currentWeekOrMonth, (next ? 7 : -7));
455
- }
456
- case ESchedulerMode.timeline: {
457
- return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
458
- }
459
- }
460
- }), take(1))
461
- .subscribe((w) => this.currentWeekOrMonth$.next(w));
462
- }
463
- onHoverEvent(ev) {
464
- this.hoveredEvent$.next(ev);
465
- }
466
- onLeaveEvent(ev) {
467
- this.hoveredEvent$.next(null);
468
- }
469
- onCreateEvent(ev, slot) {
470
- ev.preventDefault();
471
- this.mouseState$.next(true);
472
- this.dragStartTimeslot = slot;
473
- this.operation = {
474
- operation: EDragOperation.createEvent,
475
- event: {
476
- start: slot.start,
477
- end: slot.end,
478
- color: '#F00',
479
- description: 'Test event',
480
- },
481
- meta: null,
482
- };
483
- this.previewEvent$.next({ start: slot.start, end: slot.end });
484
- }
485
- randomColor() {
486
- const brightness = 128;
487
- return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);
488
- }
489
- randomChannel(brightness) {
490
- const r = 255 - brightness;
491
- const n = 0 | ((Math.random() * r) + brightness);
492
- const s = n.toString(16);
493
- return (s.length == 1) ? '0' + s : s;
494
- }
495
- onStartDragEvent(eventPart, ev) {
496
- ev.preventDefault();
497
- this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
498
- if (eventPart.event) {
499
- this.dragStartTimeslot = hoveredTimeSlot;
500
- this.operation = {
501
- operation: EDragOperation.moveEvent,
502
- event: eventPart.event,
503
- meta: null,
504
- };
505
- this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });
506
- }
507
- });
508
- }
509
- onStartResizeEvent(event, position) {
510
- if (event) {
511
- switch (position) {
512
- case 'top':
513
- {
514
- this.operation = {
515
- operation: EDragOperation.resizeEvent,
516
- event: event,
517
- meta: { position },
518
- };
519
- this.previewEvent$.next({ start: event.start, end: event.end });
520
- }
521
- break;
522
- case 'bottom':
523
- {
524
- this.operation = {
525
- operation: EDragOperation.resizeEvent,
526
- event: event,
527
- meta: { position },
528
- };
529
- this.previewEvent$.next({ start: event.start, end: event.end });
530
- }
531
- break;
532
- }
533
- }
534
- }
535
- //#region hoveredTimeslot$
536
- getHoveredTimeslot(ev, timeSlots) {
537
- const hoveredSlots = this.timeSlotElements.filter((el) => {
538
- const rct = el.nativeElement.getBoundingClientRect();
539
- if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {
540
- return true;
541
- }
542
- else {
543
- return false;
544
- }
545
- });
546
- if (!hoveredSlots || hoveredSlots.length === 0) {
547
- return null;
548
- }
549
- const slotElement = hoveredSlots[0].nativeElement;
550
- const strRow = slotElement.getAttribute('data-row');
551
- if (!strRow) {
552
- return null;
553
- }
554
- const row = parseInt(strRow);
555
- const strColumn = slotElement.getAttribute('data-column');
556
- if (!strColumn) {
557
- return null;
558
- }
559
- const column = parseInt(strColumn);
560
- const slot = timeSlots[row].slots[column];
561
- return slot;
562
- }
563
- onMousemove(ev) {
564
- this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
565
- const hovered = this.getHoveredTimeslot(ev, timeSlots);
566
- this.hoveredTimeSlot$.next(hovered);
567
- if (this.operation) {
568
- switch (this.operation.operation) {
569
- case EDragOperation.createEvent:
570
- {
571
- if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {
572
- if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {
573
- // 1 slot
574
- }
575
- else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {
576
- // Drag down
577
- this.previewEvent$
578
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
579
- .pipe(map((ev) => {
580
- if (ev && this.dragStartTimeslot) {
581
- ev.start = this.dragStartTimeslot.start;
582
- ev.end = hovered.end;
583
- }
584
- return ev;
585
- }))
586
- .pipe(take(1))
587
- .subscribe((ev) => this.previewEvent$.next(ev));
588
- }
589
- else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
590
- // Drag up
591
- this.previewEvent$
592
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
593
- .pipe(map((ev) => {
594
- if (ev && this.dragStartTimeslot) {
595
- ev.start = hovered.start;
596
- ev.end = this.dragStartTimeslot.end;
597
- }
598
- return ev;
599
- }))
600
- .pipe(take(1))
601
- .subscribe((ev) => this.previewEvent$.next(ev));
602
- }
603
- }
604
- }
605
- break;
606
- case EDragOperation.moveEvent:
607
- {
608
- if (hovered && this.dragStartTimeslot) {
609
- this.previewEvent$
610
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
611
- .pipe(map((ev) => {
612
- if (ev && this.dragStartTimeslot) {
613
- const result = {
614
- start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),
615
- end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())
616
- };
617
- this.dragStartTimeslot = hovered;
618
- return result;
619
- }
620
- else {
621
- return ev;
622
- }
623
- }))
624
- .pipe(take(1))
625
- .subscribe(ev => this.previewEvent$.next(ev));
626
- }
627
- }
628
- break;
629
- case EDragOperation.resizeEvent:
630
- {
631
- if (hovered) {
632
- this.previewEvent$
633
- .pipe(filter((ev) => !!ev))
634
- .pipe(map((ev) => {
635
- if (ev && this.operation && this.operation.event) {
636
- if (this.operation.meta.position === 'top') {
637
- ev.start = hovered.start;
638
- ev.end = this.operation.event.end;
639
- }
640
- else if (this.operation.meta.position === 'bottom') {
641
- ev.start = this.operation.event.start;
642
- ev.end = hovered.end;
643
- }
644
- }
645
- return ev;
646
- }))
647
- .pipe(take(1))
648
- .subscribe((ev) => this.previewEvent$.next(ev));
649
- }
650
- }
651
- break;
652
- }
653
- }
654
- });
655
- }
656
- //#endregion
657
- onMouseUp(ev) {
658
- if (this.operation) {
659
- switch (this.operation.operation) {
660
- case EDragOperation.createEvent:
661
- {
662
- combineLatest([this.previewEvent$])
663
- .pipe(take(1))
664
- .subscribe(([previewEvent]) => {
665
- if (previewEvent) {
666
- this.operation = null;
667
- this.dragStartTimeslot = null;
668
- this.resources$.next([
669
- ...this.resources$.value,
670
- {
671
- description: 'New resource group',
672
- events: [{
673
- start: previewEvent.start,
674
- end: previewEvent.end,
675
- color: this.randomColor(),
676
- description: 'New event'
677
- }]
678
- }
679
- ]);
680
- this.previewEvent$.next(null);
681
- }
682
- });
683
- }
684
- break;
685
- case EDragOperation.moveEvent:
686
- case EDragOperation.resizeEvent:
687
- {
688
- this.previewEvent$
689
- .pipe(filter((ev) => !!ev))
690
- .pipe(take(1))
691
- .subscribe((previewEvent) => {
692
- if (this.operation && this.operation.event && previewEvent) {
693
- this.operation.event.start = previewEvent.start;
694
- this.operation.event.end = previewEvent.end;
695
- this.operation = null;
696
- this.dragStartTimeslot = null;
697
- this.resources$.next(this.resources$.value);
698
- this.previewEvent$.next(null);
699
- }
700
- });
701
- }
702
- break;
703
- }
704
- }
705
- }
706
- ngOnDestroy() {
707
- this.destroyed$.next(true);
708
- }
709
- }
710
- BsSchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.BsCalendarMonthService }, { token: BsTimelineService }], target: i0.ɵɵFactoryTarget.Component });
711
- BsSchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: BsSchedulerComponent, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }] });
712
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSchedulerComponent, decorators: [{
713
- type: Component,
714
- args: [{ selector: 'bs-scheduler', template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
715
- }], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }, { type: BsTimelineService }]; }, propDecorators: { timeSlotElements: [{
716
- type: ViewChildren,
717
- args: ['slot']
718
- }], modeChange: [{
719
- type: Output
720
- }], mode: [{
721
- type: Input
722
- }], weekOptionsChange: [{
723
- type: Output
724
- }], weekOptions: [{
725
- type: Input
726
- }], timelineOptionsChange: [{
727
- type: Output
728
- }], timelineOptions: [{
729
- type: Input
730
- }], maxInnerHeight: [{
731
- type: Input
732
- }], resources: [{
733
- type: Input
734
- }], onMousemove: [{
735
- type: HostListener,
736
- args: ['document:mousemove', ['$event']]
737
- }], onMouseUp: [{
738
- type: HostListener,
739
- args: ['document:mouseup', ['$event']]
219
+ class BsSchedulerComponent {
220
+ constructor(calendarMonthService, timelineService) {
221
+ this.calendarMonthService = calendarMonthService;
222
+ this.timelineService = timelineService;
223
+ this.resources$ = new BehaviorSubject([]);
224
+ this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
225
+ this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
226
+ this.previewEvent$ = new BehaviorSubject(null);
227
+ this.timeSlotDuration$ = new BehaviorSubject(1800);
228
+ this.timeSlots$ = new BehaviorSubject([]);
229
+ this.mouseState$ = new BehaviorSubject(false);
230
+ this.hoveredTimeSlot$ = new BehaviorSubject(null);
231
+ this.hoveredEvent$ = new BehaviorSubject(null);
232
+ this.destroyed$ = new Subject();
233
+ //#region Mode
234
+ this.modes = ESchedulerMode;
235
+ this.mode$ = new BehaviorSubject(ESchedulerMode.week);
236
+ this.modeChange = new EventEmitter();
237
+ //#endregion
238
+ // //#region Scale
239
+ // scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);
240
+ // @Output() public scaleChange = new EventEmitter<SchedulerScale>();
241
+ // public get scale() {
242
+ // return this.scale$.value;
243
+ // }
244
+ // @Input() public set scale(value: SchedulerScale) {
245
+ // this.scale$.next(value);
246
+ // }
247
+ // //#endregion
248
+ //#region WeekOptions
249
+ this.weekOptionsChange = new EventEmitter();
250
+ //#endregion
251
+ //#region TimelineOptions
252
+ this.timelineOptionsChange = new EventEmitter();
253
+ //#endregion
254
+ //#region maxInnerHeight
255
+ this.maxInnerHeight = null;
256
+ this.operation = null;
257
+ this.dragStartTimeslot = null;
258
+ const monday = this.calendarMonthService.getMondayBefore(new Date());
259
+ this.currentWeekOrMonth$ = new BehaviorSubject(monday);
260
+ this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])
261
+ .pipe(map(([currentDay, mode]) => {
262
+ currentDay.setHours(0);
263
+ currentDay.setMinutes(0);
264
+ currentDay.setSeconds(0);
265
+ currentDay.setMilliseconds(0);
266
+ switch (mode) {
267
+ case ESchedulerMode.week: {
268
+ return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));
269
+ }
270
+ case ESchedulerMode.timeline: {
271
+ const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);
272
+ const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();
273
+ return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));
274
+ }
275
+ }
276
+ }));
277
+ this.daysOfWeekWithTimestamps$ = this.shownDays$
278
+ .pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));
279
+ this.events$ = this.resources$
280
+ .pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))
281
+ .pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
282
+ .pipe(map(resources => resources.map(res => res.events)))
283
+ .pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));
284
+ // groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])
285
+ this.eventParts$ = this.events$.pipe(map((events) => events.map((ev) => this.timelineService.splitInParts(ev))));
286
+ this.eventPartsForThisWeek$ = combineLatest([
287
+ this.daysOfWeekWithTimestamps$,
288
+ this.eventParts$
289
+ .pipe(map(eventParts => eventParts.map(evp => evp.parts)))
290
+ .pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
291
+ ])
292
+ .pipe(map(([startAndEnd, eventParts]) => {
293
+ return eventParts.filter(eventPart => {
294
+ return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
295
+ });
296
+ }));
297
+ this.previewEventParts$ = this.previewEvent$.pipe(map((event) => {
298
+ if (event) {
299
+ return this.timelineService.splitInParts(event);
300
+ }
301
+ else {
302
+ return null;
303
+ }
304
+ }));
305
+ this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])
306
+ .pipe(map(([startAndEnd, previewEventParts]) => {
307
+ if (previewEventParts) {
308
+ return previewEventParts.parts.filter(eventPart => {
309
+ return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
310
+ });
311
+ }
312
+ else {
313
+ return [];
314
+ }
315
+ }));
316
+ this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$
317
+ .pipe(map(eventParts => {
318
+ // We'll only use the events for this week
319
+ const events = eventParts.map(ep => ep.event)
320
+ .filter((e, i, list) => list.indexOf(e) === i)
321
+ .filter((e) => !!e)
322
+ .map((e) => e);
323
+ const timeline = this.timelineService.getTimeline(events);
324
+ const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))
325
+ .reduce((flat, toFlatten) => flat.concat(toFlatten), [])
326
+ .map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))
327
+ .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
328
+ return {
329
+ total: timeline.length,
330
+ parts: result
331
+ };
332
+ }));
333
+ combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])
334
+ .pipe(filter(([mode, shownDays, duration]) => mode !== null))
335
+ .pipe(map(([mode, shownDays, duration]) => {
336
+ switch (mode) {
337
+ case ESchedulerMode.week: {
338
+ const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);
339
+ return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {
340
+ const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);
341
+ return {
342
+ slots: shownDays.map((day) => {
343
+ const start = new Date(day);
344
+ start.setHours(timeslotForMonday.start.getHours());
345
+ start.setMinutes(timeslotForMonday.start.getMinutes());
346
+ start.setSeconds(timeslotForMonday.start.getSeconds());
347
+ start.setMilliseconds(timeslotForMonday.start.getMilliseconds());
348
+ const end = new Date(day);
349
+ end.setHours(timeslotForMonday.end.getHours());
350
+ end.setMinutes(timeslotForMonday.end.getMinutes());
351
+ end.setSeconds(timeslotForMonday.end.getSeconds());
352
+ end.setMilliseconds(timeslotForMonday.end.getMilliseconds());
353
+ end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());
354
+ return { start, end };
355
+ }),
356
+ stamp: timeslotForMonday.start
357
+ };
358
+ });
359
+ }
360
+ case ESchedulerMode.timeline: {
361
+ const totalTimeslots = (24 * 60 * 60) / duration;
362
+ return shownDays.map((day) => {
363
+ return {
364
+ slots: Array.from(Array(totalTimeslots).keys())
365
+ .map((index) => {
366
+ return this.createTimeslot(day, index, duration);
367
+ }),
368
+ stamp: day
369
+ };
370
+ });
371
+ }
372
+ default: {
373
+ throw 'Unknown value for Mode: ' + mode;
374
+ }
375
+ }
376
+ }))
377
+ .subscribe((timeslots) => {
378
+ // For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
379
+ this.timeSlots$.next(timeslots);
380
+ });
381
+ this.weekOptions$
382
+ .pipe(takeUntil(this.destroyed$))
383
+ .subscribe((weekOptions) => {
384
+ this.weekOptionsChange.emit(weekOptions);
385
+ });
386
+ this.timelineOptions$
387
+ .pipe(takeUntil(this.destroyed$))
388
+ .subscribe((timelineOptions) => {
389
+ this.timelineOptionsChange.emit(timelineOptions);
390
+ });
391
+ // combineLatest([this.mode$, this.scale$])
392
+ // .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))
393
+ }
394
+ createTimeslot(date, index, duration) {
395
+ const timeSlotStart = new Date(date);
396
+ timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);
397
+ const timeSlotEnd = new Date(timeSlotStart);
398
+ timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);
399
+ return { start: timeSlotStart, end: timeSlotEnd };
400
+ }
401
+ getResourcesForGroup(resourceOrGroup) {
402
+ if ('children' in resourceOrGroup) {
403
+ return resourceOrGroup.children
404
+ .map((child) => this.getResourcesForGroup(child))
405
+ .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
406
+ }
407
+ else {
408
+ return [resourceOrGroup];
409
+ }
410
+ }
411
+ get mode() {
412
+ return this.mode$.value;
413
+ }
414
+ set mode(value) {
415
+ this.mode$.next(value);
416
+ }
417
+ get weekOptions() {
418
+ return this.weekOptions$.value;
419
+ }
420
+ set weekOptions(value) {
421
+ this.weekOptions$.next(value);
422
+ }
423
+ get timelineOptions() {
424
+ return this.timelineOptions$.value;
425
+ }
426
+ set timelineOptions(value) {
427
+ this.timelineOptions$.next(value);
428
+ }
429
+ //#endregion
430
+ //#region Resources
431
+ get resources() {
432
+ return this.resources$.value;
433
+ }
434
+ set resources(value) {
435
+ this.resources$.next(value);
436
+ }
437
+ //#endregion
438
+ addDays(date, days) {
439
+ const result = new Date(date);
440
+ result.setDate(result.getDate() + days);
441
+ return result;
442
+ }
443
+ onPreviousWeekOrMonth() {
444
+ this.onChangeWeekOrMonth(false);
445
+ }
446
+ onNextWeekOrMonth() {
447
+ this.onChangeWeekOrMonth(true);
448
+ }
449
+ onChangeWeekOrMonth(next) {
450
+ combineLatest([this.currentWeekOrMonth$, this.mode$])
451
+ .pipe(map(([currentWeekOrMonth, mode]) => {
452
+ switch (mode) {
453
+ case ESchedulerMode.week: {
454
+ return this.addDays(currentWeekOrMonth, (next ? 7 : -7));
455
+ }
456
+ case ESchedulerMode.timeline: {
457
+ return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
458
+ }
459
+ }
460
+ }), take(1))
461
+ .subscribe((w) => this.currentWeekOrMonth$.next(w));
462
+ }
463
+ onHoverEvent(ev) {
464
+ this.hoveredEvent$.next(ev);
465
+ }
466
+ onLeaveEvent(ev) {
467
+ this.hoveredEvent$.next(null);
468
+ }
469
+ onCreateEvent(ev, slot) {
470
+ ev.preventDefault();
471
+ this.mouseState$.next(true);
472
+ this.dragStartTimeslot = slot;
473
+ this.operation = {
474
+ operation: EDragOperation.createEvent,
475
+ event: {
476
+ start: slot.start,
477
+ end: slot.end,
478
+ color: '#F00',
479
+ description: 'Test event',
480
+ },
481
+ meta: null,
482
+ };
483
+ this.previewEvent$.next({ start: slot.start, end: slot.end });
484
+ }
485
+ randomColor() {
486
+ const brightness = 128;
487
+ return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);
488
+ }
489
+ randomChannel(brightness) {
490
+ const r = 255 - brightness;
491
+ const n = 0 | ((Math.random() * r) + brightness);
492
+ const s = n.toString(16);
493
+ return (s.length == 1) ? '0' + s : s;
494
+ }
495
+ onStartDragEvent(eventPart, ev) {
496
+ ev.preventDefault();
497
+ this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
498
+ if (eventPart.event) {
499
+ this.dragStartTimeslot = hoveredTimeSlot;
500
+ this.operation = {
501
+ operation: EDragOperation.moveEvent,
502
+ event: eventPart.event,
503
+ meta: null,
504
+ };
505
+ this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });
506
+ }
507
+ });
508
+ }
509
+ onStartResizeEvent(event, position) {
510
+ if (event) {
511
+ switch (position) {
512
+ case 'top':
513
+ {
514
+ this.operation = {
515
+ operation: EDragOperation.resizeEvent,
516
+ event: event,
517
+ meta: { position },
518
+ };
519
+ this.previewEvent$.next({ start: event.start, end: event.end });
520
+ }
521
+ break;
522
+ case 'bottom':
523
+ {
524
+ this.operation = {
525
+ operation: EDragOperation.resizeEvent,
526
+ event: event,
527
+ meta: { position },
528
+ };
529
+ this.previewEvent$.next({ start: event.start, end: event.end });
530
+ }
531
+ break;
532
+ }
533
+ }
534
+ }
535
+ //#region hoveredTimeslot$
536
+ getHoveredTimeslot(ev, timeSlots) {
537
+ const hoveredSlots = this.timeSlotElements.filter((el) => {
538
+ const rct = el.nativeElement.getBoundingClientRect();
539
+ if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {
540
+ return true;
541
+ }
542
+ else {
543
+ return false;
544
+ }
545
+ });
546
+ if (!hoveredSlots || hoveredSlots.length === 0) {
547
+ return null;
548
+ }
549
+ const slotElement = hoveredSlots[0].nativeElement;
550
+ const strRow = slotElement.getAttribute('data-row');
551
+ if (!strRow) {
552
+ return null;
553
+ }
554
+ const row = parseInt(strRow);
555
+ const strColumn = slotElement.getAttribute('data-column');
556
+ if (!strColumn) {
557
+ return null;
558
+ }
559
+ const column = parseInt(strColumn);
560
+ const slot = timeSlots[row].slots[column];
561
+ return slot;
562
+ }
563
+ onMousemove(ev) {
564
+ this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
565
+ const hovered = this.getHoveredTimeslot(ev, timeSlots);
566
+ this.hoveredTimeSlot$.next(hovered);
567
+ if (this.operation) {
568
+ switch (this.operation.operation) {
569
+ case EDragOperation.createEvent:
570
+ {
571
+ if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {
572
+ if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {
573
+ // 1 slot
574
+ }
575
+ else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {
576
+ // Drag down
577
+ this.previewEvent$
578
+ .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
579
+ .pipe(map((ev) => {
580
+ if (ev && this.dragStartTimeslot) {
581
+ ev.start = this.dragStartTimeslot.start;
582
+ ev.end = hovered.end;
583
+ }
584
+ return ev;
585
+ }))
586
+ .pipe(take(1))
587
+ .subscribe((ev) => this.previewEvent$.next(ev));
588
+ }
589
+ else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
590
+ // Drag up
591
+ this.previewEvent$
592
+ .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
593
+ .pipe(map((ev) => {
594
+ if (ev && this.dragStartTimeslot) {
595
+ ev.start = hovered.start;
596
+ ev.end = this.dragStartTimeslot.end;
597
+ }
598
+ return ev;
599
+ }))
600
+ .pipe(take(1))
601
+ .subscribe((ev) => this.previewEvent$.next(ev));
602
+ }
603
+ }
604
+ }
605
+ break;
606
+ case EDragOperation.moveEvent:
607
+ {
608
+ if (hovered && this.dragStartTimeslot) {
609
+ this.previewEvent$
610
+ .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
611
+ .pipe(map((ev) => {
612
+ if (ev && this.dragStartTimeslot) {
613
+ const result = {
614
+ start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),
615
+ end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())
616
+ };
617
+ this.dragStartTimeslot = hovered;
618
+ return result;
619
+ }
620
+ else {
621
+ return ev;
622
+ }
623
+ }))
624
+ .pipe(take(1))
625
+ .subscribe(ev => this.previewEvent$.next(ev));
626
+ }
627
+ }
628
+ break;
629
+ case EDragOperation.resizeEvent:
630
+ {
631
+ if (hovered) {
632
+ this.previewEvent$
633
+ .pipe(filter((ev) => !!ev))
634
+ .pipe(map((ev) => {
635
+ if (ev && this.operation && this.operation.event) {
636
+ if (this.operation.meta.position === 'top') {
637
+ ev.start = hovered.start;
638
+ ev.end = this.operation.event.end;
639
+ }
640
+ else if (this.operation.meta.position === 'bottom') {
641
+ ev.start = this.operation.event.start;
642
+ ev.end = hovered.end;
643
+ }
644
+ }
645
+ return ev;
646
+ }))
647
+ .pipe(take(1))
648
+ .subscribe((ev) => this.previewEvent$.next(ev));
649
+ }
650
+ }
651
+ break;
652
+ }
653
+ }
654
+ });
655
+ }
656
+ //#endregion
657
+ onMouseUp(ev) {
658
+ if (this.operation) {
659
+ switch (this.operation.operation) {
660
+ case EDragOperation.createEvent:
661
+ {
662
+ combineLatest([this.previewEvent$])
663
+ .pipe(take(1))
664
+ .subscribe(([previewEvent]) => {
665
+ if (previewEvent) {
666
+ this.operation = null;
667
+ this.dragStartTimeslot = null;
668
+ this.resources$.next([
669
+ ...this.resources$.value,
670
+ {
671
+ description: 'New resource group',
672
+ events: [{
673
+ start: previewEvent.start,
674
+ end: previewEvent.end,
675
+ color: this.randomColor(),
676
+ description: 'New event'
677
+ }]
678
+ }
679
+ ]);
680
+ this.previewEvent$.next(null);
681
+ }
682
+ });
683
+ }
684
+ break;
685
+ case EDragOperation.moveEvent:
686
+ case EDragOperation.resizeEvent:
687
+ {
688
+ this.previewEvent$
689
+ .pipe(filter((ev) => !!ev))
690
+ .pipe(take(1))
691
+ .subscribe((previewEvent) => {
692
+ if (this.operation && this.operation.event && previewEvent) {
693
+ this.operation.event.start = previewEvent.start;
694
+ this.operation.event.end = previewEvent.end;
695
+ this.operation = null;
696
+ this.dragStartTimeslot = null;
697
+ this.resources$.next(this.resources$.value);
698
+ this.previewEvent$.next(null);
699
+ }
700
+ });
701
+ }
702
+ break;
703
+ }
704
+ }
705
+ }
706
+ ngOnDestroy() {
707
+ this.destroyed$.next(true);
708
+ }
709
+ }
710
+ BsSchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.BsCalendarMonthService }, { token: BsTimelineService }], target: i0.ɵɵFactoryTarget.Component });
711
+ BsSchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: BsSchedulerComponent, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\r\n *ngIf=\"(mode$ | async) === modes.week\">\r\n <div class=\"calendar-head\">\r\n <div class=\"w-100 d-flex flex-row\">\r\n <div class=\"d-flex calendar-left justify-content-between\">\r\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n </div>\r\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\r\n <span class=\"d-block col-form-label text-center text-nowrap\">\r\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\r\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\r\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\r\n <!-- Timeslots -->\r\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\r\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\r\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\r\n </div>\r\n\r\n <!-- Events -->\r\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\r\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\r\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\r\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\r\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\r\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\r\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\r\n\r\n <div class=\"event-resize top\"\r\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\r\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\r\n <div class=\"event-border\"></div>\r\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\r\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\r\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\r\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\r\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\r\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\r\n </div>\r\n <div class=\"event-resize bottom\"\r\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\r\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\r\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\r\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\r\n <div class=\"event-inner w-100\"\r\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\r\n <div class=\"calendar-head d-flex\">\r\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\r\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"calendar-body table-responsive overflow-x-auto\">\r\n <table class=\"table mb-0\">\r\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\r\n <tr>\r\n <td></td>\r\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\r\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td></td>\r\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\r\n <ng-container *ngFor=\"let day of timeSlots\">\r\n <td *ngFor=\"let slot of day.slots\">\r\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\r\n {{ slot.start | date: 'HH:mm' }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </tr>\r\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }] });
712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSchedulerComponent, decorators: [{
713
+ type: Component,
714
+ args: [{ selector: 'bs-scheduler', template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\r\n *ngIf=\"(mode$ | async) === modes.week\">\r\n <div class=\"calendar-head\">\r\n <div class=\"w-100 d-flex flex-row\">\r\n <div class=\"d-flex calendar-left justify-content-between\">\r\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n </div>\r\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\r\n <span class=\"d-block col-form-label text-center text-nowrap\">\r\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\r\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\r\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\r\n <!-- Timeslots -->\r\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\r\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\r\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\r\n </div>\r\n\r\n <!-- Events -->\r\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\r\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\r\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\r\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\r\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\r\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\r\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\r\n\r\n <div class=\"event-resize top\"\r\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\r\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\r\n <div class=\"event-border\"></div>\r\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\r\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\r\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\r\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\r\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\r\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\r\n </div>\r\n <div class=\"event-resize bottom\"\r\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\r\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\r\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\r\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\r\n <div class=\"event-inner w-100\"\r\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\r\n <div class=\"calendar-head d-flex\">\r\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\r\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"calendar-body table-responsive overflow-x-auto\">\r\n <table class=\"table mb-0\">\r\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\r\n <tr>\r\n <td></td>\r\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\r\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td></td>\r\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\r\n <ng-container *ngFor=\"let day of timeSlots\">\r\n <td *ngFor=\"let slot of day.slots\">\r\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\r\n {{ slot.start | date: 'HH:mm' }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </tr>\r\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
715
+ }], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }, { type: BsTimelineService }]; }, propDecorators: { timeSlotElements: [{
716
+ type: ViewChildren,
717
+ args: ['slot']
718
+ }], modeChange: [{
719
+ type: Output
720
+ }], mode: [{
721
+ type: Input
722
+ }], weekOptionsChange: [{
723
+ type: Output
724
+ }], weekOptions: [{
725
+ type: Input
726
+ }], timelineOptionsChange: [{
727
+ type: Output
728
+ }], timelineOptions: [{
729
+ type: Input
730
+ }], maxInnerHeight: [{
731
+ type: Input
732
+ }], resources: [{
733
+ type: Input
734
+ }], onMousemove: [{
735
+ type: HostListener,
736
+ args: ['document:mousemove', ['$event']]
737
+ }], onMouseUp: [{
738
+ type: HostListener,
739
+ args: ['document:mouseup', ['$event']]
740
740
  }] } });
741
741
 
742
- const availableScales = [
743
- { time: 60, pixels: 60, markerSize: 900 },
744
- { time: 120, pixels: 60, markerSize: 900 },
745
- { time: 300, pixels: 60, markerSize: 900 },
746
- { time: 900, pixels: 60, markerSize: 900 },
747
- { time: 3600, pixels: 60, markerSize: 21600 },
748
- { time: 7200, pixels: 60, markerSize: 21600 },
749
- { time: 10800, pixels: 60, markerSize: 21600 },
750
- { time: 21600, pixels: 60, markerSize: 21600 },
751
- { time: 86400, pixels: 60, markerSize: 604800 }, // 6000s / 60px = 100 s/px
742
+ const availableScales = [
743
+ { time: 60, pixels: 60, markerSize: 900 },
744
+ { time: 120, pixels: 60, markerSize: 900 },
745
+ { time: 300, pixels: 60, markerSize: 900 },
746
+ { time: 900, pixels: 60, markerSize: 900 },
747
+ { time: 3600, pixels: 60, markerSize: 21600 },
748
+ { time: 7200, pixels: 60, markerSize: 21600 },
749
+ { time: 10800, pixels: 60, markerSize: 21600 },
750
+ { time: 21600, pixels: 60, markerSize: 21600 },
751
+ { time: 86400, pixels: 60, markerSize: 604800 }, // 6000s / 60px = 100 s/px
752
752
  ];
753
753
 
754
- class DateOffsetPipe {
755
- transform(value) {
756
- const today = new Date(value.start);
757
- today.setHours(0);
758
- today.setMinutes(0);
759
- today.setSeconds(0);
760
- return (value.start.getTime() - today.getTime()) / 1000;
761
- }
762
- }
763
- DateOffsetPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DateOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
764
- DateOffsetPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: DateOffsetPipe, name: "dateOffset" });
765
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: DateOffsetPipe, decorators: [{
766
- type: Pipe,
767
- args: [{
768
- name: 'dateOffset'
769
- }]
754
+ class DateOffsetPipe {
755
+ transform(value) {
756
+ const today = new Date(value.start);
757
+ today.setHours(0);
758
+ today.setMinutes(0);
759
+ today.setSeconds(0);
760
+ return (value.start.getTime() - today.getTime()) / 1000;
761
+ }
762
+ }
763
+ DateOffsetPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: DateOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
764
+ DateOffsetPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: DateOffsetPipe, name: "dateOffset" });
765
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: DateOffsetPipe, decorators: [{
766
+ type: Pipe,
767
+ args: [{
768
+ name: 'dateOffset'
769
+ }]
770
770
  }] });
771
771
 
772
- class BsSchedulerModule {
773
- }
774
- BsSchedulerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
775
- BsSchedulerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: BsSchedulerModule, declarations: [BsSchedulerComponent,
776
- BsSecondsTimespanPipe,
777
- BsSecondsTodayOffsetPipe,
778
- DateOffsetPipe,
779
- DayOfWeekPipe,
780
- ResourceGroupPresenterComponent], imports: [CommonModule,
781
- BsIconModule], exports: [BsSchedulerComponent,
782
- ResourceGroupPresenterComponent] });
783
- BsSchedulerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSchedulerModule, imports: [CommonModule,
784
- BsIconModule] });
785
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: BsSchedulerModule, decorators: [{
786
- type: NgModule,
787
- args: [{
788
- declarations: [
789
- BsSchedulerComponent,
790
- BsSecondsTimespanPipe,
791
- BsSecondsTodayOffsetPipe,
792
- DateOffsetPipe,
793
- DayOfWeekPipe,
794
- ResourceGroupPresenterComponent
795
- ],
796
- imports: [
797
- CommonModule,
798
- BsIconModule,
799
- ],
800
- exports: [
801
- BsSchedulerComponent,
802
- ResourceGroupPresenterComponent
803
- ]
804
- }]
772
+ class BsSchedulerModule {
773
+ }
774
+ BsSchedulerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
775
+ BsSchedulerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: BsSchedulerModule, declarations: [BsSchedulerComponent,
776
+ BsSecondsTimespanPipe,
777
+ BsSecondsTodayOffsetPipe,
778
+ DateOffsetPipe,
779
+ DayOfWeekPipe,
780
+ ResourceGroupPresenterComponent], imports: [CommonModule,
781
+ BsIconModule], exports: [BsSchedulerComponent,
782
+ ResourceGroupPresenterComponent] });
783
+ BsSchedulerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSchedulerModule, imports: [CommonModule,
784
+ BsIconModule] });
785
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BsSchedulerModule, decorators: [{
786
+ type: NgModule,
787
+ args: [{
788
+ declarations: [
789
+ BsSchedulerComponent,
790
+ BsSecondsTimespanPipe,
791
+ BsSecondsTodayOffsetPipe,
792
+ DateOffsetPipe,
793
+ DayOfWeekPipe,
794
+ ResourceGroupPresenterComponent
795
+ ],
796
+ imports: [
797
+ CommonModule,
798
+ BsIconModule,
799
+ ],
800
+ exports: [
801
+ BsSchedulerComponent,
802
+ ResourceGroupPresenterComponent
803
+ ]
804
+ }]
805
805
  }] });
806
806
 
807
- /**
808
- * Generated bundle index. Do not edit.
807
+ /**
808
+ * Generated bundle index. Do not edit.
809
809
  */
810
810
 
811
811
  export { BsSchedulerComponent, BsSchedulerModule, ESchedulerMode, ResourceGroupPresenterComponent, availableScales };