bromcom-ui 2.10.1-rc.10 → 2.10.1-rc.11

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 (231) hide show
  1. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  2. package/dist/bromcom-ui/p-01c19c5a.entry.js +5 -0
  3. package/dist/bromcom-ui/{p-16450a8b.entry.js → p-0985e7ba.entry.js} +1 -1
  4. package/dist/bromcom-ui/{p-424b7562.entry.js → p-10e70228.entry.js} +1 -1
  5. package/dist/bromcom-ui/{p-afde516e.entry.js → p-13c47eea.entry.js} +1 -1
  6. package/dist/bromcom-ui/p-140b6ce0.js +5 -0
  7. package/dist/bromcom-ui/{p-6153f889.entry.js → p-18020ef7.entry.js} +1 -1
  8. package/dist/bromcom-ui/{p-3f127ea5.entry.js → p-1b9bffba.entry.js} +1 -1
  9. package/dist/bromcom-ui/{p-18d28737.entry.js → p-30bfe3bd.entry.js} +1 -1
  10. package/dist/bromcom-ui/{p-c977ed98.entry.js → p-372ffe04.entry.js} +1 -1
  11. package/dist/bromcom-ui/{p-643a09b4.entry.js → p-3c87fd88.entry.js} +1 -1
  12. package/dist/bromcom-ui/p-4597ee14.entry.js +5 -0
  13. package/dist/bromcom-ui/p-47682d2b.entry.js +21 -0
  14. package/dist/bromcom-ui/p-4bace961.entry.js +5 -0
  15. package/dist/bromcom-ui/{p-4e436468.entry.js → p-5f419e20.entry.js} +1 -1
  16. package/dist/bromcom-ui/p-6132700e.entry.js +5 -0
  17. package/dist/bromcom-ui/{p-a58b2664.js → p-62840867.js} +1 -1
  18. package/dist/bromcom-ui/p-629bcf93.entry.js +5 -0
  19. package/dist/bromcom-ui/{p-9da1d897.entry.js → p-6a02ed0b.entry.js} +1 -1
  20. package/dist/bromcom-ui/p-6bfed79a.entry.js +5 -0
  21. package/dist/bromcom-ui/{p-9ac757e9.entry.js → p-6d83c8f6.entry.js} +1 -1
  22. package/dist/bromcom-ui/p-6de1c6ea.entry.js +5 -0
  23. package/dist/bromcom-ui/p-71cbd6f6.entry.js +5 -0
  24. package/dist/bromcom-ui/{p-a835bff0.entry.js → p-73d4bd1c.entry.js} +1 -1
  25. package/dist/bromcom-ui/p-7ada3462.entry.js +5 -0
  26. package/dist/bromcom-ui/p-7c0a3a3d.js +5 -0
  27. package/dist/bromcom-ui/{p-aab72ea1.entry.js → p-7d1dd1b9.entry.js} +1 -1
  28. package/dist/bromcom-ui/{p-ec36f5a0.entry.js → p-82331114.entry.js} +1 -1
  29. package/dist/bromcom-ui/p-8301a465.entry.js +5 -0
  30. package/dist/bromcom-ui/p-85565afb.js +5 -0
  31. package/dist/bromcom-ui/{p-073d177e.entry.js → p-88c38780.entry.js} +1 -1
  32. package/dist/bromcom-ui/{p-8c610886.js → p-8dc361a8.js} +1 -1
  33. package/dist/bromcom-ui/{p-79712823.entry.js → p-90510968.entry.js} +1 -1
  34. package/dist/bromcom-ui/{p-e2aaaece.js → p-92d1a4c9.js} +1 -1
  35. package/dist/bromcom-ui/{p-edbdd7dd.js → p-9398df85.js} +1 -1
  36. package/dist/bromcom-ui/{p-841f2b60.entry.js → p-9ec71162.entry.js} +1 -1
  37. package/dist/bromcom-ui/{p-17eb0140.entry.js → p-9f954c08.entry.js} +1 -1
  38. package/dist/bromcom-ui/p-9fbc30a6.entry.js +5 -0
  39. package/dist/bromcom-ui/{p-fed84581.js → p-a40d4f27.js} +1 -1
  40. package/dist/bromcom-ui/p-a8d23b66.entry.js +5 -0
  41. package/dist/bromcom-ui/p-a953375b.entry.js +5 -0
  42. package/dist/bromcom-ui/p-a95b18f2.entry.js +5 -0
  43. package/dist/bromcom-ui/{p-f077a1d7.entry.js → p-a9c8b43c.entry.js} +1 -1
  44. package/dist/bromcom-ui/p-baf565be.entry.js +5 -0
  45. package/dist/bromcom-ui/{p-5fc49f6f.entry.js → p-bffc5f8c.entry.js} +1 -1
  46. package/dist/bromcom-ui/{p-07e9b5e7.entry.js → p-c80014e3.entry.js} +1 -1
  47. package/dist/bromcom-ui/p-c852c8fe.entry.js +5 -0
  48. package/dist/bromcom-ui/{p-ec992ac3.entry.js → p-ca788dc4.entry.js} +1 -1
  49. package/dist/bromcom-ui/p-ca8a4fc8.entry.js +5 -0
  50. package/dist/bromcom-ui/p-cc6c6f9e.entry.js +5 -0
  51. package/dist/bromcom-ui/p-d283e83e.entry.js +5 -0
  52. package/dist/bromcom-ui/p-dbad3126.entry.js +5 -0
  53. package/dist/bromcom-ui/{p-a1477028.js → p-de2272c5.js} +1 -1
  54. package/dist/bromcom-ui/{p-60a12878.entry.js → p-df444847.entry.js} +1 -1
  55. package/dist/bromcom-ui/p-ee4845ac.entry.js +5 -0
  56. package/dist/bromcom-ui/{p-da5fdda2.entry.js → p-ef829d33.entry.js} +1 -1
  57. package/dist/bromcom-ui/{p-7e2da99e.entry.js → p-f24b096b.entry.js} +1 -1
  58. package/dist/bromcom-ui/{p-8e772077.entry.js → p-f372306f.entry.js} +1 -1
  59. package/dist/bromcom-ui/p-f818d2a9.entry.js +5 -0
  60. package/dist/bromcom-ui/{p-5bf620b2.entry.js → p-f93bf6db.entry.js} +1 -1
  61. package/dist/bromcom-ui/{p-594953e7.entry.js → p-fc18af27.entry.js} +1 -1
  62. package/dist/cjs/bcm-accordion.cjs.entry.js +2 -2
  63. package/dist/cjs/bcm-alert.cjs.entry.js +2 -2
  64. package/dist/cjs/bcm-attendance.cjs.entry.js +2 -2
  65. package/dist/cjs/bcm-avatar_2.cjs.entry.js +4 -5
  66. package/dist/cjs/bcm-breadcrumb.cjs.entry.js +2 -2
  67. package/dist/cjs/bcm-button-group.cjs.entry.js +2 -2
  68. package/dist/cjs/{bcm-button_15.cjs.entry.js → bcm-button_18.cjs.entry.js} +1990 -18
  69. package/dist/cjs/bcm-caption.cjs.entry.js +4 -5
  70. package/dist/cjs/bcm-card.cjs.entry.js +2 -2
  71. package/dist/cjs/bcm-checkbox-group.cjs.entry.js +2 -2
  72. package/dist/cjs/bcm-checkbox-lite_9.cjs.entry.js +2 -2
  73. package/dist/cjs/bcm-chip-group.cjs.entry.js +4 -5
  74. package/dist/cjs/bcm-chip.cjs.entry.js +2 -2
  75. package/dist/cjs/bcm-collapse.cjs.entry.js +2 -2
  76. package/dist/cjs/bcm-color-input.cjs.entry.js +4 -5
  77. package/dist/cjs/bcm-default.cjs.entry.js +2 -2
  78. package/dist/cjs/bcm-drawer.cjs.entry.js +4 -5
  79. package/dist/cjs/bcm-dropdown.cjs.entry.js +3 -3
  80. package/dist/cjs/bcm-expansion-panel.cjs.entry.js +2 -2
  81. package/dist/cjs/bcm-form-2.cjs.entry.js +2 -2
  82. package/dist/cjs/bcm-input-custom.cjs.entry.js +2 -2
  83. package/dist/cjs/bcm-input-dropdown.cjs.entry.js +4 -5
  84. package/dist/cjs/bcm-item.cjs.entry.js +2 -2
  85. package/dist/cjs/bcm-items.cjs.entry.js +2 -2
  86. package/dist/cjs/bcm-menu.cjs.entry.js +5 -6
  87. package/dist/cjs/bcm-modal-2-footer.cjs.entry.js +4 -5
  88. package/dist/cjs/bcm-modal-2-header.cjs.entry.js +4 -5
  89. package/dist/cjs/bcm-modal-2.cjs.entry.js +4 -5
  90. package/dist/cjs/bcm-modal.cjs.entry.js +2 -2
  91. package/dist/cjs/bcm-number-input.cjs.entry.js +4 -5
  92. package/dist/cjs/bcm-popconfirm-box.cjs.entry.js +2 -2
  93. package/dist/cjs/bcm-popconfirm.cjs.entry.js +2 -2
  94. package/dist/cjs/bcm-popover.cjs.entry.js +4 -5
  95. package/dist/cjs/bcm-progress.cjs.entry.js +2 -2
  96. package/dist/cjs/bcm-radio-group.cjs.entry.js +4 -5
  97. package/dist/cjs/bcm-radio.cjs.entry.js +4 -5
  98. package/dist/cjs/bcm-range.cjs.entry.js +2 -2
  99. package/dist/cjs/bcm-shortcut.cjs.entry.js +4 -5
  100. package/dist/cjs/bcm-skeleton.cjs.entry.js +4 -5
  101. package/dist/cjs/bcm-step.cjs.entry.js +3 -3
  102. package/dist/cjs/bcm-stepper.cjs.entry.js +5 -6
  103. package/dist/cjs/bcm-tab-group.cjs.entry.js +4 -5
  104. package/dist/cjs/bcm-tab-item-header.cjs.entry.js +4 -5
  105. package/dist/cjs/bcm-tab-item.cjs.entry.js +4 -5
  106. package/dist/cjs/bcm-table.cjs.entry.js +4 -5
  107. package/dist/cjs/bcm-tag.cjs.entry.js +3 -3
  108. package/dist/cjs/bcm-textarea.cjs.entry.js +3 -3
  109. package/dist/cjs/bcm-time-picker.cjs.entry.js +2 -2
  110. package/dist/cjs/bcm-toast.cjs.entry.js +2 -2
  111. package/dist/cjs/bromcom-ui.cjs.js +3 -3
  112. package/dist/cjs/{generate-c3a6c8c7.js → generate-8f2a5b22.js} +1 -1
  113. package/dist/cjs/{global-9e8b5009.js → global-6e3108be.js} +1 -1
  114. package/dist/cjs/{input-template-8eeb94e7.js → input-template-866a71d3.js} +1 -1
  115. package/dist/cjs/{json-parse-decarator-0932bec0.js → json-parse-decarator-f30bb239.js} +1 -1
  116. package/dist/cjs/loader.cjs.js +3 -3
  117. package/dist/cjs/{number-helper-4e902d31.js → number-helper-57ea679e.js} +1 -1
  118. package/dist/cjs/old-bcm-popover-box.cjs.entry.js +3 -3
  119. package/dist/cjs/old-bcm-popover.cjs.entry.js +2 -2
  120. package/dist/cjs/{package-b23f7b7f.js → package-9f43976f.js} +1 -1
  121. package/dist/cjs/{stepper-states-cb2339c3.js → stepper-states-1199c518.js} +1 -1
  122. package/dist/cjs/{tooltip-helper-4ddec3b4.js → tooltip-helper-f55fc832.js} +3 -4
  123. package/dist/cjs/{validators-e2155072.js → validators-463a67ba.js} +6 -1
  124. package/dist/collection/components/atoms/label/label.js +1 -1
  125. package/dist/collection/components/organism/datetime-picker/datetime-picker.css +47 -0
  126. package/dist/collection/components/other_deprecated/old-input/old-input.css +47 -0
  127. package/dist/components/datetime-picker.js +1 -1
  128. package/dist/components/generate.js +1 -1
  129. package/dist/components/label.js +1 -1
  130. package/dist/components/old-input.js +1 -1
  131. package/dist/esm/bcm-accordion.entry.js +2 -2
  132. package/dist/esm/bcm-alert.entry.js +2 -2
  133. package/dist/esm/bcm-attendance.entry.js +2 -2
  134. package/dist/esm/bcm-avatar_2.entry.js +4 -5
  135. package/dist/esm/bcm-breadcrumb.entry.js +2 -2
  136. package/dist/esm/bcm-button-group.entry.js +2 -2
  137. package/dist/esm/{bcm-button_15.entry.js → bcm-button_18.entry.js} +1989 -20
  138. package/dist/esm/bcm-caption.entry.js +4 -5
  139. package/dist/esm/bcm-card.entry.js +2 -2
  140. package/dist/esm/bcm-checkbox-group.entry.js +2 -2
  141. package/dist/esm/bcm-checkbox-lite_9.entry.js +2 -2
  142. package/dist/esm/bcm-chip-group.entry.js +4 -5
  143. package/dist/esm/bcm-chip.entry.js +2 -2
  144. package/dist/esm/bcm-collapse.entry.js +2 -2
  145. package/dist/esm/bcm-color-input.entry.js +4 -5
  146. package/dist/esm/bcm-default.entry.js +2 -2
  147. package/dist/esm/bcm-drawer.entry.js +4 -5
  148. package/dist/esm/bcm-dropdown.entry.js +3 -3
  149. package/dist/esm/bcm-expansion-panel.entry.js +2 -2
  150. package/dist/esm/bcm-form-2.entry.js +2 -2
  151. package/dist/esm/bcm-input-custom.entry.js +2 -2
  152. package/dist/esm/bcm-input-dropdown.entry.js +4 -5
  153. package/dist/esm/bcm-item.entry.js +2 -2
  154. package/dist/esm/bcm-items.entry.js +2 -2
  155. package/dist/esm/bcm-menu.entry.js +5 -6
  156. package/dist/esm/bcm-modal-2-footer.entry.js +4 -5
  157. package/dist/esm/bcm-modal-2-header.entry.js +4 -5
  158. package/dist/esm/bcm-modal-2.entry.js +4 -5
  159. package/dist/esm/bcm-modal.entry.js +2 -2
  160. package/dist/esm/bcm-number-input.entry.js +4 -5
  161. package/dist/esm/bcm-popconfirm-box.entry.js +2 -2
  162. package/dist/esm/bcm-popconfirm.entry.js +2 -2
  163. package/dist/esm/bcm-popover.entry.js +4 -5
  164. package/dist/esm/bcm-progress.entry.js +2 -2
  165. package/dist/esm/bcm-radio-group.entry.js +4 -5
  166. package/dist/esm/bcm-radio.entry.js +4 -5
  167. package/dist/esm/bcm-range.entry.js +2 -2
  168. package/dist/esm/bcm-shortcut.entry.js +4 -5
  169. package/dist/esm/bcm-skeleton.entry.js +4 -5
  170. package/dist/esm/bcm-step.entry.js +3 -3
  171. package/dist/esm/bcm-stepper.entry.js +5 -6
  172. package/dist/esm/bcm-tab-group.entry.js +4 -5
  173. package/dist/esm/bcm-tab-item-header.entry.js +4 -5
  174. package/dist/esm/bcm-tab-item.entry.js +4 -5
  175. package/dist/esm/bcm-table.entry.js +4 -5
  176. package/dist/esm/bcm-tag.entry.js +3 -3
  177. package/dist/esm/bcm-textarea.entry.js +3 -3
  178. package/dist/esm/bcm-time-picker.entry.js +2 -2
  179. package/dist/esm/bcm-toast.entry.js +2 -2
  180. package/dist/esm/bromcom-ui.js +3 -3
  181. package/dist/esm/{generate-80f589b2.js → generate-c1065765.js} +1 -1
  182. package/dist/esm/{global-9afe304c.js → global-6365ce83.js} +1 -1
  183. package/dist/esm/{input-template-a5d07ba6.js → input-template-74229cd2.js} +1 -1
  184. package/dist/esm/{json-parse-decarator-5195f510.js → json-parse-decarator-a301c8b7.js} +1 -1
  185. package/dist/esm/loader.js +3 -3
  186. package/dist/esm/{number-helper-aeb5881f.js → number-helper-d42f27d5.js} +1 -1
  187. package/dist/esm/old-bcm-popover-box.entry.js +3 -3
  188. package/dist/esm/old-bcm-popover.entry.js +2 -2
  189. package/dist/esm/{package-5e39e390.js → package-5c7049c1.js} +1 -1
  190. package/dist/esm/{stepper-states-97a648ff.js → stepper-states-39645921.js} +1 -1
  191. package/dist/esm/{tooltip-helper-d339c58a.js → tooltip-helper-61f3e8cb.js} +3 -4
  192. package/dist/esm/{validators-b5e106d5.js → validators-3881959b.js} +6 -2
  193. package/package.json +1 -1
  194. package/dist/bromcom-ui/p-0fc73cca.entry.js +0 -5
  195. package/dist/bromcom-ui/p-175eb1c7.entry.js +0 -5
  196. package/dist/bromcom-ui/p-17c0a72a.entry.js +0 -5
  197. package/dist/bromcom-ui/p-1f5ca41b.entry.js +0 -5
  198. package/dist/bromcom-ui/p-21cb3cfe.entry.js +0 -5
  199. package/dist/bromcom-ui/p-23eb79ac.entry.js +0 -5
  200. package/dist/bromcom-ui/p-2d965b60.entry.js +0 -5
  201. package/dist/bromcom-ui/p-32d93221.entry.js +0 -21
  202. package/dist/bromcom-ui/p-33513345.entry.js +0 -5
  203. package/dist/bromcom-ui/p-3b5c36e8.entry.js +0 -5
  204. package/dist/bromcom-ui/p-40b85b9b.entry.js +0 -5
  205. package/dist/bromcom-ui/p-43a1f84c.entry.js +0 -5
  206. package/dist/bromcom-ui/p-52b7fc24.js +0 -5
  207. package/dist/bromcom-ui/p-56187d14.entry.js +0 -5
  208. package/dist/bromcom-ui/p-58d5775f.entry.js +0 -5
  209. package/dist/bromcom-ui/p-5b96272e.entry.js +0 -5
  210. package/dist/bromcom-ui/p-61314a43.js +0 -5
  211. package/dist/bromcom-ui/p-626a65e9.js +0 -5
  212. package/dist/bromcom-ui/p-64999c43.entry.js +0 -5
  213. package/dist/bromcom-ui/p-8c3a6509.entry.js +0 -5
  214. package/dist/bromcom-ui/p-8fbdb72f.entry.js +0 -5
  215. package/dist/bromcom-ui/p-910c935f.entry.js +0 -5
  216. package/dist/bromcom-ui/p-9f1e6daa.entry.js +0 -5
  217. package/dist/bromcom-ui/p-a889681e.entry.js +0 -5
  218. package/dist/bromcom-ui/p-cfd52d5f.entry.js +0 -5
  219. package/dist/bromcom-ui/p-e19a8e73.entry.js +0 -5
  220. package/dist/bromcom-ui/p-e6faa2bb.entry.js +0 -5
  221. package/dist/bromcom-ui/p-ecd8d70f.entry.js +0 -5
  222. package/dist/bromcom-ui/p-f2776268.entry.js +0 -5
  223. package/dist/bromcom-ui/p-f83b3048.js +0 -5
  224. package/dist/cjs/bcm-date-picker.cjs.entry.js +0 -182
  225. package/dist/cjs/bcm-datetime-picker.cjs.entry.js +0 -1450
  226. package/dist/cjs/bcm-old-input.cjs.entry.js +0 -397
  227. package/dist/cjs/datetime-helper-eaf4fadb.js +0 -11
  228. package/dist/esm/bcm-date-picker.entry.js +0 -178
  229. package/dist/esm/bcm-datetime-picker.entry.js +0 -1446
  230. package/dist/esm/bcm-old-input.entry.js +0 -393
  231. package/dist/esm/datetime-helper-df25808a.js +0 -9
@@ -1,1450 +0,0 @@
1
- /*!
2
- * Built with Stencil
3
- * Copyright (c) Bromcom.
4
- */
5
- 'use strict';
6
-
7
- Object.defineProperty(exports, '__esModule', { value: true });
8
-
9
- const index = require('./index-c591ecec.js');
10
- const elementDragger = require('./element-dragger-a8562f82.js');
11
- const index$1 = require('./index-95ae50d0.js');
12
- const datetimeHelper = require('./datetime-helper-eaf4fadb.js');
13
- const utils = require('./utils-fc077139.js');
14
- const generate = require('./generate-c3a6c8c7.js');
15
- const bcm = require('./bcm-3c58a6d5.js');
16
- const popoverPlacement = require('./popover-placement-9b4b4153.js');
17
- const labelTemplate = require('./label-template-a6f51ef2.js');
18
- const isLoadDecorator = require('./is-load-decorator-15036f37.js');
19
- require('./_commonjsHelpers-ed84c3ca.js');
20
- require('./package-b23f7b7f.js');
21
- require('./colors-078851ec.js');
22
- require('./string-helper-3212f4ea.js');
23
-
24
- var Months;
25
- (function (Months) {
26
- Months["january"] = "january";
27
- Months["february"] = "february";
28
- Months["march"] = "march";
29
- Months["april"] = "april";
30
- Months["may"] = "may";
31
- Months["june"] = "june";
32
- Months["july"] = "july";
33
- Months["august"] = "august";
34
- Months["september"] = "september";
35
- Months["october"] = "october";
36
- Months["november"] = "november";
37
- Months["december"] = "december";
38
- })(Months || (Months = {}));
39
- var Days;
40
- (function (Days) {
41
- Days["sunday"] = "sunday";
42
- Days["monday"] = "monday";
43
- Days["tuesday"] = "tuesday";
44
- Days["wednesday"] = "wednesday";
45
- Days["thursday"] = "thursday";
46
- Days["friday"] = "friday";
47
- Days["saturday"] = "saturday";
48
- })(Days || (Days = {}));
49
- /**
50
- * 'type' prop predefined values
51
- */
52
- var Types;
53
- (function (Types) {
54
- Types["datetime"] = "datetime";
55
- Types["range"] = "range";
56
- Types["date"] = "date";
57
- Types["time"] = "time";
58
- })(Types || (Types = {}));
59
-
60
- const datetimePickerCss = "@import url(\"https://fonts.googleapis.com/css?family=Roboto:400,500\");@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@200;400;500;600&display=swap\"); .size-1{font-size:12px;line-height:20px}.size-2{font-size:14px;line-height:22px}.size-3{font-size:16px;line-height:24px}.size-4{font-size:20px;line-height:28px}.size-5{font-size:24px;line-height:32px}.size-6{font-size:30px;line-height:38px}.size-7{font-size:38px;line-height:46px}.size-8{font-size:46px;line-height:54px}.size-9{font-size:56px;line-height:64px}.weight-regular{font-weight:400}.weight-semibold{font-weight:500}.input-size-large{height:40px}.input-size-medium{height:32px}.input-size-small{height:24px}.resize-none textarea{resize:none}.resize-vertical textarea{resize:vertical}.resize-auto textarea{height:auto;resize:none}.textarea-size-large{padding:4px 0 0 4px;min-height:40px}.textarea-size-large .bcm-input-element{min-height:calc((40px - 8px) + 2px)}.textarea-size-large .input-clear-button{height:calc( 40px - 16px );top:8px;padding:0;margin-right:8px}.textarea-size-medium{padding:4px 0 0 4px;min-height:32px}.textarea-size-medium .bcm-input-element{min-height:calc((32px - 8px) + 2px)}.textarea-size-medium .input-clear-button{height:calc( 32px - 16px );top:8px;padding:0;margin-right:8px}.textarea-size-small{padding:0px 0 0 4px;min-height:24px}.textarea-size-small .bcm-input-element{min-height:calc((24px - 8px) + 2px)}.textarea-size-small .input-clear-button{height:calc( 24px - 16px );top:8px;padding:0;margin-right:8px}.bcm-input[no-margin]{margin:0}.bcm-textarea[no-margin]{margin:0}.bcm-switch[no-margin]{margin:0}.bcm-checkbox[no-margin]{margin:0}.bcm-radio-group[no-margin]{margin:0}.bcm-checkbox-group[no-margin]{margin:0}.bcm-range[no-margin]{margin:0}.bcm-form[no-margin]{margin:0}.bcm-form-group[no-margin]{margin:0}.bcm-list[no-margin]{margin:0}.bcm-colorpicker[no-margin]{margin:0}.bcm-date-picker[no-margin]{margin:0}.bcm-time-picker[no-margin]{margin:0}.bcm-datetime-picker[no-margin]{margin:0}.bcm-select[no-margin]{margin:0}.bcm-listbox[no-margin]{margin:0}*{box-sizing:border-box}:host{display:inline-flex;flex-direction:column;position:relative;width:100%;max-width:256px;margin:0;margin-bottom:8px}:host(.full-width){max-width:100%}:host(.no-margin){margin:0}:host(.hidden){display:none}:host(.linked-component){display:none}.toggle{cursor:pointer}.toggle.disabled{cursor:not-allowed}.modules{display:flex}.picker-label{user-select:none;line-height:1}.datetime-picker{position:absolute;top:-1000px;display:inline-flex;flex-direction:column;box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);opacity:0;visibility:hidden;transition:transform 0.2s ease, opacity 0.3s ease;transform:scale(0.8) translateY(-100px);background-color:#ffffff;min-height:356px;max-height:356px;box-sizing:border-box;z-index:-1000}.datetime-picker.alignment-left{left:0}.datetime-picker.alignment-right{right:0}.datetime-picker.open{top:calc(100% - 28px);z-index:10000;opacity:1;visibility:visible;transform:scale(1) translateY(0)}.datetime-picker.open.no-caption{top:100%}.actions{display:flex;align-items:center;justify-content:space-between;padding:8px;margin-top:auto;border-top:1px solid var(--bcm-color-grey-6)}.actions .current-date{font-size:14px;line-height:22px;color:var(--bcm-color-prime-blue-6);text-transform:capitalize}.date-container+.time-container{border-left:1px solid #cecece}.time-container{width:185px}.time-container .bcm-datetime-picker__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;max-height:60px;border-bottom:1px solid var(--bcm-color-grey-4)}.time-container .bcm-datetime-picker__header .now{font-size:14px;line-height:22px;cursor:pointer;color:var(--bcm-color-prime-blue-6);user-select:none}.time-container .bcm-datetime-picker__content{position:relative;display:flex}.time-container .hours,.time-container .minutes,.time-container .time-period{position:relative;flex:1 1 100%;max-width:100%;height:280px;overflow:hidden}.time-container .hours .items>span,.time-container .minutes .items>span,.time-container .time-period .items>span{font-size:14px;color:var(--bcm-color-grey-8)}.time-container .hours .items>span.selected,.time-container .minutes .items>span.selected,.time-container .time-period .items>span.selected{color:var(--bcm-color-prime-blue-6)}.date-container{width:364px;}.date-container .bcm-datetime-picker__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;max-height:60px;border-bottom:1px solid var(--bcm-color-grey-4)}.date-container .bcm-datetime-picker__header .month-year-wrapper{display:flex;align-items:center;justify-content:center;margin:0 4px;min-width:125px}.date-container .bcm-datetime-picker__header .month-year{font-size:16px;line-height:24px}.date-container .bcm-datetime-picker__header .month-year{display:flex;align-items:center}.date-container .bcm-datetime-picker__header .month-year button{display:flex;align-items:center;box-shadow:none;background:transparent;outline:none;appearance:none;border:none;color:var(--bcm-color-prime-blue-6);cursor:pointer}.date-container .bcm-datetime-picker__header .month{text-transform:capitalize}.date-container .bcm-datetime-picker__header .year{padding-left:4px}.date-container .bcm-datetime-picker__header .today{font-size:14px;line-height:22px;cursor:pointer;color:var(--bcm-color-prime-blue-6);user-select:none}.date-container .bcm-datetime-picker__content{display:flex}.date-container .years{position:relative;flex:0 0 70px;max-width:70px;height:280px;overflow:hidden;background-color:var(--bcm-color-grey-2)}.date-container .days{width:100%}.date-container .day-numbers,.date-container .day-labels{display:grid;grid-template-columns:repeat(7, 1fr)}.date-container .day-numbers{padding:24px 24px}.date-container .day-numbers>span,.date-container .day-labels span{text-align:center}.date-container .day-numbers>span{position:relative;padding-bottom:100%;cursor:pointer}.date-container .day-numbers>span.not-this-month{color:var(--bcm-color-grey-4)}.date-container .day-numbers>span.is-weekend{color:var(--bcm-color-prime-blue-3)}.date-container .day-numbers>span.is-disabled-date:not(.today){color:var(--bcm-color-grey-4);cursor:not-allowed}.date-container .day-numbers>span.is-disabled-date:not(.today):before{opacity:0 !important}.date-container .day-numbers>span.today{color:var(--bcm-color-prime-blue-6)}.date-container .day-numbers>span.today:before{opacity:1;background-color:var(--bcm-color-prime-blue-2);border:1px solid var(--bcm-color-prime-blue-6)}.date-container .day-numbers>span.selected-start{background:linear-gradient(90deg, white 50%, #8abde2 50%) !important}.date-container .day-numbers>span.selected-end{background:linear-gradient(90deg, #8abde2 50%, white 50%) !important}.date-container .day-numbers>span.range{background:#8abde2}.date-container .day-numbers>span.range:not(.today){color:#ffffff}.date-container .day-numbers>span.range:not(.today):before{background-color:var(--bcm-color-prime-blue-6)}.date-container .day-numbers>span.range.is-weekend:not(.today){color:var(--bcm-color-prime-blue-2)}.date-container .day-numbers>span.selected,.date-container .day-numbers>span.selected-end{color:#ffffff}.date-container .day-numbers>span.selected:before,.date-container .day-numbers>span.selected-end:before{opacity:1;background-color:var(--bcm-color-prime-blue-6)}.date-container .day-numbers.start-1>span:first-child{grid-column:1}.date-container .day-numbers.start-2>span:first-child{grid-column:2}.date-container .day-numbers.start-3>span:first-child{grid-column:3}.date-container .day-numbers.start-4>span:first-child{grid-column:4}.date-container .day-numbers.start-5>span:first-child{grid-column:5}.date-container .day-numbers.start-6>span:first-child{grid-column:6}.date-container .day-numbers.start-7>span:first-child{grid-column:7}.date-container .day-numbers>span:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;background-color:var(--bcm-color-grey-4);opacity:0;box-sizing:border-box}.date-container .day-numbers>span:hover.not-this-month:not(.is-weekend){color:var(--bcm-color-grey-6)}.date-container .day-numbers>span:hover:before{opacity:1}.date-container .day-numbers .number{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.date-container .day-labels{padding:24px 40px 0 40px}.date-container .day-labels span{font-size:12px;color:var(--bcm-color-grey-6)}.date-container .day-labels span:nth-child(7n+6),.date-container .day-labels span:nth-child(7n+7){color:var(--bcm-color-prime-blue-3)}.years .items,.hours .items,.minutes .items,.time-period .items{position:relative;display:flex;flex-direction:column;z-index:0;transform:translateY(0);scroll-behavior:smooth}.years .items>span,.hours .items>span,.minutes .items>span,.time-period .items>span{text-align:center;font-size:12px;min-height:26px;max-height:26px;line-height:26px;color:var(--bcm-color-grey-8);user-select:none}.years:before,.years:after,.hours:before,.hours:after,.minutes:before,.minutes:after,.time-period:before,.time-period:after{content:\"\";position:absolute;left:0;width:100%;height:40px}.years:before,.hours:before,.minutes:before,.time-period:before{top:-40px;box-shadow:0 10px 100px 70px #ffffff;z-index:1}.years:after,.hours:after,.minutes:after,.time-period:after{bottom:-40px;box-shadow:0 -10px 100px 70px #ffffff;z-index:2}.select-strip{position:absolute;width:100%;top:50%;left:0;transform:translateY(-50%);min-height:26px;max-height:26px;border:1px solid var(--bcm-color-grey-5);border-left:0;border-right:0;pointer-events:none;box-sizing:border-box}.picker-input-container{display:flex;flex-direction:column;align-items:flex-start;justify-content:stretch}";
61
-
62
- var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
63
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
64
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
65
- r = Reflect.decorate(decorators, target, key, desc);
66
- else
67
- for (var i = decorators.length - 1; i >= 0; i--)
68
- if (d = decorators[i])
69
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
70
- return c > 3 && r && Object.defineProperty(target, key, r), r;
71
- };
72
- const stringify = JSON.stringify;
73
- const BcmDatetimePicker = class {
74
- constructor(hostRef) {
75
- index.registerInstance(this, hostRef);
76
- this.load = index.createEvent(this, "bcm-load", 7);
77
- this.change = index.createEvent(this, "bcm-change", 7);
78
- this.bcmOpen = index.createEvent(this, "bcm-open", 7);
79
- this.inputId = null;
80
- this.emptyState = false;
81
- this.initialized = false;
82
- this.disabledDatesList = { min: null, max: null, dates: [] };
83
- this.dayNumbers = [];
84
- this.valueText = null;
85
- this.dataIsValid = false;
86
- this._id = generate.Generate.UID();
87
- this.date = new Date();
88
- this.endDate = null;
89
- this.type = Types.datetime;
90
- this.disabled = false;
91
- this.disabledDates = '';
92
- this.value = null;
93
- this._open = false;
94
- this.hidden = false;
95
- this.name = undefined;
96
- this.fullWidth = false;
97
- this.required = false;
98
- this.label = undefined;
99
- this.placeholder = undefined;
100
- this.minYear = 1900;
101
- this.maxYear = 2200;
102
- this.noCaption = false;
103
- this.noMargin = false;
104
- this.captionError = undefined;
105
- this.caption = '';
106
- this.captionType = 'default';
107
- this.alignment = undefined;
108
- this.placement = bcm.Bcm.Placement['bottom-start'];
109
- this.linkedComponent = undefined;
110
- this.clearable = false;
111
- this.years = [];
112
- this.hours = [];
113
- this.minutes = [];
114
- this.hasDateModule = false;
115
- this.hasTimeModule = false;
116
- this.renderDate = undefined;
117
- this.selectedDate = undefined;
118
- this.selectedEndDate = undefined;
119
- this.error = false;
120
- this.errorText = '';
121
- this.tick = {};
122
- }
123
- markForCheck() {
124
- this.tick = generate.Generate.UID();
125
- }
126
- openChanged() {
127
- this.bcmOpen.emit(this._open);
128
- }
129
- /**
130
- * @ComponentMethod
131
- */
132
- componentWillLoad() {
133
- this.inputId = 'picker-input-' + this._id;
134
- this.hasDateModule = this.type === Types.datetime
135
- || this.type === Types.date
136
- || this.type === Types.range;
137
- this.hasTimeModule = this.type === Types.datetime
138
- || this.type === Types.time;
139
- this.prepareDisabledDates();
140
- this.setData();
141
- // Generate year, hour, minute sequences
142
- // #
143
- if (!this.initialized) {
144
- for (let i = this.minYear; i <= this.maxYear; i++)
145
- this.years.push(i);
146
- for (let i = 0; i <= 23; i++)
147
- this.hours.push(i);
148
- for (let i = 0; i <= 59; i++)
149
- this.minutes.push(i);
150
- this.load.emit();
151
- }
152
- this.initialized = true;
153
- }
154
- /**
155
- * @ComponentMethod
156
- */
157
- componentDidRender() {
158
- // Create years selection
159
- // #
160
- if (this.hasDateModule && !this.yearsDragger) {
161
- this.createDragSelection('years', this.yearsElement, this.yearsWrapperElement, this.yearsStripElement, elementDragger.DragDirections.y);
162
- this.createWheelChange('years', this.yearsWrapperElement, this.yearsStripElement);
163
- this.setDragSelection('years', this.currentDate.year);
164
- }
165
- // Create hours selection
166
- // #
167
- if (this.hasTimeModule && !this.hoursDragger) {
168
- this.createDragSelection('hours', this.hoursElement, this.hoursWrapperElement, this.timeStripElement, elementDragger.DragDirections.y);
169
- this.createWheelChange('hours', this.hoursWrapperElement, this.timeStripElement);
170
- this.setDragSelection('hours', this.currentDate.hour);
171
- }
172
- // Create minutes selection
173
- // #
174
- if (this.hasTimeModule && !this.minutesDragger) {
175
- this.createDragSelection('minutes', this.minutesElement, this.minutesWrapperElement, this.timeStripElement, elementDragger.DragDirections.y);
176
- this.createWheelChange('minutes', this.minutesWrapperElement, this.timeStripElement);
177
- this.setDragSelection('minutes', this.currentDate.minute);
178
- }
179
- }
180
- /**
181
- * @desc
182
- * @param newValue
183
- */
184
- renderDateChange() {
185
- if (!this.initialized)
186
- return;
187
- this.setData();
188
- this.hasDateModule && this.setDragSelection('years', this.currentDate.year);
189
- }
190
- /**
191
- * @desc
192
- * @param newValue
193
- */
194
- openChange(newValue) {
195
- if (newValue) {
196
- this.calculateLocation();
197
- // Create years selection
198
- // #
199
- if (this.hasDateModule) {
200
- this.createDragSelection('years', this.yearsElement, this.yearsWrapperElement, this.yearsStripElement, elementDragger.DragDirections.y);
201
- this.createWheelChange('years', this.yearsWrapperElement, this.yearsStripElement);
202
- this.setDragSelection('years', this.currentDate.year);
203
- }
204
- // Create hours selection
205
- // #
206
- if (this.hasTimeModule) {
207
- this.createDragSelection('hours', this.hoursElement, this.hoursWrapperElement, this.timeStripElement, elementDragger.DragDirections.y);
208
- this.createWheelChange('hours', this.hoursWrapperElement, this.timeStripElement);
209
- this.setDragSelection('hours', this.currentDate.hour, true);
210
- }
211
- // Create minutes selection
212
- // #
213
- if (this.hasTimeModule) {
214
- this.createDragSelection('minutes', this.minutesElement, this.minutesWrapperElement, this.timeStripElement, elementDragger.DragDirections.y);
215
- this.createWheelChange('minutes', this.minutesWrapperElement, this.timeStripElement);
216
- this.setDragSelection('minutes', this.currentDate.minute, true);
217
- }
218
- this.markForCheck();
219
- index.forceUpdate(this.el);
220
- }
221
- }
222
- /**
223
- * @desc
224
- * @param newValue
225
- */
226
- valueChange(newValue, oldValue) {
227
- const errorObject1 = { isValid: false, value: this.valueText };
228
- const errorObject2 = { isValid: false, value: this.inputElement.value };
229
- if (!newValue) {
230
- this.change.emit();
231
- return;
232
- }
233
- if (this.type !== Types.range && this.error) {
234
- this.change.emit(errorObject2);
235
- return;
236
- }
237
- try {
238
- if ((oldValue && stringify(newValue.dateObject) !== stringify(oldValue.dateObject)) || (!oldValue && newValue)) {
239
- if (this.type === Types.date || this.type === Types.datetime) {
240
- this.change.emit(newValue);
241
- }
242
- if (this.type === Types.time) {
243
- this.change.emit(newValue);
244
- // this.change.emit({
245
- // time: newValue.time,
246
- // timeObject: newValue.dateObject
247
- // })
248
- }
249
- if (this.type === Types.range) {
250
- const dateObject = newValue.dateObject;
251
- if (dateObject.start.date && dateObject.end.date) {
252
- if (newValue.isValid) {
253
- this.change.emit({
254
- isValid: newValue.isValid,
255
- value: newValue.value,
256
- start: dateObject.start,
257
- end: dateObject.end
258
- });
259
- }
260
- }
261
- else {
262
- this.change.emit(errorObject1);
263
- }
264
- }
265
- }
266
- }
267
- catch (exception) { }
268
- }
269
- /**
270
- * @desc
271
- * @param newValue -
272
- */
273
- disabledDatesChange(newValue) {
274
- if (newValue) {
275
- this.prepareDisabledDates();
276
- }
277
- }
278
- /**
279
- * @desc
280
- * @param date
281
- */
282
- stringToDate(date) {
283
- const isDate = !!date.getMonth;
284
- if (!isDate) {
285
- return new Date(Date.parse(this.switchDDMM(date)));
286
- }
287
- return date;
288
- }
289
- /**
290
- * @desc
291
- * @param date
292
- */
293
- dateToString(date) {
294
- if (!(date instanceof Date))
295
- return false;
296
- }
297
- /**
298
- *
299
- * @param str
300
- */
301
- switchDDMM(str) {
302
- if (!str)
303
- return;
304
- const parts = str.split('/');
305
- if (str.indexOf('/') === -1 || parts.length !== 3)
306
- return str;
307
- return `${parts[1]}/${parts[0]}/${parts[2]}`;
308
- }
309
- /**
310
- * @desc
311
- */
312
- setData() {
313
- this.date = this.stringToDate(this.date);
314
- if (!this.initialized && !this.renderDate) {
315
- this.renderDate = this.date && this.date || new Date();
316
- }
317
- if (!this.initialized && this.endDate) {
318
- this.selectedEndDate = this.stringToDate(this.endDate);
319
- //this.currentEndDate = this.createDateObject(this.selectedEndDate)
320
- }
321
- const date = this.renderDate;
322
- this.currentDate = this.createDateObject(date);
323
- // Calculate days in current
324
- // month
325
- this.dayNumbers = this.getMonthDayNumbers(date).map(day => {
326
- return {
327
- day,
328
- thisMonth: true,
329
- isWeekend: this.getDayIsWeekend(date, day),
330
- today: this.getIsCurrentDate(date, day),
331
- date: this.getTargetDayDate(date, day)
332
- };
333
- });
334
- // Add prev month days to
335
- // empty columns
336
- if (this.currentDate.year > this.minYear) {
337
- let targetMonth = new Date(new Date(date).setMonth(this.currentDate.month - 1, 1));
338
- let targetMonthDayNumbers = this.getMonthDayNumbers(targetMonth).reverse();
339
- let max = this.currentDate.monthFirstDay;
340
- for (let i = 1; i < (max === 0 ? 7 : max); i++) {
341
- const day = targetMonthDayNumbers[i - 1];
342
- this.dayNumbers.unshift({
343
- day,
344
- prevMonth: true,
345
- isWeekend: this.getDayIsWeekend(targetMonth, day),
346
- date: this.getTargetDayDate(targetMonth, day)
347
- });
348
- }
349
- }
350
- // Add next month days to
351
- // rest of columns
352
- if (this.currentDate.year < this.maxYear) {
353
- let targetMonth = new Date(new Date(date).setMonth(this.currentDate.month + 1));
354
- let targetMonthDayNumbers = this.getMonthDayNumbers(targetMonth);
355
- let max = 42 - this.dayNumbers.length;
356
- for (let i = 0; i < max; i++) {
357
- const day = targetMonthDayNumbers[i];
358
- this.dayNumbers.push({
359
- day,
360
- nextMonth: true,
361
- isWeekend: this.getDayIsWeekend(targetMonth, day),
362
- date: this.getTargetDayDate(targetMonth, day)
363
- });
364
- }
365
- }
366
- if (!this.emptyState) {
367
- this.valueText = this.getValueText();
368
- }
369
- index.forceUpdate(this.el);
370
- }
371
- /**
372
- * @desc
373
- */
374
- prepareDisabledDates() {
375
- if (!this.disabledDates)
376
- return;
377
- let disabledDatesData = null;
378
- if (typeof this.disabledDates === 'string') {
379
- try {
380
- disabledDatesData = JSON.parse(this.disabledDates);
381
- }
382
- catch (e) {
383
- return;
384
- }
385
- }
386
- else
387
- disabledDatesData = this.disabledDates;
388
- // Convert dates to list
389
- // #
390
- if (disabledDatesData.dates && disabledDatesData.dates.length && !!disabledDatesData.dates.length) {
391
- const disabledDates = disabledDatesData.dates.map(date => {
392
- const tempDate = new Date(date);
393
- if (tempDate.toString().toLowerCase() === 'invalid date')
394
- return null;
395
- else
396
- return tempDate;
397
- }).filter(date => date);
398
- this.disabledDatesList.dates = disabledDates;
399
- }
400
- // Get min & max range
401
- // #
402
- if (disabledDatesData.min &&
403
- disabledDatesData.max && (disabledDatesData.min.getTime() > disabledDatesData.max.getTime() ||
404
- disabledDatesData.max.getTime() < disabledDatesData.min.getTime())) {
405
- return;
406
- }
407
- if (disabledDatesData.min && disabledDatesData.min instanceof Date) {
408
- this.disabledDatesList.min = new Date(disabledDatesData.min.toDateString());
409
- }
410
- else {
411
- delete this.disabledDatesList.min;
412
- }
413
- if (disabledDatesData.max && disabledDatesData.max instanceof Date) {
414
- this.disabledDatesList.max = new Date(disabledDatesData.max.toDateString());
415
- }
416
- else {
417
- delete this.disabledDatesList.max;
418
- }
419
- const value = this.inputElement && this.inputElement.value;
420
- value && this.setDataFromText(value);
421
- }
422
- /**
423
- *
424
- * @param target
425
- * @param wheelTriggerElement
426
- * @param strip
427
- */
428
- createWheelChange(target, wheelTriggerElement, strip) {
429
- /**
430
- * [ Mouse Event: wheel ]
431
- */
432
- wheelTriggerElement.addEventListener('wheel', (event) => {
433
- const moveDown = event.deltaY > 0;
434
- const dragger = this[target + 'Dragger'];
435
- const draggerOffsetY = dragger.getOffset().top;
436
- const childIdx = this.getTargetChildByDragPosition({ y: draggerOffsetY }, strip);
437
- let nextChild = moveDown ? childIdx + 1 : childIdx - 1;
438
- // Array bounds check
439
- // #
440
- nextChild < 0
441
- ? (nextChild = 0) : typeof this[target][nextChild] === 'undefined'
442
- ? (nextChild = this[target].length - 1) : nextChild;
443
- if (this.type == "time" && !this.selectedDate) {
444
- this.setTime();
445
- }
446
- this.setDragSelection(target, this[target][nextChild], true, true);
447
- });
448
- }
449
- /**
450
- * @desc
451
- */
452
- createDragSelection(target, element, dragTriggerElement, strip, direction) {
453
- const dragger = target + 'Dragger';
454
- this[dragger] = new elementDragger.ElementDragger({
455
- target: element,
456
- trigger: dragTriggerElement,
457
- direction: direction,
458
- useTransform: true,
459
- limit: {
460
- y: {
461
- max: strip.offsetTop - (strip.offsetHeight / 2),
462
- min: (element.offsetHeight - (strip.offsetTop + strip.offsetHeight / 2)) * -1
463
- }
464
- }
465
- });
466
- /**
467
- * [ ElementDragger Event: end ]
468
- */
469
- this[dragger].on('end', (pos) => {
470
- const childIdx = this.getTargetChildByDragPosition(pos, strip);
471
- // Select target child when dragging
472
- // end
473
- this.selectTargetChildByDragIdx(childIdx, strip, this[dragger]);
474
- // Set target value
475
- // #
476
- this.setDragSelection(target, this[target][childIdx], false);
477
- });
478
- }
479
- /**
480
- * @desc Calculates which child in center of strip
481
- * for drag areas
482
- */
483
- getTargetChildByDragPosition({ y }, strip) {
484
- const stripHeight = strip.offsetHeight;
485
- const stripCenter = stripHeight / 2;
486
- const stripTriggerY = strip.offsetTop - (stripCenter);
487
- const childY = -(y - stripTriggerY - (stripCenter));
488
- return Math.floor(childY / stripHeight);
489
- }
490
- /**
491
- * @esc
492
- * @param target
493
- * @param childIdx
494
- */
495
- selectTargetChildByDragIdx(childIdx, strip, dragger, anim = true) {
496
- const y = ((strip.offsetHeight / 2) + strip.offsetTop) - ((childIdx + 1) * (strip.offsetHeight));
497
- dragger.setPosition({ y, anim });
498
- }
499
- /**
500
- * @desc
501
- * @param year
502
- */
503
- setDragSelection(target, value, scroll = true, anim = false) {
504
- // if (!value) return
505
- const childIdx = this[target].findIndex((itemValue) => itemValue === value);
506
- scroll && this.selectTargetChildByDragIdx(childIdx, this[target === 'years' ? target + 'StripElement' : 'timeStripElement'], this[target + 'Dragger'], anim);
507
- switch (target) {
508
- case 'years':
509
- this.date.setFullYear(value);
510
- break;
511
- case 'hours':
512
- this.date.setHours(value);
513
- break;
514
- case 'minutes':
515
- this.date.setMinutes(value);
516
- break;
517
- }
518
- this.renderDate = this.date;
519
- this.setData();
520
- if (this.selectedDate) {
521
- this.setValue();
522
- }
523
- }
524
- /**
525
- * @desc
526
- * @returns
527
- */
528
- getHours12() {
529
- const hours = (this.date.getHours() + 24) % 12 || 12;
530
- return hours > 12 ? hours - 12 : hours;
531
- }
532
- /**
533
- * @desc
534
- * @param date
535
- * @param excludeTime -
536
- */
537
- createDateObject(date, { excludeTime = false, exactMonthNumber = false } = {}) {
538
- const dateYear = date.getFullYear();
539
- const year = dateYear >= this.maxYear
540
- ? this.maxYear : dateYear <= this.minYear
541
- ? this.minYear : dateYear;
542
- return Object.assign(Object.assign({ year, day: date.getDate(), month: date.getMonth() + (exactMonthNumber ? 1 : 0), dayOfWeek: date.getDay(), monthFirstDay: new Date(new Date(date).setDate(1)).getDay() }, !excludeTime && { hour: date.getHours() }), !excludeTime && { minute: date.getMinutes() });
543
- }
544
- /**
545
- * @desc
546
- * @param max
547
- */
548
- generateDaysArrayFromMax(max) {
549
- return Array.from(Array(max + 1).keys()).slice(1);
550
- }
551
- /**
552
- * @desc
553
- * @param date
554
- */
555
- getMonthDayNumbers(date) {
556
- const totalDays = this.getDaysInMonth(date.getMonth(), date.getFullYear());
557
- return this.generateDaysArrayFromMax(totalDays);
558
- }
559
- /**
560
- * @desc
561
- * @param date
562
- * @param day
563
- */
564
- getTargetDayDate(date, day) {
565
- return new Date(new Date(date).setDate(day));
566
- }
567
- /**
568
- * @desc
569
- * @param date
570
- * @param day
571
- */
572
- getDayIsWeekend(date, day) {
573
- const dayOfWeek = new Date(new Date(date).setDate(day)).getDay();
574
- return (dayOfWeek === 6) || (dayOfWeek === 0);
575
- }
576
- /**
577
- * @desc
578
- * @param date
579
- */
580
- getClock(date) {
581
- date = date || new Date();
582
- const hours = date.getHours();
583
- const minutes = date.getMinutes();
584
- const seconds = date.getSeconds();
585
- const milis = date.getMilliseconds();
586
- return { hours, minutes, seconds, milis };
587
- }
588
- /**
589
- * @desc
590
- */
591
- setValue(reset) {
592
- var _a, _b, _c;
593
- const date = new Date(this.date.setHours(Number(this.currentDate.hour), Number(this.currentDate.minute)));
594
- if (reset) {
595
- this.value = null;
596
- return;
597
- }
598
- this.dataIsValid = true;
599
- if (this.type === Types.datetime) {
600
- const dateObject = Object.assign({}, this.currentDate);
601
- dateObject.month += 1;
602
- if (((_a = this.value) === null || _a === void 0 ? void 0 : _a.value) != this.valueText) {
603
- this.value = {
604
- isValid: this.dataIsValid,
605
- date: date,
606
- timestamp: date.getTime(),
607
- dateObject,
608
- value: this.valueText
609
- };
610
- }
611
- }
612
- if (this.type === Types.date) {
613
- const dateObject = Object.assign({}, this.currentDate);
614
- delete dateObject.hour;
615
- delete dateObject.minute;
616
- dateObject.month += 1;
617
- if (((_b = this.value) === null || _b === void 0 ? void 0 : _b.value) != this.valueText) {
618
- this.value = {
619
- isValid: this.dataIsValid,
620
- date,
621
- timestamp: date.getTime(),
622
- dateObject,
623
- value: this.valueText
624
- };
625
- }
626
- }
627
- if (this.type === Types.time) {
628
- const getTimeText = this.getTimeText();
629
- const dateObject = Object.assign({}, this.currentDate);
630
- dateObject.month += 1;
631
- this.value = {
632
- isValid: this.dataIsValid,
633
- date: date,
634
- timestamp: date.getTime(),
635
- time: getTimeText,
636
- dateObject,
637
- timeObject: {
638
- hours: this.currentDate.hour,
639
- minutes: this.currentDate.minute
640
- },
641
- value: getTimeText
642
- };
643
- this.inputElement.value = getTimeText;
644
- }
645
- if (this.type === Types.range) {
646
- if (((_c = this.value) === null || _c === void 0 ? void 0 : _c.value) != this.valueText) {
647
- this.value = {
648
- isValid: this.dataIsValid,
649
- dateObject: {
650
- start: Object.assign({}, this.selectedDate && {
651
- date: this.selectedDate,
652
- timestamp: this.selectedDate.getTime(),
653
- detail: this.createDateObject(this.selectedDate, {
654
- excludeTime: true,
655
- exactMonthNumber: true
656
- })
657
- }),
658
- end: Object.assign({}, this.selectedEndDate && {
659
- date: this.selectedEndDate,
660
- timestamp: this.selectedEndDate.getTime(),
661
- detail: this.createDateObject(this.selectedEndDate, {
662
- excludeTime: true,
663
- exactMonthNumber: true
664
- })
665
- })
666
- },
667
- value: this.valueText
668
- };
669
- }
670
- }
671
- }
672
- /**
673
- * @desc
674
- * @param month
675
- */
676
- setMonth(month) {
677
- this.renderDate.setDate(1);
678
- this.renderDate = new Date(this.renderDate.setMonth(month));
679
- this.setDragSelection('years', this.currentDate.year);
680
- }
681
- /**
682
- * @desc
683
- * @param popupClosing -
684
- */
685
- checkRangeValidation({ popupClosing = false } = {}) {
686
- if (this.type !== Types.range)
687
- return true;
688
- const errorText = 'date range invalid';
689
- if (popupClosing && (!this.selectedDate || this.selectedDate && !this.selectedEndDate)) {
690
- this.setError(true, errorText);
691
- return false;
692
- }
693
- if (!popupClosing) {
694
- this.setError(false);
695
- return true;
696
- }
697
- return true;
698
- }
699
- /**
700
- * @desc
701
- * @param value
702
- * @param max
703
- * @returns
704
- */
705
- pad(value, max) {
706
- return value < max ? '0' : '';
707
- }
708
- /**
709
- * @desc
710
- * @returns
711
- */
712
- isInputClearable() {
713
- if (this.inputElement && this.inputElement.value) {
714
- return true;
715
- }
716
- return false;
717
- }
718
- /**
719
- * @desc
720
- * @param date
721
- */
722
- isDisabledDate(date) {
723
- if (!!this.disabledDatesList.dates.map(d => this.isSameDate(d, date)).filter(d => d).length)
724
- return true;
725
- if (this.disabledDatesList.min) {
726
- const minDate = new Date(this.disabledDatesList.min);
727
- if (minDate && minDate.getTime() > date.getTime())
728
- return true;
729
- }
730
- if (this.disabledDatesList.max) {
731
- const maxDate = new Date(this.disabledDatesList.max);
732
- if (maxDate && new Date(maxDate.setDate(maxDate.getDate() + 1)).getTime() < date.getTime())
733
- return true;
734
- }
735
- }
736
- /**
737
- * @desc
738
- * @param date
739
- */
740
- setDate(date, isUserSelect, notClosePicker = false) {
741
- const isRange = this.type === Types.range;
742
- const isEndSelect = !!this.selectedEndDate;
743
- // Check disabled date
744
- // #
745
- if ((this.type === Types.date || this.type === Types.datetime) && this.isDisabledDate(date)) {
746
- return;
747
- }
748
- this.emptyState = false;
749
- if (!isRange || (isRange && !isEndSelect)) {
750
- this.date = new Date(date.setHours(this.currentDate.hour, this.currentDate.minute));
751
- }
752
- isRange && this.checkRangeValidation();
753
- if (isRange && this.selectedDate && this.selectedEndDate) {
754
- this.selectedDate = null;
755
- this.selectedEndDate = null;
756
- }
757
- if (isUserSelect) {
758
- const newDate = new Date(date);
759
- !isRange
760
- ? this.selectedDate = newDate
761
- : !this.selectedDate
762
- ? this.selectedDate = newDate
763
- : this.selectedDate.getTime() > newDate.getTime()
764
- ? (this.selectedEndDate = this.selectedDate) && (this.selectedDate = newDate)
765
- : this.selectedEndDate = newDate;
766
- !isRange && (this._open = notClosePicker);
767
- this.renderDate = this.date;
768
- this.valueText = this.getValueText();
769
- this.setValue();
770
- const splitText = this.valueText.split('/');
771
- const newValue = this.valueText ? this.changeFormat(new Date(splitText[1] + "/" + splitText[0] + "/" + splitText[2])) : '';
772
- this.inputElement.value = newValue;
773
- }
774
- }
775
- setDataFromText(text, updateData = false, openPicker = true) {
776
- let update = false;
777
- let errorState = '';
778
- const parsed = this.parse(text);
779
- if ((this.type === Types.date || this.type === Types.datetime) && this.isDisabledDate(parsed.date)) {
780
- parsed.dateIsValid = false;
781
- errorState = 'disabled-date';
782
- }
783
- // Check mode datetime
784
- // #
785
- if (this.type === Types.datetime && parsed.dateIsValid && parsed.timeIsValid) {
786
- updateData && this.setDate(parsed.date, true, openPicker);
787
- updateData && this.setTime(parsed.timeSections[0], parsed.timeSections[1]);
788
- update = true;
789
- }
790
- // Check mode date
791
- // #
792
- if (this.type === Types.date && parsed.dateIsValid) {
793
- updateData && this.setDate(parsed.date, true, openPicker);
794
- update = true;
795
- }
796
- // Check mode time
797
- // #
798
- if (this.type === Types.time && parsed.timeIsValid) {
799
- updateData && this.setTime(parsed.timeSections[0], parsed.timeSections[1]);
800
- update = true;
801
- }
802
- // Check mode range
803
- // #
804
- if (this.type === Types.range) {
805
- if (parsed.dateIsValid && !this.selectedDate) {
806
- updateData && this.setDate(parsed.date, true, openPicker);
807
- update = true;
808
- }
809
- if (parsed.date2IsValid && !this.selectedEndDate) {
810
- updateData && this.setDate(parsed.date2, true, openPicker);
811
- update = true;
812
- }
813
- if (this.selectedDate && this.selectedEndDate && parsed.rangeIsValid) {
814
- if (this.isSameDate(parsed.date2, this.selectedEndDate) && !this.isSameDate(parsed.date, this.selectedDate)) {
815
- this.selectedDate = null;
816
- updateData && this.setDate(parsed.date, true, openPicker);
817
- update = true;
818
- }
819
- if (this.isSameDate(parsed.date, this.selectedDate) && !this.isSameDate(parsed.date2, this.selectedEndDate)) {
820
- this.selectedEndDate = null;
821
- updateData && this.setDate(parsed.date2, true, openPicker);
822
- update = true;
823
- }
824
- }
825
- if (this.selectedDate && this.selectedEndDate && !parsed.rangeIsValid && updateData) {
826
- this.selectedDate = null;
827
- this.selectedEndDate = null;
828
- }
829
- }
830
- // Fix: render warning
831
- if (update) {
832
- if (updateData) {
833
- this.renderDate = this.date;
834
- }
835
- this.setError(false);
836
- }
837
- else {
838
- if (this.type === Types.range && this.selectedDate && this.selectedEndDate && parsed.rangeIsValid) {
839
- this.setError(false);
840
- }
841
- else {
842
- if (errorState) {
843
- this.setError(true, (errorState === 'disabled-date' && 'selected date is not allowed'));
844
- }
845
- else {
846
- if (text) {
847
- this.setError(true, (this.type === Types.datetime && 'invalid date or time') ||
848
- (this.type === Types.range && 'invalid date range') ||
849
- (this.type === Types.date && 'The selected date is not allowed.') ||
850
- (this.type === Types.time && 'invalid time'));
851
- }
852
- this.setValue(true);
853
- }
854
- }
855
- const splitText = text.split('/');
856
- const newValue = text && !this.error ? this.changeFormat(new Date(splitText[1] + "/" + splitText[0] + "/" + splitText[2])) : '';
857
- this.inputElement.value = newValue;
858
- }
859
- }
860
- /**
861
- * @desc
862
- */
863
- setDateToday() {
864
- const date = new Date();
865
- if (this.type === Types.range) {
866
- this.selectedDate = null;
867
- this.selectedEndDate = null;
868
- }
869
- this.setDate(date, true, false);
870
- }
871
- HourContentDblClick(e) {
872
- const getPath = generate.Generate.findEventPathWithNodeName(e, 'SPAN');
873
- if (getPath && getPath.classList.contains('selected')) {
874
- this.setValue();
875
- this._open = false;
876
- }
877
- }
878
- /**
879
- * @desc
880
- */
881
- setTime(hours, minutes) {
882
- this.renderDate = new Date(this.date.setHours(Number(hours || this.getClock().hours), Number(minutes || this.getClock().minutes)));
883
- if (this.type === Types.time) {
884
- this.selectedDate = this.date;
885
- }
886
- const hour = this.currentDate.hour || new Date().getHours();
887
- const minute = this.currentDate.minute || new Date().getMinutes();
888
- this.setDragSelection('hours', hour, true, true);
889
- this.setDragSelection('minutes', minute, true, true);
890
- }
891
- /**
892
- * @desc
893
- * @param state
894
- * @param error
895
- */
896
- setError(state = false, error = '') {
897
- this.error = state;
898
- this.errorText = !state ? '' : error;
899
- }
900
- /**
901
- * @desc
902
- */
903
- getError() {
904
- const { error, errorText } = this;
905
- return { valid: !error, error, errorText };
906
- }
907
- /**
908
- * @desc
909
- * @param month
910
- * @param year
911
- */
912
- getDaysInMonth(month, year) {
913
- return new Date(year, month + 1, 0).getDate();
914
- }
915
- /**
916
- * @desc
917
- * @param date
918
- * @param day
919
- * @returns
920
- */
921
- getIsCurrentDate(date, day) {
922
- const today = new Date();
923
- return today.getDate() === day
924
- && today.getMonth() === date.getMonth()
925
- && today.getFullYear() === date.getFullYear();
926
- }
927
- /**
928
- * @desc
929
- * @param date1
930
- * @param date2
931
- */
932
- isSameDate(date1, date2) {
933
- return (date1.getFullYear() === date2.getFullYear() &&
934
- date1.getMonth() === date2.getMonth() &&
935
- date1.getDate() === date2.getDate());
936
- }
937
- /**
938
- * @desc
939
- * @param date
940
- * @returns
941
- */
942
- getSelected(date, endDate = false) {
943
- const selectPart = endDate ? 'EndDate' : 'Date';
944
- const targetDate = new Date(this['selected' + selectPart]);
945
- const year = targetDate.getFullYear();
946
- const month = targetDate.getMonth();
947
- const day = targetDate.getDate();
948
- const isSelected = date.getDate() === day
949
- && date.getMonth() === month
950
- && date.getFullYear() === year;
951
- return isSelected;
952
- }
953
- /**
954
- * @desc
955
- * @param date
956
- */
957
- getDateIsInRange(date) {
958
- if (this.type !== Types.range || (!this.selectedDate || !this.selectedEndDate))
959
- return;
960
- const current = date.getTime();
961
- const start = this.selectedDate.getTime();
962
- const end = this.selectedEndDate.getTime();
963
- return current > start && current < end;
964
- }
965
- /**
966
- * @desc
967
- */
968
- getMonthText() {
969
- return Object.values(Months)[this.renderDate.getMonth()];
970
- }
971
- /**
972
- * @desc
973
- */
974
- getCurrentDateText() {
975
- const dayText = Object.values(Days)[this.currentDate.dayOfWeek];
976
- const monthText = Object.values(Months)[this.currentDate.month];
977
- const text = `${dayText}, ${this.currentDate.day}th ${monthText} ${this.currentDate.year}`;
978
- return text;
979
- }
980
- /**
981
- * @desc
982
- * @returns
983
- */
984
- getTimeText() {
985
- const { hour, minute } = this.currentDate;
986
- return `${hour < 10 ? '0' + hour : hour}:${minute < 10 ? '0' + minute : minute}`;
987
- }
988
- /**
989
- *
990
- */
991
- getValueText() {
992
- if (!this.selectedDate)
993
- return '';
994
- const selectedDate = this.selectedDate;
995
- const year = selectedDate.getFullYear();
996
- const day = selectedDate.getDate();
997
- const baseMonth = selectedDate.getMonth();
998
- const month = baseMonth + 1;
999
- let text = '';
1000
- if (this.type === Types.date || this.type === Types.datetime) {
1001
- text = `${day < 10 ? '0' + day : day}/${month < 10 ? '0' + month : month}/${year}`;
1002
- }
1003
- if (this.type === Types.time) {
1004
- text = this.getTimeText();
1005
- }
1006
- if (this.type === Types.datetime) {
1007
- text = `${text} ${this.getTimeText()}`;
1008
- }
1009
- if (this.type === Types.range) {
1010
- text = `${day < 10 ? '0' + day : day}/${month < 10 ? '0' + month : month}/${year}`;
1011
- }
1012
- if (this.type === Types.range && this.selectedEndDate) {
1013
- const endDate = this.selectedEndDate;
1014
- const endYear = endDate.getFullYear();
1015
- const endDay = endDate.getDate();
1016
- const endBaseMonth = endDate.getMonth();
1017
- const endMonth = endBaseMonth + 1;
1018
- text += `-${endDay < 10 ? '0' + endDay : endDay}/${endMonth < 10 ? '0' + endMonth : endMonth}/${endYear}`;
1019
- }
1020
- this.setDataFromText(text);
1021
- return text;
1022
- }
1023
- parseDate(input) {
1024
- var parts = input.split('/');
1025
- var day = parseInt(parts[0], 10);
1026
- var month = parseInt(parts[1], 10) - 1;
1027
- var year = parseInt(parts[2], 10);
1028
- if (isNaN(day) || isNaN(month) || isNaN(year)) {
1029
- return 'invalid date';
1030
- }
1031
- var date = new Date(year, month, day);
1032
- if (date.getDate() !== day || date.getMonth() !== month || date.getFullYear() !== year) {
1033
- return 'invalid date';
1034
- }
1035
- return date;
1036
- }
1037
- /**
1038
- * @desc
1039
- * @param dateStr
1040
- */
1041
- parse(dateStr) {
1042
- const sections = dateStr.split(this.type === Types.range ? '-' : ' ');
1043
- // const sections: Array<string> = dateStr.split("-")
1044
- const sectionDate = this.switchDDMM(sections[0]);
1045
- const sectionDate2 = this.switchDDMM(sections[1]);
1046
- const sectionTime = this.type === Types.datetime ? sections[1] : sections[0];
1047
- const date = new Date(sectionDate);
1048
- const date2 = new Date(sectionDate2);
1049
- const dateCheck = date.toString().toLowerCase() !== 'invalid date' && this.parseDate(dateStr) !== 'invalid date';
1050
- const dateCheck2 = date2.toString().toLowerCase() !== 'invalid date';
1051
- const regDate = /^((0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12]\d|3[01])(-|\/)[12]\d{3})$/;
1052
- const regDateCheck = regDate.test(sectionDate);
1053
- const regDateCheck2 = regDate.test(sectionDate2);
1054
- const regTime = /\b([01][0-9]|2[0-3]):([0-5][0-9])\b/;
1055
- const regTimeCheck = regTime.test(sectionTime);
1056
- const dateIsValid = dateCheck && regDateCheck;
1057
- const date2IsValid = dateCheck2 && regDateCheck2;
1058
- const timeSections = regTimeCheck ? sectionTime.split(':') : '';
1059
- return {
1060
- date,
1061
- date2,
1062
- timeSections,
1063
- dateIsValid,
1064
- date2IsValid,
1065
- rangeIsValid: dateIsValid && date2IsValid,
1066
- timeIsValid: regTimeCheck
1067
- };
1068
- }
1069
- /**
1070
- * @desc
1071
- */
1072
- getPrevMonth() {
1073
- this.setMonth(this.renderDate.getMonth() - 1);
1074
- }
1075
- /**
1076
- * @desc
1077
- */
1078
- getNextMonth() {
1079
- this.setMonth(this.renderDate.getMonth() + 1);
1080
- }
1081
- /**
1082
- * @desc
1083
- * @param idx
1084
- */
1085
- yearClick(idx) {
1086
- if (this.yearsDragger.busy)
1087
- return;
1088
- this.setDragSelection('years', this.years[idx], true, true);
1089
- }
1090
- /**
1091
- * @desc
1092
- * @param idx
1093
- */
1094
- hourClick(idx) {
1095
- if (this.hoursDragger.busy)
1096
- return;
1097
- if (!this.selectedDate) {
1098
- this.setTime();
1099
- }
1100
- this.setDragSelection('hours', this.hours[idx], true, true);
1101
- }
1102
- /**
1103
- * @desc
1104
- * @param idx
1105
- */
1106
- minuteClick(idx) {
1107
- if (this.minutesDragger.busy)
1108
- return;
1109
- if (!this.selectedDate) {
1110
- this.setTime();
1111
- }
1112
- this.setDragSelection('minutes', this.minutes[idx], true, true);
1113
- }
1114
- /**
1115
- * @desc
1116
- */
1117
- openPicker() {
1118
- if (this.disabled)
1119
- return;
1120
- !this._open && (this._open = true);
1121
- }
1122
- /**
1123
- * @desc
1124
- * @param date
1125
- */
1126
- handleDayNumber(date) {
1127
- if (this.type === Types.range
1128
- && this.selectedDate
1129
- && !this.selectedEndDate
1130
- && this.isSameDate(this.selectedDate, date))
1131
- return;
1132
- this.setDate(date, true);
1133
- }
1134
- /**
1135
- * @desc
1136
- * @param value
1137
- */
1138
- handleInputInput(value) {
1139
- this.setDataFromText(value, true);
1140
- }
1141
- /**
1142
- * @desc
1143
- * @param event -
1144
- */
1145
- handleInputChange(event) {
1146
- this.setDataFromText(this.inputElement.value, true, false);
1147
- event.stopPropagation();
1148
- }
1149
- /**
1150
- * @desc
1151
- */
1152
- async handleInputClear() {
1153
- this.selectedDate = null;
1154
- this.selectedEndDate = null;
1155
- this.emptyState = true;
1156
- this.renderDate = new Date();
1157
- this._open = false;
1158
- this.setValue(true);
1159
- this.setError();
1160
- this.getValueText();
1161
- await this.inputElement.setClear();
1162
- await utils.delay(10);
1163
- return Promise.resolve();
1164
- }
1165
- /**
1166
- * @desc
1167
- * @param event
1168
- */
1169
- handleWheel(event) {
1170
- event.preventDefault();
1171
- }
1172
- /**
1173
- * @desc
1174
- * @param event
1175
- */
1176
- handleWindowClick(event) {
1177
- if (this._open) {
1178
- const list = document.getElementById(`picker-vp-${this._id}`);
1179
- const isClickInside = generate.Generate.findEventPath(event, this.el);
1180
- const isClickList = list ? (generate.Generate.findEventPath(event, list)) : false;
1181
- if (!isClickInside && !isClickList) {
1182
- this._open = false;
1183
- }
1184
- }
1185
- }
1186
- openToggle() {
1187
- if (this.disabled)
1188
- return;
1189
- this._open = !this._open;
1190
- }
1191
- /**
1192
- * @desc
1193
- */
1194
- async open() {
1195
- await utils.delay(50);
1196
- this.openToggle();
1197
- }
1198
- /**
1199
- * @desc
1200
- */
1201
- async close() {
1202
- this._open = false;
1203
- }
1204
- /**
1205
- * @desc
1206
- */
1207
- async getValue() {
1208
- return this.value;
1209
- }
1210
- /**
1211
- * @param
1212
- * @param disabled
1213
- */
1214
- async setDisabled(disabled) {
1215
- this.disabled = disabled;
1216
- }
1217
- changeFormat(date, reverseDay = false) {
1218
- if (!date)
1219
- return;
1220
- const pad = (n) => n < 10 ? `0${n}` : n;
1221
- const day = pad(new Date(date).getDate());
1222
- const month = pad(new Date(date).getMonth() + 1);
1223
- const year = new Date(date).getFullYear();
1224
- const hours = pad(new Date(date).getHours());
1225
- const minutes = pad(new Date(date).getMinutes());
1226
- if (this.type == "range" || this.type == "date") {
1227
- return reverseDay ? `${month}/${day}/${year}` : `${day}/${month}/${year}`;
1228
- }
1229
- return reverseDay ? `${month}/${day}/${year} ${hours}:${minutes}` : `${day}/${month}/${year} ${hours}:${minutes}`;
1230
- }
1231
- isTime(value) {
1232
- return /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(value);
1233
- }
1234
- getHHMM(date) {
1235
- if (!date)
1236
- return;
1237
- const pad = (n) => n < 10 ? `0${n}` : n;
1238
- const hours = pad(new Date(date).getHours());
1239
- const minutes = pad(new Date(date).getMinutes());
1240
- return `${hours}:${minutes}`;
1241
- }
1242
- /**
1243
- * @desc
1244
- * @param dateOrTime
1245
- */
1246
- async set(dateOrTime) {
1247
- if (dateOrTime) {
1248
- if (typeof dateOrTime === "number") {
1249
- dateOrTime = new Date(dateOrTime);
1250
- }
1251
- if (this.type == "time") {
1252
- let time = dateOrTime;
1253
- if (!this.isTime(dateOrTime)) {
1254
- time = this.getHHMM(dateOrTime);
1255
- }
1256
- this.setDataFromText(time, true, false);
1257
- }
1258
- else {
1259
- const split = dateOrTime.toString().split('-');
1260
- const parseDate0 = Date.parse(split[0]);
1261
- if (split[0] && !isNaN(parseDate0)) {
1262
- var date = this.changeFormat(datetimeHelper.DateTimeHelper.convertTimeStampToDate(new Date(split[0]).getTime()));
1263
- if (split[1] && !isNaN(Date.parse(split[1]))) {
1264
- var date2 = this.changeFormat(datetimeHelper.DateTimeHelper.convertTimeStampToDate(new Date(split[1]).getTime()));
1265
- date = date + "-" + date2;
1266
- }
1267
- this.setDataFromText(date, true, false);
1268
- }
1269
- else {
1270
- this.setDataFromText('', true, false);
1271
- }
1272
- }
1273
- }
1274
- else {
1275
- this.setClear();
1276
- }
1277
- }
1278
- async get() {
1279
- var _a;
1280
- return ((_a = this.value) === null || _a === void 0 ? void 0 : _a.timestamp) || null;
1281
- }
1282
- async setClear() {
1283
- await this.handleInputClear();
1284
- return Promise.resolve();
1285
- }
1286
- /**
1287
- * @desc
1288
- */
1289
- async getInput() {
1290
- return this.inputElement;
1291
- }
1292
- /**
1293
- * @desc
1294
- * @returns
1295
- */
1296
- async isValid() {
1297
- return this.getError();
1298
- }
1299
- async resetCaption() {
1300
- await utils.delay(10);
1301
- await this.inputElement.resetCaption();
1302
- this.captionType = 'default';
1303
- this.captionError = null;
1304
- await utils.delay(10);
1305
- return Promise.resolve();
1306
- }
1307
- addZeroBefore(n) {
1308
- return (n < 10 ? '0' : '') + n;
1309
- }
1310
- formatDate(date, format) {
1311
- const map = {
1312
- mm: this.addZeroBefore(date.getMonth() + 1),
1313
- dd: this.addZeroBefore(date.getDate()),
1314
- yyyy: this.addZeroBefore(date.getFullYear()),
1315
- hh: this.addZeroBefore(date.getHours()),
1316
- mi: this.addZeroBefore(date.getMinutes()),
1317
- };
1318
- return format.replace(/mm|dd|yyyy|hh|mi/gi, matched => map[matched]);
1319
- }
1320
- handleResize() {
1321
- this.calculateLocation();
1322
- }
1323
- handleWheels(event) {
1324
- if (this._open) {
1325
- const list = document.querySelector(`#picker-vp-${this._id}`);
1326
- const isClickInside = list && generate.Generate.findEventPath(event, list);
1327
- if (isClickInside) {
1328
- this.calculateLocation();
1329
- }
1330
- else {
1331
- this._open = false;
1332
- }
1333
- }
1334
- }
1335
- componentDidLoad() {
1336
- const picker = this.el.shadowRoot.querySelector(`#picker-vp-${this._id}`);
1337
- //move to body
1338
- if (picker) {
1339
- document.body.appendChild(picker);
1340
- this.calculateLocation();
1341
- }
1342
- }
1343
- disconnectedCallback() {
1344
- this.el.innerHTML = '';
1345
- const pickerBox = document.getElementById(`picker-vp-${this._id}`);
1346
- if (pickerBox) {
1347
- pickerBox.remove();
1348
- }
1349
- }
1350
- async calculateLocation() {
1351
- const pickerBox = document.getElementById(`picker-vp-${this._id}`);
1352
- const placementArray = this.placement.split('-');
1353
- if (this.alignment) {
1354
- this.placement = placementArray[0] + (this.alignment == "right" ? "-end" : "-start");
1355
- }
1356
- var placement = this.placement;
1357
- const targetElementId = this.linkedComponent ? this.linkedComponent : this._id;
1358
- const target = document.getElementById(targetElementId);
1359
- if (target) {
1360
- const targetElement = this.linkedComponent ? target : target.shadowRoot.querySelector(`#picker-input-${this._id}`) || target.shadowRoot.querySelector("bcm-datetime-picker").shadowRoot.querySelector(`#picker-input-${this._id}`);
1361
- if (pickerBox && targetElement) {
1362
- popoverPlacement.getPlacement(pickerBox, targetElement, placement, (place) => (placement = place));
1363
- await utils.delay(10);
1364
- let pos = popoverPlacement.setPosition(placement, targetElement);
1365
- let captionAreaHeight = this.noCaption ? 0 : 20;
1366
- let labelAreaHeight = 0;
1367
- // if (this.fullWidth) {
1368
- // pickerBox.style.width = targetElement.offsetWidth + 'px';
1369
- // }
1370
- popoverPlacement.getPlacement(pickerBox, targetElement, placement, (place) => (placement = place));
1371
- await utils.delay(10);
1372
- pos = popoverPlacement.setPosition(placement, targetElement);
1373
- if (this.linkedComponent) {
1374
- pickerBox.style.top = (placement.split('-')[0] == 'top' ? pos[0] - pickerBox.offsetHeight : pos[0]) + 'px';
1375
- }
1376
- else {
1377
- pickerBox.style.top = (placement.split('-')[0] == 'top' ? pos[0] - pickerBox.offsetHeight + labelAreaHeight : pos[0] - captionAreaHeight) + 'px';
1378
- }
1379
- switch (placement.split('-')[1]) {
1380
- case "start":
1381
- pickerBox.style.left = pos[1] + 'px';
1382
- break;
1383
- case "center":
1384
- pickerBox.style.left = pos[1] - pickerBox.offsetWidth / 2 + 'px';
1385
- break;
1386
- case "end":
1387
- pickerBox.style.left = pos[1] - pickerBox.offsetWidth + 'px';
1388
- break;
1389
- }
1390
- pickerBox.classList.toggle('bcm-list--top', placement.split('-')[0] == 'top');
1391
- }
1392
- }
1393
- }
1394
- handleKeyDown(ev) {
1395
- const keycode = ev.keyCode || ev.which;
1396
- if (keycode === bcm.Bcm.KeyCode.escape) {
1397
- if (this._open) {
1398
- this._open = false;
1399
- ev.preventDefault();
1400
- ev.stopPropagation();
1401
- ev.stopImmediatePropagation();
1402
- this.markForCheck();
1403
- }
1404
- }
1405
- }
1406
- render() {
1407
- const dayNumbersClasses = index$1.classnames('day-numbers');
1408
- const datetimePickerClasses = index$1.classnames('datetime-picker', 'datetime-picker-wrapper', {
1409
- 'open': this._open,
1410
- 'no-caption': this.noCaption,
1411
- });
1412
- const hostClasses = index$1.classnames(this.hidden ? 'hidden' : null, {
1413
- 'full-width': this.fullWidth,
1414
- 'linked-component': this.linkedComponent,
1415
- 'no-margin': this.noMargin,
1416
- });
1417
- const toggleClasses = index$1.classnames('toggle', {
1418
- disabled: this.disabled
1419
- });
1420
- const clockIcon = `<svg style="fill: #595959; width: 14px; height: 14px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z"/></svg>`;
1421
- const calendarIcon = `<svg style="fill: #595959; width: 14px; height: 14px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"/></svg>`;
1422
- const errorIcon = `<svg style="fill: #ef4444; width: 14px; height: 14px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm42-104c0 23.2-18.8 42-42 42s-42-18.8-42-42 18.8-42 42-42 42 18.8 42 42zm-81.4-211.4l6.8 136c.3 6.4 5.6 11.4 12 11.4h41.2c6.4 0 11.7-5.1 12-11.4l6.8-136c.3-6.9-5.1-12.6-12-12.6h-54.8c-6.9 0-12.4 5.7-12 12.6z"/></svg>`;
1423
- const inputIcon = this.type == "time" ? clockIcon : calendarIcon;
1424
- return (index.h(index.Host, { class: hostClasses, "bcm-internal-id": this.inputId }, this.label && (index.h("div", { class: "picker-label", onClick: () => this.openToggle() }, index.h(labelTemplate.LabelTemplate, { size: "medium", type: this.captionType, value: this.label, required: this.required, htmlFor: this._id }))), index.h("bcm-old-input", { ref: el => (this.inputElement = el), placeholder: this.placeholder || 'Select ' + (this.type === Types.datetime ? 'date and time' : '') + (this.type === Types.date ? 'date' : '') + (this.type === Types.time ? 'time' : '') + (this.type === Types.range ? 'date range' : ''), value: this.valueText, required: this.required, fullWidth: this.fullWidth, disabled: this.disabled, name: this.name, id: this.inputId, clearable: this.clearable, onClick: () => this.openPicker(), "no-margin": true, disableWatchValue: true, "on-bcm-clear": () => this.handleInputClear(), "on-bcm-change": (e) => this.handleInputChange(e),
1425
- // on-bcm-input={(e: CustomEvent) => this.handleInputInput(e.detail)}
1426
- noCaption: this.noCaption, captionError: this.captionError, caption: this.caption, captionType: this.captionType }, this.error && (index.h("span", { slot: "suffix" }, index.h("span", { id: "error-icon", class: toggleClasses, innerHTML: errorIcon, title: this.errorText }))), index.h("span", { slot: "suffix", onClick: () => this.openPicker() }, index.h("span", { id: "calender-icon", class: toggleClasses, innerHTML: inputIcon }))), index.h("div", { id: "picker-vp-" + this._id, class: datetimePickerClasses, onWheel: (e) => this.handleWheel(e) }, index.h("div", { class: "modules" }, this.hasDateModule && (index.h("div", { class: "date-container" }, index.h("div", { class: "bcm-datetime-picker__header" }, index.h("span", null), index.h("div", { class: "month-year" }, index.h("button", { onClick: () => this.getPrevMonth() }, index.h("bcm-icon", { icon: "far fa-chevron-left" })), index.h("div", { class: "month-year-wrapper" }, index.h("span", { class: "month" }, this.getMonthText()), ",", index.h("span", { class: "year" }, this.date.getFullYear())), index.h("button", { onClick: () => this.getNextMonth() }, index.h("bcm-icon", { icon: "far fa-chevron-right" }))), index.h("span", { class: "today", onClick: () => this.setDateToday() }, "Today")), index.h("div", { class: "bcm-datetime-picker__content" }, index.h("div", { class: "years", ref: el => (this.yearsWrapperElement = el) }, index.h("div", { class: "items", ref: el => (this.yearsElement = el) }, this.years.map((year, idx) => index.h("span", { onClick: () => this.yearClick(idx) }, year))), index.h("div", { class: "select-strip", ref: el => (this.yearsStripElement = el) })), index.h("div", { class: "days" }, index.h("div", { class: "day-labels" }, index.h("span", null, "Mo"), index.h("span", null, "Tu"), index.h("span", null, "We"), index.h("span", null, "Th"), index.h("span", null, "Fr"), index.h("span", null, "Sa"), index.h("span", null, "Su")), index.h("div", { class: dayNumbersClasses }, this.dayNumbers.map(day => (index.h("span", { class: {
1427
- 'is-disabled-date': (this.type === Types.date || this.type === Types.datetime) && this.isDisabledDate(day.date),
1428
- 'not-this-month': !day.thisMonth,
1429
- 'is-weekend': day.isWeekend,
1430
- 'today': day.today,
1431
- 'selected': this.getSelected(day.date),
1432
- 'selected-start': this.getSelected(day.date) && this.selectedEndDate && this.type === Types.range,
1433
- 'selected-end': this.getSelected(day.date, true) && this.type === Types.range,
1434
- 'range': this.getDateIsInRange(day.date) && this.type === Types.range
1435
- }, onClick: () => this.handleDayNumber(day.date) }, index.h("span", { class: "number" }, day.day))))))))), this.hasTimeModule && (index.h("div", { class: "time-container" }, index.h("div", { class: "bcm-datetime-picker__header" }, index.h("div", { class: "month-year" }, index.h("span", { class: "month" }, this.getTimeText())), index.h("span", { class: "now", onClick: () => { this.setTime(), this.type == "time" && (this._open = false); } }, "Now")), index.h("div", { class: "bcm-datetime-picker__content", onDblClick: (e) => { this.HourContentDblClick(e); } }, index.h("div", { class: "hours", ref: el => (this.hoursWrapperElement = el) }, index.h("div", { class: "items", ref: el => (this.hoursElement = el) }, this.hours.map((hour, idx) => index.h("span", { class: this.currentDate.hour === hour ? 'selected' : '', onClick: () => this.hourClick(idx) }, (hour < 10 && '0') + hour)))), index.h("div", { class: "minutes", ref: el => (this.minutesWrapperElement = el) }, index.h("div", { class: "items", ref: el => (this.minutesElement = el) }, this.minutes.map((minute, idx) => index.h("span", { class: this.currentDate.minute === minute ? 'selected' : '', onClick: () => this.minuteClick(idx) }, (minute < 10 && '0') + minute)))), index.h("div", { class: "select-strip", ref: el => (this.timeStripElement = el) }))))))));
1436
- }
1437
- get el() { return index.getElement(this); }
1438
- static get watchers() { return {
1439
- "_open": ["openChanged", "openChange"],
1440
- "renderDate": ["renderDateChange"],
1441
- "value": ["valueChange"],
1442
- "disabledDates": ["disabledDatesChange"]
1443
- }; }
1444
- };
1445
- __decorate([
1446
- isLoadDecorator.IsLoad()
1447
- ], BcmDatetimePicker.prototype, "el", void 0);
1448
- BcmDatetimePicker.style = datetimePickerCss;
1449
-
1450
- exports.bcm_datetime_picker = BcmDatetimePicker;