@syncfusion/ej2-schedule 30.2.7 → 31.1.17

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 (304) hide show
  1. package/dist/ej2-schedule.min.js +2 -2
  2. package/dist/ej2-schedule.umd.min.js +2 -2
  3. package/dist/ej2-schedule.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-schedule.es2015.js +110 -36
  5. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es5.js +110 -36
  7. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  8. package/dist/global/ej2-schedule.min.js +2 -2
  9. package/dist/global/ej2-schedule.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/dist/ts/common/calendar-util.d.ts +92 -0
  12. package/dist/ts/common/calendar-util.ts +261 -0
  13. package/dist/ts/common/index.d.ts +4 -0
  14. package/dist/ts/common/index.ts +4 -0
  15. package/dist/ts/components.d.ts +5 -0
  16. package/dist/ts/components.ts +5 -0
  17. package/dist/ts/index.d.ts +6 -0
  18. package/dist/ts/index.ts +7 -0
  19. package/dist/ts/recurrence-editor/date-generator.d.ts +76 -0
  20. package/dist/ts/recurrence-editor/date-generator.ts +1699 -0
  21. package/dist/ts/recurrence-editor/index.d.ts +6 -0
  22. package/dist/ts/recurrence-editor/index.ts +6 -0
  23. package/dist/ts/recurrence-editor/recurrence-editor-model.d.ts +112 -0
  24. package/dist/ts/recurrence-editor/recurrence-editor.d.ts +245 -0
  25. package/dist/ts/recurrence-editor/recurrence-editor.ts +1257 -0
  26. package/dist/ts/schedule/actions/action-base.d.ts +44 -0
  27. package/dist/ts/schedule/actions/action-base.ts +493 -0
  28. package/dist/ts/schedule/actions/crud.d.ts +41 -0
  29. package/dist/ts/schedule/actions/crud.ts +784 -0
  30. package/dist/ts/schedule/actions/data.d.ts +63 -0
  31. package/dist/ts/schedule/actions/data.ts +128 -0
  32. package/dist/ts/schedule/actions/drag.d.ts +75 -0
  33. package/dist/ts/schedule/actions/drag.ts +1401 -0
  34. package/dist/ts/schedule/actions/keyboard.d.ts +100 -0
  35. package/dist/ts/schedule/actions/keyboard.ts +1435 -0
  36. package/dist/ts/schedule/actions/resize.d.ts +27 -0
  37. package/dist/ts/schedule/actions/resize.ts +602 -0
  38. package/dist/ts/schedule/actions/scroll.d.ts +69 -0
  39. package/dist/ts/schedule/actions/scroll.ts +105 -0
  40. package/dist/ts/schedule/actions/touch.d.ts +32 -0
  41. package/dist/ts/schedule/actions/touch.ts +314 -0
  42. package/dist/ts/schedule/actions/virtual-scroll.d.ts +55 -0
  43. package/dist/ts/schedule/actions/virtual-scroll.ts +596 -0
  44. package/dist/ts/schedule/actions/work-cells.d.ts +14 -0
  45. package/dist/ts/schedule/actions/work-cells.ts +151 -0
  46. package/dist/ts/schedule/base/constant.d.ts +102 -0
  47. package/dist/ts/schedule/base/constant.ts +103 -0
  48. package/dist/ts/schedule/base/css-constant.d.ts +475 -0
  49. package/dist/ts/schedule/base/css-constant.ts +475 -0
  50. package/dist/ts/schedule/base/interface.d.ts +673 -0
  51. package/dist/ts/schedule/base/interface.ts +738 -0
  52. package/dist/ts/schedule/base/resource.d.ts +59 -0
  53. package/dist/ts/schedule/base/resource.ts +1091 -0
  54. package/dist/ts/schedule/base/schedule-model.d.ts +930 -0
  55. package/dist/ts/schedule/base/schedule.d.ts +1967 -0
  56. package/dist/ts/schedule/base/schedule.ts +4221 -0
  57. package/dist/ts/schedule/base/type.d.ts +134 -0
  58. package/dist/ts/schedule/base/type.ts +142 -0
  59. package/dist/ts/schedule/base/util.d.ts +266 -0
  60. package/dist/ts/schedule/base/util.ts +492 -0
  61. package/dist/ts/schedule/event-renderer/agenda-base.d.ts +15 -0
  62. package/dist/ts/schedule/event-renderer/agenda-base.ts +423 -0
  63. package/dist/ts/schedule/event-renderer/event-base.d.ts +101 -0
  64. package/dist/ts/schedule/event-renderer/event-base.ts +1501 -0
  65. package/dist/ts/schedule/event-renderer/inline-edit.d.ts +23 -0
  66. package/dist/ts/schedule/event-renderer/inline-edit.ts +287 -0
  67. package/dist/ts/schedule/event-renderer/month.d.ts +60 -0
  68. package/dist/ts/schedule/event-renderer/month.ts +760 -0
  69. package/dist/ts/schedule/event-renderer/timeline-view.d.ts +51 -0
  70. package/dist/ts/schedule/event-renderer/timeline-view.ts +606 -0
  71. package/dist/ts/schedule/event-renderer/vertical-view.d.ts +57 -0
  72. package/dist/ts/schedule/event-renderer/vertical-view.ts +898 -0
  73. package/dist/ts/schedule/event-renderer/year.d.ts +27 -0
  74. package/dist/ts/schedule/event-renderer/year.ts +623 -0
  75. package/dist/ts/schedule/exports/calendar-export.d.ts +16 -0
  76. package/dist/ts/schedule/exports/calendar-export.ts +160 -0
  77. package/dist/ts/schedule/exports/calendar-import.d.ts +18 -0
  78. package/dist/ts/schedule/exports/calendar-import.ts +277 -0
  79. package/dist/ts/schedule/exports/excel-export.d.ts +14 -0
  80. package/dist/ts/schedule/exports/excel-export.ts +89 -0
  81. package/dist/ts/schedule/exports/index.d.ts +7 -0
  82. package/dist/ts/schedule/exports/index.ts +7 -0
  83. package/dist/ts/schedule/exports/print.d.ts +20 -0
  84. package/dist/ts/schedule/exports/print.ts +233 -0
  85. package/dist/ts/schedule/index.d.ts +26 -0
  86. package/dist/ts/schedule/index.ts +26 -0
  87. package/dist/ts/schedule/models/event-settings-model.d.ts +165 -0
  88. package/dist/ts/schedule/models/event-settings.d.ts +149 -0
  89. package/dist/ts/schedule/models/event-settings.ts +187 -0
  90. package/dist/ts/schedule/models/field-options-model.d.ts +37 -0
  91. package/dist/ts/schedule/models/field-options.d.ts +31 -0
  92. package/dist/ts/schedule/models/field-options.ts +41 -0
  93. package/dist/ts/schedule/models/fields-model.d.ts +129 -0
  94. package/dist/ts/schedule/models/fields.d.ts +117 -0
  95. package/dist/ts/schedule/models/fields.ts +149 -0
  96. package/dist/ts/schedule/models/group-model.d.ts +69 -0
  97. package/dist/ts/schedule/models/group.d.ts +60 -0
  98. package/dist/ts/schedule/models/group.ts +75 -0
  99. package/dist/ts/schedule/models/header-rows-model.d.ts +33 -0
  100. package/dist/ts/schedule/models/header-rows.d.ts +30 -0
  101. package/dist/ts/schedule/models/header-rows.ts +35 -0
  102. package/dist/ts/schedule/models/models.d.ts +14 -0
  103. package/dist/ts/schedule/models/models.ts +15 -0
  104. package/dist/ts/schedule/models/quick-info-templates-model.d.ts +52 -0
  105. package/dist/ts/schedule/models/quick-info-templates.d.ts +47 -0
  106. package/dist/ts/schedule/models/quick-info-templates.ts +56 -0
  107. package/dist/ts/schedule/models/resources-model.d.ts +122 -0
  108. package/dist/ts/schedule/models/resources.d.ts +106 -0
  109. package/dist/ts/schedule/models/resources.ts +138 -0
  110. package/dist/ts/schedule/models/time-scale-model.d.ts +57 -0
  111. package/dist/ts/schedule/models/time-scale.d.ts +50 -0
  112. package/dist/ts/schedule/models/time-scale.ts +61 -0
  113. package/dist/ts/schedule/models/toolbar-model.d.ts +196 -0
  114. package/dist/ts/schedule/models/toolbar.d.ts +176 -0
  115. package/dist/ts/schedule/models/toolbar.ts +196 -0
  116. package/dist/ts/schedule/models/views-model.d.ts +370 -0
  117. package/dist/ts/schedule/models/views.d.ts +335 -0
  118. package/dist/ts/schedule/models/views.ts +408 -0
  119. package/dist/ts/schedule/models/work-hours-model.d.ts +29 -0
  120. package/dist/ts/schedule/models/work-hours.d.ts +24 -0
  121. package/dist/ts/schedule/models/work-hours.ts +31 -0
  122. package/dist/ts/schedule/popups/event-tooltip.d.ts +16 -0
  123. package/dist/ts/schedule/popups/event-tooltip.ts +203 -0
  124. package/dist/ts/schedule/popups/event-window.d.ts +118 -0
  125. package/dist/ts/schedule/popups/event-window.ts +2055 -0
  126. package/dist/ts/schedule/popups/form-validator.d.ts +16 -0
  127. package/dist/ts/schedule/popups/form-validator.ts +110 -0
  128. package/dist/ts/schedule/popups/quick-popups.d.ts +78 -0
  129. package/dist/ts/schedule/popups/quick-popups.ts +1470 -0
  130. package/dist/ts/schedule/renderer/agenda.d.ts +45 -0
  131. package/dist/ts/schedule/renderer/agenda.ts +497 -0
  132. package/dist/ts/schedule/renderer/day.d.ts +20 -0
  133. package/dist/ts/schedule/renderer/day.ts +28 -0
  134. package/dist/ts/schedule/renderer/header-renderer.d.ts +48 -0
  135. package/dist/ts/schedule/renderer/header-renderer.ts +736 -0
  136. package/dist/ts/schedule/renderer/month-agenda.d.ts +29 -0
  137. package/dist/ts/schedule/renderer/month-agenda.ts +184 -0
  138. package/dist/ts/schedule/renderer/month.d.ts +61 -0
  139. package/dist/ts/schedule/renderer/month.ts +766 -0
  140. package/dist/ts/schedule/renderer/renderer.d.ts +13 -0
  141. package/dist/ts/schedule/renderer/renderer.ts +165 -0
  142. package/dist/ts/schedule/renderer/timeline-header-row.d.ts +15 -0
  143. package/dist/ts/schedule/renderer/timeline-header-row.ts +132 -0
  144. package/dist/ts/schedule/renderer/timeline-month.d.ts +29 -0
  145. package/dist/ts/schedule/renderer/timeline-month.ts +184 -0
  146. package/dist/ts/schedule/renderer/timeline-view.d.ts +31 -0
  147. package/dist/ts/schedule/renderer/timeline-view.ts +308 -0
  148. package/dist/ts/schedule/renderer/timeline-year.d.ts +22 -0
  149. package/dist/ts/schedule/renderer/timeline-year.ts +450 -0
  150. package/dist/ts/schedule/renderer/vertical-view.d.ts +63 -0
  151. package/dist/ts/schedule/renderer/vertical-view.ts +911 -0
  152. package/dist/ts/schedule/renderer/view-base.d.ts +83 -0
  153. package/dist/ts/schedule/renderer/view-base.ts +709 -0
  154. package/dist/ts/schedule/renderer/week.d.ts +22 -0
  155. package/dist/ts/schedule/renderer/week.ts +35 -0
  156. package/dist/ts/schedule/renderer/work-week.d.ts +22 -0
  157. package/dist/ts/schedule/renderer/work-week.ts +36 -0
  158. package/dist/ts/schedule/renderer/year.d.ts +46 -0
  159. package/dist/ts/schedule/renderer/year.ts +470 -0
  160. package/dist/ts/schedule/timezone/timezone.d.ts +16 -0
  161. package/dist/ts/schedule/timezone/timezone.ts +313 -0
  162. package/package.json +56 -21
  163. package/src/schedule/actions/action-base.js +3 -0
  164. package/src/schedule/actions/drag.js +11 -4
  165. package/src/schedule/actions/keyboard.js +1 -1
  166. package/src/schedule/actions/resize.js +8 -5
  167. package/src/schedule/base/css-constant.d.ts +2 -0
  168. package/src/schedule/base/css-constant.js +2 -0
  169. package/src/schedule/base/schedule.js +15 -1
  170. package/src/schedule/event-renderer/agenda-base.d.ts +1 -1
  171. package/src/schedule/event-renderer/agenda-base.js +5 -4
  172. package/src/schedule/event-renderer/inline-edit.js +11 -6
  173. package/src/schedule/event-renderer/month.js +5 -3
  174. package/src/schedule/event-renderer/vertical-view.js +3 -0
  175. package/src/schedule/event-renderer/year.d.ts +2 -0
  176. package/src/schedule/event-renderer/year.js +28 -4
  177. package/src/schedule/popups/event-tooltip.js +4 -0
  178. package/src/schedule/popups/event-window.js +2 -2
  179. package/src/schedule/popups/quick-popups.js +5 -1
  180. package/src/schedule/renderer/agenda.js +3 -2
  181. package/src/schedule/renderer/vertical-view.js +1 -1
  182. package/src/schedule/renderer/year.js +3 -2
  183. package/styles/bds-lite.css +11 -8
  184. package/styles/bds.css +11 -8
  185. package/styles/bootstrap-dark-lite.css +12 -9
  186. package/styles/bootstrap-dark.css +12 -9
  187. package/styles/bootstrap-lite.css +12 -9
  188. package/styles/bootstrap.css +12 -9
  189. package/styles/bootstrap4-lite.css +11 -8
  190. package/styles/bootstrap4.css +11 -8
  191. package/styles/bootstrap5-dark-lite.css +11 -8
  192. package/styles/bootstrap5-dark.css +11 -8
  193. package/styles/bootstrap5-lite.css +11 -8
  194. package/styles/bootstrap5.3-lite.css +11 -8
  195. package/styles/bootstrap5.3.css +11 -8
  196. package/styles/bootstrap5.css +11 -8
  197. package/styles/fabric-dark-lite.css +12 -9
  198. package/styles/fabric-dark.css +12 -9
  199. package/styles/fabric-lite.css +12 -9
  200. package/styles/fabric.css +12 -9
  201. package/styles/fluent-dark-lite.css +13 -10
  202. package/styles/fluent-dark.css +13 -10
  203. package/styles/fluent-lite.css +13 -10
  204. package/styles/fluent.css +13 -10
  205. package/styles/fluent2-lite.css +11 -8
  206. package/styles/fluent2.css +11 -8
  207. package/styles/highcontrast-light-lite.css +12 -9
  208. package/styles/highcontrast-light.css +12 -9
  209. package/styles/highcontrast-lite.css +12 -9
  210. package/styles/highcontrast.css +12 -9
  211. package/styles/material-dark-lite.css +12 -9
  212. package/styles/material-dark.css +12 -9
  213. package/styles/material-lite.css +12 -9
  214. package/styles/material.css +12 -9
  215. package/styles/material3-dark-lite.css +11 -8
  216. package/styles/material3-dark.css +11 -8
  217. package/styles/material3-lite.css +11 -8
  218. package/styles/material3.css +11 -8
  219. package/styles/recurrence-editor/_bds-definition.scss +1 -0
  220. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +1 -0
  221. package/styles/recurrence-editor/_bootstrap-definition.scss +1 -0
  222. package/styles/recurrence-editor/_bootstrap4-definition.scss +1 -0
  223. package/styles/recurrence-editor/_bootstrap5-definition.scss +1 -0
  224. package/styles/recurrence-editor/_bootstrap5.3-definition.scss +1 -0
  225. package/styles/recurrence-editor/_fabric-dark-definition.scss +1 -0
  226. package/styles/recurrence-editor/_fabric-definition.scss +1 -0
  227. package/styles/recurrence-editor/_fluent-definition.scss +1 -0
  228. package/styles/recurrence-editor/_fluent2-definition.scss +1 -0
  229. package/styles/recurrence-editor/_fusionnew-definition.scss +1 -0
  230. package/styles/recurrence-editor/_highcontrast-definition.scss +1 -0
  231. package/styles/recurrence-editor/_highcontrast-light-definition.scss +1 -0
  232. package/styles/recurrence-editor/_layout.scss +5 -1
  233. package/styles/recurrence-editor/_material-dark-definition.scss +1 -0
  234. package/styles/recurrence-editor/_material-definition.scss +1 -0
  235. package/styles/recurrence-editor/_material3-definition.scss +1 -0
  236. package/styles/recurrence-editor/_tailwind-definition.scss +1 -0
  237. package/styles/recurrence-editor/_tailwind3-definition.scss +1 -0
  238. package/styles/recurrence-editor/bds.css +3 -0
  239. package/styles/recurrence-editor/bootstrap-dark.css +4 -1
  240. package/styles/recurrence-editor/bootstrap.css +4 -1
  241. package/styles/recurrence-editor/bootstrap4.css +3 -0
  242. package/styles/recurrence-editor/bootstrap5-dark.css +3 -0
  243. package/styles/recurrence-editor/bootstrap5.3.css +3 -0
  244. package/styles/recurrence-editor/bootstrap5.css +3 -0
  245. package/styles/recurrence-editor/fabric-dark.css +4 -1
  246. package/styles/recurrence-editor/fabric.css +4 -1
  247. package/styles/recurrence-editor/fluent-dark.css +4 -1
  248. package/styles/recurrence-editor/fluent.css +4 -1
  249. package/styles/recurrence-editor/fluent2.css +3 -0
  250. package/styles/recurrence-editor/highcontrast-light.css +4 -1
  251. package/styles/recurrence-editor/highcontrast.css +4 -1
  252. package/styles/recurrence-editor/material-dark.css +4 -1
  253. package/styles/recurrence-editor/material.css +4 -1
  254. package/styles/recurrence-editor/material3-dark.css +3 -0
  255. package/styles/recurrence-editor/material3.css +3 -0
  256. package/styles/recurrence-editor/tailwind-dark.css +3 -0
  257. package/styles/recurrence-editor/tailwind.css +3 -0
  258. package/styles/recurrence-editor/tailwind3.css +3 -0
  259. package/styles/schedule/_bds-definition.scss +2 -0
  260. package/styles/schedule/_bootstrap-dark-definition.scss +2 -0
  261. package/styles/schedule/_bootstrap-definition.scss +2 -0
  262. package/styles/schedule/_bootstrap4-definition.scss +2 -0
  263. package/styles/schedule/_bootstrap5-definition.scss +2 -0
  264. package/styles/schedule/_bootstrap5.3-definition.scss +2 -0
  265. package/styles/schedule/_fabric-dark-definition.scss +2 -0
  266. package/styles/schedule/_fabric-definition.scss +2 -0
  267. package/styles/schedule/_fluent-definition.scss +3 -1
  268. package/styles/schedule/_fluent2-definition.scss +2 -0
  269. package/styles/schedule/_fusionnew-definition.scss +2 -0
  270. package/styles/schedule/_highcontrast-definition.scss +2 -0
  271. package/styles/schedule/_highcontrast-light-definition.scss +2 -0
  272. package/styles/schedule/_layout.scss +12 -11
  273. package/styles/schedule/_material-dark-definition.scss +2 -0
  274. package/styles/schedule/_material-definition.scss +2 -0
  275. package/styles/schedule/_material3-definition.scss +2 -0
  276. package/styles/schedule/_tailwind-definition.scss +2 -0
  277. package/styles/schedule/_tailwind3-definition.scss +2 -0
  278. package/styles/schedule/bds.css +8 -8
  279. package/styles/schedule/bootstrap-dark.css +8 -8
  280. package/styles/schedule/bootstrap.css +8 -8
  281. package/styles/schedule/bootstrap4.css +8 -8
  282. package/styles/schedule/bootstrap5-dark.css +8 -8
  283. package/styles/schedule/bootstrap5.3.css +8 -8
  284. package/styles/schedule/bootstrap5.css +8 -8
  285. package/styles/schedule/fabric-dark.css +8 -8
  286. package/styles/schedule/fabric.css +8 -8
  287. package/styles/schedule/fluent-dark.css +9 -9
  288. package/styles/schedule/fluent.css +9 -9
  289. package/styles/schedule/fluent2.css +8 -8
  290. package/styles/schedule/highcontrast-light.css +8 -8
  291. package/styles/schedule/highcontrast.css +8 -8
  292. package/styles/schedule/material-dark.css +8 -8
  293. package/styles/schedule/material.css +8 -8
  294. package/styles/schedule/material3-dark.css +8 -8
  295. package/styles/schedule/material3.css +8 -8
  296. package/styles/schedule/tailwind-dark.css +8 -8
  297. package/styles/schedule/tailwind.css +8 -8
  298. package/styles/schedule/tailwind3.css +8 -8
  299. package/styles/tailwind-dark-lite.css +11 -8
  300. package/styles/tailwind-dark.css +11 -8
  301. package/styles/tailwind-lite.css +11 -8
  302. package/styles/tailwind.css +11 -8
  303. package/styles/tailwind3-lite.css +11 -8
  304. package/styles/tailwind3.css +11 -8
@@ -0,0 +1,492 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';
3
+
4
+ /**
5
+ * Schedule common utilities
6
+ */
7
+
8
+ export const WEEK_LENGTH: number = 7;
9
+ export const DEFAULT_WEEKS: number = 6;
10
+ export const MS_PER_DAY: number = 86400000;
11
+ export const MS_PER_MINUTE: number = 60000;
12
+
13
+ /**
14
+ * Method to get height from element
15
+ *
16
+ * @param {Element} container Accepts the DOM element
17
+ * @param {string} elementClass Accepts the element class
18
+ * @param {boolean} isTransformed Accepts the boolean value that indicates the status of the transform style applied to the element
19
+ * @returns {number} Returns the height of the element
20
+ */
21
+ export function getElementHeightFromClass(container: Element, elementClass: string, isTransformed?: boolean): number {
22
+ let height: number = 0;
23
+ const el: HTMLElement = createElement('div', { className: elementClass }).cloneNode() as HTMLElement;
24
+ el.style.visibility = 'hidden';
25
+ el.style.position = 'absolute';
26
+ container.appendChild(el);
27
+ height = getElementHeight(el, isTransformed);
28
+ remove(el);
29
+ return height;
30
+ }
31
+
32
+ /**
33
+ * Method to get width from element
34
+ *
35
+ * @param {Element} container Accepts the DOM element
36
+ * @param {string} elementClass Accepts the element class
37
+ * @param {boolean} isTransformed Accepts the boolean value that indicates the status of the transform style applied to the element
38
+ * @returns {number} Returns the width of the element
39
+ */
40
+ export function getElementWidthFromClass(container: Element, elementClass: string, isTransformed?: boolean): number {
41
+ let width: number = 0;
42
+ const el: HTMLElement = createElement('div', { className: elementClass }).cloneNode() as HTMLElement;
43
+ el.style.visibility = 'hidden';
44
+ el.style.position = 'absolute';
45
+ container.appendChild(el);
46
+ width = getElementWidth(el, isTransformed);
47
+ remove(el);
48
+ return width;
49
+ }
50
+
51
+ /**
52
+ * Method to get translateY value
53
+ *
54
+ * @param {HTMLElement | Element} element Accepts the DOM element
55
+ * @returns {number} Returns the translateY value of given element
56
+ */
57
+ export function getTranslateY(element: HTMLElement | Element): number {
58
+ const style: CSSStyleDeclaration = getComputedStyle(element);
59
+ return (<Record<string, any> & Window><unknown>window).WebKitCSSMatrix ?
60
+ new WebKitCSSMatrix(style.webkitTransform).m42 : 0;
61
+ }
62
+
63
+ /**
64
+ * Method to get translateX value
65
+ *
66
+ * @param {HTMLElement | Element} element Accepts the DOM element
67
+ * @returns {number} Returns the translateX value of given element
68
+ */
69
+ export function getTranslateX(element: HTMLElement | Element): number {
70
+ const style: CSSStyleDeclaration = getComputedStyle(element);
71
+ return (<Record<string, any> & Window><unknown>window).WebKitCSSMatrix ?
72
+ new WebKitCSSMatrix(style.webkitTransform).m41 : 0;
73
+ }
74
+
75
+ /**
76
+ * Method to get week first date
77
+ *
78
+ * @param {Date} date Accepts the date object
79
+ * @param {number} firstDayOfWeek Accepts the first day of week number
80
+ * @returns {Date} Returns the date object
81
+ */
82
+ export function getWeekFirstDate(date: Date, firstDayOfWeek: number): Date {
83
+ const date1: Date = new Date(date.getTime());
84
+ firstDayOfWeek = (firstDayOfWeek - date1.getDay() + 7 * (-1)) % 7;
85
+ return new Date(date1.setDate(date1.getDate() + (isNaN(firstDayOfWeek) ? 0 : firstDayOfWeek)));
86
+ }
87
+
88
+ /**
89
+ * Method to get week last date
90
+ *
91
+ * @param {Date} date Accepts the date object
92
+ * @param {number} firstDayOfWeek Accepts the first day of week number
93
+ * @returns {Date} Returns the date object
94
+ */
95
+ export function getWeekLastDate(date: Date, firstDayOfWeek: number): Date {
96
+ const weekFirst: Date = getWeekFirstDate(date, firstDayOfWeek);
97
+ const weekLast: Date = new Date(weekFirst.getFullYear(), weekFirst.getMonth(), weekFirst.getDate() + 6);
98
+ return new Date(weekLast.getTime());
99
+ }
100
+
101
+ /**
102
+ * Method to get first date of month
103
+ *
104
+ * @param {Date} date Accepts the date object
105
+ * @returns {Date} Returns the date object
106
+ */
107
+ export function firstDateOfMonth(date: Date): Date {
108
+ return new Date(date.getFullYear(), date.getMonth(), 1);
109
+ }
110
+
111
+ /**
112
+ * Method to get last date of month
113
+ *
114
+ * @param {Date} date Accepts the date object
115
+ * @returns {Date} Returns the date object
116
+ */
117
+ export function lastDateOfMonth(date: Date): Date {
118
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
119
+ }
120
+
121
+ /**
122
+ * Method to get week number
123
+ *
124
+ * @param {Date} date Accepts the date object
125
+ * @returns {number} Returns the week number
126
+ */
127
+ export function getWeekNumber(date: Date): number {
128
+ const date1: number = new Date(date.getFullYear(), 0, 1).valueOf();
129
+ const currentDate: number = new Date(date.getFullYear(), date.getMonth(), date.getDate()).valueOf();
130
+ const dayOfYear: number = ((currentDate - date1 + MS_PER_DAY) / MS_PER_DAY);
131
+ return Math.ceil(dayOfYear / 7);
132
+ }
133
+
134
+ /**
135
+ * Method to get week middle date
136
+ *
137
+ * @param {Date} weekFirst Accepts the week first date object
138
+ * @param {Date} weekLast Accepts the week last date object
139
+ * @returns {Date} Returns the date object
140
+ */
141
+ export function getWeekMiddleDate(weekFirst: Date, weekLast: Date): Date {
142
+ return new Date(weekLast.valueOf() - ((weekLast.valueOf() - weekFirst.valueOf()) / 2));
143
+ }
144
+
145
+ /**
146
+ * Method to set time to date object
147
+ *
148
+ * @param {Date} date Accepts the date object
149
+ * @param {number} time Accepts the milliseconds
150
+ * @returns {Date} Returns the date object
151
+ */
152
+ export function setTime(date: Date, time: number): Date {
153
+ const tzOffsetBefore: number = date.getTimezoneOffset();
154
+ const d: Date = new Date(date.getTime() + time);
155
+ const tzOffsetDiff: number = d.getTimezoneOffset() - tzOffsetBefore;
156
+ date.setTime(d.getTime() + tzOffsetDiff * MS_PER_MINUTE);
157
+ return date;
158
+ }
159
+
160
+ /**
161
+ * Method the reset hours in date object
162
+ *
163
+ * @param {Date} date Accepts the date object
164
+ * @returns {Date} Returns the date object
165
+ */
166
+ export function resetTime(date: Date): Date {
167
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
168
+ }
169
+
170
+ /**
171
+ * Method to get milliseconds from date object
172
+ *
173
+ * @param {Date} date Accepts the date object
174
+ * @returns {number} Returns the milliseconds from date object
175
+ */
176
+ export function getDateInMs(date: Date): number {
177
+ const localOffset: number = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTimezoneOffset();
178
+ const dateOffset: number = date.getTimezoneOffset();
179
+ const timezoneOffset: number = dateOffset - localOffset;
180
+ return ((date.getTime() - new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTime())
181
+ - (timezoneOffset * 60 * 1000));
182
+ }
183
+
184
+ /**
185
+ * Method to get date count between two dates
186
+ *
187
+ * @param {Date} startDate Accepts the date object
188
+ * @param {Date} endDate Accepts the date object
189
+ * @returns {number} Returns the date count
190
+ */
191
+ export function getDateCount(startDate: Date, endDate: Date): number {
192
+ return Math.ceil((endDate.getTime() - startDate.getTime()) / MS_PER_DAY);
193
+ }
194
+
195
+ /**
196
+ * Method to add no of days in date object
197
+ *
198
+ * @param {Date} date Accepts the date object
199
+ * @param {number} noOfDays Accepts the number of days count
200
+ * @returns {Date} Returns the date object
201
+ */
202
+ export function addDays(date: Date, noOfDays: number): Date {
203
+ date = new Date('' + date);
204
+ return new Date(date.setDate(date.getDate() + noOfDays));
205
+ }
206
+
207
+ /**
208
+ * Method to add no of months in date object
209
+ *
210
+ * @param {Date} date Accepts the date object
211
+ * @param {number} noOfMonths Accepts the number of month count
212
+ * @returns {Date} Returns the date object
213
+ */
214
+ export function addMonths(date: Date, noOfMonths: number): Date {
215
+ date = new Date('' + date);
216
+ const day: number = date.getDate();
217
+ date.setDate(1);
218
+ date.setMonth(date.getMonth() + noOfMonths);
219
+ date.setDate(Math.min(day, getMaxDays(date)));
220
+ return date;
221
+ }
222
+
223
+ /**
224
+ * Method to add no of years in date object
225
+ *
226
+ * @param {Date} date Accepts the date object
227
+ * @param {number} noOfYears Accepts the number of month count
228
+ * @returns {Date} Returns the date object
229
+ */
230
+ export function addYears(date: Date, noOfYears: number): Date {
231
+ date = new Date('' + date);
232
+ const day: number = date.getDate();
233
+ date.setDate(1);
234
+ date.setFullYear(date.getFullYear() + noOfYears);
235
+ date.setDate(Math.min(day, getMaxDays(date)));
236
+ return date;
237
+ }
238
+
239
+ /**
240
+ * Method to get start and end hours
241
+ *
242
+ * @param {Date} date Accepts the date object
243
+ * @param {Date} startHour Accepts the start hour date object
244
+ * @param {Date} endHour Accepts the end hour date object
245
+ * @returns {Object} Returns the start and end hour date objects
246
+ */
247
+ export function getStartEndHours(date: Date, startHour: Date, endHour: Date): Record<string, Date> {
248
+ const date1: Date = new Date(date.getTime());
249
+ date1.setHours(startHour.getHours());
250
+ date1.setMinutes(startHour.getMinutes());
251
+ date1.setSeconds(startHour.getSeconds());
252
+ let date2: Date = new Date(date.getTime());
253
+ if (endHour.getHours() === 0) {
254
+ date2 = addDays(date2, 1);
255
+ } else {
256
+ date2.setHours(endHour.getHours());
257
+ date2.setMinutes(endHour.getMinutes());
258
+ date2.setSeconds(endHour.getSeconds());
259
+ }
260
+ return { startHour: date1, endHour: date2 };
261
+ }
262
+
263
+ /**
264
+ * Method to get month last date
265
+ *
266
+ * @param {Date} date Accepts the date object
267
+ * @returns {number} Returns the month last date
268
+ */
269
+ export function getMaxDays(date: Date): number {
270
+ return lastDateOfMonth(date).getDate();
271
+ }
272
+
273
+ /**
274
+ * Method to get days count between two dates
275
+ *
276
+ * @param {Date} startDate Accepts the date object
277
+ * @param {Date} endDate Accepts the date object
278
+ * @returns {number} Returns the days count
279
+ */
280
+ export function getDaysCount(startDate: number, endDate: number): number {
281
+ const strTime: Date = resetTime(new Date(startDate));
282
+ const endTime: Date = resetTime(new Date(endDate));
283
+ return Math.round((endTime.getTime() - strTime.getTime()) / MS_PER_DAY);
284
+ }
285
+
286
+ /**
287
+ * Method to get date object from date string
288
+ *
289
+ * @param {string} date Accepts the date string
290
+ * @returns {Date} Returns the date object
291
+ */
292
+ export function getDateFromString(date: string): Date {
293
+ return date.indexOf('Date') !== -1 ? new Date(parseInt(date.match(/\d+/g).toString(), 10)) :
294
+ date.indexOf('T') !== -1 ? new Date(date) : new Date(date.replace(/-/g, '/'));
295
+ }
296
+
297
+ /** @private */
298
+ let scrollWidth: number = null;
299
+
300
+ /** @private */
301
+ let pixelRatio: number = null;
302
+
303
+ /**
304
+ * Method to get scrollbar width
305
+ *
306
+ * @returns {number} Returns the scrollbar width
307
+ * @private
308
+ */
309
+ export function getScrollBarWidth(): number {
310
+ if (scrollWidth !== null) { return scrollWidth; }
311
+ if (pixelRatio === null) {
312
+ pixelRatio = window.devicePixelRatio || window.screen.availWidth / document.documentElement.clientWidth;
313
+ }
314
+ const divNode: HTMLElement = createElement('div');
315
+ let value: number = 0;
316
+ divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';
317
+ document.body.appendChild(divNode);
318
+ const ratio: number = (devicePixelRatio) ? (devicePixelRatio.toFixed(2) === '1.10' || devicePixelRatio <= 1) ?
319
+ Math.ceil(devicePixelRatio % 1) : Math.floor(devicePixelRatio % 1) : 0;
320
+ value = (divNode.offsetWidth - divNode.clientWidth - ratio) | 0;
321
+ document.body.removeChild(divNode);
322
+ return scrollWidth = value;
323
+ }
324
+
325
+ /**
326
+ * Method to reset scrollbar width
327
+ *
328
+ * @private
329
+ * @returns {void}
330
+ */
331
+ export function resetScrollbarWidth(): void {
332
+ const zoomPixelRatio: number = window.devicePixelRatio || window.screen.availWidth / document.documentElement.clientWidth;
333
+ if (pixelRatio && pixelRatio !== zoomPixelRatio) {
334
+ scrollWidth = null;
335
+ pixelRatio = zoomPixelRatio;
336
+ }
337
+ }
338
+
339
+ /**
340
+ * Method to find the index from data collection
341
+ *
342
+ * @param {Object} data Accepts the data as object
343
+ * @param {string} field Accepts the field name
344
+ * @param {string} value Accepts the value name
345
+ * @param {Object} event Accepts the data as object
346
+ * @param {Object[]} resourceCollection Accepts the data collections
347
+ * @returns {number} Returns the index number
348
+ */
349
+ // eslint-disable-next-line max-len
350
+ export function findIndexInData(data: Record<string, any>[], field: string, value: string, event?: Record<string, any>, resourceCollection?: Record<string, any>[]): number {
351
+ for (let i: number = 0, length: number = data.length; i < length; i++) {
352
+ if (data[parseInt(i.toString(), 10)][`${field}`] === value) {
353
+ if (event) {
354
+ const field: string = resourceCollection.slice(-2)[0].field as string;
355
+ const res: string[] = (event[`${field}`] instanceof Array ? event[`${field}`] : [event[`${field}`]]) as string[];
356
+ const resData: string = res.join(',');
357
+ if (resData.includes(data[parseInt(i.toString(), 10)][(resourceCollection.slice(-1)[0] as any).groupIDField] as string)) {
358
+ return i;
359
+ }
360
+ } else {
361
+ return i;
362
+ }
363
+ }
364
+ }
365
+ return -1;
366
+ }
367
+
368
+ /**
369
+ * Method to get element outer height
370
+ *
371
+ * @param {HTMLElement} element Accepts the DOM element
372
+ * @returns {number} Returns the outer height of the given element
373
+ */
374
+ export function getOuterHeight(element: HTMLElement): number {
375
+ const style: CSSStyleDeclaration = getComputedStyle(element);
376
+ return element.offsetHeight + (parseInt(style.marginTop, 10) || 0) + (parseInt(style.marginBottom, 10) || 0);
377
+ }
378
+
379
+ /**
380
+ * Method to remove child elements
381
+ *
382
+ * @param {HTMLElement | Element} element Accepts the DOM element
383
+ * @returns {void}
384
+ */
385
+ export function removeChildren(element: HTMLElement | Element): void {
386
+ const elementChildren: HTMLElement[] | Element[] = [].slice.call(element.children);
387
+ for (const elementChild of elementChildren) {
388
+ element.removeChild(elementChild);
389
+ }
390
+ }
391
+
392
+ /**
393
+ * Method to check DST is present or not in date object
394
+ *
395
+ * @param {Date} date Accepts the date object
396
+ * @returns {boolean} Returns the boolean value for either DST is present or not
397
+ */
398
+ export function isDaylightSavingTime(date: Date): boolean {
399
+ const jan: Date = new Date(date.getFullYear(), 0, 1);
400
+ const jul: Date = new Date(date.getFullYear(), 6, 1);
401
+ return date.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
402
+ }
403
+
404
+ /**
405
+ * Method to get UTC time value from date
406
+ *
407
+ * @param {Date} date Accepts the date
408
+ * @returns {number} Returns the UTC time value
409
+ */
410
+ export function getUniversalTime(date: Date): number {
411
+ const year: number = date.getFullYear();
412
+ const month: number = date.getMonth();
413
+ const day: number = date.getDate();
414
+ const hours: number = date.getHours();
415
+ const minutes: number = date.getMinutes();
416
+ const seconds: number = date.getSeconds();
417
+ const milliseconds: number = date.getMilliseconds();
418
+ return Date.UTC(year, month, day, hours, minutes, seconds, milliseconds);
419
+ }
420
+
421
+ /**
422
+ * Method to check the device
423
+ *
424
+ * @returns {boolean} Returns the boolean value for either device is present or not.
425
+ */
426
+ export function isMobile(): boolean {
427
+ return window.navigator.userAgent.toLowerCase().indexOf('mobi') > -1;
428
+ }
429
+
430
+ /**
431
+ * Method to check the IPad device
432
+ *
433
+ * @returns {boolean} Returns the boolean value for either IPad device is present or not.
434
+ */
435
+ export function isIPadDevice(): boolean {
436
+ return window.navigator.userAgent.toLowerCase().indexOf('ipad') > -1;
437
+ }
438
+
439
+ /**
440
+ * Method to capitalize the first word in string
441
+ *
442
+ * @param {string} inputString Accepts the string value
443
+ * @param {string} type Accepts the string type
444
+ * @returns {string} Returns the output string
445
+ */
446
+ export function capitalizeFirstWord(inputString: string, type: string): string {
447
+ if (type === 'multiple') {
448
+ inputString = inputString.split(' ').map((e: string) => e.charAt(0).toLocaleUpperCase() + e.substring(1)).join(' ');
449
+ } else if (type === 'single') {
450
+ if (inputString[0] >= '0' && inputString[0] <= '9') {
451
+ const array: RegExpMatchArray = inputString.match(/[a-zA-Z]/);
452
+ inputString = isNullOrUndefined(array) ? inputString :
453
+ inputString.slice(0, array.index) + inputString[array.index].toLocaleUpperCase() + inputString.slice(array.index + 1);
454
+ }
455
+ inputString = inputString[0].toLocaleUpperCase() + inputString.slice(1);
456
+ }
457
+ return inputString;
458
+ }
459
+
460
+ /**
461
+ * Method to get element cell width
462
+ *
463
+ * @param {HTMLElement} element Accepts the DOM element
464
+ * @param {boolean} isTransformed Accepts the boolean value that indicates the status of the transform style applied to the element
465
+ * @returns {number} Returns the width of the given element
466
+ */
467
+ export function getElementWidth(element: HTMLElement, isTransformed?: boolean): number {
468
+ return isTransformed ? element.offsetWidth : element.getBoundingClientRect().width;
469
+ }
470
+
471
+ /**
472
+ * Method to get element cell Height
473
+ *
474
+ * @param {HTMLElement} element Accepts the DOM element
475
+ * @param {boolean} isTransformed Accepts the boolean value that indicates the status of the transform style applied to the element
476
+ * @returns {number} Returns the Height of the given element
477
+ */
478
+ export function getElementHeight(element: HTMLElement, isTransformed?: boolean): number {
479
+ return isTransformed ? element.offsetHeight : element.getBoundingClientRect().height;
480
+ }
481
+
482
+ /**
483
+ * Method to get element cell Top
484
+ *
485
+ * @param {HTMLElement} element Accepts the DOM element
486
+ * @param {boolean} isTransformed Accepts the boolean value that indicates the status of the transform style applied to the element
487
+ * @returns {number} Returns the top value of the given element
488
+ */
489
+ export function getElementTop(element: HTMLElement, isTransformed?: boolean): number {
490
+ return isTransformed ? element.offsetTop : element.getBoundingClientRect().top;
491
+ }
492
+
@@ -0,0 +1,15 @@
1
+ import { ViewBase } from '../renderer/view-base';
2
+ import { Schedule } from '../base/schedule';
3
+ export declare class AgendaBase extends ViewBase {
4
+ constructor(parent: Schedule);
5
+ createAgendaContentElement(type: string, listData: Record<string, any>[], aTd: Element, groupOrder?: string[], groupIndex?: number): Element;
6
+ createAppointment(event: Record<string, any>): HTMLElement[];
7
+ processAgendaEvents(events: Record<string, any>[]): Record<string, any>[];
8
+ wireEventActions(): void;
9
+ calculateResourceTableElement(tBody: Element, noOfDays: number, agendaDate: Date, agendaEnd?: Date): void;
10
+ private createResourceTableRow;
11
+ createDateHeaderElement(date: Date, groupIndex?: number): Element;
12
+ renderEmptyContent(tBody: Element, agendaDate: Date, hasNoEvents?: boolean): void;
13
+ createTableRowElement(date: Date, type: string): Element;
14
+ destroy(): void;
15
+ }