@carbon/web-components 2.53.0 → 2.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/custom-elements.json +784 -110
  2. package/es/components/ai-label/ai-label.scss.js +1 -1
  3. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  4. package/es/components/button/button.scss.js +1 -1
  5. package/es/components/checkbox/checkbox.scss.js +1 -1
  6. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  7. package/es/components/combo-box/combo-box.scss.js +1 -1
  8. package/es/components/combo-button/combo-button.scss.js +1 -1
  9. package/es/components/contained-list/contained-list.scss.js +1 -1
  10. package/es/components/content-switcher/content-switcher.scss.js +1 -1
  11. package/es/components/copy-button/copy-button.scss.js +1 -1
  12. package/es/components/data-table/data-table.scss.js +1 -1
  13. package/es/components/data-table/table-toolbar-search.d.ts +3 -3
  14. package/es/components/data-table/table-toolbar-search.d.ts.map +1 -1
  15. package/es/components/data-table/table-toolbar-search.js +2 -3
  16. package/es/components/data-table/table-toolbar-search.js.map +1 -1
  17. package/es/components/date-picker/date-picker.d.ts +4 -0
  18. package/es/components/date-picker/date-picker.d.ts.map +1 -1
  19. package/es/components/date-picker/date-picker.js +5 -1
  20. package/es/components/date-picker/date-picker.js.map +1 -1
  21. package/es/components/date-picker/date-picker.scss.js +1 -1
  22. package/es/components/date-picker/fix-events-plugin.d.ts.map +1 -1
  23. package/es/components/date-picker/fix-events-plugin.js +0 -6
  24. package/es/components/date-picker/fix-events-plugin.js.map +1 -1
  25. package/es/components/date-picker/range-plugin.d.ts +2 -8
  26. package/es/components/date-picker/range-plugin.d.ts.map +1 -1
  27. package/es/components/date-picker/range-plugin.js +3 -9
  28. package/es/components/date-picker/range-plugin.js.map +1 -1
  29. package/es/components/dialog/dialog.scss.js +1 -1
  30. package/es/components/dropdown/dropdown.d.ts +3 -2
  31. package/es/components/dropdown/dropdown.d.ts.map +1 -1
  32. package/es/components/dropdown/dropdown.js +9 -2
  33. package/es/components/dropdown/dropdown.js.map +1 -1
  34. package/es/components/dropdown/dropdown.scss.js +1 -1
  35. package/es/components/feature-flags/index.js +1 -1
  36. package/es/components/file-uploader/file-uploader.scss.js +1 -1
  37. package/es/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts +18 -0
  38. package/es/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts.map +1 -0
  39. package/es/components/fluid-combo-box/fluid-combo-box-skeleton.js +45 -0
  40. package/es/components/fluid-combo-box/fluid-combo-box-skeleton.js.map +1 -0
  41. package/es/components/fluid-combo-box/fluid-combo-box.d.ts +23 -0
  42. package/es/components/fluid-combo-box/fluid-combo-box.d.ts.map +1 -0
  43. package/es/components/fluid-combo-box/fluid-combo-box.js +53 -0
  44. package/es/components/fluid-combo-box/fluid-combo-box.js.map +1 -0
  45. package/es/components/fluid-combo-box/fluid-combo-box.scss.js +14 -0
  46. package/es/components/fluid-combo-box/fluid-combo-box.scss.js.map +1 -0
  47. package/es/components/fluid-combo-box/index.d.ts +9 -0
  48. package/es/components/fluid-combo-box/index.d.ts.map +1 -0
  49. package/es/components/fluid-combo-box/index.js +9 -0
  50. package/es/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  51. package/es/components/fluid-form/fluid-form.d.ts +19 -0
  52. package/es/components/fluid-form/fluid-form.d.ts.map +1 -0
  53. package/es/components/fluid-form/fluid-form.js +44 -0
  54. package/es/components/fluid-form/fluid-form.js.map +1 -0
  55. package/es/components/fluid-form/fluid-form.scss.js +14 -0
  56. package/es/components/fluid-form/fluid-form.scss.js.map +1 -0
  57. package/es/components/fluid-form/index.d.ts +8 -0
  58. package/es/components/fluid-form/index.d.ts.map +1 -0
  59. package/es/components/fluid-form/index.js +8 -0
  60. package/es/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  61. package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  62. package/es/components/fluid-number-input/fluid-number-input.scss.js.map +1 -1
  63. package/es/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  64. package/es/components/fluid-password-input/fluid-password-input.scss.js.map +1 -1
  65. package/es/components/fluid-search/fluid-search.scss.js +1 -1
  66. package/es/components/fluid-select/fluid-select.scss.js +1 -1
  67. package/es/components/fluid-select/fluid-select.scss.js.map +1 -1
  68. package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  69. package/es/components/fluid-text-input/fluid-text-input.scss.js.map +1 -1
  70. package/es/components/fluid-textarea/fluid-textarea.scss.js +1 -1
  71. package/es/components/fluid-textarea/fluid-textarea.scss.js.map +1 -1
  72. package/es/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  73. package/es/components/form/form-item.scss.js +1 -1
  74. package/es/components/form/form.scss.js +1 -1
  75. package/es/components/form-group/form-group.scss.js +1 -1
  76. package/es/components/grid/column-hang.scss.js +1 -1
  77. package/es/components/grid/grid.d.ts +5 -0
  78. package/es/components/grid/grid.d.ts.map +1 -1
  79. package/es/components/grid/grid.js +11 -1
  80. package/es/components/grid/grid.js.map +1 -1
  81. package/es/components/grid/grid.scss.js +1 -1
  82. package/es/components/grid/grid.scss.js.map +1 -1
  83. package/es/components/icon/icon.d.ts +1 -1
  84. package/es/components/menu/menu-item.d.ts +1 -0
  85. package/es/components/menu/menu-item.d.ts.map +1 -1
  86. package/es/components/menu/menu-item.js +5 -0
  87. package/es/components/menu/menu-item.js.map +1 -1
  88. package/es/components/menu/menu-item.scss.js +1 -1
  89. package/es/components/menu/menu-item.scss.js.map +1 -1
  90. package/es/components/menu-button/menu-button.d.ts.map +1 -1
  91. package/es/components/menu-button/menu-button.js +0 -1
  92. package/es/components/menu-button/menu-button.js.map +1 -1
  93. package/es/components/menu-button/menu-button.scss.js +1 -1
  94. package/es/components/modal/modal.scss.js +1 -1
  95. package/es/components/modal/modal.scss.js.map +1 -1
  96. package/es/components/multi-select/multi-select.d.ts +38 -4
  97. package/es/components/multi-select/multi-select.d.ts.map +1 -1
  98. package/es/components/multi-select/multi-select.js +30 -27
  99. package/es/components/multi-select/multi-select.js.map +1 -1
  100. package/es/components/multi-select/multi-select.scss.js +1 -1
  101. package/es/components/notification/actionable-notification.d.ts +1 -1
  102. package/es/components/notification/actionable-notification.scss.js +1 -1
  103. package/es/components/notification/callout-notification.d.ts +1 -1
  104. package/es/components/notification/inline-notification.d.ts +1 -1
  105. package/es/components/notification/inline-notification.scss.js +1 -1
  106. package/es/components/notification/toast-notification.scss.js +1 -1
  107. package/es/components/number-input/number-input.scss.js +1 -1
  108. package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
  109. package/es/components/page-header/page-header.scss.js +1 -1
  110. package/es/components/pagination/defs.d.ts +25 -0
  111. package/es/components/pagination/defs.d.ts.map +1 -1
  112. package/es/components/pagination/defs.js +27 -1
  113. package/es/components/pagination/defs.js.map +1 -1
  114. package/es/components/pagination/pagination.d.ts +9 -1
  115. package/es/components/pagination/pagination.d.ts.map +1 -1
  116. package/es/components/pagination/pagination.js +7 -2
  117. package/es/components/pagination/pagination.js.map +1 -1
  118. package/es/components/pagination/pagination.scss.js +1 -1
  119. package/es/components/pagination/pagination.scss.js.map +1 -1
  120. package/es/components/pagination-nav/pagination-nav.scss.js +1 -1
  121. package/es/components/password-input/defs.d.ts +5 -1
  122. package/es/components/password-input/defs.d.ts.map +1 -1
  123. package/es/components/password-input/defs.js +4 -0
  124. package/es/components/password-input/defs.js.map +1 -1
  125. package/es/components/password-input/password-input.d.ts +1 -1
  126. package/es/components/password-input/password-input.d.ts.map +1 -1
  127. package/es/components/password-input/password-input.js +15 -15
  128. package/es/components/password-input/password-input.js.map +1 -1
  129. package/es/components/password-input/password-input.scss.js +1 -1
  130. package/es/components/password-input/password-input.scss.js.map +1 -1
  131. package/es/components/popover/popover.scss.js +1 -1
  132. package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
  133. package/es/components/radio-button/radio-button.scss.js +1 -1
  134. package/es/components/search/defs.d.ts +28 -0
  135. package/es/components/search/defs.d.ts.map +1 -0
  136. package/es/components/search/defs.js +40 -0
  137. package/es/components/search/defs.js.map +1 -0
  138. package/es/components/search/search-skeleton.d.ts +4 -4
  139. package/es/components/search/search-skeleton.d.ts.map +1 -1
  140. package/es/components/search/search-skeleton.js +9 -9
  141. package/es/components/search/search-skeleton.js.map +1 -1
  142. package/es/components/search/search.d.ts +4 -3
  143. package/es/components/search/search.d.ts.map +1 -1
  144. package/es/components/search/search.js +3 -5
  145. package/es/components/search/search.js.map +1 -1
  146. package/es/components/search/search.scss.js +1 -1
  147. package/es/components/search/search.scss.js.map +1 -1
  148. package/es/components/select/select.d.ts +1 -1
  149. package/es/components/select/select.d.ts.map +1 -1
  150. package/es/components/select/select.js +1 -4
  151. package/es/components/select/select.js.map +1 -1
  152. package/es/components/select/select.scss.js +1 -1
  153. package/es/components/select/select.scss.js.map +1 -1
  154. package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
  155. package/es/components/slider/slider.d.ts.map +1 -1
  156. package/es/components/slider/slider.js +2 -2
  157. package/es/components/slider/slider.js.map +1 -1
  158. package/es/components/slider/slider.scss.js +1 -1
  159. package/es/components/slug/slug.scss.js +1 -1
  160. package/es/components/tabs/stories/tabs-wrapper.d.ts +53 -0
  161. package/es/components/tabs/stories/tabs-wrapper.d.ts.map +1 -0
  162. package/es/components/tabs/stories/tabs-wrapper.js +129 -0
  163. package/es/components/tabs/stories/tabs-wrapper.js.map +1 -0
  164. package/es/components/tabs/tab.d.ts +23 -0
  165. package/es/components/tabs/tab.d.ts.map +1 -1
  166. package/es/components/tabs/tab.js +59 -3
  167. package/es/components/tabs/tab.js.map +1 -1
  168. package/es/components/tabs/tabs.d.ts +14 -0
  169. package/es/components/tabs/tabs.d.ts.map +1 -1
  170. package/es/components/tabs/tabs.js +74 -25
  171. package/es/components/tabs/tabs.js.map +1 -1
  172. package/es/components/tabs/tabs.scss.js +1 -1
  173. package/es/components/tabs/tabs.scss.js.map +1 -1
  174. package/es/components/tag/tag.scss.js +1 -1
  175. package/es/components/text-input/defs.d.ts +5 -1
  176. package/es/components/text-input/defs.d.ts.map +1 -1
  177. package/es/components/text-input/defs.js +4 -0
  178. package/es/components/text-input/defs.js.map +1 -1
  179. package/es/components/text-input/text-input-skeleton.d.ts +5 -0
  180. package/es/components/text-input/text-input-skeleton.d.ts.map +1 -1
  181. package/es/components/text-input/text-input-skeleton.js +10 -3
  182. package/es/components/text-input/text-input-skeleton.js.map +1 -1
  183. package/es/components/text-input/text-input.d.ts +4 -3
  184. package/es/components/text-input/text-input.d.ts.map +1 -1
  185. package/es/components/text-input/text-input.js +15 -11
  186. package/es/components/text-input/text-input.js.map +1 -1
  187. package/es/components/text-input/text-input.scss.js +1 -1
  188. package/es/components/text-input/text-input.scss.js.map +1 -1
  189. package/es/components/textarea/textarea.scss.js +1 -1
  190. package/es/components/tile/selectable-tile.d.ts +1 -1
  191. package/es/components/tile/tile.scss.js +1 -1
  192. package/es/components/time-picker/time-picker.d.ts +2 -1
  193. package/es/components/time-picker/time-picker.d.ts.map +1 -1
  194. package/es/components/time-picker/time-picker.scss.js +1 -1
  195. package/es/components/toggle-tip/toggletip.scss.js +1 -1
  196. package/es/components/tooltip/tooltip.scss.js +1 -1
  197. package/es/components/tooltip/tooltip.scss.js.map +1 -1
  198. package/es/components/tree-view/tree-view.scss.js +1 -1
  199. package/es/components/ui-shell/header.scss.js +1 -1
  200. package/es/globals/directives/spread.d.ts +1 -1
  201. package/es/globals/directives/spread.d.ts.map +1 -1
  202. package/es/globals/internal/icon-loader-utils.d.ts +1 -1
  203. package/es/globals/internal/icon-loader-utils.d.ts.map +1 -1
  204. package/es/globals/mixins/validity.d.ts +2 -1
  205. package/es/globals/mixins/validity.d.ts.map +1 -1
  206. package/es/globals/mixins/validity.js.map +1 -1
  207. package/es/index.js +1 -1
  208. package/es/node_modules/flatpickr/dist/esm/index.js +1516 -0
  209. package/es/node_modules/flatpickr/dist/esm/index.js.map +1 -0
  210. package/es/node_modules/flatpickr/dist/esm/l10n/default.js +99 -0
  211. package/es/node_modules/flatpickr/dist/esm/l10n/default.js.map +1 -0
  212. package/es/node_modules/flatpickr/dist/esm/plugins/rangePlugin.js +130 -0
  213. package/es/node_modules/flatpickr/dist/esm/plugins/rangePlugin.js.map +1 -0
  214. package/es/node_modules/flatpickr/dist/esm/types/options.js +90 -0
  215. package/es/node_modules/flatpickr/dist/esm/types/options.js.map +1 -0
  216. package/es/node_modules/flatpickr/dist/esm/utils/dates.js +118 -0
  217. package/es/node_modules/flatpickr/dist/esm/utils/dates.js.map +1 -0
  218. package/es/node_modules/flatpickr/dist/esm/utils/dom.js +52 -0
  219. package/es/node_modules/flatpickr/dist/esm/utils/dom.js.map +1 -0
  220. package/es/node_modules/flatpickr/dist/esm/utils/formatting.js +181 -0
  221. package/es/node_modules/flatpickr/dist/esm/utils/formatting.js.map +1 -0
  222. package/es/node_modules/flatpickr/dist/esm/utils/index.js +33 -0
  223. package/es/node_modules/flatpickr/dist/esm/utils/index.js.map +1 -0
  224. package/es/node_modules/flatpickr/dist/esm/utils/polyfills.js +26 -0
  225. package/es/node_modules/flatpickr/dist/esm/utils/polyfills.js.map +1 -0
  226. package/es/packages/feature-flags/es/index.js.map +1 -0
  227. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  228. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  229. package/es-custom/components/button/button.scss.js +1 -1
  230. package/es-custom/components/checkbox/checkbox.scss.js +1 -1
  231. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  232. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  233. package/es-custom/components/combo-button/combo-button.scss.js +1 -1
  234. package/es-custom/components/contained-list/contained-list.scss.js +1 -1
  235. package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
  236. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  237. package/es-custom/components/data-table/data-table.scss.js +1 -1
  238. package/es-custom/components/data-table/table-toolbar-search.d.ts +3 -3
  239. package/es-custom/components/data-table/table-toolbar-search.d.ts.map +1 -1
  240. package/es-custom/components/data-table/table-toolbar-search.js +2 -3
  241. package/es-custom/components/data-table/table-toolbar-search.js.map +1 -1
  242. package/es-custom/components/date-picker/date-picker.d.ts +4 -0
  243. package/es-custom/components/date-picker/date-picker.d.ts.map +1 -1
  244. package/es-custom/components/date-picker/date-picker.js +5 -1
  245. package/es-custom/components/date-picker/date-picker.js.map +1 -1
  246. package/es-custom/components/date-picker/date-picker.scss.js +1 -1
  247. package/es-custom/components/date-picker/fix-events-plugin.d.ts.map +1 -1
  248. package/es-custom/components/date-picker/fix-events-plugin.js +0 -6
  249. package/es-custom/components/date-picker/fix-events-plugin.js.map +1 -1
  250. package/es-custom/components/date-picker/range-plugin.d.ts +2 -8
  251. package/es-custom/components/date-picker/range-plugin.d.ts.map +1 -1
  252. package/es-custom/components/date-picker/range-plugin.js +3 -9
  253. package/es-custom/components/date-picker/range-plugin.js.map +1 -1
  254. package/es-custom/components/dialog/dialog.scss.js +1 -1
  255. package/es-custom/components/dropdown/dropdown.d.ts +3 -2
  256. package/es-custom/components/dropdown/dropdown.d.ts.map +1 -1
  257. package/es-custom/components/dropdown/dropdown.js +9 -2
  258. package/es-custom/components/dropdown/dropdown.js.map +1 -1
  259. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  260. package/es-custom/components/feature-flags/index.js +1 -1
  261. package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
  262. package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts +18 -0
  263. package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts.map +1 -0
  264. package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.js +45 -0
  265. package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.js.map +1 -0
  266. package/es-custom/components/fluid-combo-box/fluid-combo-box.d.ts +23 -0
  267. package/es-custom/components/fluid-combo-box/fluid-combo-box.d.ts.map +1 -0
  268. package/es-custom/components/fluid-combo-box/fluid-combo-box.js +53 -0
  269. package/es-custom/components/fluid-combo-box/fluid-combo-box.js.map +1 -0
  270. package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js +14 -0
  271. package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js.map +1 -0
  272. package/es-custom/components/fluid-combo-box/index.d.ts +9 -0
  273. package/es-custom/components/fluid-combo-box/index.d.ts.map +1 -0
  274. package/es-custom/components/fluid-combo-box/index.js +9 -0
  275. package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  276. package/es-custom/components/fluid-form/fluid-form.d.ts +19 -0
  277. package/es-custom/components/fluid-form/fluid-form.d.ts.map +1 -0
  278. package/es-custom/components/fluid-form/fluid-form.js +44 -0
  279. package/es-custom/components/fluid-form/fluid-form.js.map +1 -0
  280. package/es-custom/components/fluid-form/fluid-form.scss.js +14 -0
  281. package/es-custom/components/fluid-form/fluid-form.scss.js.map +1 -0
  282. package/es-custom/components/fluid-form/index.d.ts +8 -0
  283. package/es-custom/components/fluid-form/index.d.ts.map +1 -0
  284. package/es-custom/components/fluid-form/index.js +8 -0
  285. package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  286. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  287. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js.map +1 -1
  288. package/es-custom/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  289. package/es-custom/components/fluid-password-input/fluid-password-input.scss.js.map +1 -1
  290. package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
  291. package/es-custom/components/fluid-select/fluid-select.scss.js +1 -1
  292. package/es-custom/components/fluid-select/fluid-select.scss.js.map +1 -1
  293. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  294. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js.map +1 -1
  295. package/es-custom/components/fluid-textarea/fluid-textarea.scss.js +1 -1
  296. package/es-custom/components/fluid-textarea/fluid-textarea.scss.js.map +1 -1
  297. package/es-custom/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  298. package/es-custom/components/form/form-item.scss.js +1 -1
  299. package/es-custom/components/form/form.scss.js +1 -1
  300. package/es-custom/components/form-group/form-group.scss.js +1 -1
  301. package/es-custom/components/grid/column-hang.scss.js +1 -1
  302. package/es-custom/components/grid/grid.d.ts +5 -0
  303. package/es-custom/components/grid/grid.d.ts.map +1 -1
  304. package/es-custom/components/grid/grid.js +11 -1
  305. package/es-custom/components/grid/grid.js.map +1 -1
  306. package/es-custom/components/grid/grid.scss.js +1 -1
  307. package/es-custom/components/grid/grid.scss.js.map +1 -1
  308. package/es-custom/components/icon/icon.d.ts +1 -1
  309. package/es-custom/components/menu/menu-item.d.ts +1 -0
  310. package/es-custom/components/menu/menu-item.d.ts.map +1 -1
  311. package/es-custom/components/menu/menu-item.js +5 -0
  312. package/es-custom/components/menu/menu-item.js.map +1 -1
  313. package/es-custom/components/menu/menu-item.scss.js +1 -1
  314. package/es-custom/components/menu/menu-item.scss.js.map +1 -1
  315. package/es-custom/components/menu-button/menu-button.d.ts.map +1 -1
  316. package/es-custom/components/menu-button/menu-button.js +0 -1
  317. package/es-custom/components/menu-button/menu-button.js.map +1 -1
  318. package/es-custom/components/menu-button/menu-button.scss.js +1 -1
  319. package/es-custom/components/modal/modal.scss.js +1 -1
  320. package/es-custom/components/modal/modal.scss.js.map +1 -1
  321. package/es-custom/components/multi-select/multi-select.d.ts +38 -4
  322. package/es-custom/components/multi-select/multi-select.d.ts.map +1 -1
  323. package/es-custom/components/multi-select/multi-select.js +30 -27
  324. package/es-custom/components/multi-select/multi-select.js.map +1 -1
  325. package/es-custom/components/multi-select/multi-select.scss.js +1 -1
  326. package/es-custom/components/notification/actionable-notification.d.ts +1 -1
  327. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  328. package/es-custom/components/notification/callout-notification.d.ts +1 -1
  329. package/es-custom/components/notification/inline-notification.d.ts +1 -1
  330. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  331. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  332. package/es-custom/components/number-input/number-input.scss.js +1 -1
  333. package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
  334. package/es-custom/components/page-header/page-header.scss.js +1 -1
  335. package/es-custom/components/pagination/defs.d.ts +25 -0
  336. package/es-custom/components/pagination/defs.d.ts.map +1 -1
  337. package/es-custom/components/pagination/defs.js +27 -1
  338. package/es-custom/components/pagination/defs.js.map +1 -1
  339. package/es-custom/components/pagination/pagination.d.ts +9 -1
  340. package/es-custom/components/pagination/pagination.d.ts.map +1 -1
  341. package/es-custom/components/pagination/pagination.js +7 -2
  342. package/es-custom/components/pagination/pagination.js.map +1 -1
  343. package/es-custom/components/pagination/pagination.scss.js +1 -1
  344. package/es-custom/components/pagination/pagination.scss.js.map +1 -1
  345. package/es-custom/components/pagination-nav/pagination-nav.scss.js +1 -1
  346. package/es-custom/components/password-input/defs.d.ts +5 -1
  347. package/es-custom/components/password-input/defs.d.ts.map +1 -1
  348. package/es-custom/components/password-input/defs.js +4 -0
  349. package/es-custom/components/password-input/defs.js.map +1 -1
  350. package/es-custom/components/password-input/password-input.d.ts +1 -1
  351. package/es-custom/components/password-input/password-input.d.ts.map +1 -1
  352. package/es-custom/components/password-input/password-input.js +15 -15
  353. package/es-custom/components/password-input/password-input.js.map +1 -1
  354. package/es-custom/components/password-input/password-input.scss.js +1 -1
  355. package/es-custom/components/password-input/password-input.scss.js.map +1 -1
  356. package/es-custom/components/popover/popover.scss.js +1 -1
  357. package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
  358. package/es-custom/components/radio-button/radio-button.scss.js +1 -1
  359. package/es-custom/components/search/defs.d.ts +28 -0
  360. package/es-custom/components/search/defs.d.ts.map +1 -0
  361. package/es-custom/components/search/defs.js +40 -0
  362. package/es-custom/components/search/defs.js.map +1 -0
  363. package/es-custom/components/search/search-skeleton.d.ts +4 -4
  364. package/es-custom/components/search/search-skeleton.d.ts.map +1 -1
  365. package/es-custom/components/search/search-skeleton.js +9 -9
  366. package/es-custom/components/search/search-skeleton.js.map +1 -1
  367. package/es-custom/components/search/search.d.ts +4 -3
  368. package/es-custom/components/search/search.d.ts.map +1 -1
  369. package/es-custom/components/search/search.js +3 -5
  370. package/es-custom/components/search/search.js.map +1 -1
  371. package/es-custom/components/search/search.scss.js +1 -1
  372. package/es-custom/components/search/search.scss.js.map +1 -1
  373. package/es-custom/components/select/select.d.ts +1 -1
  374. package/es-custom/components/select/select.d.ts.map +1 -1
  375. package/es-custom/components/select/select.js +1 -4
  376. package/es-custom/components/select/select.js.map +1 -1
  377. package/es-custom/components/select/select.scss.js +1 -1
  378. package/es-custom/components/select/select.scss.js.map +1 -1
  379. package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
  380. package/es-custom/components/slider/slider.d.ts.map +1 -1
  381. package/es-custom/components/slider/slider.js +2 -2
  382. package/es-custom/components/slider/slider.js.map +1 -1
  383. package/es-custom/components/slider/slider.scss.js +1 -1
  384. package/es-custom/components/slug/slug.scss.js +1 -1
  385. package/es-custom/components/tabs/stories/tabs-wrapper.d.ts +53 -0
  386. package/es-custom/components/tabs/stories/tabs-wrapper.d.ts.map +1 -0
  387. package/es-custom/components/tabs/stories/tabs-wrapper.js +129 -0
  388. package/es-custom/components/tabs/stories/tabs-wrapper.js.map +1 -0
  389. package/es-custom/components/tabs/tab.d.ts +23 -0
  390. package/es-custom/components/tabs/tab.d.ts.map +1 -1
  391. package/es-custom/components/tabs/tab.js +59 -3
  392. package/es-custom/components/tabs/tab.js.map +1 -1
  393. package/es-custom/components/tabs/tabs.d.ts +14 -0
  394. package/es-custom/components/tabs/tabs.d.ts.map +1 -1
  395. package/es-custom/components/tabs/tabs.js +74 -25
  396. package/es-custom/components/tabs/tabs.js.map +1 -1
  397. package/es-custom/components/tabs/tabs.scss.js +1 -1
  398. package/es-custom/components/tabs/tabs.scss.js.map +1 -1
  399. package/es-custom/components/tag/tag.scss.js +1 -1
  400. package/es-custom/components/text-input/defs.d.ts +5 -1
  401. package/es-custom/components/text-input/defs.d.ts.map +1 -1
  402. package/es-custom/components/text-input/defs.js +4 -0
  403. package/es-custom/components/text-input/defs.js.map +1 -1
  404. package/es-custom/components/text-input/text-input-skeleton.d.ts +5 -0
  405. package/es-custom/components/text-input/text-input-skeleton.d.ts.map +1 -1
  406. package/es-custom/components/text-input/text-input-skeleton.js +10 -3
  407. package/es-custom/components/text-input/text-input-skeleton.js.map +1 -1
  408. package/es-custom/components/text-input/text-input.d.ts +4 -3
  409. package/es-custom/components/text-input/text-input.d.ts.map +1 -1
  410. package/es-custom/components/text-input/text-input.js +15 -11
  411. package/es-custom/components/text-input/text-input.js.map +1 -1
  412. package/es-custom/components/text-input/text-input.scss.js +1 -1
  413. package/es-custom/components/text-input/text-input.scss.js.map +1 -1
  414. package/es-custom/components/textarea/textarea.scss.js +1 -1
  415. package/es-custom/components/tile/selectable-tile.d.ts +1 -1
  416. package/es-custom/components/tile/tile.scss.js +1 -1
  417. package/es-custom/components/time-picker/time-picker.d.ts +2 -1
  418. package/es-custom/components/time-picker/time-picker.d.ts.map +1 -1
  419. package/es-custom/components/time-picker/time-picker.scss.js +1 -1
  420. package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
  421. package/es-custom/components/tooltip/tooltip.scss.js +1 -1
  422. package/es-custom/components/tooltip/tooltip.scss.js.map +1 -1
  423. package/es-custom/components/tree-view/tree-view.scss.js +1 -1
  424. package/es-custom/components/ui-shell/header.scss.js +1 -1
  425. package/es-custom/globals/directives/spread.d.ts +1 -1
  426. package/es-custom/globals/directives/spread.d.ts.map +1 -1
  427. package/es-custom/globals/internal/icon-loader-utils.d.ts +1 -1
  428. package/es-custom/globals/internal/icon-loader-utils.d.ts.map +1 -1
  429. package/es-custom/globals/mixins/validity.d.ts +2 -1
  430. package/es-custom/globals/mixins/validity.d.ts.map +1 -1
  431. package/es-custom/globals/mixins/validity.js.map +1 -1
  432. package/es-custom/index.js +1 -1
  433. package/es-custom/node_modules/flatpickr/dist/esm/index.js +1516 -0
  434. package/es-custom/node_modules/flatpickr/dist/esm/index.js.map +1 -0
  435. package/es-custom/node_modules/flatpickr/dist/esm/l10n/default.js +99 -0
  436. package/es-custom/node_modules/flatpickr/dist/esm/l10n/default.js.map +1 -0
  437. package/es-custom/node_modules/flatpickr/dist/esm/plugins/rangePlugin.js +130 -0
  438. package/es-custom/node_modules/flatpickr/dist/esm/plugins/rangePlugin.js.map +1 -0
  439. package/es-custom/node_modules/flatpickr/dist/esm/types/options.js +90 -0
  440. package/es-custom/node_modules/flatpickr/dist/esm/types/options.js.map +1 -0
  441. package/es-custom/node_modules/flatpickr/dist/esm/utils/dates.js +118 -0
  442. package/es-custom/node_modules/flatpickr/dist/esm/utils/dates.js.map +1 -0
  443. package/es-custom/node_modules/flatpickr/dist/esm/utils/dom.js +52 -0
  444. package/es-custom/node_modules/flatpickr/dist/esm/utils/dom.js.map +1 -0
  445. package/es-custom/node_modules/flatpickr/dist/esm/utils/formatting.js +181 -0
  446. package/es-custom/node_modules/flatpickr/dist/esm/utils/formatting.js.map +1 -0
  447. package/es-custom/node_modules/flatpickr/dist/esm/utils/index.js +33 -0
  448. package/es-custom/node_modules/flatpickr/dist/esm/utils/index.js.map +1 -0
  449. package/es-custom/node_modules/flatpickr/dist/esm/utils/polyfills.js +26 -0
  450. package/es-custom/node_modules/flatpickr/dist/esm/utils/polyfills.js.map +1 -0
  451. package/es-custom/packages/feature-flags/es/index.js.map +1 -0
  452. package/lib/components/data-table/table-toolbar-search.d.ts +3 -3
  453. package/lib/components/data-table/table-toolbar-search.d.ts.map +1 -1
  454. package/lib/components/date-picker/date-picker.d.ts +4 -0
  455. package/lib/components/date-picker/date-picker.d.ts.map +1 -1
  456. package/lib/components/date-picker/fix-events-plugin.d.ts.map +1 -1
  457. package/lib/components/date-picker/range-plugin.d.ts +2 -8
  458. package/lib/components/date-picker/range-plugin.d.ts.map +1 -1
  459. package/lib/components/dropdown/dropdown.d.ts +3 -2
  460. package/lib/components/dropdown/dropdown.d.ts.map +1 -1
  461. package/lib/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts +18 -0
  462. package/lib/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts.map +1 -0
  463. package/lib/components/fluid-combo-box/fluid-combo-box.d.ts +23 -0
  464. package/lib/components/fluid-combo-box/fluid-combo-box.d.ts.map +1 -0
  465. package/lib/components/fluid-combo-box/index.d.ts +9 -0
  466. package/lib/components/fluid-combo-box/index.d.ts.map +1 -0
  467. package/lib/components/fluid-form/fluid-form.d.ts +19 -0
  468. package/lib/components/fluid-form/fluid-form.d.ts.map +1 -0
  469. package/lib/components/fluid-form/index.d.ts +8 -0
  470. package/lib/components/fluid-form/index.d.ts.map +1 -0
  471. package/lib/components/grid/grid.d.ts +5 -0
  472. package/lib/components/grid/grid.d.ts.map +1 -1
  473. package/lib/components/icon/icon.d.ts +1 -1
  474. package/lib/components/menu/menu-item.d.ts +1 -0
  475. package/lib/components/menu/menu-item.d.ts.map +1 -1
  476. package/lib/components/menu-button/menu-button.d.ts.map +1 -1
  477. package/lib/components/multi-select/multi-select.d.ts +38 -4
  478. package/lib/components/multi-select/multi-select.d.ts.map +1 -1
  479. package/lib/components/notification/actionable-notification.d.ts +1 -1
  480. package/lib/components/notification/callout-notification.d.ts +1 -1
  481. package/lib/components/notification/inline-notification.d.ts +1 -1
  482. package/lib/components/pagination/defs.d.ts +25 -0
  483. package/lib/components/pagination/defs.d.ts.map +1 -1
  484. package/lib/components/pagination/defs.js +27 -0
  485. package/lib/components/pagination/defs.js.map +1 -1
  486. package/lib/components/pagination/pagination.d.ts +9 -1
  487. package/lib/components/pagination/pagination.d.ts.map +1 -1
  488. package/lib/components/password-input/defs.d.ts +5 -1
  489. package/lib/components/password-input/defs.d.ts.map +1 -1
  490. package/lib/components/password-input/defs.js +4 -0
  491. package/lib/components/password-input/defs.js.map +1 -1
  492. package/lib/components/password-input/password-input.d.ts +1 -1
  493. package/lib/components/password-input/password-input.d.ts.map +1 -1
  494. package/lib/components/search/defs.d.ts +28 -0
  495. package/lib/components/search/defs.d.ts.map +1 -0
  496. package/lib/components/search/defs.js +41 -0
  497. package/lib/components/search/defs.js.map +1 -0
  498. package/lib/components/search/search-skeleton.d.ts +4 -4
  499. package/lib/components/search/search-skeleton.d.ts.map +1 -1
  500. package/lib/components/search/search.d.ts +4 -3
  501. package/lib/components/search/search.d.ts.map +1 -1
  502. package/lib/components/select/select.d.ts +1 -1
  503. package/lib/components/select/select.d.ts.map +1 -1
  504. package/lib/components/slider/slider.d.ts.map +1 -1
  505. package/lib/components/tabs/stories/tabs-wrapper.d.ts +53 -0
  506. package/lib/components/tabs/stories/tabs-wrapper.d.ts.map +1 -0
  507. package/lib/components/tabs/tab.d.ts +23 -0
  508. package/lib/components/tabs/tab.d.ts.map +1 -1
  509. package/lib/components/tabs/tabs.d.ts +14 -0
  510. package/lib/components/tabs/tabs.d.ts.map +1 -1
  511. package/lib/components/text-input/defs.d.ts +5 -1
  512. package/lib/components/text-input/defs.d.ts.map +1 -1
  513. package/lib/components/text-input/defs.js +4 -0
  514. package/lib/components/text-input/defs.js.map +1 -1
  515. package/lib/components/text-input/text-input-skeleton.d.ts +5 -0
  516. package/lib/components/text-input/text-input-skeleton.d.ts.map +1 -1
  517. package/lib/components/text-input/text-input.d.ts +4 -3
  518. package/lib/components/text-input/text-input.d.ts.map +1 -1
  519. package/lib/components/tile/selectable-tile.d.ts +1 -1
  520. package/lib/components/time-picker/time-picker.d.ts +2 -1
  521. package/lib/components/time-picker/time-picker.d.ts.map +1 -1
  522. package/lib/globals/directives/spread.d.ts +1 -1
  523. package/lib/globals/directives/spread.d.ts.map +1 -1
  524. package/lib/globals/internal/icon-loader-utils.d.ts +1 -1
  525. package/lib/globals/internal/icon-loader-utils.d.ts.map +1 -1
  526. package/lib/globals/mixins/validity.d.ts +2 -1
  527. package/lib/globals/mixins/validity.d.ts.map +1 -1
  528. package/package.json +13 -10
  529. package/scss/components/data-table/_table-action.scss +9 -1
  530. package/scss/components/fluid-combo-box/fluid-combo-box.scss +252 -0
  531. package/scss/components/fluid-form/fluid-form.scss +24 -0
  532. package/scss/components/fluid-number-input/fluid-number-input.scss +3 -1
  533. package/scss/components/fluid-password-input/fluid-password-input.scss +1 -16
  534. package/scss/components/fluid-select/fluid-select.scss +3 -1
  535. package/scss/components/fluid-text-input/fluid-text-input.scss +3 -1
  536. package/scss/components/fluid-textarea/fluid-textarea.scss +3 -1
  537. package/scss/components/grid/grid.scss +20 -0
  538. package/scss/components/menu/menu-item.scss +5 -1
  539. package/scss/components/modal/modal.scss +1 -0
  540. package/scss/components/pagination/pagination.scss +3 -7
  541. package/scss/components/password-input/password-input.scss +1 -17
  542. package/scss/components/search/search.scss +20 -53
  543. package/scss/components/select/select.scss +4 -0
  544. package/scss/components/tabs/tabs-story.scss +19 -1
  545. package/scss/components/tabs/tabs.scss +74 -6
  546. package/scss/components/text-input/text-input.scss +7 -9
  547. package/scss/components/tooltip/tooltip.scss +13 -1
  548. package/telemetry.yml +25 -11
  549. package/es/feature-flags/es/index.js.map +0 -1
  550. package/es-custom/feature-flags/es/index.js.map +0 -1
  551. /package/es/{feature-flags → packages/feature-flags}/es/index.js +0 -0
  552. /package/es-custom/{feature-flags → packages/feature-flags}/es/index.js +0 -0
@@ -0,0 +1,1516 @@
1
+ /**
2
+ * Copyright IBM Corp. 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { HOOKS, defaults } from "./types/options.js";
9
+ import english from "./l10n/default.js";
10
+ import { arrayify, debounce, int, pad } from "./utils/index.js";
11
+ import { clearNode, createElement, createNumberInput, findParent, getEventTarget, toggleClass } from "./utils/dom.js";
12
+ import { monthToStr, tokenRegex } from "./utils/formatting.js";
13
+ import { calculateSecondsSinceMidnight, compareDates, createDateFormatter, createDateParser, duration, getDefaultHours, isBetween, parseSeconds } from "./utils/dates.js";
14
+ import "./utils/polyfills.js";
15
+ //#region ../../node_modules/flatpickr/dist/esm/index.js
16
+ var __assign = function() {
17
+ __assign = Object.assign || function(t) {
18
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
19
+ s = arguments[i];
20
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
21
+ }
22
+ return t;
23
+ };
24
+ return __assign.apply(this, arguments);
25
+ };
26
+ var __spreadArrays = function() {
27
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
28
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];
29
+ return r;
30
+ };
31
+ var DEBOUNCED_CHANGE_MS = 300;
32
+ function FlatpickrInstance(element, instanceConfig) {
33
+ var self = {
34
+ config: __assign(__assign({}, defaults), flatpickr.defaultConfig),
35
+ l10n: english
36
+ };
37
+ self.parseDate = createDateParser({
38
+ config: self.config,
39
+ l10n: self.l10n
40
+ });
41
+ self._handlers = [];
42
+ self.pluginElements = [];
43
+ self.loadedPlugins = [];
44
+ self._bind = bind;
45
+ self._setHoursFromDate = setHoursFromDate;
46
+ self._positionCalendar = positionCalendar;
47
+ self.changeMonth = changeMonth;
48
+ self.changeYear = changeYear;
49
+ self.clear = clear;
50
+ self.close = close;
51
+ self.onMouseOver = onMouseOver;
52
+ self._createElement = createElement;
53
+ self.createDay = createDay;
54
+ self.destroy = destroy;
55
+ self.isEnabled = isEnabled;
56
+ self.jumpToDate = jumpToDate;
57
+ self.updateValue = updateValue;
58
+ self.open = open;
59
+ self.redraw = redraw;
60
+ self.set = set;
61
+ self.setDate = setDate;
62
+ self.toggle = toggle;
63
+ self.getDateStr = getDateStr;
64
+ function setupHelperFunctions() {
65
+ self.utils = { getDaysInMonth: function(month, yr) {
66
+ if (month === void 0) month = self.currentMonth;
67
+ if (yr === void 0) yr = self.currentYear;
68
+ if (month === 1 && (yr % 4 === 0 && yr % 100 !== 0 || yr % 400 === 0)) return 29;
69
+ return self.l10n.daysInMonth[month];
70
+ } };
71
+ }
72
+ function init() {
73
+ self.element = self.input = element;
74
+ self.isOpen = false;
75
+ parseConfig();
76
+ setupLocale();
77
+ setupInputs();
78
+ setupDates();
79
+ setupHelperFunctions();
80
+ if (!self.isMobile) build();
81
+ bindEvents();
82
+ if (self.selectedDates.length || self.config.noCalendar) {
83
+ if (self.config.enableTime) setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : void 0);
84
+ updateValue(false);
85
+ }
86
+ setCalendarWidth();
87
+ var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
88
+ if (!self.isMobile && isSafari) positionCalendar();
89
+ triggerEvent("onReady");
90
+ }
91
+ function getClosestActiveElement() {
92
+ var _a;
93
+ return ((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode()).activeElement || document.activeElement;
94
+ }
95
+ function bindToInstance(fn) {
96
+ return fn.bind(self);
97
+ }
98
+ function setCalendarWidth() {
99
+ var config = self.config;
100
+ if (config.weekNumbers === false && config.showMonths === 1) return;
101
+ else if (config.noCalendar !== true) window.requestAnimationFrame(function() {
102
+ if (self.calendarContainer !== void 0) {
103
+ self.calendarContainer.style.visibility = "hidden";
104
+ self.calendarContainer.style.display = "block";
105
+ }
106
+ if (self.daysContainer !== void 0) {
107
+ var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;
108
+ self.daysContainer.style.width = daysWidth + "px";
109
+ self.calendarContainer.style.width = daysWidth + (self.weekWrapper !== void 0 ? self.weekWrapper.offsetWidth : 0) + "px";
110
+ self.calendarContainer.style.removeProperty("visibility");
111
+ self.calendarContainer.style.removeProperty("display");
112
+ }
113
+ });
114
+ }
115
+ function updateTime(e) {
116
+ if (self.selectedDates.length === 0) {
117
+ var defaultDate = self.config.minDate === void 0 || compareDates(/* @__PURE__ */ new Date(), self.config.minDate) >= 0 ? /* @__PURE__ */ new Date() : new Date(self.config.minDate.getTime());
118
+ var defaults = getDefaultHours(self.config);
119
+ defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());
120
+ self.selectedDates = [defaultDate];
121
+ self.latestSelectedDateObj = defaultDate;
122
+ }
123
+ if (e !== void 0 && e.type !== "blur") timeWrapper(e);
124
+ var prevValue = self._input.value;
125
+ setHoursFromInputs();
126
+ updateValue();
127
+ if (self._input.value !== prevValue) self._debouncedChange();
128
+ }
129
+ function ampm2military(hour, amPM) {
130
+ return hour % 12 + 12 * int(amPM === self.l10n.amPM[1]);
131
+ }
132
+ function military2ampm(hour) {
133
+ switch (hour % 24) {
134
+ case 0:
135
+ case 12: return 12;
136
+ default: return hour % 12;
137
+ }
138
+ }
139
+ function setHoursFromInputs() {
140
+ if (self.hourElement === void 0 || self.minuteElement === void 0) return;
141
+ var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== void 0 ? (parseInt(self.secondElement.value, 10) || 0) % 60 : 0;
142
+ if (self.amPM !== void 0) hours = ampm2military(hours, self.amPM.textContent);
143
+ var limitMinHours = self.config.minTime !== void 0 || self.config.minDate && self.minDateHasTime && self.latestSelectedDateObj && compareDates(self.latestSelectedDateObj, self.config.minDate, true) === 0;
144
+ var limitMaxHours = self.config.maxTime !== void 0 || self.config.maxDate && self.maxDateHasTime && self.latestSelectedDateObj && compareDates(self.latestSelectedDateObj, self.config.maxDate, true) === 0;
145
+ if (self.config.maxTime !== void 0 && self.config.minTime !== void 0 && self.config.minTime > self.config.maxTime) {
146
+ var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());
147
+ var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());
148
+ var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);
149
+ if (currentTime > maxBound && currentTime < minBound) {
150
+ var result = parseSeconds(minBound);
151
+ hours = result[0];
152
+ minutes = result[1];
153
+ seconds = result[2];
154
+ }
155
+ } else {
156
+ if (limitMaxHours) {
157
+ var maxTime = self.config.maxTime !== void 0 ? self.config.maxTime : self.config.maxDate;
158
+ hours = Math.min(hours, maxTime.getHours());
159
+ if (hours === maxTime.getHours()) minutes = Math.min(minutes, maxTime.getMinutes());
160
+ if (minutes === maxTime.getMinutes()) seconds = Math.min(seconds, maxTime.getSeconds());
161
+ }
162
+ if (limitMinHours) {
163
+ var minTime = self.config.minTime !== void 0 ? self.config.minTime : self.config.minDate;
164
+ hours = Math.max(hours, minTime.getHours());
165
+ if (hours === minTime.getHours() && minutes < minTime.getMinutes()) minutes = minTime.getMinutes();
166
+ if (minutes === minTime.getMinutes()) seconds = Math.max(seconds, minTime.getSeconds());
167
+ }
168
+ }
169
+ setHours(hours, minutes, seconds);
170
+ }
171
+ function setHoursFromDate(dateObj) {
172
+ var date = dateObj || self.latestSelectedDateObj;
173
+ if (date && date instanceof Date) setHours(date.getHours(), date.getMinutes(), date.getSeconds());
174
+ }
175
+ function setHours(hours, minutes, seconds) {
176
+ if (self.latestSelectedDateObj !== void 0) self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);
177
+ if (!self.hourElement || !self.minuteElement || self.isMobile) return;
178
+ self.hourElement.value = pad(!self.config.time_24hr ? (12 + hours) % 12 + 12 * int(hours % 12 === 0) : hours);
179
+ self.minuteElement.value = pad(minutes);
180
+ if (self.amPM !== void 0) self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];
181
+ if (self.secondElement !== void 0) self.secondElement.value = pad(seconds);
182
+ }
183
+ function onYearInput(event) {
184
+ var eventTarget = getEventTarget(event);
185
+ var year = parseInt(eventTarget.value) + (event.delta || 0);
186
+ if (year / 1e3 > 1 || event.key === "Enter" && !/[^\d]/.test(year.toString())) changeYear(year);
187
+ }
188
+ function bind(element, event, handler, options) {
189
+ if (event instanceof Array) return event.forEach(function(ev) {
190
+ return bind(element, ev, handler, options);
191
+ });
192
+ if (element instanceof Array) return element.forEach(function(el) {
193
+ return bind(el, event, handler, options);
194
+ });
195
+ element.addEventListener(event, handler, options);
196
+ self._handlers.push({ remove: function() {
197
+ return element.removeEventListener(event, handler, options);
198
+ } });
199
+ }
200
+ function triggerChange() {
201
+ triggerEvent("onChange");
202
+ }
203
+ function bindEvents() {
204
+ if (self.config.wrap) [
205
+ "open",
206
+ "close",
207
+ "toggle",
208
+ "clear"
209
+ ].forEach(function(evt) {
210
+ Array.prototype.forEach.call(self.element.querySelectorAll("[data-" + evt + "]"), function(el) {
211
+ return bind(el, "click", self[evt]);
212
+ });
213
+ });
214
+ if (self.isMobile) {
215
+ setupMobile();
216
+ return;
217
+ }
218
+ var debouncedResize = debounce(onResize, 50);
219
+ self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);
220
+ if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent)) bind(self.daysContainer, "mouseover", function(e) {
221
+ if (self.config.mode === "range") onMouseOver(getEventTarget(e));
222
+ });
223
+ bind(self._input, "keydown", onKeyDown);
224
+ if (self.calendarContainer !== void 0) bind(self.calendarContainer, "keydown", onKeyDown);
225
+ if (!self.config.inline && !self.config.static) bind(window, "resize", debouncedResize);
226
+ if (window.ontouchstart !== void 0) bind(window.document, "touchstart", documentClick);
227
+ else bind(window.document, "mousedown", documentClick);
228
+ bind(window.document, "focus", documentClick, { capture: true });
229
+ if (self.config.clickOpens === true) {
230
+ bind(self._input, "focus", self.open);
231
+ bind(self._input, "click", self.open);
232
+ }
233
+ if (self.daysContainer !== void 0) {
234
+ bind(self.monthNav, "click", onMonthNavClick);
235
+ bind(self.monthNav, ["keyup", "increment"], onYearInput);
236
+ bind(self.daysContainer, "click", selectDate);
237
+ }
238
+ if (self.timeContainer !== void 0 && self.minuteElement !== void 0 && self.hourElement !== void 0) {
239
+ var selText = function(e) {
240
+ return getEventTarget(e).select();
241
+ };
242
+ bind(self.timeContainer, ["increment"], updateTime);
243
+ bind(self.timeContainer, "blur", updateTime, { capture: true });
244
+ bind(self.timeContainer, "click", timeIncrement);
245
+ bind([self.hourElement, self.minuteElement], ["focus", "click"], selText);
246
+ if (self.secondElement !== void 0) bind(self.secondElement, "focus", function() {
247
+ return self.secondElement && self.secondElement.select();
248
+ });
249
+ if (self.amPM !== void 0) bind(self.amPM, "click", function(e) {
250
+ updateTime(e);
251
+ });
252
+ }
253
+ if (self.config.allowInput) bind(self._input, "blur", onBlur);
254
+ }
255
+ function jumpToDate(jumpDate, triggerChange) {
256
+ var jumpTo = jumpDate !== void 0 ? self.parseDate(jumpDate) : self.latestSelectedDateObj || (self.config.minDate && self.config.minDate > self.now ? self.config.minDate : self.config.maxDate && self.config.maxDate < self.now ? self.config.maxDate : self.now);
257
+ var oldYear = self.currentYear;
258
+ var oldMonth = self.currentMonth;
259
+ try {
260
+ if (jumpTo !== void 0) {
261
+ self.currentYear = jumpTo.getFullYear();
262
+ self.currentMonth = jumpTo.getMonth();
263
+ }
264
+ } catch (e) {
265
+ e.message = "Invalid date supplied: " + jumpTo;
266
+ self.config.errorHandler(e);
267
+ }
268
+ if (triggerChange && self.currentYear !== oldYear) {
269
+ triggerEvent("onYearChange");
270
+ buildMonthSwitch();
271
+ }
272
+ if (triggerChange && (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) triggerEvent("onMonthChange");
273
+ self.redraw();
274
+ }
275
+ function timeIncrement(e) {
276
+ var eventTarget = getEventTarget(e);
277
+ if (~eventTarget.className.indexOf("arrow")) incrementNumInput(e, eventTarget.classList.contains("arrowUp") ? 1 : -1);
278
+ }
279
+ function incrementNumInput(e, delta, inputElem) {
280
+ var target = e && getEventTarget(e);
281
+ var input = inputElem || target && target.parentNode && target.parentNode.firstChild;
282
+ var event = createEvent("increment");
283
+ event.delta = delta;
284
+ input && input.dispatchEvent(event);
285
+ }
286
+ function build() {
287
+ var fragment = window.document.createDocumentFragment();
288
+ self.calendarContainer = createElement("div", "flatpickr-calendar");
289
+ self.calendarContainer.tabIndex = -1;
290
+ if (!self.config.noCalendar) {
291
+ fragment.appendChild(buildMonthNav());
292
+ self.innerContainer = createElement("div", "flatpickr-innerContainer");
293
+ if (self.config.weekNumbers) {
294
+ var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;
295
+ self.innerContainer.appendChild(weekWrapper);
296
+ self.weekNumbers = weekNumbers;
297
+ self.weekWrapper = weekWrapper;
298
+ }
299
+ self.rContainer = createElement("div", "flatpickr-rContainer");
300
+ self.rContainer.appendChild(buildWeekdays());
301
+ if (!self.daysContainer) {
302
+ self.daysContainer = createElement("div", "flatpickr-days");
303
+ self.daysContainer.tabIndex = -1;
304
+ }
305
+ buildDays();
306
+ self.rContainer.appendChild(self.daysContainer);
307
+ self.innerContainer.appendChild(self.rContainer);
308
+ fragment.appendChild(self.innerContainer);
309
+ }
310
+ if (self.config.enableTime) fragment.appendChild(buildTime());
311
+ toggleClass(self.calendarContainer, "rangeMode", self.config.mode === "range");
312
+ toggleClass(self.calendarContainer, "animate", self.config.animate === true);
313
+ toggleClass(self.calendarContainer, "multiMonth", self.config.showMonths > 1);
314
+ self.calendarContainer.appendChild(fragment);
315
+ var customAppend = self.config.appendTo !== void 0 && self.config.appendTo.nodeType !== void 0;
316
+ if (self.config.inline || self.config.static) {
317
+ self.calendarContainer.classList.add(self.config.inline ? "inline" : "static");
318
+ if (self.config.inline) {
319
+ if (!customAppend && self.element.parentNode) self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);
320
+ else if (self.config.appendTo !== void 0) self.config.appendTo.appendChild(self.calendarContainer);
321
+ }
322
+ if (self.config.static) {
323
+ var wrapper = createElement("div", "flatpickr-wrapper");
324
+ if (self.element.parentNode) self.element.parentNode.insertBefore(wrapper, self.element);
325
+ wrapper.appendChild(self.element);
326
+ if (self.altInput) wrapper.appendChild(self.altInput);
327
+ wrapper.appendChild(self.calendarContainer);
328
+ }
329
+ }
330
+ if (!self.config.static && !self.config.inline) (self.config.appendTo !== void 0 ? self.config.appendTo : window.document.body).appendChild(self.calendarContainer);
331
+ }
332
+ function createDay(className, date, _dayNumber, i) {
333
+ var dateIsEnabled = isEnabled(date, true), dayElement = createElement("span", className, date.getDate().toString());
334
+ dayElement.dateObj = date;
335
+ dayElement.$i = i;
336
+ dayElement.setAttribute("aria-label", self.formatDate(date, self.config.ariaDateFormat));
337
+ if (className.indexOf("hidden") === -1 && compareDates(date, self.now) === 0) {
338
+ self.todayDateElem = dayElement;
339
+ dayElement.classList.add("today");
340
+ dayElement.setAttribute("aria-current", "date");
341
+ }
342
+ if (dateIsEnabled) {
343
+ dayElement.tabIndex = -1;
344
+ if (isDateSelected(date)) {
345
+ dayElement.classList.add("selected");
346
+ self.selectedDateElem = dayElement;
347
+ if (self.config.mode === "range") {
348
+ toggleClass(dayElement, "startRange", self.selectedDates[0] && compareDates(date, self.selectedDates[0], true) === 0);
349
+ toggleClass(dayElement, "endRange", self.selectedDates[1] && compareDates(date, self.selectedDates[1], true) === 0);
350
+ if (className === "nextMonthDay") dayElement.classList.add("inRange");
351
+ }
352
+ }
353
+ } else dayElement.classList.add("flatpickr-disabled");
354
+ if (self.config.mode === "range") {
355
+ if (isDateInRange(date) && !isDateSelected(date)) dayElement.classList.add("inRange");
356
+ }
357
+ if (self.weekNumbers && self.config.showMonths === 1 && className !== "prevMonthDay" && i % 7 === 6) self.weekNumbers.insertAdjacentHTML("beforeend", "<span class='flatpickr-day'>" + self.config.getWeek(date) + "</span>");
358
+ triggerEvent("onDayCreate", dayElement);
359
+ return dayElement;
360
+ }
361
+ function focusOnDayElem(targetNode) {
362
+ targetNode.focus();
363
+ if (self.config.mode === "range") onMouseOver(targetNode);
364
+ }
365
+ function getFirstAvailableDay(delta) {
366
+ var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;
367
+ var endMonth = delta > 0 ? self.config.showMonths : -1;
368
+ for (var m = startMonth; m != endMonth; m += delta) {
369
+ var month = self.daysContainer.children[m];
370
+ var startIndex = delta > 0 ? 0 : month.children.length - 1;
371
+ var endIndex = delta > 0 ? month.children.length : -1;
372
+ for (var i = startIndex; i != endIndex; i += delta) {
373
+ var c = month.children[i];
374
+ if (c.className.indexOf("hidden") === -1 && isEnabled(c.dateObj)) return c;
375
+ }
376
+ }
377
+ }
378
+ function getNextAvailableDay(current, delta) {
379
+ var givenMonth = current.className.indexOf("Month") === -1 ? current.dateObj.getMonth() : self.currentMonth;
380
+ var endMonth = delta > 0 ? self.config.showMonths : -1;
381
+ var loopDelta = delta > 0 ? 1 : -1;
382
+ for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {
383
+ var month = self.daysContainer.children[m];
384
+ var startIndex = givenMonth - self.currentMonth === m ? current.$i + delta : delta < 0 ? month.children.length - 1 : 0;
385
+ var numMonthDays = month.children.length;
386
+ for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {
387
+ var c = month.children[i];
388
+ if (c.className.indexOf("hidden") === -1 && isEnabled(c.dateObj) && Math.abs(current.$i - i) >= Math.abs(delta)) return focusOnDayElem(c);
389
+ }
390
+ }
391
+ self.changeMonth(loopDelta);
392
+ focusOnDay(getFirstAvailableDay(loopDelta), 0);
393
+ }
394
+ function focusOnDay(current, offset) {
395
+ var activeElement = getClosestActiveElement();
396
+ var dayFocused = isInView(activeElement || document.body);
397
+ var startElem = current !== void 0 ? current : dayFocused ? activeElement : self.selectedDateElem !== void 0 && isInView(self.selectedDateElem) ? self.selectedDateElem : self.todayDateElem !== void 0 && isInView(self.todayDateElem) ? self.todayDateElem : getFirstAvailableDay(offset > 0 ? 1 : -1);
398
+ if (startElem === void 0) self._input.focus();
399
+ else if (!dayFocused) focusOnDayElem(startElem);
400
+ else getNextAvailableDay(startElem, offset);
401
+ }
402
+ function buildMonthDays(year, month) {
403
+ var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;
404
+ var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);
405
+ var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? "prevMonthDay hidden" : "prevMonthDay", nextMonthDayClass = isMultiMonth ? "nextMonthDay hidden" : "nextMonthDay";
406
+ var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;
407
+ for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) days.appendChild(createDay("flatpickr-day " + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));
408
+ for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) days.appendChild(createDay("flatpickr-day", new Date(year, month, dayNumber), dayNumber, dayIndex));
409
+ for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth && (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) days.appendChild(createDay("flatpickr-day " + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));
410
+ var dayContainer = createElement("div", "dayContainer");
411
+ dayContainer.appendChild(days);
412
+ return dayContainer;
413
+ }
414
+ function buildDays() {
415
+ if (self.daysContainer === void 0) return;
416
+ clearNode(self.daysContainer);
417
+ if (self.weekNumbers) clearNode(self.weekNumbers);
418
+ var frag = document.createDocumentFragment();
419
+ for (var i = 0; i < self.config.showMonths; i++) {
420
+ var d = new Date(self.currentYear, self.currentMonth, 1);
421
+ d.setMonth(self.currentMonth + i);
422
+ frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));
423
+ }
424
+ self.daysContainer.appendChild(frag);
425
+ self.days = self.daysContainer.firstChild;
426
+ if (self.config.mode === "range" && self.selectedDates.length === 1) onMouseOver();
427
+ }
428
+ function buildMonthSwitch() {
429
+ if (self.config.showMonths > 1 || self.config.monthSelectorType !== "dropdown") return;
430
+ var shouldBuildMonth = function(month) {
431
+ if (self.config.minDate !== void 0 && self.currentYear === self.config.minDate.getFullYear() && month < self.config.minDate.getMonth()) return false;
432
+ return !(self.config.maxDate !== void 0 && self.currentYear === self.config.maxDate.getFullYear() && month > self.config.maxDate.getMonth());
433
+ };
434
+ self.monthsDropdownContainer.tabIndex = -1;
435
+ self.monthsDropdownContainer.innerHTML = "";
436
+ for (var i = 0; i < 12; i++) {
437
+ if (!shouldBuildMonth(i)) continue;
438
+ var month = createElement("option", "flatpickr-monthDropdown-month");
439
+ month.value = new Date(self.currentYear, i).getMonth().toString();
440
+ month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);
441
+ month.tabIndex = -1;
442
+ if (self.currentMonth === i) month.selected = true;
443
+ self.monthsDropdownContainer.appendChild(month);
444
+ }
445
+ }
446
+ function buildMonth() {
447
+ var container = createElement("div", "flatpickr-month");
448
+ var monthNavFragment = window.document.createDocumentFragment();
449
+ var monthElement;
450
+ if (self.config.showMonths > 1 || self.config.monthSelectorType === "static") monthElement = createElement("span", "cur-month");
451
+ else {
452
+ self.monthsDropdownContainer = createElement("select", "flatpickr-monthDropdown-months");
453
+ self.monthsDropdownContainer.setAttribute("aria-label", self.l10n.monthAriaLabel);
454
+ bind(self.monthsDropdownContainer, "change", function(e) {
455
+ var target = getEventTarget(e);
456
+ var selectedMonth = parseInt(target.value, 10);
457
+ self.changeMonth(selectedMonth - self.currentMonth);
458
+ triggerEvent("onMonthChange");
459
+ });
460
+ buildMonthSwitch();
461
+ monthElement = self.monthsDropdownContainer;
462
+ }
463
+ var yearInput = createNumberInput("cur-year", { tabindex: "-1" });
464
+ var yearElement = yearInput.getElementsByTagName("input")[0];
465
+ yearElement.setAttribute("aria-label", self.l10n.yearAriaLabel);
466
+ if (self.config.minDate) yearElement.setAttribute("min", self.config.minDate.getFullYear().toString());
467
+ if (self.config.maxDate) {
468
+ yearElement.setAttribute("max", self.config.maxDate.getFullYear().toString());
469
+ yearElement.disabled = !!self.config.minDate && self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();
470
+ }
471
+ var currentMonth = createElement("div", "flatpickr-current-month");
472
+ currentMonth.appendChild(monthElement);
473
+ currentMonth.appendChild(yearInput);
474
+ monthNavFragment.appendChild(currentMonth);
475
+ container.appendChild(monthNavFragment);
476
+ return {
477
+ container,
478
+ yearElement,
479
+ monthElement
480
+ };
481
+ }
482
+ function buildMonths() {
483
+ clearNode(self.monthNav);
484
+ self.monthNav.appendChild(self.prevMonthNav);
485
+ if (self.config.showMonths) {
486
+ self.yearElements = [];
487
+ self.monthElements = [];
488
+ }
489
+ for (var m = self.config.showMonths; m--;) {
490
+ var month = buildMonth();
491
+ self.yearElements.push(month.yearElement);
492
+ self.monthElements.push(month.monthElement);
493
+ self.monthNav.appendChild(month.container);
494
+ }
495
+ self.monthNav.appendChild(self.nextMonthNav);
496
+ }
497
+ function buildMonthNav() {
498
+ self.monthNav = createElement("div", "flatpickr-months");
499
+ self.yearElements = [];
500
+ self.monthElements = [];
501
+ self.prevMonthNav = createElement("span", "flatpickr-prev-month");
502
+ self.prevMonthNav.innerHTML = self.config.prevArrow;
503
+ self.nextMonthNav = createElement("span", "flatpickr-next-month");
504
+ self.nextMonthNav.innerHTML = self.config.nextArrow;
505
+ buildMonths();
506
+ Object.defineProperty(self, "_hidePrevMonthArrow", {
507
+ get: function() {
508
+ return self.__hidePrevMonthArrow;
509
+ },
510
+ set: function(bool) {
511
+ if (self.__hidePrevMonthArrow !== bool) {
512
+ toggleClass(self.prevMonthNav, "flatpickr-disabled", bool);
513
+ self.__hidePrevMonthArrow = bool;
514
+ }
515
+ }
516
+ });
517
+ Object.defineProperty(self, "_hideNextMonthArrow", {
518
+ get: function() {
519
+ return self.__hideNextMonthArrow;
520
+ },
521
+ set: function(bool) {
522
+ if (self.__hideNextMonthArrow !== bool) {
523
+ toggleClass(self.nextMonthNav, "flatpickr-disabled", bool);
524
+ self.__hideNextMonthArrow = bool;
525
+ }
526
+ }
527
+ });
528
+ self.currentYearElement = self.yearElements[0];
529
+ updateNavigationCurrentMonth();
530
+ return self.monthNav;
531
+ }
532
+ function buildTime() {
533
+ self.calendarContainer.classList.add("hasTime");
534
+ if (self.config.noCalendar) self.calendarContainer.classList.add("noCalendar");
535
+ var defaults = getDefaultHours(self.config);
536
+ self.timeContainer = createElement("div", "flatpickr-time");
537
+ self.timeContainer.tabIndex = -1;
538
+ var separator = createElement("span", "flatpickr-time-separator", ":");
539
+ var hourInput = createNumberInput("flatpickr-hour", { "aria-label": self.l10n.hourAriaLabel });
540
+ self.hourElement = hourInput.getElementsByTagName("input")[0];
541
+ var minuteInput = createNumberInput("flatpickr-minute", { "aria-label": self.l10n.minuteAriaLabel });
542
+ self.minuteElement = minuteInput.getElementsByTagName("input")[0];
543
+ self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;
544
+ self.hourElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getHours() : self.config.time_24hr ? defaults.hours : military2ampm(defaults.hours));
545
+ self.minuteElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getMinutes() : defaults.minutes);
546
+ self.hourElement.setAttribute("step", self.config.hourIncrement.toString());
547
+ self.minuteElement.setAttribute("step", self.config.minuteIncrement.toString());
548
+ self.hourElement.setAttribute("min", self.config.time_24hr ? "0" : "1");
549
+ self.hourElement.setAttribute("max", self.config.time_24hr ? "23" : "12");
550
+ self.hourElement.setAttribute("maxlength", "2");
551
+ self.minuteElement.setAttribute("min", "0");
552
+ self.minuteElement.setAttribute("max", "59");
553
+ self.minuteElement.setAttribute("maxlength", "2");
554
+ self.timeContainer.appendChild(hourInput);
555
+ self.timeContainer.appendChild(separator);
556
+ self.timeContainer.appendChild(minuteInput);
557
+ if (self.config.time_24hr) self.timeContainer.classList.add("time24hr");
558
+ if (self.config.enableSeconds) {
559
+ self.timeContainer.classList.add("hasSeconds");
560
+ var secondInput = createNumberInput("flatpickr-second");
561
+ self.secondElement = secondInput.getElementsByTagName("input")[0];
562
+ self.secondElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getSeconds() : defaults.seconds);
563
+ self.secondElement.setAttribute("step", self.minuteElement.getAttribute("step"));
564
+ self.secondElement.setAttribute("min", "0");
565
+ self.secondElement.setAttribute("max", "59");
566
+ self.secondElement.setAttribute("maxlength", "2");
567
+ self.timeContainer.appendChild(createElement("span", "flatpickr-time-separator", ":"));
568
+ self.timeContainer.appendChild(secondInput);
569
+ }
570
+ if (!self.config.time_24hr) {
571
+ self.amPM = createElement("span", "flatpickr-am-pm", self.l10n.amPM[int((self.latestSelectedDateObj ? self.hourElement.value : self.config.defaultHour) > 11)]);
572
+ self.amPM.title = self.l10n.toggleTitle;
573
+ self.amPM.tabIndex = -1;
574
+ self.timeContainer.appendChild(self.amPM);
575
+ }
576
+ return self.timeContainer;
577
+ }
578
+ function buildWeekdays() {
579
+ if (!self.weekdayContainer) self.weekdayContainer = createElement("div", "flatpickr-weekdays");
580
+ else clearNode(self.weekdayContainer);
581
+ for (var i = self.config.showMonths; i--;) {
582
+ var container = createElement("div", "flatpickr-weekdaycontainer");
583
+ self.weekdayContainer.appendChild(container);
584
+ }
585
+ updateWeekdays();
586
+ return self.weekdayContainer;
587
+ }
588
+ function updateWeekdays() {
589
+ if (!self.weekdayContainer) return;
590
+ var firstDayOfWeek = self.l10n.firstDayOfWeek;
591
+ var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);
592
+ if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));
593
+ for (var i = self.config.showMonths; i--;) self.weekdayContainer.children[i].innerHTML = "\n <span class='flatpickr-weekday'>\n " + weekdays.join("</span><span class='flatpickr-weekday'>") + "\n </span>\n ";
594
+ }
595
+ function buildWeeks() {
596
+ self.calendarContainer.classList.add("hasWeeks");
597
+ var weekWrapper = createElement("div", "flatpickr-weekwrapper");
598
+ weekWrapper.appendChild(createElement("span", "flatpickr-weekday", self.l10n.weekAbbreviation));
599
+ var weekNumbers = createElement("div", "flatpickr-weeks");
600
+ weekWrapper.appendChild(weekNumbers);
601
+ return {
602
+ weekWrapper,
603
+ weekNumbers
604
+ };
605
+ }
606
+ function changeMonth(value, isOffset) {
607
+ if (isOffset === void 0) isOffset = true;
608
+ var delta = isOffset ? value : value - self.currentMonth;
609
+ if (delta < 0 && self._hidePrevMonthArrow === true || delta > 0 && self._hideNextMonthArrow === true) return;
610
+ self.currentMonth += delta;
611
+ if (self.currentMonth < 0 || self.currentMonth > 11) {
612
+ self.currentYear += self.currentMonth > 11 ? 1 : -1;
613
+ self.currentMonth = (self.currentMonth + 12) % 12;
614
+ triggerEvent("onYearChange");
615
+ buildMonthSwitch();
616
+ }
617
+ buildDays();
618
+ triggerEvent("onMonthChange");
619
+ updateNavigationCurrentMonth();
620
+ }
621
+ function clear(triggerChangeEvent, toInitial) {
622
+ if (triggerChangeEvent === void 0) triggerChangeEvent = true;
623
+ if (toInitial === void 0) toInitial = true;
624
+ self.input.value = "";
625
+ if (self.altInput !== void 0) self.altInput.value = "";
626
+ if (self.mobileInput !== void 0) self.mobileInput.value = "";
627
+ self.selectedDates = [];
628
+ self.latestSelectedDateObj = void 0;
629
+ if (toInitial === true) {
630
+ self.currentYear = self._initialDate.getFullYear();
631
+ self.currentMonth = self._initialDate.getMonth();
632
+ }
633
+ if (self.config.enableTime === true) {
634
+ var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;
635
+ setHours(hours, minutes, seconds);
636
+ }
637
+ self.redraw();
638
+ if (triggerChangeEvent) triggerEvent("onChange");
639
+ }
640
+ function close() {
641
+ self.isOpen = false;
642
+ if (!self.isMobile) {
643
+ if (self.calendarContainer !== void 0) self.calendarContainer.classList.remove("open");
644
+ if (self._input !== void 0) self._input.classList.remove("active");
645
+ }
646
+ triggerEvent("onClose");
647
+ }
648
+ function destroy() {
649
+ if (self.config !== void 0) triggerEvent("onDestroy");
650
+ for (var i = self._handlers.length; i--;) self._handlers[i].remove();
651
+ self._handlers = [];
652
+ if (self.mobileInput) {
653
+ if (self.mobileInput.parentNode) self.mobileInput.parentNode.removeChild(self.mobileInput);
654
+ self.mobileInput = void 0;
655
+ } else if (self.calendarContainer && self.calendarContainer.parentNode) if (self.config.static && self.calendarContainer.parentNode) {
656
+ var wrapper = self.calendarContainer.parentNode;
657
+ wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);
658
+ if (wrapper.parentNode) {
659
+ while (wrapper.firstChild) wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);
660
+ wrapper.parentNode.removeChild(wrapper);
661
+ }
662
+ } else self.calendarContainer.parentNode.removeChild(self.calendarContainer);
663
+ if (self.altInput) {
664
+ self.input.type = "text";
665
+ if (self.altInput.parentNode) self.altInput.parentNode.removeChild(self.altInput);
666
+ delete self.altInput;
667
+ }
668
+ if (self.input) {
669
+ self.input.type = self.input._type;
670
+ self.input.classList.remove("flatpickr-input");
671
+ self.input.removeAttribute("readonly");
672
+ }
673
+ [
674
+ "_showTimeInput",
675
+ "latestSelectedDateObj",
676
+ "_hideNextMonthArrow",
677
+ "_hidePrevMonthArrow",
678
+ "__hideNextMonthArrow",
679
+ "__hidePrevMonthArrow",
680
+ "isMobile",
681
+ "isOpen",
682
+ "selectedDateElem",
683
+ "minDateHasTime",
684
+ "maxDateHasTime",
685
+ "days",
686
+ "daysContainer",
687
+ "_input",
688
+ "_positionElement",
689
+ "innerContainer",
690
+ "rContainer",
691
+ "monthNav",
692
+ "todayDateElem",
693
+ "calendarContainer",
694
+ "weekdayContainer",
695
+ "prevMonthNav",
696
+ "nextMonthNav",
697
+ "monthsDropdownContainer",
698
+ "currentMonthElement",
699
+ "currentYearElement",
700
+ "navigationCurrentMonth",
701
+ "selectedDateElem",
702
+ "config"
703
+ ].forEach(function(k) {
704
+ try {
705
+ delete self[k];
706
+ } catch (_) {}
707
+ });
708
+ }
709
+ function isCalendarElem(elem) {
710
+ return self.calendarContainer.contains(elem);
711
+ }
712
+ function documentClick(e) {
713
+ if (self.isOpen && !self.config.inline) {
714
+ var eventTarget_1 = getEventTarget(e);
715
+ var isCalendarElement = isCalendarElem(eventTarget_1);
716
+ var lostFocus = !(eventTarget_1 === self.input || eventTarget_1 === self.altInput || self.element.contains(eventTarget_1) || e.composedPath && (~e.composedPath().indexOf(self.input) || self.altInput && ~e.composedPath().indexOf(self.altInput))) && !isCalendarElement && !isCalendarElem(e.relatedTarget);
717
+ var isIgnored = !self.config.ignoredFocusElements.some(function(elem) {
718
+ return elem.contains(eventTarget_1);
719
+ });
720
+ if (lostFocus && isIgnored) {
721
+ if (self.timeContainer !== void 0 && self.minuteElement !== void 0 && self.hourElement !== void 0 && self.input.value !== "" && self.input.value !== void 0) updateTime();
722
+ self.close();
723
+ if (self.config && self.config.mode === "range" && self.selectedDates.length === 1) self.clear(false);
724
+ }
725
+ }
726
+ }
727
+ function changeYear(newYear) {
728
+ if (!newYear || self.config.minDate && newYear < self.config.minDate.getFullYear() || self.config.maxDate && newYear > self.config.maxDate.getFullYear()) return;
729
+ var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;
730
+ self.currentYear = newYearNum || self.currentYear;
731
+ if (self.config.maxDate && self.currentYear === self.config.maxDate.getFullYear()) self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);
732
+ else if (self.config.minDate && self.currentYear === self.config.minDate.getFullYear()) self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);
733
+ if (isNewYear) {
734
+ self.redraw();
735
+ triggerEvent("onYearChange");
736
+ buildMonthSwitch();
737
+ }
738
+ }
739
+ function isEnabled(date, timeless) {
740
+ var _a;
741
+ if (timeless === void 0) timeless = true;
742
+ var dateToCheck = self.parseDate(date, void 0, timeless);
743
+ if (self.config.minDate && dateToCheck && compareDates(dateToCheck, self.config.minDate, timeless !== void 0 ? timeless : !self.minDateHasTime) < 0 || self.config.maxDate && dateToCheck && compareDates(dateToCheck, self.config.maxDate, timeless !== void 0 ? timeless : !self.maxDateHasTime) > 0) return false;
744
+ if (!self.config.enable && self.config.disable.length === 0) return true;
745
+ if (dateToCheck === void 0) return false;
746
+ var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;
747
+ for (var i = 0, d = void 0; i < array.length; i++) {
748
+ d = array[i];
749
+ if (typeof d === "function" && d(dateToCheck)) return bool;
750
+ else if (d instanceof Date && dateToCheck !== void 0 && d.getTime() === dateToCheck.getTime()) return bool;
751
+ else if (typeof d === "string") {
752
+ var parsed = self.parseDate(d, void 0, true);
753
+ return parsed && parsed.getTime() === dateToCheck.getTime() ? bool : !bool;
754
+ } else if (typeof d === "object" && dateToCheck !== void 0 && d.from && d.to && dateToCheck.getTime() >= d.from.getTime() && dateToCheck.getTime() <= d.to.getTime()) return bool;
755
+ }
756
+ return !bool;
757
+ }
758
+ function isInView(elem) {
759
+ if (self.daysContainer !== void 0) return elem.className.indexOf("hidden") === -1 && elem.className.indexOf("flatpickr-disabled") === -1 && self.daysContainer.contains(elem);
760
+ return false;
761
+ }
762
+ function onBlur(e) {
763
+ var isInput = e.target === self._input;
764
+ var valueChanged = self._input.value.trimEnd() !== getDateStr();
765
+ if (isInput && valueChanged && !(e.relatedTarget && isCalendarElem(e.relatedTarget))) self.setDate(self._input.value, true, e.target === self.altInput ? self.config.altFormat : self.config.dateFormat);
766
+ }
767
+ function onKeyDown(e) {
768
+ var eventTarget = getEventTarget(e);
769
+ var isInput = self.config.wrap ? element.contains(eventTarget) : eventTarget === self._input;
770
+ var allowInput = self.config.allowInput;
771
+ var allowKeydown = self.isOpen && (!allowInput || !isInput);
772
+ var allowInlineKeydown = self.config.inline && isInput && !allowInput;
773
+ if (e.keyCode === 13 && isInput) if (allowInput) {
774
+ self.setDate(self._input.value, true, eventTarget === self.altInput ? self.config.altFormat : self.config.dateFormat);
775
+ self.close();
776
+ return eventTarget.blur();
777
+ } else self.open();
778
+ else if (isCalendarElem(eventTarget) || allowKeydown || allowInlineKeydown) {
779
+ var isTimeObj = !!self.timeContainer && self.timeContainer.contains(eventTarget);
780
+ switch (e.keyCode) {
781
+ case 13:
782
+ if (isTimeObj) {
783
+ e.preventDefault();
784
+ updateTime();
785
+ focusAndClose();
786
+ } else selectDate(e);
787
+ break;
788
+ case 27:
789
+ e.preventDefault();
790
+ focusAndClose();
791
+ break;
792
+ case 8:
793
+ case 46:
794
+ if (isInput && !self.config.allowInput) {
795
+ e.preventDefault();
796
+ self.clear();
797
+ }
798
+ break;
799
+ case 37:
800
+ case 39:
801
+ if (!isTimeObj && !isInput) {
802
+ e.preventDefault();
803
+ var activeElement = getClosestActiveElement();
804
+ if (self.daysContainer !== void 0 && (allowInput === false || activeElement && isInView(activeElement))) {
805
+ var delta_1 = e.keyCode === 39 ? 1 : -1;
806
+ if (!e.ctrlKey) focusOnDay(void 0, delta_1);
807
+ else {
808
+ e.stopPropagation();
809
+ changeMonth(delta_1);
810
+ focusOnDay(getFirstAvailableDay(1), 0);
811
+ }
812
+ }
813
+ } else if (self.hourElement) self.hourElement.focus();
814
+ break;
815
+ case 38:
816
+ case 40:
817
+ e.preventDefault();
818
+ var delta = e.keyCode === 40 ? 1 : -1;
819
+ if (self.daysContainer && eventTarget.$i !== void 0 || eventTarget === self.input || eventTarget === self.altInput) {
820
+ if (e.ctrlKey) {
821
+ e.stopPropagation();
822
+ changeYear(self.currentYear - delta);
823
+ focusOnDay(getFirstAvailableDay(1), 0);
824
+ } else if (!isTimeObj) focusOnDay(void 0, delta * 7);
825
+ } else if (eventTarget === self.currentYearElement) changeYear(self.currentYear - delta);
826
+ else if (self.config.enableTime) {
827
+ if (!isTimeObj && self.hourElement) self.hourElement.focus();
828
+ updateTime(e);
829
+ self._debouncedChange();
830
+ }
831
+ break;
832
+ case 9:
833
+ if (isTimeObj) {
834
+ var elems = [
835
+ self.hourElement,
836
+ self.minuteElement,
837
+ self.secondElement,
838
+ self.amPM
839
+ ].concat(self.pluginElements).filter(function(x) {
840
+ return x;
841
+ });
842
+ var i = elems.indexOf(eventTarget);
843
+ if (i !== -1) {
844
+ var target = elems[i + (e.shiftKey ? -1 : 1)];
845
+ e.preventDefault();
846
+ (target || self._input).focus();
847
+ }
848
+ } else if (!self.config.noCalendar && self.daysContainer && self.daysContainer.contains(eventTarget) && e.shiftKey) {
849
+ e.preventDefault();
850
+ self._input.focus();
851
+ }
852
+ break;
853
+ default: break;
854
+ }
855
+ }
856
+ if (self.amPM !== void 0 && eventTarget === self.amPM) switch (e.key) {
857
+ case self.l10n.amPM[0].charAt(0):
858
+ case self.l10n.amPM[0].charAt(0).toLowerCase():
859
+ self.amPM.textContent = self.l10n.amPM[0];
860
+ setHoursFromInputs();
861
+ updateValue();
862
+ break;
863
+ case self.l10n.amPM[1].charAt(0):
864
+ case self.l10n.amPM[1].charAt(0).toLowerCase():
865
+ self.amPM.textContent = self.l10n.amPM[1];
866
+ setHoursFromInputs();
867
+ updateValue();
868
+ break;
869
+ }
870
+ if (isInput || isCalendarElem(eventTarget)) triggerEvent("onKeyDown", e);
871
+ }
872
+ function onMouseOver(elem, cellClass) {
873
+ if (cellClass === void 0) cellClass = "flatpickr-day";
874
+ if (self.selectedDates.length !== 1 || elem && (!elem.classList.contains(cellClass) || elem.classList.contains("flatpickr-disabled"))) return;
875
+ var hoverDate = elem ? elem.dateObj.getTime() : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], void 0, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());
876
+ var containsDisabled = false;
877
+ var minRange = 0, maxRange = 0;
878
+ for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) if (!isEnabled(new Date(t), true)) {
879
+ containsDisabled = containsDisabled || t > rangeStartDate && t < rangeEndDate;
880
+ if (t < initialDate && (!minRange || t > minRange)) minRange = t;
881
+ else if (t > initialDate && (!maxRange || t < maxRange)) maxRange = t;
882
+ }
883
+ Array.from(self.rContainer.querySelectorAll("*:nth-child(-n+" + self.config.showMonths + ") > ." + cellClass)).forEach(function(dayElem) {
884
+ var timestamp = dayElem.dateObj.getTime();
885
+ var outOfRange = minRange > 0 && timestamp < minRange || maxRange > 0 && timestamp > maxRange;
886
+ if (outOfRange) {
887
+ dayElem.classList.add("notAllowed");
888
+ [
889
+ "inRange",
890
+ "startRange",
891
+ "endRange"
892
+ ].forEach(function(c) {
893
+ dayElem.classList.remove(c);
894
+ });
895
+ return;
896
+ } else if (containsDisabled && !outOfRange) return;
897
+ [
898
+ "startRange",
899
+ "inRange",
900
+ "endRange",
901
+ "notAllowed"
902
+ ].forEach(function(c) {
903
+ dayElem.classList.remove(c);
904
+ });
905
+ if (elem !== void 0) {
906
+ elem.classList.add(hoverDate <= self.selectedDates[0].getTime() ? "startRange" : "endRange");
907
+ if (initialDate < hoverDate && timestamp === initialDate) dayElem.classList.add("startRange");
908
+ else if (initialDate > hoverDate && timestamp === initialDate) dayElem.classList.add("endRange");
909
+ if (timestamp >= minRange && (maxRange === 0 || timestamp <= maxRange) && isBetween(timestamp, initialDate, hoverDate)) dayElem.classList.add("inRange");
910
+ }
911
+ });
912
+ }
913
+ function onResize() {
914
+ if (self.isOpen && !self.config.static && !self.config.inline) positionCalendar();
915
+ }
916
+ function open(e, positionElement) {
917
+ if (positionElement === void 0) positionElement = self._positionElement;
918
+ if (self.isMobile === true) {
919
+ if (e) {
920
+ e.preventDefault();
921
+ var eventTarget = getEventTarget(e);
922
+ if (eventTarget) eventTarget.blur();
923
+ }
924
+ if (self.mobileInput !== void 0) {
925
+ self.mobileInput.focus();
926
+ self.mobileInput.click();
927
+ }
928
+ triggerEvent("onOpen");
929
+ return;
930
+ } else if (self._input.disabled || self.config.inline) return;
931
+ var wasOpen = self.isOpen;
932
+ self.isOpen = true;
933
+ if (!wasOpen) {
934
+ self.calendarContainer.classList.add("open");
935
+ self._input.classList.add("active");
936
+ triggerEvent("onOpen");
937
+ positionCalendar(positionElement);
938
+ }
939
+ if (self.config.enableTime === true && self.config.noCalendar === true) {
940
+ if (self.config.allowInput === false && (e === void 0 || !self.timeContainer.contains(e.relatedTarget))) setTimeout(function() {
941
+ return self.hourElement.select();
942
+ }, 50);
943
+ }
944
+ }
945
+ function minMaxDateSetter(type) {
946
+ return function(date) {
947
+ var dateObj = self.config["_" + type + "Date"] = self.parseDate(date, self.config.dateFormat);
948
+ var inverseDateObj = self.config["_" + (type === "min" ? "max" : "min") + "Date"];
949
+ if (dateObj !== void 0) self[type === "min" ? "minDateHasTime" : "maxDateHasTime"] = dateObj.getHours() > 0 || dateObj.getMinutes() > 0 || dateObj.getSeconds() > 0;
950
+ if (self.selectedDates) {
951
+ self.selectedDates = self.selectedDates.filter(function(d) {
952
+ return isEnabled(d);
953
+ });
954
+ if (!self.selectedDates.length && type === "min") setHoursFromDate(dateObj);
955
+ updateValue();
956
+ }
957
+ if (self.daysContainer) {
958
+ redraw();
959
+ if (dateObj !== void 0) self.currentYearElement[type] = dateObj.getFullYear().toString();
960
+ else self.currentYearElement.removeAttribute(type);
961
+ self.currentYearElement.disabled = !!inverseDateObj && dateObj !== void 0 && inverseDateObj.getFullYear() === dateObj.getFullYear();
962
+ }
963
+ };
964
+ }
965
+ function parseConfig() {
966
+ var boolOpts = [
967
+ "wrap",
968
+ "weekNumbers",
969
+ "allowInput",
970
+ "allowInvalidPreload",
971
+ "clickOpens",
972
+ "time_24hr",
973
+ "enableTime",
974
+ "noCalendar",
975
+ "altInput",
976
+ "shorthandCurrentMonth",
977
+ "inline",
978
+ "static",
979
+ "enableSeconds",
980
+ "disableMobile"
981
+ ];
982
+ var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);
983
+ var formats = {};
984
+ self.config.parseDate = userConfig.parseDate;
985
+ self.config.formatDate = userConfig.formatDate;
986
+ Object.defineProperty(self.config, "enable", {
987
+ get: function() {
988
+ return self.config._enable;
989
+ },
990
+ set: function(dates) {
991
+ self.config._enable = parseDateRules(dates);
992
+ }
993
+ });
994
+ Object.defineProperty(self.config, "disable", {
995
+ get: function() {
996
+ return self.config._disable;
997
+ },
998
+ set: function(dates) {
999
+ self.config._disable = parseDateRules(dates);
1000
+ }
1001
+ });
1002
+ var timeMode = userConfig.mode === "time";
1003
+ if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {
1004
+ var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;
1005
+ formats.dateFormat = userConfig.noCalendar || timeMode ? "H:i" + (userConfig.enableSeconds ? ":S" : "") : defaultDateFormat + " H:i" + (userConfig.enableSeconds ? ":S" : "");
1006
+ }
1007
+ if (userConfig.altInput && (userConfig.enableTime || timeMode) && !userConfig.altFormat) {
1008
+ var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;
1009
+ formats.altFormat = userConfig.noCalendar || timeMode ? "h:i" + (userConfig.enableSeconds ? ":S K" : " K") : defaultAltFormat + (" h:i" + (userConfig.enableSeconds ? ":S" : "") + " K");
1010
+ }
1011
+ Object.defineProperty(self.config, "minDate", {
1012
+ get: function() {
1013
+ return self.config._minDate;
1014
+ },
1015
+ set: minMaxDateSetter("min")
1016
+ });
1017
+ Object.defineProperty(self.config, "maxDate", {
1018
+ get: function() {
1019
+ return self.config._maxDate;
1020
+ },
1021
+ set: minMaxDateSetter("max")
1022
+ });
1023
+ var minMaxTimeSetter = function(type) {
1024
+ return function(val) {
1025
+ self.config[type === "min" ? "_minTime" : "_maxTime"] = self.parseDate(val, "H:i:S");
1026
+ };
1027
+ };
1028
+ Object.defineProperty(self.config, "minTime", {
1029
+ get: function() {
1030
+ return self.config._minTime;
1031
+ },
1032
+ set: minMaxTimeSetter("min")
1033
+ });
1034
+ Object.defineProperty(self.config, "maxTime", {
1035
+ get: function() {
1036
+ return self.config._maxTime;
1037
+ },
1038
+ set: minMaxTimeSetter("max")
1039
+ });
1040
+ if (userConfig.mode === "time") {
1041
+ self.config.noCalendar = true;
1042
+ self.config.enableTime = true;
1043
+ }
1044
+ Object.assign(self.config, formats, userConfig);
1045
+ for (var i = 0; i < boolOpts.length; i++) self.config[boolOpts[i]] = self.config[boolOpts[i]] === true || self.config[boolOpts[i]] === "true";
1046
+ HOOKS.filter(function(hook) {
1047
+ return self.config[hook] !== void 0;
1048
+ }).forEach(function(hook) {
1049
+ self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);
1050
+ });
1051
+ self.isMobile = !self.config.disableMobile && !self.config.inline && self.config.mode === "single" && !self.config.disable.length && !self.config.enable && !self.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
1052
+ for (var i = 0; i < self.config.plugins.length; i++) {
1053
+ var pluginConf = self.config.plugins[i](self) || {};
1054
+ for (var key in pluginConf) if (HOOKS.indexOf(key) > -1) self.config[key] = arrayify(pluginConf[key]).map(bindToInstance).concat(self.config[key]);
1055
+ else if (typeof userConfig[key] === "undefined") self.config[key] = pluginConf[key];
1056
+ }
1057
+ if (!userConfig.altInputClass) self.config.altInputClass = getInputElem().className + " " + self.config.altInputClass;
1058
+ triggerEvent("onParseConfig");
1059
+ }
1060
+ function getInputElem() {
1061
+ return self.config.wrap ? element.querySelector("[data-input]") : element;
1062
+ }
1063
+ function setupLocale() {
1064
+ if (typeof self.config.locale !== "object" && typeof flatpickr.l10ns[self.config.locale] === "undefined") self.config.errorHandler(/* @__PURE__ */ new Error("flatpickr: invalid locale " + self.config.locale));
1065
+ self.l10n = __assign(__assign({}, flatpickr.l10ns.default), typeof self.config.locale === "object" ? self.config.locale : self.config.locale !== "default" ? flatpickr.l10ns[self.config.locale] : void 0);
1066
+ tokenRegex.D = "(" + self.l10n.weekdays.shorthand.join("|") + ")";
1067
+ tokenRegex.l = "(" + self.l10n.weekdays.longhand.join("|") + ")";
1068
+ tokenRegex.M = "(" + self.l10n.months.shorthand.join("|") + ")";
1069
+ tokenRegex.F = "(" + self.l10n.months.longhand.join("|") + ")";
1070
+ tokenRegex.K = "(" + self.l10n.amPM[0] + "|" + self.l10n.amPM[1] + "|" + self.l10n.amPM[0].toLowerCase() + "|" + self.l10n.amPM[1].toLowerCase() + ")";
1071
+ if (__assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {}))).time_24hr === void 0 && flatpickr.defaultConfig.time_24hr === void 0) self.config.time_24hr = self.l10n.time_24hr;
1072
+ self.formatDate = createDateFormatter(self);
1073
+ self.parseDate = createDateParser({
1074
+ config: self.config,
1075
+ l10n: self.l10n
1076
+ });
1077
+ }
1078
+ function positionCalendar(customPositionElement) {
1079
+ if (typeof self.config.position === "function") {
1080
+ self.config.position(self, customPositionElement);
1081
+ return;
1082
+ }
1083
+ if (self.calendarContainer === void 0) return;
1084
+ triggerEvent("onPreCalendarPosition");
1085
+ var positionElement = customPositionElement || self._positionElement;
1086
+ var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function(acc, child) {
1087
+ return acc + child.offsetHeight;
1088
+ }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(" "), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === "above" || configPosVertical !== "below" && distanceFromBottom < calendarHeight && inputBounds.top > calendarHeight;
1089
+ var top = window.pageYOffset + inputBounds.top + (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);
1090
+ toggleClass(self.calendarContainer, "arrowTop", !showOnTop);
1091
+ toggleClass(self.calendarContainer, "arrowBottom", showOnTop);
1092
+ if (self.config.inline) return;
1093
+ var left = window.pageXOffset + inputBounds.left;
1094
+ var isCenter = false;
1095
+ var isRight = false;
1096
+ if (configPosHorizontal === "center") {
1097
+ left -= (calendarWidth - inputBounds.width) / 2;
1098
+ isCenter = true;
1099
+ } else if (configPosHorizontal === "right") {
1100
+ left -= calendarWidth - inputBounds.width;
1101
+ isRight = true;
1102
+ }
1103
+ toggleClass(self.calendarContainer, "arrowLeft", !isCenter && !isRight);
1104
+ toggleClass(self.calendarContainer, "arrowCenter", isCenter);
1105
+ toggleClass(self.calendarContainer, "arrowRight", isRight);
1106
+ var right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);
1107
+ var rightMost = left + calendarWidth > window.document.body.offsetWidth;
1108
+ var centerMost = right + calendarWidth > window.document.body.offsetWidth;
1109
+ toggleClass(self.calendarContainer, "rightMost", rightMost);
1110
+ if (self.config.static) return;
1111
+ self.calendarContainer.style.top = top + "px";
1112
+ if (!rightMost) {
1113
+ self.calendarContainer.style.left = left + "px";
1114
+ self.calendarContainer.style.right = "auto";
1115
+ } else if (!centerMost) {
1116
+ self.calendarContainer.style.left = "auto";
1117
+ self.calendarContainer.style.right = right + "px";
1118
+ } else {
1119
+ var doc = getDocumentStyleSheet();
1120
+ if (doc === void 0) return;
1121
+ var bodyWidth = window.document.body.offsetWidth;
1122
+ var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);
1123
+ var centerBefore = ".flatpickr-calendar.centerMost:before";
1124
+ var centerAfter = ".flatpickr-calendar.centerMost:after";
1125
+ var centerIndex = doc.cssRules.length;
1126
+ var centerStyle = "{left:" + inputBounds.left + "px;right:auto;}";
1127
+ toggleClass(self.calendarContainer, "rightMost", false);
1128
+ toggleClass(self.calendarContainer, "centerMost", true);
1129
+ doc.insertRule(centerBefore + "," + centerAfter + centerStyle, centerIndex);
1130
+ self.calendarContainer.style.left = centerLeft + "px";
1131
+ self.calendarContainer.style.right = "auto";
1132
+ }
1133
+ }
1134
+ function getDocumentStyleSheet() {
1135
+ var editableSheet = null;
1136
+ for (var i = 0; i < document.styleSheets.length; i++) {
1137
+ var sheet = document.styleSheets[i];
1138
+ if (!sheet.cssRules) continue;
1139
+ try {
1140
+ sheet.cssRules;
1141
+ } catch (err) {
1142
+ continue;
1143
+ }
1144
+ editableSheet = sheet;
1145
+ break;
1146
+ }
1147
+ return editableSheet != null ? editableSheet : createStyleSheet();
1148
+ }
1149
+ function createStyleSheet() {
1150
+ var style = document.createElement("style");
1151
+ document.head.appendChild(style);
1152
+ return style.sheet;
1153
+ }
1154
+ function redraw() {
1155
+ if (self.config.noCalendar || self.isMobile) return;
1156
+ buildMonthSwitch();
1157
+ updateNavigationCurrentMonth();
1158
+ buildDays();
1159
+ }
1160
+ function focusAndClose() {
1161
+ self._input.focus();
1162
+ if (window.navigator.userAgent.indexOf("MSIE") !== -1 || navigator.msMaxTouchPoints !== void 0) setTimeout(self.close, 0);
1163
+ else self.close();
1164
+ }
1165
+ function selectDate(e) {
1166
+ e.preventDefault();
1167
+ e.stopPropagation();
1168
+ var isSelectable = function(day) {
1169
+ return day.classList && day.classList.contains("flatpickr-day") && !day.classList.contains("flatpickr-disabled") && !day.classList.contains("notAllowed");
1170
+ };
1171
+ var t = findParent(getEventTarget(e), isSelectable);
1172
+ if (t === void 0) return;
1173
+ var target = t;
1174
+ var selectedDate = self.latestSelectedDateObj = new Date(target.dateObj.getTime());
1175
+ var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth || selectedDate.getMonth() > self.currentMonth + self.config.showMonths - 1) && self.config.mode !== "range";
1176
+ self.selectedDateElem = target;
1177
+ if (self.config.mode === "single") self.selectedDates = [selectedDate];
1178
+ else if (self.config.mode === "multiple") {
1179
+ var selectedIndex = isDateSelected(selectedDate);
1180
+ if (selectedIndex) self.selectedDates.splice(parseInt(selectedIndex), 1);
1181
+ else self.selectedDates.push(selectedDate);
1182
+ } else if (self.config.mode === "range") {
1183
+ if (self.selectedDates.length === 2) self.clear(false, false);
1184
+ self.latestSelectedDateObj = selectedDate;
1185
+ self.selectedDates.push(selectedDate);
1186
+ if (compareDates(selectedDate, self.selectedDates[0], true) !== 0) self.selectedDates.sort(function(a, b) {
1187
+ return a.getTime() - b.getTime();
1188
+ });
1189
+ }
1190
+ setHoursFromInputs();
1191
+ if (shouldChangeMonth) {
1192
+ var isNewYear = self.currentYear !== selectedDate.getFullYear();
1193
+ self.currentYear = selectedDate.getFullYear();
1194
+ self.currentMonth = selectedDate.getMonth();
1195
+ if (isNewYear) {
1196
+ triggerEvent("onYearChange");
1197
+ buildMonthSwitch();
1198
+ }
1199
+ triggerEvent("onMonthChange");
1200
+ }
1201
+ updateNavigationCurrentMonth();
1202
+ buildDays();
1203
+ updateValue();
1204
+ if (!shouldChangeMonth && self.config.mode !== "range" && self.config.showMonths === 1) focusOnDayElem(target);
1205
+ else if (self.selectedDateElem !== void 0 && self.hourElement === void 0) self.selectedDateElem && self.selectedDateElem.focus();
1206
+ if (self.hourElement !== void 0) self.hourElement !== void 0 && self.hourElement.focus();
1207
+ if (self.config.closeOnSelect) {
1208
+ var single = self.config.mode === "single" && !self.config.enableTime;
1209
+ var range = self.config.mode === "range" && self.selectedDates.length === 2 && !self.config.enableTime;
1210
+ if (single || range) focusAndClose();
1211
+ }
1212
+ triggerChange();
1213
+ }
1214
+ var CALLBACKS = {
1215
+ locale: [setupLocale, updateWeekdays],
1216
+ showMonths: [
1217
+ buildMonths,
1218
+ setCalendarWidth,
1219
+ buildWeekdays
1220
+ ],
1221
+ minDate: [jumpToDate],
1222
+ maxDate: [jumpToDate],
1223
+ positionElement: [updatePositionElement],
1224
+ clickOpens: [function() {
1225
+ if (self.config.clickOpens === true) {
1226
+ bind(self._input, "focus", self.open);
1227
+ bind(self._input, "click", self.open);
1228
+ } else {
1229
+ self._input.removeEventListener("focus", self.open);
1230
+ self._input.removeEventListener("click", self.open);
1231
+ }
1232
+ }]
1233
+ };
1234
+ function set(option, value) {
1235
+ if (option !== null && typeof option === "object") {
1236
+ Object.assign(self.config, option);
1237
+ for (var key in option) if (CALLBACKS[key] !== void 0) CALLBACKS[key].forEach(function(x) {
1238
+ return x();
1239
+ });
1240
+ } else {
1241
+ self.config[option] = value;
1242
+ if (CALLBACKS[option] !== void 0) CALLBACKS[option].forEach(function(x) {
1243
+ return x();
1244
+ });
1245
+ else if (HOOKS.indexOf(option) > -1) self.config[option] = arrayify(value);
1246
+ }
1247
+ self.redraw();
1248
+ updateValue(true);
1249
+ }
1250
+ function setSelectedDate(inputDate, format) {
1251
+ var dates = [];
1252
+ if (inputDate instanceof Array) dates = inputDate.map(function(d) {
1253
+ return self.parseDate(d, format);
1254
+ });
1255
+ else if (inputDate instanceof Date || typeof inputDate === "number") dates = [self.parseDate(inputDate, format)];
1256
+ else if (typeof inputDate === "string") switch (self.config.mode) {
1257
+ case "single":
1258
+ case "time":
1259
+ dates = [self.parseDate(inputDate, format)];
1260
+ break;
1261
+ case "multiple":
1262
+ dates = inputDate.split(self.config.conjunction).map(function(date) {
1263
+ return self.parseDate(date, format);
1264
+ });
1265
+ break;
1266
+ case "range":
1267
+ dates = inputDate.split(self.l10n.rangeSeparator).map(function(date) {
1268
+ return self.parseDate(date, format);
1269
+ });
1270
+ break;
1271
+ default: break;
1272
+ }
1273
+ else self.config.errorHandler(/* @__PURE__ */ new Error("Invalid date supplied: " + JSON.stringify(inputDate)));
1274
+ self.selectedDates = self.config.allowInvalidPreload ? dates : dates.filter(function(d) {
1275
+ return d instanceof Date && isEnabled(d, false);
1276
+ });
1277
+ if (self.config.mode === "range") self.selectedDates.sort(function(a, b) {
1278
+ return a.getTime() - b.getTime();
1279
+ });
1280
+ }
1281
+ function setDate(date, triggerChange, format) {
1282
+ if (triggerChange === void 0) triggerChange = false;
1283
+ if (format === void 0) format = self.config.dateFormat;
1284
+ if (date !== 0 && !date || date instanceof Array && date.length === 0) return self.clear(triggerChange);
1285
+ setSelectedDate(date, format);
1286
+ self.latestSelectedDateObj = self.selectedDates[self.selectedDates.length - 1];
1287
+ self.redraw();
1288
+ jumpToDate(void 0, triggerChange);
1289
+ setHoursFromDate();
1290
+ if (self.selectedDates.length === 0) self.clear(false);
1291
+ updateValue(triggerChange);
1292
+ if (triggerChange) triggerEvent("onChange");
1293
+ }
1294
+ function parseDateRules(arr) {
1295
+ return arr.slice().map(function(rule) {
1296
+ if (typeof rule === "string" || typeof rule === "number" || rule instanceof Date) return self.parseDate(rule, void 0, true);
1297
+ else if (rule && typeof rule === "object" && rule.from && rule.to) return {
1298
+ from: self.parseDate(rule.from, void 0),
1299
+ to: self.parseDate(rule.to, void 0)
1300
+ };
1301
+ return rule;
1302
+ }).filter(function(x) {
1303
+ return x;
1304
+ });
1305
+ }
1306
+ function setupDates() {
1307
+ self.selectedDates = [];
1308
+ self.now = self.parseDate(self.config.now) || /* @__PURE__ */ new Date();
1309
+ var preloadedDate = self.config.defaultDate || ((self.input.nodeName === "INPUT" || self.input.nodeName === "TEXTAREA") && self.input.placeholder && self.input.value === self.input.placeholder ? null : self.input.value);
1310
+ if (preloadedDate) setSelectedDate(preloadedDate, self.config.dateFormat);
1311
+ self._initialDate = self.selectedDates.length > 0 ? self.selectedDates[0] : self.config.minDate && self.config.minDate.getTime() > self.now.getTime() ? self.config.minDate : self.config.maxDate && self.config.maxDate.getTime() < self.now.getTime() ? self.config.maxDate : self.now;
1312
+ self.currentYear = self._initialDate.getFullYear();
1313
+ self.currentMonth = self._initialDate.getMonth();
1314
+ if (self.selectedDates.length > 0) self.latestSelectedDateObj = self.selectedDates[0];
1315
+ if (self.config.minTime !== void 0) self.config.minTime = self.parseDate(self.config.minTime, "H:i");
1316
+ if (self.config.maxTime !== void 0) self.config.maxTime = self.parseDate(self.config.maxTime, "H:i");
1317
+ self.minDateHasTime = !!self.config.minDate && (self.config.minDate.getHours() > 0 || self.config.minDate.getMinutes() > 0 || self.config.minDate.getSeconds() > 0);
1318
+ self.maxDateHasTime = !!self.config.maxDate && (self.config.maxDate.getHours() > 0 || self.config.maxDate.getMinutes() > 0 || self.config.maxDate.getSeconds() > 0);
1319
+ }
1320
+ function setupInputs() {
1321
+ self.input = getInputElem();
1322
+ if (!self.input) {
1323
+ self.config.errorHandler(/* @__PURE__ */ new Error("Invalid input element specified"));
1324
+ return;
1325
+ }
1326
+ self.input._type = self.input.type;
1327
+ self.input.type = "text";
1328
+ self.input.classList.add("flatpickr-input");
1329
+ self._input = self.input;
1330
+ if (self.config.altInput) {
1331
+ self.altInput = createElement(self.input.nodeName, self.config.altInputClass);
1332
+ self._input = self.altInput;
1333
+ self.altInput.placeholder = self.input.placeholder;
1334
+ self.altInput.disabled = self.input.disabled;
1335
+ self.altInput.required = self.input.required;
1336
+ self.altInput.tabIndex = self.input.tabIndex;
1337
+ self.altInput.type = "text";
1338
+ self.input.setAttribute("type", "hidden");
1339
+ if (!self.config.static && self.input.parentNode) self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);
1340
+ }
1341
+ if (!self.config.allowInput) self._input.setAttribute("readonly", "readonly");
1342
+ updatePositionElement();
1343
+ }
1344
+ function updatePositionElement() {
1345
+ self._positionElement = self.config.positionElement || self._input;
1346
+ }
1347
+ function setupMobile() {
1348
+ var inputType = self.config.enableTime ? self.config.noCalendar ? "time" : "datetime-local" : "date";
1349
+ self.mobileInput = createElement("input", self.input.className + " flatpickr-mobile");
1350
+ self.mobileInput.tabIndex = 1;
1351
+ self.mobileInput.type = inputType;
1352
+ self.mobileInput.disabled = self.input.disabled;
1353
+ self.mobileInput.required = self.input.required;
1354
+ self.mobileInput.placeholder = self.input.placeholder;
1355
+ self.mobileFormatStr = inputType === "datetime-local" ? "Y-m-d\\TH:i:S" : inputType === "date" ? "Y-m-d" : "H:i:S";
1356
+ if (self.selectedDates.length > 0) self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);
1357
+ if (self.config.minDate) self.mobileInput.min = self.formatDate(self.config.minDate, "Y-m-d");
1358
+ if (self.config.maxDate) self.mobileInput.max = self.formatDate(self.config.maxDate, "Y-m-d");
1359
+ if (self.input.getAttribute("step")) self.mobileInput.step = String(self.input.getAttribute("step"));
1360
+ self.input.type = "hidden";
1361
+ if (self.altInput !== void 0) self.altInput.type = "hidden";
1362
+ try {
1363
+ if (self.input.parentNode) self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);
1364
+ } catch (_a) {}
1365
+ bind(self.mobileInput, "change", function(e) {
1366
+ self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);
1367
+ triggerEvent("onChange");
1368
+ triggerEvent("onClose");
1369
+ });
1370
+ }
1371
+ function toggle(e) {
1372
+ if (self.isOpen === true) return self.close();
1373
+ self.open(e);
1374
+ }
1375
+ function triggerEvent(event, data) {
1376
+ if (self.config === void 0) return;
1377
+ var hooks = self.config[event];
1378
+ if (hooks !== void 0 && hooks.length > 0) for (var i = 0; hooks[i] && i < hooks.length; i++) hooks[i](self.selectedDates, self.input.value, self, data);
1379
+ if (event === "onChange") {
1380
+ self.input.dispatchEvent(createEvent("change"));
1381
+ self.input.dispatchEvent(createEvent("input"));
1382
+ }
1383
+ }
1384
+ function createEvent(name) {
1385
+ var e = document.createEvent("Event");
1386
+ e.initEvent(name, true, true);
1387
+ return e;
1388
+ }
1389
+ function isDateSelected(date) {
1390
+ for (var i = 0; i < self.selectedDates.length; i++) {
1391
+ var selectedDate = self.selectedDates[i];
1392
+ if (selectedDate instanceof Date && compareDates(selectedDate, date) === 0) return "" + i;
1393
+ }
1394
+ return false;
1395
+ }
1396
+ function isDateInRange(date) {
1397
+ if (self.config.mode !== "range" || self.selectedDates.length < 2) return false;
1398
+ return compareDates(date, self.selectedDates[0]) >= 0 && compareDates(date, self.selectedDates[1]) <= 0;
1399
+ }
1400
+ function updateNavigationCurrentMonth() {
1401
+ if (self.config.noCalendar || self.isMobile || !self.monthNav) return;
1402
+ self.yearElements.forEach(function(yearElement, i) {
1403
+ var d = new Date(self.currentYear, self.currentMonth, 1);
1404
+ d.setMonth(self.currentMonth + i);
1405
+ if (self.config.showMonths > 1 || self.config.monthSelectorType === "static") self.monthElements[i].textContent = monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + " ";
1406
+ else self.monthsDropdownContainer.value = d.getMonth().toString();
1407
+ yearElement.value = d.getFullYear().toString();
1408
+ });
1409
+ self._hidePrevMonthArrow = self.config.minDate !== void 0 && (self.currentYear === self.config.minDate.getFullYear() ? self.currentMonth <= self.config.minDate.getMonth() : self.currentYear < self.config.minDate.getFullYear());
1410
+ self._hideNextMonthArrow = self.config.maxDate !== void 0 && (self.currentYear === self.config.maxDate.getFullYear() ? self.currentMonth + 1 > self.config.maxDate.getMonth() : self.currentYear > self.config.maxDate.getFullYear());
1411
+ }
1412
+ function getDateStr(specificFormat) {
1413
+ var format = specificFormat || (self.config.altInput ? self.config.altFormat : self.config.dateFormat);
1414
+ return self.selectedDates.map(function(dObj) {
1415
+ return self.formatDate(dObj, format);
1416
+ }).filter(function(d, i, arr) {
1417
+ return self.config.mode !== "range" || self.config.enableTime || arr.indexOf(d) === i;
1418
+ }).join(self.config.mode !== "range" ? self.config.conjunction : self.l10n.rangeSeparator);
1419
+ }
1420
+ function updateValue(triggerChange) {
1421
+ if (triggerChange === void 0) triggerChange = true;
1422
+ if (self.mobileInput !== void 0 && self.mobileFormatStr) self.mobileInput.value = self.latestSelectedDateObj !== void 0 ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr) : "";
1423
+ self.input.value = getDateStr(self.config.dateFormat);
1424
+ if (self.altInput !== void 0) self.altInput.value = getDateStr(self.config.altFormat);
1425
+ if (triggerChange !== false) triggerEvent("onValueUpdate");
1426
+ }
1427
+ function onMonthNavClick(e) {
1428
+ var eventTarget = getEventTarget(e);
1429
+ var isPrevMonth = self.prevMonthNav.contains(eventTarget);
1430
+ var isNextMonth = self.nextMonthNav.contains(eventTarget);
1431
+ if (isPrevMonth || isNextMonth) changeMonth(isPrevMonth ? -1 : 1);
1432
+ else if (self.yearElements.indexOf(eventTarget) >= 0) eventTarget.select();
1433
+ else if (eventTarget.classList.contains("arrowUp")) self.changeYear(self.currentYear + 1);
1434
+ else if (eventTarget.classList.contains("arrowDown")) self.changeYear(self.currentYear - 1);
1435
+ }
1436
+ function timeWrapper(e) {
1437
+ e.preventDefault();
1438
+ var isKeyDown = e.type === "keydown", eventTarget = getEventTarget(e), input = eventTarget;
1439
+ if (self.amPM !== void 0 && eventTarget === self.amPM) self.amPM.textContent = self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];
1440
+ var min = parseFloat(input.getAttribute("min")), max = parseFloat(input.getAttribute("max")), step = parseFloat(input.getAttribute("step")), curValue = parseInt(input.value, 10);
1441
+ var newValue = curValue + step * (e.delta || (isKeyDown ? e.which === 38 ? 1 : -1 : 0));
1442
+ if (typeof input.value !== "undefined" && input.value.length === 2) {
1443
+ var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;
1444
+ if (newValue < min) {
1445
+ newValue = max + newValue + int(!isHourElem) + (int(isHourElem) && int(!self.amPM));
1446
+ if (isMinuteElem) incrementNumInput(void 0, -1, self.hourElement);
1447
+ } else if (newValue > max) {
1448
+ newValue = input === self.hourElement ? newValue - max - int(!self.amPM) : min;
1449
+ if (isMinuteElem) incrementNumInput(void 0, 1, self.hourElement);
1450
+ }
1451
+ if (self.amPM && isHourElem && (step === 1 ? newValue + curValue === 23 : Math.abs(newValue - curValue) > step)) self.amPM.textContent = self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];
1452
+ input.value = pad(newValue);
1453
+ }
1454
+ }
1455
+ init();
1456
+ return self;
1457
+ }
1458
+ function _flatpickr(nodeList, config) {
1459
+ var nodes = Array.prototype.slice.call(nodeList).filter(function(x) {
1460
+ return x instanceof HTMLElement;
1461
+ });
1462
+ var instances = [];
1463
+ for (var i = 0; i < nodes.length; i++) {
1464
+ var node = nodes[i];
1465
+ try {
1466
+ if (node.getAttribute("data-fp-omit") !== null) continue;
1467
+ if (node._flatpickr !== void 0) {
1468
+ node._flatpickr.destroy();
1469
+ node._flatpickr = void 0;
1470
+ }
1471
+ node._flatpickr = FlatpickrInstance(node, config || {});
1472
+ instances.push(node._flatpickr);
1473
+ } catch (e) {
1474
+ console.error(e);
1475
+ }
1476
+ }
1477
+ return instances.length === 1 ? instances[0] : instances;
1478
+ }
1479
+ if (typeof HTMLElement !== "undefined" && typeof HTMLCollection !== "undefined" && typeof NodeList !== "undefined") {
1480
+ HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function(config) {
1481
+ return _flatpickr(this, config);
1482
+ };
1483
+ HTMLElement.prototype.flatpickr = function(config) {
1484
+ return _flatpickr([this], config);
1485
+ };
1486
+ }
1487
+ var flatpickr = function(selector, config) {
1488
+ if (typeof selector === "string") return _flatpickr(window.document.querySelectorAll(selector), config);
1489
+ else if (selector instanceof Node) return _flatpickr([selector], config);
1490
+ else return _flatpickr(selector, config);
1491
+ };
1492
+ flatpickr.defaultConfig = {};
1493
+ flatpickr.l10ns = {
1494
+ en: __assign({}, english),
1495
+ default: __assign({}, english)
1496
+ };
1497
+ flatpickr.localize = function(l10n) {
1498
+ flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);
1499
+ };
1500
+ flatpickr.setDefaults = function(config) {
1501
+ flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);
1502
+ };
1503
+ flatpickr.parseDate = createDateParser({});
1504
+ flatpickr.formatDate = createDateFormatter({});
1505
+ flatpickr.compareDates = compareDates;
1506
+ if (typeof jQuery !== "undefined" && typeof jQuery.fn !== "undefined") jQuery.fn.flatpickr = function(config) {
1507
+ return _flatpickr(this, config);
1508
+ };
1509
+ Date.prototype.fp_incr = function(days) {
1510
+ return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === "string" ? parseInt(days, 10) : days));
1511
+ };
1512
+ if (typeof window !== "undefined") window.flatpickr = flatpickr;
1513
+ //#endregion
1514
+ export { flatpickr as default };
1515
+
1516
+ //# sourceMappingURL=index.js.map